![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
arm studio build
Diff: src/wbit_util.cpp
- Revision:
- 1:0d25d9ddbe9f
- Parent:
- 0:a91cd1b08360
- Child:
- 2:0af50f386eb2
--- a/src/wbit_util.cpp Mon Jun 18 17:31:35 2018 +0000 +++ b/src/wbit_util.cpp Sat Aug 04 19:25:02 2018 +0000 @@ -1,10 +1,63 @@ +#include "global.h" #include "wbit_util.h" #include "dot_util.h" +#include "commI2C.h" #include "mbed.h" #include "mDot.h" -uint8_t j_attempts = 0; -//return number of attempts it took to join the network +uint8_t j_attempts = 0; //return number of attempts it took to join the network + + +//network keys +//these are used as backup keys in case nvm memory is corrupted and we can't read the keys correctly +uint8_t network_id[] = { 0x90, 0xF1, 0x47, 0x90, 0x6C, 0x48, 0x1D, 0x29 }; //static id not used anymore but don't comment out +uint8_t network_key[] = { 0x0F, 0xF9, 0xA2, 0x90, 0x2E, 0xAA, 0x6B, 0x8C, 0x6A, 0x4E, 0xFD, 0x67, 0xF9, 0xA6, 0xF3, 0xD3 }; //OTAA appkey +//============================================================================== +//getChkSum +//compute chksum for nvm data; don't include chksum byte in nvm struc +//============================================================================== +uint8_t getChkSum(nvm *pNvm){ + uint8_t i; + uint8_t chksum= 0; + uint8_t *pData = (uint8_t *)pNvm; + + for (i = 0 ; i < sizeof(nvm)-1;i++)chksum += pData[i]; + return chksum; +} +//============================================================================== +//nvmWrite +//write nvmData struc to nvm memory +//============================================================================== +bool nvmWrite(nvm *pNvm){ + pNvm->chksum = getChkSum(pNvm); + return dot->nvmWrite(0,pNvm,sizeof(nvm)); +} +//============================================================================== +//nvmRead +//- read nvmData struc from nvm memory +//- if bad chksum then default to hard code network keys +//============================================================================== +bool nvmRead(nvm *pNvm){ + uint8_t i; + dot->nvmRead(0,pNvm,sizeof(nvm)); + uint8_t chksum = getChkSum(pNvm); + if (chksum == pNvm->chksum){ + logInfo("nmvRead: chksum ok"); + return true; + } +//bad chksum, resort to old hard coded keys + logInfo("nmvRead: bad chksum, using default values"); + for (i = 0; i < sizeof(network_id);i++){ + pNvm->network_id[i] = network_id[i]; + } + for (i = 0; i < sizeof(network_key);i++){ + pNvm->network_key[i] = network_key[i]; + } + pNvm->bLogOutputOn = 1; //disable log output + return false; +} +//============================================================================ + uint8_t join_network_attempts_wbit() { return j_attempts; }