[SX128x] Fixed setBitRate compatibility with PhysicalLayer

This commit is contained in:
jgromes 2022-10-01 15:16:01 +02:00
parent 972e651f4f
commit e5fe82f334
2 changed files with 18 additions and 18 deletions

View file

@ -746,56 +746,56 @@ int16_t SX128x::setPreambleLength(uint32_t preambleLength) {
return(RADIOLIB_ERR_WRONG_MODEM); return(RADIOLIB_ERR_WRONG_MODEM);
} }
int16_t SX128x::setBitRate(uint16_t br) { int16_t SX128x::setBitRate(float br) {
// check active modem // check active modem
uint8_t modem = getPacketType(); uint8_t modem = getPacketType();
// GFSK/BLE // GFSK/BLE
if((modem == RADIOLIB_SX128X_PACKET_TYPE_GFSK) || (modem == RADIOLIB_SX128X_PACKET_TYPE_BLE)) { if((modem == RADIOLIB_SX128X_PACKET_TYPE_GFSK) || (modem == RADIOLIB_SX128X_PACKET_TYPE_BLE)) {
if(br == 125) { if((uint16_t)br == 125) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_0_125_BW_0_3; _br = RADIOLIB_SX128X_BLE_GFSK_BR_0_125_BW_0_3;
} else if(br == 250) { } else if((uint16_t)br == 250) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_0_250_BW_0_6; _br = RADIOLIB_SX128X_BLE_GFSK_BR_0_250_BW_0_6;
} else if(br == 400) { } else if((uint16_t)br == 400) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_0_400_BW_1_2; _br = RADIOLIB_SX128X_BLE_GFSK_BR_0_400_BW_1_2;
} else if(br == 500) { } else if((uint16_t)br == 500) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_0_500_BW_1_2; _br = RADIOLIB_SX128X_BLE_GFSK_BR_0_500_BW_1_2;
} else if(br == 800) { } else if((uint16_t)br == 800) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_0_800_BW_2_4; _br = RADIOLIB_SX128X_BLE_GFSK_BR_0_800_BW_2_4;
} else if(br == 1000) { } else if((uint16_t)br == 1000) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_1_000_BW_2_4; _br = RADIOLIB_SX128X_BLE_GFSK_BR_1_000_BW_2_4;
} else if(br == 1600) { } else if((uint16_t)br == 1600) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_1_600_BW_2_4; _br = RADIOLIB_SX128X_BLE_GFSK_BR_1_600_BW_2_4;
} else if(br == 2000) { } else if((uint16_t)br == 2000) {
_br = RADIOLIB_SX128X_BLE_GFSK_BR_2_000_BW_2_4; _br = RADIOLIB_SX128X_BLE_GFSK_BR_2_000_BW_2_4;
} else { } else {
return(RADIOLIB_ERR_INVALID_BIT_RATE); return(RADIOLIB_ERR_INVALID_BIT_RATE);
} }
// update modulation parameters // update modulation parameters
_brKbps = br; _brKbps = (uint16_t)br;
return(setModulationParams(_br, _modIndex, _shaping)); return(setModulationParams(_br, _modIndex, _shaping));
// FLRC // FLRC
} else if(modem == RADIOLIB_SX128X_PACKET_TYPE_FLRC) { } else if(modem == RADIOLIB_SX128X_PACKET_TYPE_FLRC) {
if(br == 260) { if((uint16_t)br == 260) {
_br = RADIOLIB_SX128X_FLRC_BR_0_260_BW_0_3; _br = RADIOLIB_SX128X_FLRC_BR_0_260_BW_0_3;
} else if(br == 325) { } else if((uint16_t)br == 325) {
_br = RADIOLIB_SX128X_FLRC_BR_0_325_BW_0_3; _br = RADIOLIB_SX128X_FLRC_BR_0_325_BW_0_3;
} else if(br == 520) { } else if((uint16_t)br == 520) {
_br = RADIOLIB_SX128X_FLRC_BR_0_520_BW_0_6; _br = RADIOLIB_SX128X_FLRC_BR_0_520_BW_0_6;
} else if(br == 650) { } else if((uint16_t)br == 650) {
_br = RADIOLIB_SX128X_FLRC_BR_0_650_BW_0_6; _br = RADIOLIB_SX128X_FLRC_BR_0_650_BW_0_6;
} else if(br == 1000) { } else if((uint16_t)br == 1000) {
_br = RADIOLIB_SX128X_FLRC_BR_1_000_BW_1_2; _br = RADIOLIB_SX128X_FLRC_BR_1_000_BW_1_2;
} else if(br == 1300) { } else if((uint16_t)br == 1300) {
_br = RADIOLIB_SX128X_FLRC_BR_1_300_BW_1_2; _br = RADIOLIB_SX128X_FLRC_BR_1_300_BW_1_2;
} else { } else {
return(RADIOLIB_ERR_INVALID_BIT_RATE); return(RADIOLIB_ERR_INVALID_BIT_RATE);
} }
// update modulation parameters // update modulation parameters
_brKbps = br; _brKbps = (uint16_t)br;
return(setModulationParams(_br, _crFLRC, _shaping)); return(setModulationParams(_br, _crFLRC, _shaping));
} }

View file

@ -646,7 +646,7 @@ class SX128x: public PhysicalLayer {
\returns \ref status_codes \returns \ref status_codes
*/ */
int16_t setBitRate(uint16_t br); int16_t setBitRate(float br);
/*! /*!
\brief Sets FSK frequency deviation. Allowed values range from 0.0 to 3200.0 kHz. \brief Sets FSK frequency deviation. Allowed values range from 0.0 to 3200.0 kHz.