Skip to content

Commit 2ef079d

Browse files
committed
Parse optional 'meta' in Stat.
1 parent 2f0d5b7 commit 2ef079d

File tree

2 files changed

+43
-10
lines changed

2 files changed

+43
-10
lines changed

internal/backend/semtechudp/packets/push_data.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func (p PushDataPacket) GetGatewayStats() (*gw.GatewayStats, error) {
6161
RxPacketsReceivedOk: p.Payload.Stat.RXOK,
6262
TxPacketsEmitted: p.Payload.Stat.TXNb,
6363
TxPacketsReceived: p.Payload.Stat.DWNb,
64+
Metadata: p.Payload.Stat.Meta,
6465
}
6566

6667
// time
@@ -331,16 +332,17 @@ type PushDataPayload struct {
331332

332333
// Stat contains the status of the gateway.
333334
type Stat struct {
334-
Time ExpandedTime `json:"time"` // UTC 'system' time of the gateway, ISO 8601 'expanded' format (e.g 2014-01-12 08:59:28 GMT)
335-
Lati float64 `json:"lati"` // GPS latitude of the gateway in degree (float, N is +)
336-
Long float64 `json:"long"` // GPS latitude of the gateway in degree (float, E is +)
337-
Alti int32 `json:"alti"` // GPS altitude of the gateway in meter RX (integer)
338-
RXNb uint32 `json:"rxnb"` // Number of radio packets received (unsigned integer)
339-
RXOK uint32 `json:"rxok"` // Number of radio packets received with a valid PHY CRC
340-
RXFW uint32 `json:"rxfw"` // Number of radio packets forwarded (unsigned integer)
341-
ACKR float64 `json:"ackr"` // Percentage of upstream datagrams that were acknowledged
342-
DWNb uint32 `json:"dwnb"` // Number of downlink datagrams received (unsigned integer)
343-
TXNb uint32 `json:"txnb"` // Number of packets emitted (unsigned integer)
335+
Time ExpandedTime `json:"time"` // UTC 'system' time of the gateway, ISO 8601 'expanded' format (e.g 2014-01-12 08:59:28 GMT)
336+
Lati float64 `json:"lati"` // GPS latitude of the gateway in degree (float, N is +)
337+
Long float64 `json:"long"` // GPS latitude of the gateway in degree (float, E is +)
338+
Alti int32 `json:"alti"` // GPS altitude of the gateway in meter RX (integer)
339+
RXNb uint32 `json:"rxnb"` // Number of radio packets received (unsigned integer)
340+
RXOK uint32 `json:"rxok"` // Number of radio packets received with a valid PHY CRC
341+
RXFW uint32 `json:"rxfw"` // Number of radio packets forwarded (unsigned integer)
342+
ACKR float64 `json:"ackr"` // Percentage of upstream datagrams that were acknowledged
343+
DWNb uint32 `json:"dwnb"` // Number of downlink datagrams received (unsigned integer)
344+
TXNb uint32 `json:"txnb"` // Number of packets emitted (unsigned integer)
345+
Meta map[string]string `json:"meta"` // Custom meta-data (Optional, not part of PROTOCOL.TXT)
344346
}
345347

346348
// RXPK contain a RF packet and associated metadata.

internal/backend/semtechudp/packets/push_data_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,37 @@ func TestGetGatewayStats(t *testing.T) {
127127
TxPacketsEmitted: 6,
128128
},
129129
},
130+
{
131+
PushDataPacket: PushDataPacket{
132+
ProtocolVersion: ProtocolVersion2,
133+
GatewayMAC: lorawan.EUI64{1, 2, 3, 4, 5, 6, 7, 8},
134+
Payload: PushDataPayload{
135+
Stat: &Stat{
136+
Time: ecNow,
137+
RXNb: 1,
138+
RXOK: 2,
139+
RXFW: 3,
140+
ACKR: 4,
141+
DWNb: 5,
142+
TXNb: 6,
143+
Meta: map[string]string{
144+
"gateway_name": "test-gateway",
145+
},
146+
},
147+
},
148+
},
149+
GatewayStats: &gw.GatewayStats{
150+
GatewayId: "0102030405060708",
151+
Time: pbTime,
152+
RxPacketsReceived: 1,
153+
RxPacketsReceivedOk: 2,
154+
TxPacketsReceived: 5,
155+
TxPacketsEmitted: 6,
156+
Metadata: map[string]string{
157+
"gateway_name": "test-gateway",
158+
},
159+
},
160+
},
130161
}
131162

132163
for _, test := range testTable {

0 commit comments

Comments
 (0)