Skip to content

Commit 36303c0

Browse files
Update other code to match STM32CubeWL 1.3.0
This replaces the USE_LRWAN_1_1_X_CRYPTO macro with a check against LORAMAC_VERSION to match the STM32CubeWL code, and makes some other changes to match changes in STM32CubeWL.
1 parent 37ca842 commit 36303c0

File tree

4 files changed

+44
-29
lines changed

4 files changed

+44
-29
lines changed

src/BSP/se-identity.h

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,13 @@
102102
*/
103103
#define STATIC_DEVICE_EUI 0
104104

105-
/*!
106-
* end-device IEEE EUI (big endian)
107-
*/
108-
#define LORAWAN_DEVICE_EUI { }
109-
110-
/*!
111-
* App/Join server IEEE EUI (big endian)
112-
*/
113-
#define LORAWAN_JOIN_EUI { }
105+
// This leaves all join ids (not keys, like the field name suggests)
106+
// empty, the actual id values will be configured at runtime
107+
#define SOFT_SE_ID_LIST .SeNvmDevJoinKey = {}
114108

115-
#if (USE_LRWAN_1_1_X_CRYPTO == 1)
109+
// This defines slots for all needed keys, but leaves their value empty
110+
// to be configured at runtime.
111+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
116112
#define SESSION_KEYS_LIST \
117113
{ \
118114
/*! \
@@ -160,8 +156,15 @@
160156
*/ \
161157
.KeyID = APP_S_KEY, \
162158
.KeyValue = { }, \
159+
}, \
160+
{ \
161+
/*! \
162+
* Datablock MIC key \
163+
*/ \
164+
.KeyID = DATABLOCK_INT_KEY, \
165+
.KeyValue = { }, \
163166
},
164-
#else /* USE_LRWAN_1_1_X_CRYPTO == 0 */
167+
#else /* ( LORAMAC_VERSION == 0x01010100 ) */
165168
#define SESSION_KEYS_LIST \
166169
{ \
167170
/*! \
@@ -176,8 +179,15 @@
176179
*/ \
177180
.KeyID = APP_S_KEY, \
178181
.KeyValue = { }, \
182+
}, \
183+
{ \
184+
/*! \
185+
* Datablock MIC key \
186+
*/ \
187+
.KeyID = DATABLOCK_INT_KEY, \
188+
.KeyValue = { }, \
179189
},
180-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
190+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
181191

182192
#if (LORAMAC_MAX_MC_CTX == 1)
183193
#define SESSION_MC_KEYS_LIST \

src/BSP/utilities_conf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,6 @@
5757
*/
5858
#define UTILS_EXIT_CRITICAL_SECTION() __set_PRIMASK(primask_bit)
5959

60+
#define ALIGN(n) __attribute__((aligned(n)))
61+
6062
#endif /*__UTILITIES_CONF_H__ */

src/STM32LoRaWAN.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -645,15 +645,15 @@ size_t STM32LoRaWAN::mibHexSize(const char *name, Mib_t type) {
645645

646646
case MIB_APP_KEY:
647647
case MIB_NWK_KEY:
648-
#if ( USE_LRWAN_1_1_X_CRYPTO == 1 )
648+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
649649
case MIB_J_S_INT_KEY:
650650
case MIB_J_S_ENC_KEY:
651651
case MIB_F_NWK_S_INT_KEY:
652652
case MIB_S_NWK_S_INT_KEY:
653653
case MIB_NWK_S_ENC_KEY:
654-
#else /* USE_LRWAN_1_1_X_CRYPTO == 0 */
654+
#else /* ( LORAMAC_VERSION == 0x01010100 ) */
655655
case MIB_NWK_S_KEY:
656-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
656+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
657657
case MIB_APP_S_KEY:
658658
case MIB_MC_KE_KEY:
659659
#if ( LORAMAC_MAX_MC_CTX > 0 )
@@ -710,15 +710,15 @@ bool STM32LoRaWAN::mibGetHex(const char* name, Mib_t type, String* value) {
710710
break;
711711
case MIB_APP_KEY: buf = mibReq.Param.AppKey; break;
712712
case MIB_NWK_KEY: buf = mibReq.Param.NwkKey; break;
713-
#if ( USE_LRWAN_1_1_X_CRYPTO == 1 )
713+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
714714
case MIB_J_S_INT_KEY: buf = mibReq.Param.JSIntKey; break;
715715
case MIB_J_S_ENC_KEY: buf = mibReq.Param.JSEncKey; break;
716716
case MIB_F_NWK_S_INT_KEY: buf = mibReq.Param.FNwkSIntKey; break;
717717
case MIB_S_NWK_S_INT_KEY: buf = mibReq.Param.SNwkSIntKey; break;
718718
case MIB_NWK_S_ENC_KEY: buf = mibReq.Param.NwkSEncKey; break;
719-
#else /* USE_LRWAN_1_1_X_CRYPTO == 0 */
719+
#else /* ( LORAMAC_VERSION == 0x01010100 ) */
720720
case MIB_NWK_S_KEY: buf = mibReq.Param.NwkSKey; break;
721-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
721+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
722722
case MIB_APP_S_KEY: buf = mibReq.Param.AppSKey; break;
723723
case MIB_MC_KE_KEY: buf = mibReq.Param.McKEKey; break;
724724
#if ( LORAMAC_MAX_MC_CTX > 0 )
@@ -770,15 +770,15 @@ bool STM32LoRaWAN::mibSetHex(const char* name, Mib_t type, const char* value) {
770770
case MIB_DEV_ADDR: mibReq.Param.DevAddr = makeUint32(buf[0], buf[1], buf[2], buf[3]); break;
771771
case MIB_APP_KEY: mibReq.Param.AppKey = buf; break;
772772
case MIB_NWK_KEY: mibReq.Param.NwkKey = buf; break;
773-
#if ( USE_LRWAN_1_1_X_CRYPTO == 1 )
773+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
774774
case MIB_J_S_INT_KEY: mibReq.Param.JSIntKey = buf; break;
775775
case MIB_J_S_ENC_KEY: mibReq.Param.JSEncKey = buf; break;
776776
case MIB_F_NWK_S_INT_KEY: mibReq.Param.FNwkSIntKey = buf; break;
777777
case MIB_S_NWK_S_INT_KEY: mibReq.Param.SNwkSIntKey = buf; break;
778778
case MIB_NWK_S_ENC_KEY: mibReq.Param.NwkSEncKey = buf; break;
779-
#else /* USE_LRWAN_1_1_X_CRYPTO == 0 */
779+
#else /* ( LORAMAC_VERSION == 0x01010100 ) */
780780
case MIB_NWK_S_KEY: mibReq.Param.NwkSKey = buf; break;
781-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
781+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
782782
case MIB_APP_S_KEY: mibReq.Param.AppSKey = buf; break;
783783
case MIB_MC_KE_KEY: mibReq.Param.McKEKey = buf; break;
784784
#if ( LORAMAC_MAX_MC_CTX > 0 )
@@ -1013,6 +1013,8 @@ const char *STM32LoRaWAN::toString(Mlme_t mlme) {
10131013
return "MLME_REJOIN_0";
10141014
case MLME_REJOIN_1:
10151015
return "MLME_REJOIN_1";
1016+
case MLME_REJOIN_2:
1017+
return "MLME_REJOIN_2";
10161018
case MLME_LINK_CHECK:
10171019
return "MLME_LINK_CHECK";
10181020
case MLME_TXCW:
@@ -1021,8 +1023,6 @@ const char *STM32LoRaWAN::toString(Mlme_t mlme) {
10211023
case MLME_TXCW_1:
10221024
return "MLME_TXCW_1";
10231025
#endif /* LORAMAC_VERSION */
1024-
case MLME_SCHEDULE_UPLINK:
1025-
return "MLME_SCHEDULE_UPLINK";
10261026
case MLME_DERIVE_MC_KE_KEY:
10271027
return "MLME_DERIVE_MC_KE_KEY";
10281028
case MLME_DERIVE_MC_KEY_PAIR:
@@ -1039,6 +1039,8 @@ const char *STM32LoRaWAN::toString(Mlme_t mlme) {
10391039
return "MLME_BEACON_TIMING";
10401040
case MLME_BEACON_LOST:
10411041
return "MLME_BEACON_LOST";
1042+
case MLME_REVERT_JOIN:
1043+
return "MLME_REVERT_JOIN";
10421044
default:
10431045
return "<unknown>";
10441046
}
@@ -1252,7 +1254,7 @@ void STM32LoRaWAN::MacMcpsIndication(McpsIndication_t* i, LoRaMacRxStatus_t* sta
12521254
core_debug(
12531255
"McpsIndication: ind=%s, status=%s, multicast=%u, port=%u, datarate=%u, pending=%u, size=%u, rxdata=%u, ack=%u, dncnt=%u, devaddr=%08x, rssi=%d, snr=%d, slot=%u\r\n",
12541256
toString(i->McpsIndication), toString(i->Status), i->Multicast, i->Port,
1255-
i->RxDatarate, i->FramePending, i->BufferSize, i->RxData,
1257+
i->RxDatarate, i->IsUplinkTxPending, i->BufferSize, i->RxData,
12561258
i->AckReceived, i->DownLinkCounter, i->DevAddress,
12571259
status->Rssi, status->Snr, status->RxSlot);
12581260

src/STM32LoRaWAN.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,27 +377,27 @@ class STM32LoRaWAN : public Stream {
377377
bool setAppSKey(String value) { return setAppSKey(value.c_str()); }
378378
bool setNwkSKey(const char *value)
379379
{
380-
#if ( USE_LRWAN_1_1_X_CRYPTO == 1 )
380+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
381381
// When compiled for 1.1 crypto, three different keys are used.
382382
// When the sketch only supplies a single key, just set all
383383
// three keys to the same value.
384384
return mibSetHex("NwkSEncKey", MIB_NWK_S_ENC_KEY, value)
385385
&& mibSetHex("FNwkSIntKey", MIB_F_NWK_S_INT_KEY, value)
386386
&& mibSetHex("SNwkSIntKey", MIB_S_NWK_S_INT_KEY, value);
387-
#else /* USE_LRWAN_1_1_X_CRYPTO == 0 */
387+
#else /* ( LORAMAC_VERSION == 0x01010100 ) */
388388
return mibSetHex("NwkSKey", MIB_NWK_S_KEY, value);
389-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
389+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
390390
}
391391
bool setNwkSKey(String value) { return setNwkSKey(value.c_str()); }
392392

393-
#if ( USE_LRWAN_1_1_X_CRYPTO == 1 )
393+
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 ))
394394
bool setNwkSEncKey(const char *value) { return mibSetHex("NwkSEncKey", MIB_NWK_S_ENC_KEY, value); }
395395
bool setNwkSEncKey(String value) { return setNwkSEncKey(value.c_str()); }
396396
bool setFNwkSIntKey(const char *value) { return mibSetHex("FNwkSIntKey", MIB_F_NWK_S_INT_KEY, value); }
397397
bool setFNwkSIntKey(String value) { return setFNwkSIntKey(value.c_str()); }
398398
bool setSNwkSIntKey(const char *value) { return mibSetHex("SNwkSIntKey", MIB_S_NWK_S_INT_KEY, value); }
399399
bool setSNwkSIntKey(String value) { return setSNwkSIntKey(value.c_str()); }
400-
#endif /* USE_LRWAN_1_1_X_CRYPTO */
400+
#endif /* ( LORAMAC_VERSION == 0x01010100 ) */
401401
/// @}
402402

403403
/**
@@ -957,6 +957,7 @@ class STM32LoRaWAN : public Stream {
957957
.GetBatteryLevel = nullptr,
958958
.GetTemperatureLevel = nullptr,
959959
.GetUniqueId = nullptr, // Not needed, we just explicitly set the deveui in begin()
960+
.GetDevAddress = nullptr, // Not needed, user explicitly configures devaddr
960961
.NvmDataChange = nullptr,
961962
.MacProcessNotify = MacProcessNotify,
962963
};

0 commit comments

Comments
 (0)