in nmxact/mtech_lora/mtech_lora_xport.go [278:326]
func (lx *LoraXport) processData(data string) {
if strings.HasPrefix(data, "lora/") == false {
return
}
splitMsg := strings.Fields(data)
if len(splitMsg) == 0 {
return
}
splitHdr := strings.Split(splitMsg[0], "/")
if len(splitHdr) != 3 {
return
}
dev, _ := NormalizeAddr(splitHdr[1])
switch splitHdr[2] {
case "joined":
log.Debugf("loraxport rx: %s", data)
log.Debugf("%s joined", dev)
lx.reportJoin(dev)
case "up":
var msg LoraData
log.Debugf("loraxport rx: %s", data)
pload := []byte(splitMsg[1])
err := codec.NewDecoderBytes(pload, new(codec.JsonHandle)).Decode(&msg)
if err != nil {
log.Debugf("loraxport rx: error decoding json: %v", err)
return
}
dec, err := base64.StdEncoding.DecodeString(msg.Data)
if err != nil {
log.Debugf("loraxport rx: error decoding base64: %v", err)
return
}
lx.reass(dev, msg.Port, dec)
case "packet_sent":
var sent LoraPacketSent
log.Debugf("loraxport rx: %s", data)
pload := []byte(splitMsg[1])
err := codec.NewDecoderBytes(pload, new(codec.JsonHandle)).Decode(&sent)
if err != nil {
log.Debugf("loraxport rx: error decoding json: %v", err)
return
}
lx.dataRateSeen(dev, sent.DataRate)
}
}