arm studio build

Dependencies:   libxDot-mbed5

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;
 }