[RF69] Added assert macro
This commit is contained in:
parent
ba1c483121
commit
751fb6431c
1 changed files with 41 additions and 124 deletions
|
@ -55,53 +55,37 @@ int16_t RF69::begin(float freq, float br, float rxBw, float freqDev, int8_t powe
|
||||||
|
|
||||||
// configure settings not accessible by API
|
// configure settings not accessible by API
|
||||||
int16_t state = config();
|
int16_t state = config();
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure publicly accessible settings
|
// configure publicly accessible settings
|
||||||
state = setFrequency(freq);
|
state = setFrequency(freq);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure bitrate
|
// configure bitrate
|
||||||
_rxBw = 125.0;
|
_rxBw = 125.0;
|
||||||
state = setBitRate(br);
|
state = setBitRate(br);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure default RX bandwidth
|
// configure default RX bandwidth
|
||||||
state = setRxBandwidth(rxBw);
|
state = setRxBandwidth(rxBw);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure default frequency deviation
|
// configure default frequency deviation
|
||||||
state = setFrequencyDeviation(freqDev);
|
state = setFrequencyDeviation(freqDev);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure default TX output power
|
// configure default TX output power
|
||||||
state = setOutputPower(power);
|
state = setOutputPower(power);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set default packet length mode
|
// set default packet length mode
|
||||||
state = variablePacketLengthMode();
|
state = variablePacketLengthMode();
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// default sync word values 0x2D01 is the same as the default in LowPowerLab RFM69 library
|
// default sync word values 0x2D01 is the same as the default in LowPowerLab RFM69 library
|
||||||
uint8_t syncWord[] = {0x2D, 0x01};
|
uint8_t syncWord[] = {0x2D, 0x01};
|
||||||
state = setSyncWord(syncWord, sizeof(syncWord));
|
state = setSyncWord(syncWord, sizeof(syncWord));
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(ERR_NONE);
|
return(ERR_NONE);
|
||||||
}
|
}
|
||||||
|
@ -121,9 +105,7 @@ int16_t RF69::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
|
|
||||||
// start transmission
|
// start transmission
|
||||||
int16_t state = startTransmit(data, len, addr);
|
int16_t state = startTransmit(data, len, addr);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// wait for transmission end or timeout
|
// wait for transmission end or timeout
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
|
@ -147,9 +129,7 @@ int16_t RF69::receive(uint8_t* data, size_t len) {
|
||||||
|
|
||||||
// start reception
|
// start reception
|
||||||
int16_t state = startReceive();
|
int16_t state = startReceive();
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// wait for packet reception or timeout
|
// wait for packet reception or timeout
|
||||||
uint32_t start = micros();
|
uint32_t start = micros();
|
||||||
|
@ -187,9 +167,7 @@ int16_t RF69::transmitDirect(uint32_t frf) {
|
||||||
|
|
||||||
// activate direct mode
|
// activate direct mode
|
||||||
int16_t state = directMode();
|
int16_t state = directMode();
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// start transmitting
|
// start transmitting
|
||||||
return(setMode(RF69_TX));
|
return(setMode(RF69_TX));
|
||||||
|
@ -198,9 +176,7 @@ int16_t RF69::transmitDirect(uint32_t frf) {
|
||||||
int16_t RF69::receiveDirect() {
|
int16_t RF69::receiveDirect() {
|
||||||
// activate direct mode
|
// activate direct mode
|
||||||
int16_t state = directMode();
|
int16_t state = directMode();
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// start receiving
|
// start receiving
|
||||||
return(setMode(RF69_RX));
|
return(setMode(RF69_RX));
|
||||||
|
@ -209,16 +185,14 @@ int16_t RF69::receiveDirect() {
|
||||||
int16_t RF69::directMode() {
|
int16_t RF69::directMode() {
|
||||||
// set mode to standby
|
// set mode to standby
|
||||||
int16_t state = setMode(RF69_STANDBY);
|
int16_t state = setMode(RF69_STANDBY);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set DIO mapping
|
// set DIO mapping
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO1_CONT_DCLK | RF69_DIO2_CONT_DATA, 5, 2);
|
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO1_CONT_DCLK | RF69_DIO2_CONT_DATA, 5, 2);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
// set continuous mode
|
// set continuous mode
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_CONTINUOUS_MODE_WITH_SYNC, 6, 5);
|
return(_mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_CONTINUOUS_MODE_WITH_SYNC, 6, 5));
|
||||||
return(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t RF69::packetMode() {
|
int16_t RF69::packetMode() {
|
||||||
|
@ -245,9 +219,7 @@ int16_t RF69::startReceive() {
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO0_PACK_PAYLOAD_READY, 7, 4);
|
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO0_PACK_PAYLOAD_READY, 7, 4);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_1, RF69_TIMEOUT_RX_START);
|
state |= _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_1, RF69_TIMEOUT_RX_START);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_2, RF69_TIMEOUT_RSSI_THRESH);
|
state |= _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_2, RF69_TIMEOUT_RSSI_THRESH);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// clear interrupt flags
|
// clear interrupt flags
|
||||||
clearIRQFlags();
|
clearIRQFlags();
|
||||||
|
@ -291,12 +263,11 @@ int16_t RF69::startTransmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
|
|
||||||
// set mode to standby
|
// set mode to standby
|
||||||
int16_t state = setMode(RF69_STANDBY);
|
int16_t state = setMode(RF69_STANDBY);
|
||||||
|
RADIOLIB_ASSERT(state);
|
||||||
|
|
||||||
// set DIO pin mapping
|
// set DIO pin mapping
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO0_PACK_PACKET_SENT, 7, 6);
|
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_1, RF69_DIO0_PACK_PACKET_SENT, 7, 6);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// clear interrupt flags
|
// clear interrupt flags
|
||||||
clearIRQFlags();
|
clearIRQFlags();
|
||||||
|
@ -329,10 +300,7 @@ int16_t RF69::startTransmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
int16_t RF69::readData(uint8_t* data, size_t len) {
|
int16_t RF69::readData(uint8_t* data, size_t len) {
|
||||||
// set mdoe to standby
|
// set mdoe to standby
|
||||||
int16_t state = standby();
|
int16_t state = standby();
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// get packet length
|
// get packet length
|
||||||
size_t length = len;
|
size_t length = len;
|
||||||
if(len == RF69_MAX_PACKET_LENGTH) {
|
if(len == RF69_MAX_PACKET_LENGTH) {
|
||||||
|
@ -558,9 +526,7 @@ int16_t RF69::setSyncWord(uint8_t* syncWord, size_t len, uint8_t maxErrBits) {
|
||||||
_syncWordLength = len;
|
_syncWordLength = len;
|
||||||
|
|
||||||
int16_t state = enableSyncWordFiltering(maxErrBits);
|
int16_t state = enableSyncWordFiltering(maxErrBits);
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set sync word register
|
// set sync word register
|
||||||
_mod->SPIwriteRegisterBurst(RF69_REG_SYNC_VALUE_1, syncWord, len);
|
_mod->SPIwriteRegisterBurst(RF69_REG_SYNC_VALUE_1, syncWord, len);
|
||||||
|
@ -570,9 +536,7 @@ int16_t RF69::setSyncWord(uint8_t* syncWord, size_t len, uint8_t maxErrBits) {
|
||||||
int16_t RF69::setNodeAddress(uint8_t nodeAddr) {
|
int16_t RF69::setNodeAddress(uint8_t nodeAddr) {
|
||||||
// enable address filtering (node only)
|
// enable address filtering (node only)
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_NODE, 2, 1);
|
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_NODE, 2, 1);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set node address
|
// set node address
|
||||||
return(_mod->SPIsetRegValue(RF69_REG_NODE_ADRS, nodeAddr));
|
return(_mod->SPIsetRegValue(RF69_REG_NODE_ADRS, nodeAddr));
|
||||||
|
@ -581,9 +545,7 @@ int16_t RF69::setNodeAddress(uint8_t nodeAddr) {
|
||||||
int16_t RF69::setBroadcastAddress(uint8_t broadAddr) {
|
int16_t RF69::setBroadcastAddress(uint8_t broadAddr) {
|
||||||
// enable address filtering (node + broadcast)
|
// enable address filtering (node + broadcast)
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_NODE_BROADCAST, 2, 1);
|
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_NODE_BROADCAST, 2, 1);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set broadcast address
|
// set broadcast address
|
||||||
return(_mod->SPIsetRegValue(RF69_REG_BROADCAST_ADRS, broadAddr));
|
return(_mod->SPIsetRegValue(RF69_REG_BROADCAST_ADRS, broadAddr));
|
||||||
|
@ -592,15 +554,11 @@ int16_t RF69::setBroadcastAddress(uint8_t broadAddr) {
|
||||||
int16_t RF69::disableAddressFiltering() {
|
int16_t RF69::disableAddressFiltering() {
|
||||||
// disable address filtering
|
// disable address filtering
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_OFF, 2, 1);
|
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_OFF, 2, 1);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set node address to default (0x00)
|
// set node address to default (0x00)
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_NODE_ADRS, 0x00);
|
state = _mod->SPIsetRegValue(RF69_REG_NODE_ADRS, 0x00);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set broadcast address to default (0x00)
|
// set broadcast address to default (0x00)
|
||||||
return(_mod->SPIsetRegValue(RF69_REG_BROADCAST_ADRS, 0x00));
|
return(_mod->SPIsetRegValue(RF69_REG_BROADCAST_ADRS, 0x00));
|
||||||
|
@ -650,27 +608,17 @@ int16_t RF69::variablePacketLengthMode(uint8_t maxLen) {
|
||||||
|
|
||||||
int16_t RF69::enableSyncWordFiltering(uint8_t maxErrBits) {
|
int16_t RF69::enableSyncWordFiltering(uint8_t maxErrBits) {
|
||||||
// enable sync word recognition
|
// enable sync word recognition
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_SYNC_CONFIG, RF69_SYNC_ON | RF69_FIFO_FILL_CONDITION_SYNC | (_syncWordLength - 1) << 3 | maxErrBits, 7, 0);
|
return(_mod->SPIsetRegValue(RF69_REG_SYNC_CONFIG, RF69_SYNC_ON | RF69_FIFO_FILL_CONDITION_SYNC | (_syncWordLength - 1) << 3 | maxErrBits, 7, 0));
|
||||||
if(state != ERR_NONE) {
|
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t RF69::disableSyncWordFiltering() {
|
int16_t RF69::disableSyncWordFiltering() {
|
||||||
// disable preamble detection and generation
|
// disable preamble detection and generation
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_PREAMBLE_LSB, 0, 7, 0);
|
int16_t state = _mod->SPIsetRegValue(RF69_REG_PREAMBLE_LSB, 0, 7, 0);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_PREAMBLE_MSB, 0, 7, 0);
|
state |= _mod->SPIsetRegValue(RF69_REG_PREAMBLE_MSB, 0, 7, 0);
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// disable sync word detection and generation
|
// disable sync word detection and generation
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_SYNC_CONFIG, RF69_SYNC_OFF | RF69_FIFO_FILL_CONDITION, 7, 6);
|
state = _mod->SPIsetRegValue(RF69_REG_SYNC_CONFIG, RF69_SYNC_OFF | RF69_FIFO_FILL_CONDITION, 7, 6);
|
||||||
if (state != ERR_NONE) {
|
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
@ -693,18 +641,14 @@ int16_t RF69::setPromiscuousMode(bool promiscuous) {
|
||||||
if (promiscuous == true) {
|
if (promiscuous == true) {
|
||||||
// disable preamble and sync word filtering and insertion
|
// disable preamble and sync word filtering and insertion
|
||||||
state = disableSyncWordFiltering();
|
state = disableSyncWordFiltering();
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// disable CRC filtering
|
// disable CRC filtering
|
||||||
state = setCrcFiltering(false);
|
state = setCrcFiltering(false);
|
||||||
} else {
|
} else {
|
||||||
// enable preamble and sync word filtering and insertion
|
// enable preamble and sync word filtering and insertion
|
||||||
state = enableSyncWordFiltering();
|
state = enableSyncWordFiltering();
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// enable CRC filtering
|
// enable CRC filtering
|
||||||
state = setCrcFiltering(true);
|
state = setCrcFiltering(true);
|
||||||
|
@ -718,76 +662,53 @@ int16_t RF69::config() {
|
||||||
|
|
||||||
// set mode to STANDBY
|
// set mode to STANDBY
|
||||||
state = setMode(RF69_STANDBY);
|
state = setMode(RF69_STANDBY);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set operation modes
|
// set operation modes
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_OP_MODE, RF69_SEQUENCER_ON | RF69_LISTEN_OFF, 7, 6);
|
state = _mod->SPIsetRegValue(RF69_REG_OP_MODE, RF69_SEQUENCER_ON | RF69_LISTEN_OFF, 7, 6);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// enable over-current protection
|
// enable over-current protection
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_OCP, RF69_OCP_ON, 4, 4);
|
state = _mod->SPIsetRegValue(RF69_REG_OCP, RF69_OCP_ON, 4, 4);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set data mode, modulation type and shaping
|
// set data mode, modulation type and shaping
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_PACKET_MODE | RF69_FSK, 6, 3);
|
state = _mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_PACKET_MODE | RF69_FSK, 6, 3);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_FSK_GAUSSIAN_0_3, 1, 0);
|
state |= _mod->SPIsetRegValue(RF69_REG_DATA_MODUL, RF69_FSK_GAUSSIAN_0_3, 1, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set RSSI threshold
|
// set RSSI threshold
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_RSSI_THRESH, RF69_RSSI_THRESHOLD, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_RSSI_THRESH, RF69_RSSI_THRESHOLD, 7, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// reset FIFO flag
|
// reset FIFO flag
|
||||||
_mod->SPIwriteRegister(RF69_REG_IRQ_FLAGS_2, RF69_IRQ_FIFO_OVERRUN);
|
_mod->SPIwriteRegister(RF69_REG_IRQ_FLAGS_2, RF69_IRQ_FIFO_OVERRUN);
|
||||||
|
|
||||||
// disable ClkOut on DIO5
|
// disable ClkOut on DIO5
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_2, RF69_CLK_OUT_OFF, 2, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_DIO_MAPPING_2, RF69_CLK_OUT_OFF, 2, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set packet configuration and disable encryption
|
// set packet configuration and disable encryption
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_PACKET_FORMAT_VARIABLE | RF69_DC_FREE_NONE | RF69_CRC_ON | RF69_CRC_AUTOCLEAR_ON | RF69_ADDRESS_FILTERING_OFF, 7, 1);
|
state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_PACKET_FORMAT_VARIABLE | RF69_DC_FREE_NONE | RF69_CRC_ON | RF69_CRC_AUTOCLEAR_ON | RF69_ADDRESS_FILTERING_OFF, 7, 1);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_2, RF69_INTER_PACKET_RX_DELAY, 7, 4);
|
state |= _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_2, RF69_INTER_PACKET_RX_DELAY, 7, 4);
|
||||||
state |= _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_2, RF69_AUTO_RX_RESTART_ON | RF69_AES_OFF, 1, 0);
|
state |= _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_2, RF69_AUTO_RX_RESTART_ON | RF69_AES_OFF, 1, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set payload length
|
// set payload length
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_PAYLOAD_LENGTH, RF69_PAYLOAD_LENGTH, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_PAYLOAD_LENGTH, RF69_PAYLOAD_LENGTH, 7, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set FIFO threshold
|
// set FIFO threshold
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_FIFO_THRESH, RF69_TX_START_CONDITION_FIFO_NOT_EMPTY | RF69_FIFO_THRESHOLD, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_FIFO_THRESH, RF69_TX_START_CONDITION_FIFO_NOT_EMPTY | RF69_FIFO_THRESHOLD, 7, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set Rx timeouts
|
// set Rx timeouts
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_1, RF69_TIMEOUT_RX_START, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_1, RF69_TIMEOUT_RX_START, 7, 0);
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_2, RF69_TIMEOUT_RSSI_THRESH, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_RX_TIMEOUT_2, RF69_TIMEOUT_RSSI_THRESH, 7, 0);
|
||||||
if(state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// enable improved fading margin
|
// enable improved fading margin
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_TEST_DAGC, RF69_CONTINUOUS_DAGC_LOW_BETA_OFF, 7, 0);
|
state = _mod->SPIsetRegValue(RF69_REG_TEST_DAGC, RF69_CONTINUOUS_DAGC_LOW_BETA_OFF, 7, 0);
|
||||||
if(state != ERR_NONE) {
|
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(ERR_NONE);
|
return(ERR_NONE);
|
||||||
}
|
}
|
||||||
|
@ -800,15 +721,11 @@ int16_t RF69::setPacketMode(uint8_t mode, uint8_t len) {
|
||||||
|
|
||||||
// set to fixed packet length
|
// set to fixed packet length
|
||||||
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, mode, 7, 7);
|
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, mode, 7, 7);
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set length to register
|
// set length to register
|
||||||
state = _mod->SPIsetRegValue(RF69_REG_PAYLOAD_LENGTH, len);
|
state = _mod->SPIsetRegValue(RF69_REG_PAYLOAD_LENGTH, len);
|
||||||
if (state != ERR_NONE) {
|
RADIOLIB_ASSERT(state);
|
||||||
return(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
// update the cached value
|
// update the cached value
|
||||||
_packetLengthConfig = mode;
|
_packetLengthConfig = mode;
|
||||||
|
|
Loading…
Add table
Reference in a new issue