diff --git a/src/TypeDef.h b/src/TypeDef.h index 236c7ab4..2d22051d 100644 --- a/src/TypeDef.h +++ b/src/TypeDef.h @@ -325,6 +325,11 @@ */ #define ERR_INVALID_MODULATION -107 +/*! + \brief Supplied Peak type is invalid. +*/ +#define ERR_INVALID_OOK_RSSI_PEAK_TYPE -108 + // ESP8266 status codes /*! diff --git a/src/modules/RF69/RF69.cpp b/src/modules/RF69/RF69.cpp index 0b98dc0c..80d88f5e 100644 --- a/src/modules/RF69/RF69.cpp +++ b/src/modules/RF69/RF69.cpp @@ -384,6 +384,16 @@ int16_t RF69::setOOK(bool enableOOK) { return(state); } +int16_t RF69::setOokThresholdType(uint8_t type) { + if(type != RF69_OOK_THRESH_FIXED && type != RF69_OOK_THRESH_PEAK && RF69_OOK_THRESH_AVERAGE) + return ERR_INVALID_OOK_RSSI_PEAK_TYPE; + + int16_t state = ERR_NONE; + state = _mod->SPIsetRegValue(RF69_REG_OOK_PEAK, type, 7, 3, 5); + + return(state); +} + int16_t RF69::setFrequency(float freq) { // check allowed frequency range if(!(((freq > 290.0) && (freq < 340.0)) || diff --git a/src/modules/RF69/RF69.h b/src/modules/RF69/RF69.h index 4241526a..1474d31c 100644 --- a/src/modules/RF69/RF69.h +++ b/src/modules/RF69/RF69.h @@ -748,6 +748,14 @@ class RF69: public PhysicalLayer { */ int16_t setOOK(bool enableOOK); + /*! + \brief Selects the type of threshold in the OOK data slicer + + \param type RF69_OOK_THRESH_FIXED RF69_OOK_THRESH_PEAK(default) RF69_OOK_THRESH_AVERAGE + \returns \ref status_codes + */ + int16_t setOokThresholdType(uint8_t type); + /*! \brief Set modem in fixed packet length mode.