arm studio build

Dependencies:   libxDot-mbed5

Files at this revision

API Documentation at this revision

Comitter:
alan1974
Date:
Sat Aug 04 19:56:33 2018 +0000
Parent:
1:0d25d9ddbe9f
Child:
3:a555e1085e69
Commit message:
update

Changed in this revision

inc/commI2C.h Show annotated file Show diff for this revision Revisions of this file
inc/global.h Show annotated file Show diff for this revision Revisions of this file
src/commI2C.cpp Show annotated file Show diff for this revision Revisions of this file
src/main.cpp Show annotated file Show diff for this revision Revisions of this file
src/wbit_util.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/inc/commI2C.h	Sat Aug 04 19:25:02 2018 +0000
+++ b/inc/commI2C.h	Sat Aug 04 19:56:33 2018 +0000
@@ -103,17 +103,7 @@
   uint8_t   cmd;                        //cmd received from proc
   uint8_t   dataLen;                    //datalen found in pkt  
   bool      bSetParams;                 //if true then set and save variable params to nvm; false=> read params
-  uint8_t   maxDataLen;                 //max data length in pkt (read only)
-  uint8_t   maxTxPowerdBm;              //max power              (read only) 
-  uint8_t   minTxPowerdBm;              //min power              (read only)
-  uint8_t   public_network;             //public = true, private = false;
-  uint8_t   sub_band;                   //network subband #
-  bool      aDR;                        //true if ADR enabled
-  int8_t    antennaGaindBi;             //antenna gain
-  uint8_t   txPowerdBm;                 //transmit power
-  uint8_t   dataRate;                   //data rate 
-  uint8_t   appPort;                    //app port  -> not used
-  uint8_t   linkChkCount;               //link check count    
+  xdot_radio_params params;
 }pkt_setradioup;
 
 //downstream pkt struc
@@ -122,17 +112,7 @@
   uint8_t   ack;                        //ack header response
   uint8_t   cmd;                        //cmd received from proc
   uint8_t   dataLen;                    //datalen found in pkt  
-  uint8_t   maxDataLen;                 //max data length in pkt
-  uint8_t   maxTxPowerdBm;              //max power
-  uint8_t   minTxPowerdBm;              //min power
-  uint8_t   public_network;             //public = true, private = false;
-  uint8_t   sub_band;                   //network subband #
-  bool      aDR;                        //true if ADR enabled
-  int8_t    antennaGaindBi;             //antenna gain
-  uint8_t   txPowerdBm;                 //transmit power
-  uint8_t   dataRate;                   //data rate 
-  uint8_t   appPort;                     //app port  -> not used
-  uint8_t   linkChkCount;               //link check count 
+  xdot_radio_params params;
 }pkt_setradiodwn;
 
 //nvm ptks
--- a/inc/global.h	Sat Aug 04 19:25:02 2018 +0000
+++ b/inc/global.h	Sat Aug 04 19:56:33 2018 +0000
@@ -3,6 +3,24 @@
 
 #include "mbed.h"
 
+
+
+//struc to set radio parameters
+typedef struct {  
+  uint8_t   maxDataLen;                 //max data length in pkt (read only)
+  uint8_t   maxTxPowerdBm;              //max power              (read only) 
+  uint8_t   minTxPowerdBm;              //min power              (read only)
+  uint8_t   public_network;             //public = true, private = false;
+  uint8_t   sub_band;                   //network subband #
+  bool      aDR;                        //true if ADR enabled
+  int8_t    antennaGaindBi;             //antenna gain
+  uint8_t   txPowerdBm;                 //transmit power
+  uint8_t   dataRate;                   //data rate 
+  uint8_t   appPort;                     //app port  
+  uint8_t   linkChkCount;               //link check count        
+}xdot_radio_params; 
+
+//struc to set nvm params
 typedef struct {   
   uint8_t   network_id[8];              //not used?
   uint8_t   network_key[16];            //OTAA key
--- a/src/commI2C.cpp	Sat Aug 04 19:25:02 2018 +0000
+++ b/src/commI2C.cpp	Sat Aug 04 19:56:33 2018 +0000
@@ -1,4 +1,5 @@
 #include "mbed.h"
+#include "global.h"
 #include "commI2C.h"
 
 extern uint8_t buf_xmt[BUFFER_SIZE_I2C];  //outgoing data
--- a/src/main.cpp	Sat Aug 04 19:25:02 2018 +0000
+++ b/src/main.cpp	Sat Aug 04 19:56:33 2018 +0000
@@ -420,35 +420,35 @@
                         pDwnRadio->cmd = XDOT_CMD_SET_RADIO;
 
                         if (pUpRadio->bSetParams){
-                            pc.printf("\n\r setting subband to %d ",pUpRadio->sub_band);                                   
-                            cfg_network(false,true,(uint8_t)pUpRadio->sub_band);                                                
-                            pc.printf("\n\r setting adr to %d ",pUpRadio->aDR);                                   
-                            dot->setAdr((uint8_t)pUpRadio->aDR);  // enable or disable Adaptive Data Rate
-                            pc.printf("\n\r setting antenna gain to %d ",pUpRadio->antennaGaindBi);                                   
-                            dot->setAntennaGain(pUpRadio->antennaGaindBi);
-                            pc.printf("\n\r setting radio tx power to %d ",pUpRadio->txPowerdBm);                                   
-                            dot->setTxPower(pUpRadio->txPowerdBm);
-                            pc.printf("\n\r setting tx datarate to %d ",pUpRadio->dataRate);                                   
-                            dot->setTxDataRate(pUpRadio->dataRate);                         
+                            pc.printf("\n\r setting subband to %d ",pUpRadio->params.sub_band);                                   
+                            cfg_network(false,true,(uint8_t)pUpRadio->params.sub_band);                                                
+                            pc.printf("\n\r setting adr to %d ",pUpRadio->params.aDR);                                   
+                            dot->setAdr((uint8_t)pUpRadio->params.aDR);  // enable or disable Adaptive Data Rate
+                            pc.printf("\n\r setting antenna gain to %d ",pUpRadio->params.antennaGaindBi);                                   
+                            dot->setAntennaGain(pUpRadio->params.antennaGaindBi);
+                            pc.printf("\n\r setting radio tx power to %d ",pUpRadio->params.txPowerdBm);                                   
+                            dot->setTxPower(pUpRadio->params.txPowerdBm);
+                            pc.printf("\n\r setting tx datarate to %d ",pUpRadio->params.dataRate);                                   
+                            dot->setTxDataRate(pUpRadio->params.dataRate);                         
                          //   pc.printf("\n\r setting application port %d ",pUpRadio->appPort);                                   
                          //   dot->setAppPort(pUpRadio->appPort);
-                            pc.printf("\n\r setting link check threshold %d ",pUpRadio->linkChkCount);                                   
-                            dot->setLinkCheckThreshold(pUpRadio->linkChkCount);
+                            pc.printf("\n\r setting link check threshold %d ",pUpRadio->params.linkChkCount);                                   
+                            dot->setLinkCheckThreshold(pUpRadio->params.linkChkCount);
                             pc.printf("\n\r saving configuration");
                             if (!dot->saveConfig())logError("failed to save configuration");                                                        
                             display_config();                              
                         }
                         
-                        pDwnRadio->public_network = public_network;
-                        pDwnRadio->sub_band = dot->getFrequencySubBand();
-                        pDwnRadio->linkChkCount = dot->getLinkCheckThreshold();
-                        pDwnRadio->maxDataLen = dot->getMaxPacketLength();                   
-                        pDwnRadio->maxTxPowerdBm = dot->getMaxTxPower();
-                        pDwnRadio->minTxPowerdBm = dot->getMinTxPower();
-                        pDwnRadio->aDR = dot->getAdr();
-                        pDwnRadio->antennaGaindBi = dot->getAntennaGain();
-                        pDwnRadio->txPowerdBm = dot->getTxPower();                      
-                        pDwnRadio->dataRate = dot->getTxDataRate();
+                        pDwnRadio->params.public_network = public_network;
+                        pDwnRadio->params.sub_band = dot->getFrequencySubBand();
+                        pDwnRadio->params.linkChkCount = dot->getLinkCheckThreshold();
+                        pDwnRadio->params.maxDataLen = dot->getMaxPacketLength();                   
+                        pDwnRadio->params.maxTxPowerdBm = dot->getMaxTxPower();
+                        pDwnRadio->params.minTxPowerdBm = dot->getMinTxPower();
+                        pDwnRadio->params.aDR = dot->getAdr();
+                        pDwnRadio->params.antennaGaindBi = dot->getAntennaGain();
+                        pDwnRadio->params.txPowerdBm = dot->getTxPower();                      
+                        pDwnRadio->params.dataRate = dot->getTxDataRate();
 //                        pDwnRadio->appPort = dot->getAppPort();                         
                         break;    
                     case XDOT_CMD_GET_EUI:   //0307: modified to include radio parameter settings   
@@ -481,7 +481,12 @@
                         pktwrk->bSetNetwrk = (uint8_t)bWriteSession;                        
                         break;    
                     case XDOT_CMD_SET_NVM:
-                        
+                        pkt_setnvmdwn *pDwnNvm= (pkt_setnvmdwn*)&buf_xmt[0];                                 
+                        pkt_setnvmup  *pUpNvm = (pkt_setnvmup*)&buf_rcv[0];                                
+                        pDwnNvm->ack = I2C_ACK_PROC;
+                        pDwnNvm->cmd = XDOT_CMD_SET_RADIO;
+                        nvmWrite(&pUpNvm->nvmData);
+                        nvmRead(&pDwnNvm->nvmData);
                         break;    
                     case XDOT_CMD_SET_KEY_X:
                         pc.printf("\n\r proc cmd: set a key, simulating minm delay before wake pulse\r\n");                                  
--- a/src/wbit_util.cpp	Sat Aug 04 19:25:02 2018 +0000
+++ b/src/wbit_util.cpp	Sat Aug 04 19:56:33 2018 +0000
@@ -4,20 +4,31 @@
 #include "commI2C.h"
 #include "mbed.h"
 #include "mDot.h"
-
+extern Serial pc;
 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                              
+uint8_t network_key[] = { 0x0F, 0xF9, 0xA2, 0x90, 0x2E, 0xAA, 0x6B, 0x8C, 0x6A, 0x4E, 0xFD, 0x67, 0xF9, 0xA6, 0xF3, 0xD3 };   //OTAA appkey    
+//==============================================================================
+//printNmvData
 //==============================================================================
-//getChkSum
+void printNmvData(nvm *pNvm){
+     uint8_t i;
+     pc.printf("\r\nnon-volatile memory (nvm):"); 
+     pc.printf("\r\nnetwork_id:"); 
+    // for (i = 0 ; i < sizeof(nvm.network_id);i++)i =1;
+     //pc.printf(pNvm->network[i];
+    
+}                              
+//==============================================================================
+//getNvmChkSum
 //compute chksum for nvm data; don't include chksum byte in nvm struc
 //==============================================================================
-uint8_t getChkSum(nvm *pNvm){
-   uint8_t i;
+uint8_t getNvmChkSum(nvm *pNvm){
+    uint8_t i;
     uint8_t chksum= 0;   
     uint8_t *pData = (uint8_t *)pNvm;
     
@@ -29,7 +40,7 @@
 //write nvmData struc to nvm memory
 //==============================================================================
 bool nvmWrite(nvm *pNvm){   
-   pNvm->chksum = getChkSum(pNvm);
+   pNvm->chksum = getNvmChkSum(pNvm);
    return dot->nvmWrite(0,pNvm,sizeof(nvm));      
 }
 //==============================================================================
@@ -40,13 +51,13 @@
 bool nvmRead(nvm *pNvm){     
    uint8_t i;  
    dot->nvmRead(0,pNvm,sizeof(nvm));  
-   uint8_t chksum = getChkSum(pNvm);
+   uint8_t chksum = getNvmChkSum(pNvm);
    if (chksum == pNvm->chksum){
-       logInfo("nmvRead: chksum ok");    
+       logInfo("nvmRead: chksum ok");    
        return true;
    }    
 //bad chksum, resort to old hard coded keys  
-   logInfo("nmvRead: bad chksum, using default values");      
+   pc.printf("nvmRead: bad chksum, using default values");      
    for (i = 0; i < sizeof(network_id);i++){
         pNvm->network_id[i] = network_id[i];   
     }