alan broad
/
carbon_v5_arm_studio
arm studio build
Revision 2:0af50f386eb2, committed 2018-08-04
- Comitter:
- alan1974
- Date:
- Sat Aug 04 19:56:33 2018 +0000
- Parent:
- 1:0d25d9ddbe9f
- Child:
- 3:a555e1085e69
- Commit message:
- update
Changed in this revision
--- 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]; }