From 7b6f1d075a149666e7583d58008af43e7eb78665 Mon Sep 17 00:00:00 2001 From: Christophe Painchaud Date: Wed, 24 Mar 2021 18:05:32 +0100 Subject: [PATCH] added RF69::setOokThresholdType --- src/TypeDef.h | 5 +++++ src/modules/RF69/RF69.cpp | 10 ++++++++++ src/modules/RF69/RF69.h | 8 ++++++++ 3 files changed, 23 insertions(+) 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.