@@ -94,7 +94,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
9494 if err != nil {
9595 return nil , err
9696 }
97- log .WithField ("addr" , addr ).Info ("starting gateway udp listener" )
97+ log .WithField ("addr" , addr ).Info ("gateway: starting gateway udp listener" )
9898 conn , err := net .ListenUDP ("udp" , addr )
9999 if err != nil {
100100 return nil , err
@@ -115,7 +115,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
115115 go func () {
116116 for {
117117 if err := b .gateways .cleanup (); err != nil {
118- log .Errorf ("backend/mqttpubsub : gateways cleanup failed: %s" , err )
118+ log .Errorf ("gateway : gateways cleanup failed: %s" , err )
119119 }
120120 time .Sleep (time .Minute )
121121 }
@@ -144,11 +144,13 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
144144
145145// Close closes the backend.
146146func (b * Backend ) Close () error {
147+ log .Info ("gateway: closing gateway backend" )
147148 b .closed = true
148149 close (b .udpSendChan )
149150 if err := b .conn .Close (); err != nil {
150151 return err
151152 }
153+ log .Info ("gateway: handling last packets" )
152154 b .wg .Wait ()
153155 return nil
154156}
@@ -180,7 +182,7 @@ func (b *Backend) Send(txPacket models.TXPacket) error {
180182 }
181183 bytes , err := pullResp .MarshalBinary ()
182184 if err != nil {
183- return err
185+ return fmt . Errorf ( "gateway: json marshall PullRespPacket error: %s" , err )
184186 }
185187 b .udpSendChan <- udpPacket {
186188 data : bytes ,
@@ -194,7 +196,7 @@ func (b *Backend) readPackets() error {
194196 for {
195197 i , addr , err := b .conn .ReadFromUDP (buf )
196198 if err != nil {
197- return err
199+ return fmt . Errorf ( "gateway: read from udp error: %s" , err )
198200 }
199201 data := make ([]byte , i )
200202 copy (data , buf [:i ])
@@ -203,7 +205,7 @@ func (b *Backend) readPackets() error {
203205 log .WithFields (log.Fields {
204206 "data_base64" : base64 .StdEncoding .EncodeToString (data ),
205207 "addr" : addr ,
206- }).Errorf ("could not handle packet: %s" , err )
208+ }).Errorf ("gateway: could not handle packet: %s" , err )
207209 }
208210 }(data )
209211 }
@@ -216,13 +218,13 @@ func (b *Backend) sendPackets() error {
216218 log .WithFields (log.Fields {
217219 "addr" : p .addr ,
218220 "data_base64" : base64 .StdEncoding .EncodeToString (p .data ),
219- }).Error ("unknown packet type" )
221+ }).Error ("gateway: unknown packet type" )
220222 continue
221223 }
222224 log .WithFields (log.Fields {
223225 "addr" : p .addr ,
224226 "type" : pt ,
225- }).Info ("outgoing gateway packet" )
227+ }).Info ("gateway: sending udp packet to gateway " )
226228
227229 if _ , err := b .conn .WriteToUDP (p .data , p .addr ); err != nil {
228230 return err
@@ -239,15 +241,15 @@ func (b *Backend) handlePacket(addr *net.UDPAddr, data []byte) error {
239241 log .WithFields (log.Fields {
240242 "addr" : addr ,
241243 "type" : pt ,
242- }).Info ("incoming gateway packet" )
244+ }).Info ("gateway: received udp packet from gateway " )
243245
244246 switch pt {
245247 case PushData :
246248 return b .handlePushData (addr , data )
247249 case PullData :
248250 return b .handlePullData (addr , data )
249251 default :
250- return fmt .Errorf ("unknown packet type: %s" , pt )
252+ return fmt .Errorf ("gateway: unknown packet type: %s" , pt )
251253 }
252254}
253255
@@ -317,7 +319,7 @@ func (b *Backend) handleStat(addr *net.UDPAddr, mac lorawan.EUI64, stat Stat) {
317319 log .WithFields (log.Fields {
318320 "addr" : addr ,
319321 "mac" : mac ,
320- }).Info ("stat packet received" )
322+ }).Info ("gateway: stat packet received" )
321323 b .statsChan <- gwStats
322324}
323325
@@ -327,7 +329,7 @@ func (b *Backend) handleRXPacket(addr *net.UDPAddr, mac lorawan.EUI64, rxpk RXPK
327329 "mac" : mac ,
328330 "data" : rxpk .Data ,
329331 }
330- log .WithFields (logFields ).Info ("rxpk packet received" )
332+ log .WithFields (logFields ).Info ("gateway: rxpk packet received" )
331333
332334 // decode packet
333335 rxPacket , err := newRXPacketFromRXPK (mac , rxpk )
@@ -337,8 +339,8 @@ func (b *Backend) handleRXPacket(addr *net.UDPAddr, mac lorawan.EUI64, rxpk RXPK
337339
338340 // check CRC
339341 if rxPacket .RXInfo .CRCStatus != 1 {
340- log .WithFields (logFields ).Warningf ("invalid packet CRC: %d" , rxPacket .RXInfo .CRCStatus )
341- return errors .New ("invalid CRC" )
342+ log .WithFields (logFields ).Warningf ("gateway: invalid packet CRC: %d" , rxPacket .RXInfo .CRCStatus )
343+ return errors .New ("gateway: invalid CRC" )
342344 }
343345 b .rxChan <- rxPacket
344346 return nil
@@ -362,12 +364,12 @@ func newGatewayStatsPacket(mac lorawan.EUI64, stat Stat) models.GatewayStatsPack
362364func newRXPacketFromRXPK (mac lorawan.EUI64 , rxpk RXPK ) (models.RXPacket , error ) {
363365 var phy lorawan.PHYPayload
364366 if err := phy .UnmarshalText ([]byte (rxpk .Data )); err != nil {
365- return models.RXPacket {}, fmt .Errorf ("could not unmarshal PHYPayload: %s" , err )
367+ return models.RXPacket {}, fmt .Errorf ("gateway: could not unmarshal PHYPayload: %s" , err )
366368 }
367369
368370 dataRate , err := newDataRateFromDatR (rxpk .DatR )
369371 if err != nil {
370- return models.RXPacket {}, fmt .Errorf ("could not get DataRate from DatR: %s" , err )
372+ return models.RXPacket {}, fmt .Errorf ("gateway: could not get DataRate from DatR: %s" , err )
371373 }
372374
373375 rxPacket := models.RXPacket {
@@ -425,17 +427,17 @@ func newDataRateFromDatR(d DatR) (band.DataRate, error) {
425427 // parse e.g. SF12BW250 into separate variables
426428 match := loRaDataRateRegex .FindStringSubmatch (d .LoRa )
427429 if len (match ) != 3 {
428- return dr , errors .New ("could not parse LoRa data rate" )
430+ return dr , errors .New ("gateway: could not parse LoRa data rate" )
429431 }
430432
431433 // cast variables to ints
432434 sf , err := strconv .Atoi (match [1 ])
433435 if err != nil {
434- return dr , fmt .Errorf ("could not convert spread factor to int: %s" , err )
436+ return dr , fmt .Errorf ("gateway: could not convert spread factor to int: %s" , err )
435437 }
436438 bw , err := strconv .Atoi (match [2 ])
437439 if err != nil {
438- return dr , fmt .Errorf ("could not convert bandwith to int: %s" , err )
440+ return dr , fmt .Errorf ("gateway: could not convert bandwith to int: %s" , err )
439441 }
440442
441443 dr .Modulation = band .LoRaModulation
@@ -450,7 +452,7 @@ func newDataRateFromDatR(d DatR) (band.DataRate, error) {
450452 return dr , nil
451453 }
452454
453- return dr , errors .New ("could not convert DatR to DataRate, DatR is empty / modulation unknown" )
455+ return dr , errors .New ("gateway: could not convert DatR to DataRate, DatR is empty / modulation unknown" )
454456}
455457
456458func newDatRfromDataRate (d band.DataRate ) DatR {
0 commit comments