Merge pull request #546 from NorthernMan54/master

Tweaks for async direct mode usage with rtl_433_ESP
This commit is contained in:
Jan Gromeš 2022-07-17 10:12:41 +02:00 committed by GitHub
commit 80950a1c22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 8 deletions

View file

@ -711,12 +711,25 @@ int16_t CC1101::setOOK(bool enableOOK) {
return(setOutputPower(_power)); return(setOutputPower(_power));
} }
float CC1101::getRSSI() const { float CC1101::getRSSI() {
float rssi; float rssi;
if(_rawRSSI >= 128) {
rssi = (((float)_rawRSSI - 256.0)/2.0) - 74.0; if (_directMode) {
if(_rawRSSI >= 128) {
rssi = (((float)_rawRSSI - 256.0)/2.0) - 74.0;
} else {
rssi = (((float)_rawRSSI)/2.0) - 74.0;
}
} else { } else {
rssi = (((float)_rawRSSI)/2.0) - 74.0; uint8_t rawRssi = SPIreadRegister(RADIOLIB_CC1101_REG_RSSI);
if (rawRssi >= 128)
{
rssi = ((rawRssi - 256) / 2) - 74;
}
else
{
rssi = (rawRssi / 2) - 74;
}
} }
return(rssi); return(rssi);
} }
@ -914,6 +927,7 @@ int16_t CC1101::directMode(bool sync) {
SPIsendCommand(RADIOLIB_CC1101_CMD_IDLE); SPIsendCommand(RADIOLIB_CC1101_CMD_IDLE);
int16_t state = 0; int16_t state = 0;
_directMode = sync;
if (sync) { if (sync) {
// set GDO0 and GDO2 mapping // set GDO0 and GDO2 mapping
state |= SPIsetRegValue(RADIOLIB_CC1101_REG_IOCFG0, RADIOLIB_CC1101_GDOX_SERIAL_CLOCK , 5, 0); state |= SPIsetRegValue(RADIOLIB_CC1101_REG_IOCFG0, RADIOLIB_CC1101_GDOX_SERIAL_CLOCK , 5, 0);

View file

@ -791,9 +791,11 @@ class CC1101: public PhysicalLayer {
/*! /*!
\brief Gets RSSI (Recorded Signal Strength Indicator) of the last received packet. \brief Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
\returns Last packet RSSI in dBm. or in asynchronous direct mode the current RSSI level
\returns RSSI in dBm.
*/ */
float getRSSI() const; float getRSSI();
/*! /*!
\brief Gets LQI (Link Quality Indicator) of the last received packet. \brief Gets LQI (Link Quality Indicator) of the last received packet.
@ -974,6 +976,7 @@ class CC1101: public PhysicalLayer {
bool _promiscuous = false; bool _promiscuous = false;
bool _crcOn = true; bool _crcOn = true;
bool _directMode = true;
uint8_t _syncWordLength = 2; uint8_t _syncWordLength = 2;
int8_t _power = 0; int8_t _power = 0;

View file

@ -297,7 +297,7 @@ int16_t SX1278::setGain(uint8_t gain) {
// gain set to 0, enable AGC loop // gain set to 0, enable AGC loop
state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_RX_CONFIG, RADIOLIB_SX127X_AGC_AUTO_ON, 3, 3); state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_RX_CONFIG, RADIOLIB_SX127X_AGC_AUTO_ON, 3, 3);
} else { } else {
state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_RX_CONFIG, RADIOLIB_SX127X_AGC_AUTO_ON, 3, 3); state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_RX_CONFIG, RADIOLIB_SX1278_AGC_AUTO_OFF, 3, 3);
state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_LNA, (gain << 5) | RADIOLIB_SX127X_LNA_BOOST_ON); state |= _mod->SPIsetRegValue(RADIOLIB_SX127X_REG_LNA, (gain << 5) | RADIOLIB_SX127X_LNA_BOOST_ON);
} }

View file

@ -827,7 +827,7 @@ int16_t SX127x::setBitRate(float br) {
// check allowed bit rate // check allowed bit rate
if(_ook) { if(_ook) {
RADIOLIB_CHECK_RANGE(br, 1.2, 32.768, RADIOLIB_ERR_INVALID_BIT_RATE); RADIOLIB_CHECK_RANGE(br, 1.2, 32.768002, RADIOLIB_ERR_INVALID_BIT_RATE); // Found that 32.768 is 32.768002
} else { } else {
RADIOLIB_CHECK_RANGE(br, 1.2, 300.0, RADIOLIB_ERR_INVALID_BIT_RATE); RADIOLIB_CHECK_RANGE(br, 1.2, 300.0, RADIOLIB_ERR_INVALID_BIT_RATE);
} }