Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 1b2d2af

Browse files
author
Daniel Campora
committed
esp32: Merge LoRaWAN fixes from master.
1 parent a5e9290 commit 1b2d2af

File tree

4 files changed

+72
-2
lines changed

4 files changed

+72
-2
lines changed

esp32/mods/modlora.c

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,8 @@ static TimerEvent_t TxNextActReqTimer;
267267
static nvs_handle modlora_nvs_handle;
268268
static const char *modlora_nvs_data_key[E_LORA_NVS_NUM_KEYS] = { "JOINED", "UPLNK", "DWLNK", "DEVADDR",
269269
"NWSKEY", "APPSKEY", "NETID", "ADRACK",
270-
"MACPARAMS", "CHANNELS", "SRVACK" };
270+
"MACPARAMS", "CHANNELS", "SRVACK", "MACNXTTX",
271+
"MACBUFIDX", "MACRPTIDX", "MACBUF", "MACRPTBUF" };
271272

272273
/******************************************************************************
273274
DECLARE PRIVATE FUNCTIONS
@@ -785,6 +786,32 @@ static void TASK_LoRa (void *pvParameters) {
785786
*ack_req = false;
786787
}
787788

789+
uint32_t mac_cmd_next_tx;
790+
modlora_nvs_get_uint(E_LORA_NVS_MAC_NXT_TX, (uint32_t *)&mac_cmd_next_tx);
791+
bool *next_tx = LoRaMacGetMacCmdNextTx();
792+
if (mac_cmd_next_tx) {
793+
*next_tx = true;
794+
} else {
795+
*next_tx = false;
796+
}
797+
798+
uint32_t mac_cmd_buffer_idx;
799+
modlora_nvs_get_uint(E_LORA_NVS_MAC_CMD_BUF_IDX, (uint32_t *)&mac_cmd_buffer_idx);
800+
uint8_t *buffer_idx = LoRaMacGetMacCmdBufferIndex();
801+
*buffer_idx = mac_cmd_buffer_idx;
802+
803+
modlora_nvs_get_uint(E_LORA_NVS_MAC_CMD_BUF_RPT_IDX, (uint32_t *)&mac_cmd_buffer_idx);
804+
buffer_idx = LoRaMacGetMacCmdBufferRepeatIndex();
805+
*buffer_idx = mac_cmd_buffer_idx;
806+
807+
// write the buffered MAC commads directly from NVRAM
808+
length = 15;
809+
modlora_nvs_get_blob(E_LORA_NVS_ELE_MAC_BUF, (void *)LoRaMacGetMacCmdBuffer(), &length);
810+
811+
// write the buffered MAC commads to repeat directly from NVRAM
812+
length = 15;
813+
modlora_nvs_get_blob(E_LORA_NVS_ELE_MAC_RPT_BUF, (void *)LoRaMacGetMacCmdBufferRepeat(), &length);
814+
788815
lora_obj.activation = E_LORA_ACTIVATION_ABP;
789816
lora_obj.state = E_LORA_STATE_JOIN;
790817
// clear the joined flag until the nvram_save method is called again

esp32/mods/modlora.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ typedef enum {
5151
E_LORA_NVS_ELE_MAC_PARAMS,
5252
E_LORA_NVS_ELE_CHANNELS,
5353
E_LORA_NVS_ELE_ACK_REQ,
54+
E_LORA_NVS_MAC_NXT_TX,
55+
E_LORA_NVS_MAC_CMD_BUF_IDX,
56+
E_LORA_NVS_MAC_CMD_BUF_RPT_IDX,
57+
E_LORA_NVS_ELE_MAC_BUF,
58+
E_LORA_NVS_ELE_MAC_RPT_BUF,
5459
E_LORA_NVS_NUM_KEYS
5560
} e_lora_nvs_key_t;
5661

lib/lora/mac/LoRaMac.c

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4307,6 +4307,15 @@ void LoRaMacNvsSave( void )
43074307
modlora_nvs_set_blob(E_LORA_NVS_ELE_MAC_PARAMS, &LoRaMacParams, sizeof(LoRaMacParams));
43084308
modlora_nvs_set_blob(E_LORA_NVS_ELE_CHANNELS, Channels, sizeof(Channels));
43094309

4310+
modlora_nvs_set_uint(E_LORA_NVS_ELE_ACK_REQ, SrvAckRequested);
4311+
4312+
modlora_nvs_set_uint(E_LORA_NVS_MAC_NXT_TX, MacCommandsInNextTx);
4313+
modlora_nvs_set_uint(E_LORA_NVS_MAC_CMD_BUF_IDX, MacCommandsBufferIndex);
4314+
modlora_nvs_set_uint(E_LORA_NVS_MAC_CMD_BUF_RPT_IDX, MacCommandsBufferToRepeatIndex);
4315+
4316+
modlora_nvs_set_blob(E_LORA_NVS_ELE_MAC_BUF, MacCommandsBuffer, sizeof(MacCommandsBuffer));
4317+
modlora_nvs_set_blob(E_LORA_NVS_ELE_MAC_RPT_BUF, MacCommandsBufferToRepeat, sizeof(MacCommandsBufferToRepeat));
4318+
43104319
modlora_nvs_set_uint(E_LORA_NVS_ELE_DWLINK, DownLinkCounter);
43114320
modlora_nvs_set_uint(E_LORA_NVS_ELE_UPLINK, UpLinkCounter);
43124321

@@ -4317,7 +4326,6 @@ void LoRaMacNvsSave( void )
43174326
modlora_nvs_set_uint(E_LORA_NVS_ELE_DEVADDR, LoRaMacDevAddr);
43184327

43194328
modlora_nvs_set_uint(E_LORA_NVS_ELE_ADR_ACKS, AdrAckCounter);
4320-
modlora_nvs_set_uint(E_LORA_NVS_ELE_ACK_REQ, SrvAckRequested);
43214329
}
43224330

43234331
void LoRaMacTestSetDutyCycleOn( bool enable )
@@ -4336,3 +4344,23 @@ LoRaMacParams_t * LoRaMacGetMacParams(void) {
43364344
bool * LoRaMacGetSrvAckRequested(void) {
43374345
return &SrvAckRequested;
43384346
}
4347+
4348+
bool * LoRaMacGetMacCmdNextTx(void) {
4349+
return &MacCommandsInNextTx;
4350+
}
4351+
4352+
uint8_t * LoRaMacGetMacCmdBufferIndex(void) {
4353+
return &MacCommandsBufferIndex;
4354+
}
4355+
4356+
uint8_t * LoRaMacGetMacCmdBufferRepeatIndex(void) {
4357+
return &MacCommandsBufferToRepeatIndex;
4358+
}
4359+
4360+
uint8_t * LoRaMacGetMacCmdBuffer(void) {
4361+
return MacCommandsBuffer;
4362+
}
4363+
4364+
uint8_t * LoRaMacGetMacCmdBufferRepeat(void) {
4365+
return MacCommandsBufferToRepeat;
4366+
}

lib/lora/mac/LoRaMac.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1799,6 +1799,16 @@ LoRaMacParams_t * LoRaMacGetMacParams(void);
17991799

18001800
bool * LoRaMacGetSrvAckRequested(void);
18011801

1802+
bool * LoRaMacGetMacCmdNextTx(void);
1803+
1804+
uint8_t * LoRaMacGetMacCmdBufferIndex(void);
1805+
1806+
uint8_t * LoRaMacGetMacCmdBufferRepeatIndex(void);
1807+
1808+
uint8_t * LoRaMacGetMacCmdBuffer(void);
1809+
1810+
uint8_t * LoRaMacGetMacCmdBufferRepeat(void);
1811+
18021812
/*! \} defgroup LORAMAC */
18031813

18041814
#endif // __LORAMAC_H__

0 commit comments

Comments
 (0)