【Device】入网参数的保存
ST 适配的 LoRaWAN 协议栈 stm32-mw-lorawan 当前版本:2.6.2 由于是 ST 适配过,所以和 Semtech 开源的 LoRaMac-node 协议栈还是有差别的 一、OTAA 1. 参数 OTAA 主要参数如下: DevAddr AppSKey NwkSKey NetworkActivation 2. 入网保存参数的流程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /* Mac/LoRaMac.c */ static void ProcessRadioRxDone( void ) { ... switch( macHdr.Bits.MType ) { case FRAME_TYPE_JOIN_ACCEPT: { ... SecureElementGetJoinEui( joinEui ); /* 解密 */ macCryptoStatus = LoRaMacCryptoHandleJoinAccept( JOIN_REQ, joinEui, &macMsgJoinAccept ); ... ... /** * 更新设备地址 DevAddr * 1. Nvm.MacGroup2.DevAddr * 2. Nvm.SecureElement.SeNvmDevJoinKey.DevAddrOTAA */ Nvm.MacGroup2.DevAddr = macMsgJoinAccept.DevAddr; SecureElementSetDevAddr( ACTIVATION_TYPE_OTAA, Nvm.MacGroup2.DevAddr ); ... /* 更新激活状态 NetworkActivation */ Nvm.MacGroup2.NetworkActivation = ACTIVATION_TYPE_OTAA; ... ... break; } ... } ... } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 /* Mac/LoRaMacCrypto.c */ LoRaMacCryptoStatus_t LoRaMacCryptoHandleJoinAccept( JoinReqIdentifier_t joinReqType, uint8_t* joinEUI, LoRaMacMessageJoinAccept_t* macMsg ) { ... { ... /** * 生成密钥 AppSKey * 1. Nvm.SecureElement.KeyList[], 对应的 key id 是 APP_S_KEY */ retval = DeriveSessionKey10x( APP_S_KEY, currentJoinNonce, netID, nonce ); ... #if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01010100 )) ... #else /** * 生成密钥 NwKSKey * 1. Nvm.SecureElement.KeyList[], 对应的 key id 是 NWK_S_KEY */ retval = DeriveSessionKey10x( NWK_S_KEY, currentJoinNonce, netID, nonce ); #endif ... } ... /** * FCnt 相关统计清零 * CryptoNvm 指向的是 Nvm.Crypto, 实际是 * 1. Nvm.Crypto.FCntList.FCntUp * 2. Nvm.Crypto.FCntList.FCntDown * 3. Nvm.Crypto.FCntList.NFCntDown * 4. Nvm.Crypto.FCntList.AFCntDown */ CryptoNvm->FCntList.FCntUp = 0; CryptoNvm->FCntList.FCntDown = FCNT_DOWN_INITIAL_VALUE; CryptoNvm->FCntList.NFCntDown = FCNT_DOWN_INITIAL_VALUE; CryptoNvm->FCntList.AFCntDown = FCNT_DOWN_INITIAL_VALUE; return LORAMAC_CRYPTO_SUCCESS; } 二、ABP 1. 参数 ABP 要预先配置的参数如下: ...