in nmxact/mtech_lora/mtech_lora_xport.go [328:376]
func (lx *LoraXport) Start() error {
if lx.started {
return nmxutil.NewXportError("Lora xport started twice")
}
addr, err := net.ResolveUDPAddr("udp",
fmt.Sprintf("127.0.0.1:%d", lx.cfg.AppPortUp))
if err != nil {
return fmt.Errorf("Failure resolving name for UDP session: %s",
err.Error())
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
return fmt.Errorf("Failed to open RX to lora-network-server %s", addr)
}
lx.rxConn = conn
addr, err = net.ResolveUDPAddr("udp",
fmt.Sprintf("127.0.0.1:%d", lx.cfg.AppPortDown))
if err != nil {
lx.rxConn.Close()
lx.rxConn = nil
return fmt.Errorf("Failure resolving name for UDP session: %s",
err.Error())
}
conn, err = net.DialUDP("udp", nil, addr)
if err != nil {
lx.rxConn.Close()
lx.rxConn = nil
return fmt.Errorf("Failed to open TX to lora-network-server")
}
lx.txConn = conn
lx.started = true
go func() {
data := make([]byte, MAX_PACKET_SIZE_IN*4/3+512)
for {
nr, _, err := lx.rxConn.ReadFromUDP(data)
if err != nil {
return
}
lx.processData(string(data[0:nr]))
}
}()
return nil
}