[SX127x] Changed shaping datatype to uint8_t

This commit is contained in:
jgromes 2020-07-06 08:53:05 +02:00
parent 5aff492323
commit 7dc7f4d76c
6 changed files with 37 additions and 36 deletions

View file

@ -257,7 +257,7 @@ int16_t SX1272::setGain(uint8_t gain) {
return(state); return(state);
} }
int16_t SX1272::setDataShaping(float sh) { int16_t SX1272::setDataShaping(uint8_t sh) {
// check active modem // check active modem
if(getActiveModem() != SX127X_FSK_OOK) { if(getActiveModem() != SX127X_FSK_OOK) {
return(ERR_WRONG_MODEM); return(ERR_WRONG_MODEM);
@ -270,21 +270,21 @@ int16_t SX1272::setDataShaping(float sh) {
// set mode to standby // set mode to standby
int16_t state = SX127x::standby(); int16_t state = SX127x::standby();
RADIOLIB_ASSERT(state);
// set data shaping // set data shaping
sh *= 10.0; switch(sh) {
if(abs(sh - 0.0) <= 0.001) { case RADIOLIB_SHAPING_NONE:
state |= _mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_NO_SHAPING, 4, 3); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_NO_SHAPING, 4, 3));
} else if(abs(sh - 3.0) <= 0.001) { case RADIOLIB_SHAPING_0_3:
state |= _mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_0_3, 4, 3); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_0_3, 4, 3));
} else if(abs(sh - 5.0) <= 0.001) { case RADIOLIB_SHAPING_0_5:
state |= _mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_0_5, 4, 3); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_0_5, 4, 3));
} else if(abs(sh - 10.0) <= 0.001) { case RADIOLIB_SHAPING_1_0:
state |= _mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_1_0, 4, 3); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1272_FSK_GAUSSIAN_1_0, 4, 3));
} else { default:
return(ERR_INVALID_DATA_SHAPING); return(ERR_INVALID_DATA_SHAPING);
} }
return(state);
} }
int16_t SX1272::setDataShapingOOK(uint8_t sh) { int16_t SX1272::setDataShapingOOK(uint8_t sh) {

View file

@ -222,14 +222,14 @@ class SX1272: public SX127x {
int16_t setGain(uint8_t gain); int16_t setGain(uint8_t gain);
/*! /*!
\brief Sets Gaussian filter bandwidth-time product that will be used for data shaping. \brief Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK mode with FSK modulation.
Allowed values are 0.3, 0.5 or 1.0. Set to 0 to disable data shaping. Only available in FSK mode with FSK modulation. Allowed values are RADIOLIB_SHAPING_0_3, RADIOLIB_SHAPING_0_5 or RADIOLIB_SHAPING_1_0. Set to RADIOLIB_SHAPING_NONE to disable data shaping.
\param sh Gaussian shaping bandwidth-time product that will be used for data shaping \param sh Gaussian shaping bandwidth-time product that will be used for data shaping
\returns \ref status_codes \returns \ref status_codes
*/ */
int16_t setDataShaping(float sh) override; int16_t setDataShaping(uint8_t sh) override;
/*! /*!
\brief Sets filter cutoff frequency that will be used for data shaping. \brief Sets filter cutoff frequency that will be used for data shaping.

View file

@ -329,7 +329,7 @@ int16_t SX1278::setGain(uint8_t gain) {
return(state); return(state);
} }
int16_t SX1278::setDataShaping(float sh) { int16_t SX1278::setDataShaping(uint8_t sh) {
// check active modem // check active modem
if(getActiveModem() != SX127X_FSK_OOK) { if(getActiveModem() != SX127X_FSK_OOK) {
return(ERR_WRONG_MODEM); return(ERR_WRONG_MODEM);
@ -342,21 +342,21 @@ int16_t SX1278::setDataShaping(float sh) {
// set mode to standby // set mode to standby
int16_t state = SX127x::standby(); int16_t state = SX127x::standby();
RADIOLIB_ASSERT(state);
// set data shaping // set data shaping
sh *= 10.0; switch(sh) {
if(abs(sh - 0.0) <= 0.001) { case RADIOLIB_SHAPING_NONE:
state |= _mod->SPIsetRegValue(SX127X_REG_PA_RAMP, SX1278_NO_SHAPING, 6, 5); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1278_NO_SHAPING, 6, 5));
} else if(abs(sh - 3.0) <= 0.001) { case RADIOLIB_SHAPING_0_3:
state |= _mod->SPIsetRegValue(SX127X_REG_PA_RAMP, SX1278_FSK_GAUSSIAN_0_3, 6, 5); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1278_FSK_GAUSSIAN_0_3, 6, 5));
} else if(abs(sh - 5.0) <= 0.001) { case RADIOLIB_SHAPING_0_5:
state |= _mod->SPIsetRegValue(SX127X_REG_PA_RAMP, SX1278_FSK_GAUSSIAN_0_5, 6, 5); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1278_FSK_GAUSSIAN_0_5, 6, 5));
} else if(abs(sh - 10.0) <= 0.001) { case RADIOLIB_SHAPING_1_0:
state |= _mod->SPIsetRegValue(SX127X_REG_PA_RAMP, SX1278_FSK_GAUSSIAN_1_0, 6, 5); return(_mod->SPIsetRegValue(SX127X_REG_OP_MODE, SX1278_FSK_GAUSSIAN_1_0, 6, 5));
} else { default:
return(ERR_INVALID_DATA_SHAPING); return(ERR_INVALID_DATA_SHAPING);
} }
return(state);
} }
int16_t SX1278::setDataShapingOOK(uint8_t sh) { int16_t SX1278::setDataShapingOOK(uint8_t sh) {

View file

@ -231,14 +231,14 @@ class SX1278: public SX127x {
int16_t setGain(uint8_t gain); int16_t setGain(uint8_t gain);
/*! /*!
\brief Sets Gaussian filter bandwidth-time product that will be used for data shaping. \brief Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK mode with FSK modulation.
Allowed values are 0.3, 0.5 or 1.0. Set to 0 to disable data shaping. Only available in FSK mode with FSK modulation. Allowed values are RADIOLIB_SHAPING_0_3, RADIOLIB_SHAPING_0_5 or RADIOLIB_SHAPING_1_0. Set to RADIOLIB_SHAPING_NONE to disable data shaping.
\param sh Gaussian shaping bandwidth-time product that will be used for data shaping \param sh Gaussian shaping bandwidth-time product that will be used for data shaping
\returns \ref status_codes \returns \ref status_codes
*/ */
int16_t setDataShaping(float sh) override; int16_t setDataShaping(uint8_t sh) override;
/*! /*!
\brief Sets filter cutoff frequency that will be used for data shaping. \brief Sets filter cutoff frequency that will be used for data shaping.

View file

@ -912,11 +912,11 @@ int16_t SX127x::setEncoding(uint8_t encoding) {
// set encoding // set encoding
switch(encoding) { switch(encoding) {
case 0: case RADIOLIB_ENCODING_NRZ:
return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_NONE, 6, 5)); return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_NONE, 6, 5));
case 1: case RADIOLIB_ENCODING_MANCHESTER:
return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_MANCHESTER, 6, 5)); return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_MANCHESTER, 6, 5));
case 2: case RADIOLIB_ENCODING_WHITENING:
return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_WHITENING, 6, 5)); return(_mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_1, SX127X_DC_FREE_WHITENING, 6, 5));
default: default:
return(ERR_INVALID_ENCODING); return(ERR_INVALID_ENCODING);

View file

@ -893,8 +893,9 @@ class SX127x: public PhysicalLayer {
/*! /*!
\brief Sets transmission encoding. Only available in FSK mode. \brief Sets transmission encoding. Only available in FSK mode.
Allowed values are RADIOLIB_ENCODING_NRZ, RADIOLIB_ENCODING_MANCHESTER and RADIOLIB_ENCODING_WHITENING.
\param encoding Encoding to be used. Set to 0 for NRZ, 1 for Manchester and 2 for whitening. \param encoding Encoding to be used.
\returns \ref status_codes \returns \ref status_codes
*/ */