func GetXport()

in newtmgr/cli/common.go [107:168]


func GetXport() (xport.Xport, error) {
	if globalXport != nil {
		return globalXport, nil
	}

	cp, err := getConnProfile()
	if err != nil {
		return nil, err
	}

	switch cp.Type {
	case config.CONN_TYPE_SERIAL_PLAIN, config.CONN_TYPE_SERIAL_OIC:
		sc, err := config.ParseSerialConnString(cp.ConnString)
		if err != nil {
			return nil, err
		}

		globalXport = nmserial.NewSerialXport(sc)

	case config.CONN_TYPE_BLL_PLAIN, config.CONN_TYPE_BLL_OIC:
		bc, err := config.ParseBllConnString(cp.ConnString)
		if err != nil {
			return nil, err
		}

		cfg := bll.NewXportCfg()
		if bc.CtlrName != "" {
			cfg.CtlrName = bc.CtlrName
		}
		cfg.OwnAddrType = bc.OwnAddrType
		globalXport = bll.NewBllXport(cfg, bc.HciIdx)

	case config.CONN_TYPE_BLE_PLAIN, config.CONN_TYPE_BLE_OIC:
		bc, err := config.ParseBleConnString(cp.ConnString)
		if err != nil {
			return nil, err
		}
		globalXport, err = config.BuildBleXport(bc)
		if err != nil {
			return nil, err
		}

	case config.CONN_TYPE_UDP_PLAIN, config.CONN_TYPE_UDP_OIC:
		globalXport = udp.NewUdpXport()

	case config.CONN_TYPE_MTECH_LORA_OIC:
		cfg := mtech_lora.NewXportCfg()
		globalXport = mtech_lora.NewLoraXport(cfg)

	default:
		return nil, util.FmtNewtError("Unknown connection type: %s (%d)",
			config.ConnTypeToString(cp.Type), int(cp.Type))
	}

	globalXportSet = true

	if err := globalXport.Start(); err != nil {
		return nil, util.ChildNewtError(err)
	}

	return globalXport, nil
}