@@ -94,7 +94,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
94
94
if err != nil {
95
95
return nil , err
96
96
}
97
- log .WithField ("addr" , addr ).Info ("starting gateway udp listener" )
97
+ log .WithField ("addr" , addr ).Info ("gateway: starting gateway udp listener" )
98
98
conn , err := net .ListenUDP ("udp" , addr )
99
99
if err != nil {
100
100
return nil , err
@@ -115,7 +115,7 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
115
115
go func () {
116
116
for {
117
117
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 )
119
119
}
120
120
time .Sleep (time .Minute )
121
121
}
@@ -144,11 +144,13 @@ func NewBackend(bind string, onNew func(lorawan.EUI64) error, onDelete func(lora
144
144
145
145
// Close closes the backend.
146
146
func (b * Backend ) Close () error {
147
+ log .Info ("gateway: closing gateway backend" )
147
148
b .closed = true
148
149
close (b .udpSendChan )
149
150
if err := b .conn .Close (); err != nil {
150
151
return err
151
152
}
153
+ log .Info ("gateway: handling last packets" )
152
154
b .wg .Wait ()
153
155
return nil
154
156
}
@@ -180,7 +182,7 @@ func (b *Backend) Send(txPacket models.TXPacket) error {
180
182
}
181
183
bytes , err := pullResp .MarshalBinary ()
182
184
if err != nil {
183
- return err
185
+ return fmt . Errorf ( "gateway: json marshall PullRespPacket error: %s" , err )
184
186
}
185
187
b .udpSendChan <- udpPacket {
186
188
data : bytes ,
@@ -194,7 +196,7 @@ func (b *Backend) readPackets() error {
194
196
for {
195
197
i , addr , err := b .conn .ReadFromUDP (buf )
196
198
if err != nil {
197
- return err
199
+ return fmt . Errorf ( "gateway: read from udp error: %s" , err )
198
200
}
199
201
data := make ([]byte , i )
200
202
copy (data , buf [:i ])
@@ -203,7 +205,7 @@ func (b *Backend) readPackets() error {
203
205
log .WithFields (log.Fields {
204
206
"data_base64" : base64 .StdEncoding .EncodeToString (data ),
205
207
"addr" : addr ,
206
- }).Errorf ("could not handle packet: %s" , err )
208
+ }).Errorf ("gateway: could not handle packet: %s" , err )
207
209
}
208
210
}(data )
209
211
}
@@ -216,13 +218,13 @@ func (b *Backend) sendPackets() error {
216
218
log .WithFields (log.Fields {
217
219
"addr" : p .addr ,
218
220
"data_base64" : base64 .StdEncoding .EncodeToString (p .data ),
219
- }).Error ("unknown packet type" )
221
+ }).Error ("gateway: unknown packet type" )
220
222
continue
221
223
}
222
224
log .WithFields (log.Fields {
223
225
"addr" : p .addr ,
224
226
"type" : pt ,
225
- }).Info ("outgoing gateway packet" )
227
+ }).Info ("gateway: sending udp packet to gateway " )
226
228
227
229
if _ , err := b .conn .WriteToUDP (p .data , p .addr ); err != nil {
228
230
return err
@@ -239,15 +241,15 @@ func (b *Backend) handlePacket(addr *net.UDPAddr, data []byte) error {
239
241
log .WithFields (log.Fields {
240
242
"addr" : addr ,
241
243
"type" : pt ,
242
- }).Info ("incoming gateway packet" )
244
+ }).Info ("gateway: received udp packet from gateway " )
243
245
244
246
switch pt {
245
247
case PushData :
246
248
return b .handlePushData (addr , data )
247
249
case PullData :
248
250
return b .handlePullData (addr , data )
249
251
default :
250
- return fmt .Errorf ("unknown packet type: %s" , pt )
252
+ return fmt .Errorf ("gateway: unknown packet type: %s" , pt )
251
253
}
252
254
}
253
255
@@ -317,7 +319,7 @@ func (b *Backend) handleStat(addr *net.UDPAddr, mac lorawan.EUI64, stat Stat) {
317
319
log .WithFields (log.Fields {
318
320
"addr" : addr ,
319
321
"mac" : mac ,
320
- }).Info ("stat packet received" )
322
+ }).Info ("gateway: stat packet received" )
321
323
b .statsChan <- gwStats
322
324
}
323
325
@@ -327,7 +329,7 @@ func (b *Backend) handleRXPacket(addr *net.UDPAddr, mac lorawan.EUI64, rxpk RXPK
327
329
"mac" : mac ,
328
330
"data" : rxpk .Data ,
329
331
}
330
- log .WithFields (logFields ).Info ("rxpk packet received" )
332
+ log .WithFields (logFields ).Info ("gateway: rxpk packet received" )
331
333
332
334
// decode packet
333
335
rxPacket , err := newRXPacketFromRXPK (mac , rxpk )
@@ -337,8 +339,8 @@ func (b *Backend) handleRXPacket(addr *net.UDPAddr, mac lorawan.EUI64, rxpk RXPK
337
339
338
340
// check CRC
339
341
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" )
342
344
}
343
345
b .rxChan <- rxPacket
344
346
return nil
@@ -362,12 +364,12 @@ func newGatewayStatsPacket(mac lorawan.EUI64, stat Stat) models.GatewayStatsPack
362
364
func newRXPacketFromRXPK (mac lorawan.EUI64 , rxpk RXPK ) (models.RXPacket , error ) {
363
365
var phy lorawan.PHYPayload
364
366
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 )
366
368
}
367
369
368
370
dataRate , err := newDataRateFromDatR (rxpk .DatR )
369
371
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 )
371
373
}
372
374
373
375
rxPacket := models.RXPacket {
@@ -425,17 +427,17 @@ func newDataRateFromDatR(d DatR) (band.DataRate, error) {
425
427
// parse e.g. SF12BW250 into separate variables
426
428
match := loRaDataRateRegex .FindStringSubmatch (d .LoRa )
427
429
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" )
429
431
}
430
432
431
433
// cast variables to ints
432
434
sf , err := strconv .Atoi (match [1 ])
433
435
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 )
435
437
}
436
438
bw , err := strconv .Atoi (match [2 ])
437
439
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 )
439
441
}
440
442
441
443
dr .Modulation = band .LoRaModulation
@@ -450,7 +452,7 @@ func newDataRateFromDatR(d DatR) (band.DataRate, error) {
450
452
return dr , nil
451
453
}
452
454
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" )
454
456
}
455
457
456
458
func newDatRfromDataRate (d band.DataRate ) DatR {
0 commit comments