Transport code harmonization (#1072)

This commit is contained in:
tekka
2018-02-20 12:32:17 +01:00
committed by Henrik Ekblad
parent b51981ab3d
commit 57eca4f4af
7 changed files with 30 additions and 90 deletions
+4 -59
View File
@@ -200,7 +200,6 @@ LOCAL bool RFM69_initialise(const uint32_t frequencyHz)
RFM69.powerLevel = MY_RFM69_TX_POWER_DBM + 1; // will be overwritten when set RFM69.powerLevel = MY_RFM69_TX_POWER_DBM + 1; // will be overwritten when set
RFM69.radioMode = RFM69_RADIO_MODE_SLEEP; RFM69.radioMode = RFM69_RADIO_MODE_SLEEP;
RFM69.ATCenabled = false; RFM69.ATCenabled = false;
RFM69.listenModeEnabled = false;
RFM69.ATCtargetRSSI = RFM69_RSSItoInternal(MY_RFM69_ATC_TARGET_RSSI_DBM); RFM69.ATCtargetRSSI = RFM69_RSSItoInternal(MY_RFM69_ATC_TARGET_RSSI_DBM);
// SPI init // SPI init
@@ -354,7 +353,7 @@ LOCAL uint8_t RFM69_receive(uint8_t *buf, const uint8_t maxBufSize)
// clear data flag // clear data flag
RFM69.dataReceived = false; RFM69.dataReceived = false;
if (RFM69_getACKRequested(controlFlags) && !RFM69_getACKReceived(controlFlags)) { if (RFM69_getACKRequested(controlFlags) && !RFM69_getACKReceived(controlFlags)) {
#if defined(MY_GATEWAY_FEATURE) && (F_CPU>16000000) #if defined(MY_GATEWAY_FEATURE) && (F_CPU>16*1000000ul)
// delay for fast GW and slow nodes // delay for fast GW and slow nodes
delay(50); delay(50);
#endif #endif
@@ -425,9 +424,9 @@ LOCAL bool RFM69_send(const uint8_t recipient, uint8_t *data, const uint8_t len,
LOCAL void RFM69_setFrequency(const uint32_t frequencyHz) LOCAL void RFM69_setFrequency(const uint32_t frequencyHz)
{ {
const uint32_t freqHz = (uint32_t)(frequencyHz / RFM69_FSTEP); const uint32_t freqHz = (uint32_t)(frequencyHz / RFM69_FSTEP);
RFM69_writeReg(RFM69_REG_FRFMSB, (freqHz >> 16) & 0xFF); RFM69_writeReg(RFM69_REG_FRFMSB, (uint8_t)((freqHz >> 16) & 0xFF));
RFM69_writeReg(RFM69_REG_FRFMID, (freqHz >> 8) & 0xFF); RFM69_writeReg(RFM69_REG_FRFMID, (uint8_t)((freqHz >> 8) & 0xFF));
RFM69_writeReg(RFM69_REG_FRFLSB, freqHz & 0xFF); RFM69_writeReg(RFM69_REG_FRFLSB, (uint8_t)(freqHz & 0xFF));
} }
LOCAL void RFM69_setHighPowerRegs(const bool onOff) LOCAL void RFM69_setHighPowerRegs(const bool onOff)
@@ -774,60 +773,6 @@ LOCAL rfm69_RSSI_t RFM69_readRSSI(const bool forceTrigger)
return (rfm69_RSSI_t)RFM69_readReg(RFM69_REG_RSSIVALUE); return (rfm69_RSSI_t)RFM69_readReg(RFM69_REG_RSSIVALUE);
} }
/* UNUSED
LOCAL uint8_t RFM69_getVersion(void)
{
return RFM69_readReg(RFM69_REG_VERSION);
}
LOCAL uint8_t RFM69_readTemperature(const uint8_t calFactor)
{
(void)RFM69_setRadioMode(RFM69_RADIO_MODE_STDBY);
RFM69_writeReg(RFM69_REG_TEMP1, RFM69_TEMP1_MEAS_START);
const uint32_t enterMS = hwMillis();
while ((RFM69_readReg(RFM69_REG_TEMP1) & RFM69_TEMP1_MEAS_RUNNING) && hwMillis() - enterMS < 500);
return ~RFM69_readReg(RFM69_REG_TEMP2) + RFM69_COURSE_TEMP_COEF +
calFactor; // 'complement' corrects the slope, rising temp = rising val
}
LOCAL uint8_t RFM69_setLNA(const uint8_t newReg)
{
const uint8_t oldReg = RFM69_readReg(RFM69_REG_LNA);
RFM69_writeReg(RFM69_REG_LNA, ((newReg & 7) | (oldReg &
~7))); // just control the LNA Gain bits for now
return oldReg; // return the original value in case we need to restore it
}
LOCAL bool RFM69_waitCAD(void)
{
const uint32_t enterMS = hwMillis();
(void)RFM69_setRadioMode(RFM69_RADIO_MODE_RX);
while (RFM69.radioMode == RFM69_RADIO_MODE_RX && !RFM69.dataReceived &&
RFM69_RSSItoInternal(RFM69_readRSSI()) > RFM69_RSSItoInternal(RFM69_CSMA_LIMIT_DBM)) {
if (hwMillis() - enterMS > RFM69_CSMA_TIMEOUT_MS) {
return false;
}
}
return true;
}
LOCAL void RFM69_rcCalibration(void)
{
// RC oscillator calibration
// On the SX1231 V2a, RC calibration at power-up needs to be performed
// This is not required in the version V2b any more, where the calibration is fully automatic
// see SX1231 datasheet, chapter 9 (Chip Revision)
RFM69_writeReg(0x57, 0x80);
RFM69_writeReg(RFM69_REG_OSC1, RFM69_OSC1_RCCAL_START);
while (!(RFM69_readReg(RFM69_REG_OSC1) & RFM69_OSC1_RCCAL_DONE)) {};
RFM69_writeReg(RFM69_REG_OSC1, RFM69_OSC1_RCCAL_START);
while (!(RFM69_readReg(RFM69_REG_OSC1) & RFM69_OSC1_RCCAL_DONE)) {};
RFM69_writeReg(0x57, 0x00);
}
*/
LOCAL void RFM69_readAllRegs(void) LOCAL void RFM69_readAllRegs(void)
{ {
#ifdef RFM69_REGISTER_DETAIL #ifdef RFM69_REGISTER_DETAIL
+1 -3
View File
@@ -326,7 +326,6 @@ typedef struct {
rfm69_RSSI_t RSSI; //!< RSSI of current packet, RSSI = value - 137 rfm69_RSSI_t RSSI; //!< RSSI of current packet, RSSI = value - 137
} __attribute__((packed)) rfm69_packet_t; } __attribute__((packed)) rfm69_packet_t;
/** /**
* @brief RFM69 internal variables * @brief RFM69 internal variables
*/ */
@@ -341,8 +340,7 @@ typedef struct {
bool dataReceived : 1; //!< data received bool dataReceived : 1; //!< data received
bool ackReceived : 1; //!< ACK received bool ackReceived : 1; //!< ACK received
bool ATCenabled : 1; //!< ATC enabled bool ATCenabled : 1; //!< ATC enabled
bool listenModeEnabled : 1; //!< Listen mode enabled uint8_t reserved : 2; //!< Reserved
bool reserved : 1; //!< Reserved
} rfm69_internal_t; } rfm69_internal_t;
#define LOCAL static //!< static #define LOCAL static //!< static
+7 -8
View File
@@ -347,9 +347,8 @@ LOCAL bool RFM95_sendFrame(rfm95_packet_t *packet, const bool increaseSequenceCo
(void)RFM95_setRadioMode(RFM95_RADIO_MODE_TX); (void)RFM95_setRadioMode(RFM95_RADIO_MODE_TX);
// wait until IRQ fires or timeout // wait until IRQ fires or timeout
const uint32_t startTX_MS = hwMillis(); const uint32_t startTX_MS = hwMillis();
while (!RFM95_irq && // todo: make this payload length + bit rate dependend
(hwMillis() - startTX_MS < while (!RFM95_irq && (hwMillis() - startTX_MS < MY_RFM95_TX_TIMEOUT_MS) ) {
MY_RFM95_TX_TIMEOUT_MS) ) { // make this payload length + bit rate dependend
doYield(); doYield();
} }
return RFM95_irq; return RFM95_irq;
@@ -371,9 +370,9 @@ LOCAL bool RFM95_send(const uint8_t recipient, uint8_t *data, const uint8_t len,
LOCAL void RFM95_setFrequency(const uint32_t frequencyHz) LOCAL void RFM95_setFrequency(const uint32_t frequencyHz)
{ {
const uint32_t freqReg = (uint32_t)(frequencyHz / RFM95_FSTEP); const uint32_t freqReg = (uint32_t)(frequencyHz / RFM95_FSTEP);
(void)RFM95_writeReg(RFM95_REG_06_FRF_MSB, (freqReg >> 16) & 0xff); (void)RFM95_writeReg(RFM95_REG_06_FRF_MSB, (uint8_t)((freqReg >> 16) & 0xff));
(void)RFM95_writeReg(RFM95_REG_07_FRF_MID, (freqReg >> 8) & 0xff); (void)RFM95_writeReg(RFM95_REG_07_FRF_MID, (uint8_t)((freqReg >> 8) & 0xff));
(void)RFM95_writeReg(RFM95_REG_08_FRF_LSB, freqReg & 0xff); (void)RFM95_writeReg(RFM95_REG_08_FRF_LSB, (uint8_t)(freqReg & 0xff));
} }
LOCAL bool RFM95_setTxPowerLevel(rfm95_powerLevel_t newPowerLevel) LOCAL bool RFM95_setTxPowerLevel(rfm95_powerLevel_t newPowerLevel)
@@ -420,8 +419,8 @@ LOCAL void RFM95_setModemRegisters(const rfm95_modemConfig_t *config)
LOCAL void RFM95_setPreambleLength(const uint16_t preambleLength) LOCAL void RFM95_setPreambleLength(const uint16_t preambleLength)
{ {
(void)RFM95_writeReg(RFM95_REG_20_PREAMBLE_MSB, (preambleLength >> 8) & 0xff); (void)RFM95_writeReg(RFM95_REG_20_PREAMBLE_MSB, (uint8_t)((preambleLength >> 8) & 0xff));
(void)RFM95_writeReg(RFM95_REG_21_PREAMBLE_LSB, preambleLength & 0xff); (void)RFM95_writeReg(RFM95_REG_21_PREAMBLE_LSB, (uint8_t)(preambleLength & 0xff));
} }
LOCAL void RFM95_setAddress(const uint8_t addr) LOCAL void RFM95_setAddress(const uint8_t addr)
-2
View File
@@ -186,8 +186,6 @@ extern HardwareSPI SPI; //!< SPI
#define RFM95_setACKReceived(__value, __flag) bitWrite(__value, RFM95_BIT_ACK_RECEIVED,__flag) //!< setACKReceived #define RFM95_setACKReceived(__value, __flag) bitWrite(__value, RFM95_BIT_ACK_RECEIVED,__flag) //!< setACKReceived
#define RFM95_setACKRSSIReport(__value, __flag) bitWrite(__value, RFM95_BIT_ACK_RSSI_REPORT,__flag) //!< setACKRSSIReport #define RFM95_setACKRSSIReport(__value, __flag) bitWrite(__value, RFM95_BIT_ACK_RSSI_REPORT,__flag) //!< setACKRSSIReport
#define RFM95_getACKRSSIReport(__value) ((bool)bitRead(__value, RFM95_BIT_ACK_RSSI_REPORT)) //!< getACKRSSIReport #define RFM95_getACKRSSIReport(__value) ((bool)bitRead(__value, RFM95_BIT_ACK_RSSI_REPORT)) //!< getACKRSSIReport
//#define RFM95_internalToRSSI(__value) ((int16_t)(__value - RFM95_RSSI_OFFSET)) //!< Convert internal RSSI to RSSI
//#define RFM95_RSSItoInternal(__value) ((uint8_t)(__value + RFM95_RSSI_OFFSET)) //!< Convert RSSI to internal RSSI
#define RFM95_internalToSNR(__value) ((int8_t)(__value / 4)) //!< Convert internal SNR to SNR #define RFM95_internalToSNR(__value) ((int8_t)(__value / 4)) //!< Convert internal SNR to SNR
#define RFM95_MIN_POWER_LEVEL_DBM ((rfm95_powerLevel_t)5u) //!< min. power level #define RFM95_MIN_POWER_LEVEL_DBM ((rfm95_powerLevel_t)5u) //!< min. power level
+4 -4
View File
@@ -68,7 +68,7 @@ bool transportInit(void)
(void)memset(RF24_psk, 0, 16); (void)memset(RF24_psk, 0, 16);
(void)memcpy(RF24_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16)); (void)memcpy(RF24_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16));
#else #else
hwReadConfigBlock((void*)RF24_psk, (void*)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16); hwReadConfigBlock((void *)RF24_psk, (void *)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16);
#endif #endif
//set up AES-key //set up AES-key
RF24_aes.set_key(RF24_psk, 16); RF24_aes.set_key(RF24_psk, 16);
@@ -93,7 +93,7 @@ uint8_t transportGetAddress(void)
return RF24_getNodeID(); return RF24_getNodeID();
} }
bool transportSend(const uint8_t to, const void* data, const uint8_t len, const bool noACK) bool transportSend(const uint8_t to, const void *data, const uint8_t len, const bool noACK)
{ {
#if defined(MY_RF24_ENABLE_ENCRYPTION) #if defined(MY_RF24_ENABLE_ENCRYPTION)
// copy input data because it is read-only // copy input data because it is read-only
@@ -124,7 +124,7 @@ bool transportSanityCheck(void)
return RF24_sanityCheck(); return RF24_sanityCheck();
} }
uint8_t transportReceive(void* data) uint8_t transportReceive(void *data)
{ {
uint8_t len = 0; uint8_t len = 0;
#if defined(MY_RX_MESSAGE_BUFFER_FEATURE) #if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
@@ -141,7 +141,7 @@ uint8_t transportReceive(void* data)
// has to be adjusted, WIP! // has to be adjusted, WIP!
RF24_aes.set_IV(0); RF24_aes.set_IV(0);
// decrypt data // decrypt data
if (RF24_aes.cbc_decrypt((uint8_t*)(data), (uint8_t*)(data), len > 16 ? 2 : 1) != AES_SUCCESS) { if (RF24_aes.cbc_decrypt((uint8_t *)data, (uint8_t *)data, len > 16 ? 2 : 1) != AES_SUCCESS) {
len = 0; len = 0;
} }
#endif #endif
+11 -11
View File
@@ -37,9 +37,9 @@ bool transportInit(void)
(void)memset(RFM69_psk, 0, 16); (void)memset(RFM69_psk, 0, 16);
(void)memcpy(RFM69_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16)); (void)memcpy(RFM69_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16));
#else #else
hwReadConfigBlock((void*)RFM69_psk, (void*)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16); hwReadConfigBlock((void *)RFM69_psk, (void*)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16);
#endif #endif
RFM69_encrypt((const char*)RFM69_psk); RFM69_encrypt((const char *)RFM69_psk);
(void)memset(RFM69_psk, 0, 16); // Make sure it is purged from memory when set (void)memset(RFM69_psk, 0, 16); // Make sure it is purged from memory when set
#else #else
(void)RFM69_encrypt; (void)RFM69_encrypt;
@@ -57,7 +57,7 @@ uint8_t transportGetAddress(void)
return RFM69_getAddress(); return RFM69_getAddress();
} }
bool transportSend(const uint8_t to, const void* data, uint8_t len, const bool noACK) bool transportSend(const uint8_t to, const void *data, uint8_t len, const bool noACK)
{ {
if (noACK) { if (noACK) {
(void)RFM69_sendWithRetry(to, data, len, 0, 0); (void)RFM69_sendWithRetry(to, data, len, 0, 0);
@@ -77,9 +77,9 @@ bool transportSanityCheck(void)
return RFM69_sanityCheck(); return RFM69_sanityCheck();
} }
uint8_t transportReceive(void* data) uint8_t transportReceive(void *data)
{ {
return RFM69_receive((uint8_t*)data, MAX_MESSAGE_LENGTH); return RFM69_receive((uint8_t *)data, MAX_MESSAGE_LENGTH);
} }
void transportSleep(void) void transportSleep(void)
@@ -108,7 +108,7 @@ bool transportSetTxPowerLevel(const uint8_t powerLevel)
return RFM69_setTxPowerLevel(powerLevel); return RFM69_setTxPowerLevel(powerLevel);
} }
void transportSetTargetRSSI(int16_t targetSignalStrength) void transportSetTargetRSSI(const int16_t targetSignalStrength)
{ {
#if !defined(MY_GATEWAY_FEATURE) && !defined(MY_RFM69_ATC_MODE_DISABLED) #if !defined(MY_GATEWAY_FEATURE) && !defined(MY_RFM69_ATC_MODE_DISABLED)
RFM69_ATCmode(true, targetSignalStrength); RFM69_ATCmode(true, targetSignalStrength);
@@ -175,9 +175,9 @@ bool transportInit(void)
(void)memset(RFM69_psk, 0, 16); (void)memset(RFM69_psk, 0, 16);
(void)memcpy(RFM69_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16)); (void)memcpy(RFM69_psk, MY_ENCRYPTION_SIMPLE_PASSWD, strnlen(MY_ENCRYPTION_SIMPLE_PASSWD, 16));
#else #else
hwReadConfigBlock((void*)RFM69_psk, (void*)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16); hwReadConfigBlock((void *)RFM69_psk, (void *)EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS, 16);
#endif #endif
_radio.encrypt((const char*)RFM69_psk); _radio.encrypt((const char *)RFM69_psk);
(void)memset(RFM69_psk, 0, 16); // Make sure it is purged from memory when set (void)memset(RFM69_psk, 0, 16); // Make sure it is purged from memory when set
#endif #endif
return true; return true;
@@ -196,7 +196,7 @@ uint8_t transportGetAddress(void)
return _address; return _address;
} }
bool transportSend(const uint8_t to, const void* data, const uint8_t len, const bool noACK) bool transportSend(const uint8_t to, const void *data, const uint8_t len, const bool noACK)
{ {
if (noACK) { if (noACK) {
(void)_radio.sendWithRetry(to, data, len, 0, 0); (void)_radio.sendWithRetry(to, data, len, 0, 0);
@@ -215,11 +215,11 @@ bool transportSanityCheck(void)
return _radio.sanityCheck(); return _radio.sanityCheck();
} }
uint8_t transportReceive(void* data) uint8_t transportReceive(void *data)
{ {
// save payload length // save payload length
const uint8_t dataLen = _radio.DATALEN < MAX_MESSAGE_LENGTH? _radio.DATALEN : MAX_MESSAGE_LENGTH; const uint8_t dataLen = _radio.DATALEN < MAX_MESSAGE_LENGTH? _radio.DATALEN : MAX_MESSAGE_LENGTH;
(void)memcpy((void*)data, (void*)_radio.DATA, dataLen); (void)memcpy((void *)data, (void *)_radio.DATA, dataLen);
// Send ack back if this message wasn't a broadcast // Send ack back if this message wasn't a broadcast
if (_radio.ACKRequested()) { if (_radio.ACKRequested()) {
_radio.sendACK(); _radio.sendACK();
+3 -3
View File
@@ -46,7 +46,7 @@ uint8_t transportGetAddress(void)
return RFM95_getAddress(); return RFM95_getAddress();
} }
bool transportSend(const uint8_t to, const void* data, const uint8_t len, const bool noACK) bool transportSend(const uint8_t to, const void *data, const uint8_t len, const bool noACK)
{ {
if (noACK) { if (noACK) {
(void)RFM95_sendWithRetry(to, data, len, 0, 0); (void)RFM95_sendWithRetry(to, data, len, 0, 0);
@@ -66,9 +66,9 @@ bool transportSanityCheck(void)
return RFM95_sanityCheck(); return RFM95_sanityCheck();
} }
uint8_t transportReceive(void* data) uint8_t transportReceive(void *data)
{ {
const uint8_t len = RFM95_receive((uint8_t*)data, MAX_MESSAGE_LENGTH); const uint8_t len = RFM95_receive((uint8_t *)data, MAX_MESSAGE_LENGTH);
return len; return len;
} }