From 0b6e1d0e78f6768e0bd3e459204ba4a076827c42 Mon Sep 17 00:00:00 2001 From: deadprogram Date: Sun, 15 Jan 2023 21:28:30 +0100 Subject: [PATCH] lorawan: increment devnonce don't just create a new one each join attempt Signed-off-by: deadprogram --- lora/lorawan/otaa.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lora/lorawan/otaa.go b/lora/lorawan/otaa.go index 0f7c228..ea3ed72 100644 --- a/lora/lorawan/otaa.go +++ b/lora/lorawan/otaa.go @@ -31,6 +31,12 @@ func (o *Otaa) generateDevNonce() { o.devNonce[1] = rnd[1] } +func (o *Otaa) incrementDevNonce() { + nonce := uint16(o.devNonce[1])<<8 | uint16(o.devNonce[0]) + 1 + o.devNonce[0] = uint8(nonce) + o.devNonce[1] = uint8((nonce >> 8)) +} + // Set configures the Otaa AppEUI, DevEUI, AppKey for the device func (o *Otaa) Set(appEUI []uint8, devEUI []uint8, appKey []uint8) { o.SetAppEUI(appEUI) @@ -99,7 +105,7 @@ func (o *Otaa) SetNetID(netID []uint8) error { // GenerateJoinRequest Generates a LoraWAN Join request func (o *Otaa) GenerateJoinRequest() ([]uint8, error) { - o.generateDevNonce() + o.incrementDevNonce() // TODO: Add checks o.buf = o.buf[:0]