[SX127x] OOK functions style cleanup
This commit is contained in:
parent
31b7bfefe0
commit
86ca714d00
6 changed files with 54 additions and 51 deletions
|
@ -243,11 +243,6 @@ int16_t SX1272::setOutputPower(int8_t power) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t SX1272::setGain(uint8_t gain) {
|
int16_t SX1272::setGain(uint8_t gain) {
|
||||||
// check active modem
|
|
||||||
if(getActiveModem() != SX127X_LORA) {
|
|
||||||
return(ERR_WRONG_MODEM);
|
|
||||||
}
|
|
||||||
|
|
||||||
// check allowed range
|
// check allowed range
|
||||||
if(gain > 6) {
|
if(gain > 6) {
|
||||||
return(ERR_INVALID_GAIN);
|
return(ERR_INVALID_GAIN);
|
||||||
|
@ -256,14 +251,30 @@ int16_t SX1272::setGain(uint8_t gain) {
|
||||||
// set mode to standby
|
// set mode to standby
|
||||||
int16_t state = SX127x::standby();
|
int16_t state = SX127x::standby();
|
||||||
|
|
||||||
// set gain
|
// get modem
|
||||||
if(gain == 0) {
|
int16_t modem = getActiveModem();
|
||||||
// gain set to 0, enable AGC loop
|
if(modem == SX127X_LORA){
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_MODEM_CONFIG_2, SX1272_AGC_AUTO_ON, 2, 2);
|
// set gain
|
||||||
} else {
|
if(gain == 0) {
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_MODEM_CONFIG_2, SX1272_AGC_AUTO_OFF, 2, 2);
|
// gain set to 0, enable AGC loop
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
state |= _mod->SPIsetRegValue(SX127X_REG_MODEM_CONFIG_2, SX1272_AGC_AUTO_ON, 2, 2);
|
||||||
|
} else {
|
||||||
|
state |= _mod->SPIsetRegValue(SX127X_REG_MODEM_CONFIG_2, SX1272_AGC_AUTO_OFF, 2, 2);
|
||||||
|
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(modem == SX127X_FSK_OOK) {
|
||||||
|
// set gain
|
||||||
|
if(gain == 0) {
|
||||||
|
// gain set to 0, enable AGC loop
|
||||||
|
state |= _mod->SPIsetRegValue(SX127X_REG_RX_CONFIG, SX127X_AGC_AUTO_ON, 3, 3);
|
||||||
|
} else {
|
||||||
|
state |= _mod->SPIsetRegValue(SX127X_REG_RX_CONFIG, SX127X_AGC_AUTO_ON, 3, 3);
|
||||||
|
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +341,7 @@ int16_t SX1272::setDataShapingOOK(uint8_t sh) {
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
float SX1272::getRSSI(bool skip_activation) {
|
float SX1272::getRSSI(bool skipReceive) {
|
||||||
if(getActiveModem() == SX127X_LORA) {
|
if(getActiveModem() == SX127X_LORA) {
|
||||||
// RSSI calculation uses different constant for low-frequency and high-frequency ports
|
// RSSI calculation uses different constant for low-frequency and high-frequency ports
|
||||||
float lastPacketRSSI = -139 + _mod->SPIgetRegValue(SX127X_REG_PKT_RSSI_VALUE);
|
float lastPacketRSSI = -139 + _mod->SPIgetRegValue(SX127X_REG_PKT_RSSI_VALUE);
|
||||||
|
@ -346,13 +357,17 @@ float SX1272::getRSSI(bool skip_activation) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// enable listen mode
|
// enable listen mode
|
||||||
startReceive();
|
if(!skipReceive) {
|
||||||
|
startReceive();
|
||||||
|
}
|
||||||
|
|
||||||
// read the value for FSK
|
// read the value for FSK
|
||||||
float rssi = (float)_mod->SPIgetRegValue(SX127X_REG_RSSI_VALUE_FSK) / -2.0;
|
float rssi = (float)_mod->SPIgetRegValue(SX127X_REG_RSSI_VALUE_FSK) / -2.0;
|
||||||
|
|
||||||
// set mode back to standby
|
// set mode back to standby
|
||||||
standby();
|
if(!skipReceive) {
|
||||||
|
standby();
|
||||||
|
}
|
||||||
|
|
||||||
// return the value
|
// return the value
|
||||||
return(rssi);
|
return(rssi);
|
||||||
|
|
|
@ -240,11 +240,11 @@ class SX1272: public SX127x {
|
||||||
/*!
|
/*!
|
||||||
\brief Gets recorded signal strength indicator of the latest received packet for LoRa modem, or current RSSI level for FSK modem.
|
\brief Gets recorded signal strength indicator of the latest received packet for LoRa modem, or current RSSI level for FSK modem.
|
||||||
|
|
||||||
\param skip_activation in OOK/FSK mode this function will put receiver in receive mode and then in standby. Make it TRUE if you don't want this behaviour.
|
\param skipReceive Set to true to skip putting radio in receive mode for the RSSI measurement in FKS/OOK mode.
|
||||||
|
|
||||||
\returns Last packet RSSI for LoRa modem, or current RSSI level for FSK modem.
|
\returns Last packet RSSI for LoRa modem, or current RSSI level for FSK modem.
|
||||||
*/
|
*/
|
||||||
float getRSSI(bool skip_activation = false);
|
float getRSSI(bool skipReceive = false);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Enables/disables CRC check of received packets.
|
\brief Enables/disables CRC check of received packets.
|
||||||
|
|
|
@ -315,8 +315,6 @@ int16_t SX1278::setOutputPower(int8_t power) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t SX1278::setGain(uint8_t gain) {
|
int16_t SX1278::setGain(uint8_t gain) {
|
||||||
int16_t modem = getActiveModem();
|
|
||||||
|
|
||||||
// check allowed range
|
// check allowed range
|
||||||
if(gain > 6) {
|
if(gain > 6) {
|
||||||
return(ERR_INVALID_GAIN);
|
return(ERR_INVALID_GAIN);
|
||||||
|
@ -325,6 +323,8 @@ int16_t SX1278::setGain(uint8_t gain) {
|
||||||
// set mode to standby
|
// set mode to standby
|
||||||
int16_t state = SX127x::standby();
|
int16_t state = SX127x::standby();
|
||||||
|
|
||||||
|
// get modem
|
||||||
|
int16_t modem = getActiveModem();
|
||||||
if(modem == SX127X_LORA){
|
if(modem == SX127X_LORA){
|
||||||
// set gain
|
// set gain
|
||||||
if(gain == 0) {
|
if(gain == 0) {
|
||||||
|
@ -334,8 +334,8 @@ int16_t SX1278::setGain(uint8_t gain) {
|
||||||
state |= _mod->SPIsetRegValue(SX1278_REG_MODEM_CONFIG_3, SX1278_AGC_AUTO_OFF, 2, 2);
|
state |= _mod->SPIsetRegValue(SX1278_REG_MODEM_CONFIG_3, SX1278_AGC_AUTO_OFF, 2, 2);
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if(modem == SX127X_FSK_OOK) {
|
} else if(modem == SX127X_FSK_OOK) {
|
||||||
// set gain
|
// set gain
|
||||||
if(gain == 0) {
|
if(gain == 0) {
|
||||||
// gain set to 0, enable AGC loop
|
// gain set to 0, enable AGC loop
|
||||||
|
@ -344,8 +344,9 @@ int16_t SX1278::setGain(uint8_t gain) {
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_RX_CONFIG, SX127X_AGC_AUTO_ON, 3, 3);
|
state |= _mod->SPIsetRegValue(SX127X_REG_RX_CONFIG, SX127X_AGC_AUTO_ON, 3, 3);
|
||||||
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
state |= _mod->SPIsetRegValue(SX127X_REG_LNA, (gain << 5) | SX127X_LNA_BOOST_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,7 +412,7 @@ int16_t SX1278::setDataShapingOOK(uint8_t sh) {
|
||||||
return(state);
|
return(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
float SX1278::getRSSI(bool skip_activation) {
|
float SX1278::getRSSI(bool skipReceive) {
|
||||||
if(getActiveModem() == SX127X_LORA) {
|
if(getActiveModem() == SX127X_LORA) {
|
||||||
// for LoRa, get RSSI of the last packet
|
// for LoRa, get RSSI of the last packet
|
||||||
float lastPacketRSSI;
|
float lastPacketRSSI;
|
||||||
|
@ -434,15 +435,17 @@ float SX1278::getRSSI(bool skip_activation) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// enable listen mode
|
// enable listen mode
|
||||||
if(!skip_activation)
|
if(!skipReceive) {
|
||||||
startReceive();
|
startReceive();
|
||||||
|
}
|
||||||
|
|
||||||
// read the value for FSK
|
// read the value for FSK
|
||||||
float rssi = (float)_mod->SPIgetRegValue(SX127X_REG_RSSI_VALUE_FSK) / -2.0;
|
float rssi = (float)_mod->SPIgetRegValue(SX127X_REG_RSSI_VALUE_FSK) / -2.0;
|
||||||
|
|
||||||
// set mode back to standby
|
// set mode back to standby
|
||||||
if(!skip_activation)
|
if(!skipReceive) {
|
||||||
standby();
|
standby();
|
||||||
|
}
|
||||||
|
|
||||||
// return the value
|
// return the value
|
||||||
return(rssi);
|
return(rssi);
|
||||||
|
|
|
@ -248,11 +248,11 @@ class SX1278: public SX127x {
|
||||||
/*!
|
/*!
|
||||||
\brief Gets recorded signal strength indicator of the latest received packet for LoRa modem, or current RSSI level for FSK modem.
|
\brief Gets recorded signal strength indicator of the latest received packet for LoRa modem, or current RSSI level for FSK modem.
|
||||||
|
|
||||||
\param skip_activation in OOK/FSK mode this function will put receiver in receive mode and then in standby. Make it TRUE if you don't want this behaviour.
|
\param skipReceive Set to true to skip putting radio in receive mode for the RSSI measurement in FKS/OOK mode.
|
||||||
|
|
||||||
\returns Last packet RSSI for LoRa modem, or current RSSI level for FSK modem.
|
\returns Last packet RSSI for LoRa modem, or current RSSI level for FSK modem.
|
||||||
*/
|
*/
|
||||||
float getRSSI(bool skip_activation=false);
|
float getRSSI(bool skipReceive = false);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Enables/disables CRC check of received packets.
|
\brief Enables/disables CRC check of received packets.
|
||||||
|
|
|
@ -841,11 +841,7 @@ int16_t SX127x::setOokThresholdType(uint8_t type) {
|
||||||
if(getActiveModem() != SX127X_FSK_OOK) {
|
if(getActiveModem() != SX127X_FSK_OOK) {
|
||||||
return(ERR_WRONG_MODEM);
|
return(ERR_WRONG_MODEM);
|
||||||
}
|
}
|
||||||
|
return(_mod->SPIsetRegValue(SX127X_REG_OOK_PEAK, type, 4, 3, 5));
|
||||||
int16_t state = ERR_NONE;
|
|
||||||
state = _mod->SPIsetRegValue(SX127X_REG_OOK_PEAK, type, 4, 3, 5);
|
|
||||||
|
|
||||||
return(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t SX127x::setOokFixedOrFloorThreshold(uint8_t value) {
|
int16_t SX127x::setOokFixedOrFloorThreshold(uint8_t value) {
|
||||||
|
@ -853,11 +849,7 @@ int16_t SX127x::setOokFixedOrFloorThreshold(uint8_t value) {
|
||||||
if(getActiveModem() != SX127X_FSK_OOK) {
|
if(getActiveModem() != SX127X_FSK_OOK) {
|
||||||
return(ERR_WRONG_MODEM);
|
return(ERR_WRONG_MODEM);
|
||||||
}
|
}
|
||||||
|
return(_mod->SPIsetRegValue(SX127X_REG_OOK_FIX, value, 7, 0, 5));
|
||||||
int16_t state = ERR_NONE;
|
|
||||||
state = _mod->SPIsetRegValue(SX127X_REG_OOK_FIX, value, 7, 0, 5);
|
|
||||||
|
|
||||||
return(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t SX127x::setOokPeakThresholdDecrement(uint8_t value) {
|
int16_t SX127x::setOokPeakThresholdDecrement(uint8_t value) {
|
||||||
|
@ -865,15 +857,9 @@ int16_t SX127x::setOokPeakThresholdDecrement(uint8_t value) {
|
||||||
if(getActiveModem() != SX127X_FSK_OOK) {
|
if(getActiveModem() != SX127X_FSK_OOK) {
|
||||||
return(ERR_WRONG_MODEM);
|
return(ERR_WRONG_MODEM);
|
||||||
}
|
}
|
||||||
|
return(_mod->SPIsetRegValue(SX127X_REG_OOK_AVG, value, 7, 5, 5));
|
||||||
int16_t state = ERR_NONE;
|
|
||||||
state = _mod->SPIsetRegValue(SX127X_REG_OOK_AVG, value, 7, 5, 5);
|
|
||||||
|
|
||||||
return(state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int16_t SX127x::setOOK(bool enableOOK) {
|
int16_t SX127x::setOOK(bool enableOOK) {
|
||||||
// check active modem
|
// check active modem
|
||||||
if(getActiveModem() != SX127X_FSK_OOK) {
|
if(getActiveModem() != SX127X_FSK_OOK) {
|
||||||
|
|
|
@ -860,28 +860,27 @@ class SX127x: public PhysicalLayer {
|
||||||
int16_t setOOK(bool enableOOK);
|
int16_t setOOK(bool enableOOK);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Selects the type of threshold in the OOK data slicer
|
\brief Selects the type of threshold in the OOK data slicer.
|
||||||
|
|
||||||
\param type SX127X_OOK_THRESH_FIXED, SX127X_OOK_THRESH_PEAK(default), SX127X_OOK_THRESH_AVERAGE
|
\param type Threshold type: SX127X_OOK_THRESH_PEAK(default), SX127X_OOK_THRESH_FIXED, SX127X_OOK_THRESH_AVERAGE
|
||||||
|
|
||||||
\returns \ref status_codes
|
\returns \ref status_codes
|
||||||
*/
|
*/
|
||||||
int16_t setOokThresholdType(uint8_t type);
|
int16_t setOokThresholdType(uint8_t type);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Period of decrement of the RSSI threshold in the OOK demodulator
|
\brief Period of decrement of the RSSI threshold in the OOK demodulator.
|
||||||
|
|
||||||
\param value use defines SX127X_OOK_PEAK_THRESH_DEC_X_X_CHIP
|
\param value Use defines SX127X_OOK_PEAK_THRESH_DEC_X_X_CHIP
|
||||||
|
|
||||||
\returns \ref status_codes
|
\returns \ref status_codes
|
||||||
*/
|
*/
|
||||||
int16_t setOokPeakThresholdDecrement(uint8_t value);
|
int16_t setOokPeakThresholdDecrement(uint8_t value);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Fixed threshold for the Data Slicer in OOK mode
|
\brief Fixed threshold for the Data Slicer in OOK mode or floor threshold for the Data Slicer in OOK when Peak mode is used.
|
||||||
Floor threshold for the Data Slicer in OOK when Peak mode is used
|
|
||||||
|
|
||||||
\param value calculation is (128 - value/2)
|
\param value The actual value used by teh data slicer is (128 - value/2).
|
||||||
|
|
||||||
\returns \ref status_codes
|
\returns \ref status_codes
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue