diff --git a/src/modules/SX1272.cpp b/src/modules/SX1272.cpp index cd661c2a..69351868 100644 --- a/src/modules/SX1272.cpp +++ b/src/modules/SX1272.cpp @@ -6,7 +6,7 @@ SX1272::SX1272(Module* mod) : SX127x(mod) { uint8_t SX1272::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_t syncWord, int8_t power) { // execute common part - uint8_t state = SX127x::begin(syncWord); + uint8_t state = SX127x::begin(SX1272_CHIP_VERSION, syncWord); if(state != ERR_NONE) { return(state); } @@ -52,12 +52,8 @@ uint8_t SX1272::setFrequency(float freq) { return(ERR_INVALID_FREQUENCY); } - // set frequency and if successful, save the new setting - uint8_t state = SX1272::setFrequencyRaw(freq); - if(state == ERR_NONE) { - SX127x::_freq = freq; - } - return(state); + // set frequency + return(SX1272::setFrequencyRaw(freq)); } uint8_t SX1272::setBandwidth(float bw) { @@ -179,11 +175,6 @@ uint8_t SX1272::setOutputPower(int8_t power) { state |= _mod->SPIsetRegValue(SX1272_REG_PA_DAC, SX127X_PA_BOOST_ON, 2, 0); } - // configuration successful, save new setting - if(state == ERR_NONE) { - _power = power; - } - return(state); } diff --git a/src/modules/SX1272.h b/src/modules/SX1272.h index 0be49742..4be44d3c 100644 --- a/src/modules/SX1272.h +++ b/src/modules/SX1272.h @@ -43,6 +43,9 @@ #define SX1272_AGC_AUTO_OFF 0b00000000 // 2 2 LNA gain set by REG_LNA #define SX1272_AGC_AUTO_ON 0b00000100 // 2 2 LNA gain set by internal AGC loop +//SX127X_REG_VERSION +#define SX1272_CHIP_VERSION 0x22 + class SX1272: public SX127x { public: // constructor diff --git a/src/modules/SX1276.cpp b/src/modules/SX1276.cpp index 71399fcc..f442f31a 100644 --- a/src/modules/SX1276.cpp +++ b/src/modules/SX1276.cpp @@ -10,10 +10,6 @@ uint8_t SX1276::setFrequency(float freq) { return(ERR_INVALID_FREQUENCY); } - // set frequency and if successful, save the new setting - uint8_t state = SX1278::setFrequencyRaw(freq); - if(state == ERR_NONE) { - SX127x::_freq = freq; - } - return(state); + // set frequency + return(SX1278::setFrequencyRaw(freq)); } diff --git a/src/modules/SX1277.cpp b/src/modules/SX1277.cpp index de10bfe6..faa63b04 100644 --- a/src/modules/SX1277.cpp +++ b/src/modules/SX1277.cpp @@ -11,11 +11,7 @@ uint8_t SX1277::setFrequency(float freq) { } // set frequency and if successful, save the new setting - uint8_t state = SX1278::setFrequencyRaw(freq); - if(state == ERR_NONE) { - SX127x::_freq = freq; - } - return(state); + return(SX1278::setFrequencyRaw(freq)); } uint8_t SX1277::setSpreadingFactor(uint8_t sf) { diff --git a/src/modules/SX1278.cpp b/src/modules/SX1278.cpp index 07f6c6ca..5d5823f8 100644 --- a/src/modules/SX1278.cpp +++ b/src/modules/SX1278.cpp @@ -6,7 +6,7 @@ SX1278::SX1278(Module* mod) : SX127x(mod) { uint8_t SX1278::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint8_t syncWord, int8_t power) { // execute common part - uint8_t state = SX127x::begin(syncWord); + uint8_t state = SX127x::begin(SX1278_CHIP_VERSION, syncWord); if(state != ERR_NONE) { return(state); } @@ -52,12 +52,8 @@ uint8_t SX1278::setFrequency(float freq) { return(ERR_INVALID_FREQUENCY); } - // set frequency and if successful, save the new setting - uint8_t state = SX1278::setFrequencyRaw(freq); - if(state == ERR_NONE) { - SX127x::_freq = freq; - } - return(state); + // set frequency + return(SX1278::setFrequencyRaw(freq)); } uint8_t SX1278::setBandwidth(float bw) { @@ -190,11 +186,6 @@ uint8_t SX1278::setOutputPower(int8_t power) { state |= _mod->SPIsetRegValue(SX1278_REG_PA_DAC, SX127X_PA_BOOST_ON, 2, 0); } - // configuration successful, save new setting - if(state == ERR_NONE) { - _power = power; - } - return(state); } diff --git a/src/modules/SX1278.h b/src/modules/SX1278.h index 31e4f2fd..b8f0bf4a 100644 --- a/src/modules/SX1278.h +++ b/src/modules/SX1278.h @@ -61,6 +61,9 @@ #define SX1278_AGC_AUTO_OFF 0b00000000 // 2 2 LNA gain set by REG_LNA #define SX1278_AGC_AUTO_ON 0b00000100 // 2 2 LNA gain set by internal AGC loop +//SX127X_REG_VERSION +#define SX1278_CHIP_VERSION 0x12 + class SX1278: public SX127x { public: // constructor diff --git a/src/modules/SX1279.cpp b/src/modules/SX1279.cpp index aa43371e..d2c95403 100644 --- a/src/modules/SX1279.cpp +++ b/src/modules/SX1279.cpp @@ -10,10 +10,6 @@ uint8_t SX1279::setFrequency(float freq) { return(ERR_INVALID_FREQUENCY); } - // set frequency and if successful, save the new setting - uint8_t state = SX1278::setFrequencyRaw(freq); - if(state == ERR_NONE) { - SX127x::_freq = freq; - } - return(state); + // set frequency + return(SX1278::setFrequencyRaw(freq)); } diff --git a/src/modules/SX127x.cpp b/src/modules/SX127x.cpp index 9dcf72e2..e35f129a 100644 --- a/src/modules/SX127x.cpp +++ b/src/modules/SX127x.cpp @@ -4,7 +4,7 @@ SX127x::SX127x(Module* mod) { _mod = mod; } -uint8_t SX127x::begin(uint8_t syncWord) { +uint8_t SX127x::begin(uint8_t chipVersion, uint8_t syncWord) { // set module properties _mod->init(USE_SPI, INT_BOTH); @@ -13,7 +13,7 @@ uint8_t SX127x::begin(uint8_t syncWord) { bool flagFound = false; while((i < 10) && !flagFound) { uint8_t version = _mod->SPIreadRegister(SX127X_REG_VERSION); - if(version == 0x12) { + if(version == chipVersion) { flagFound = true; } else { #ifdef KITELIB_DEBUG @@ -228,13 +228,8 @@ uint8_t SX127x::setSyncWord(uint8_t syncWord) { // set mode to standby setMode(SX127X_STANDBY); - // write register - uint8_t state = _mod->SPIsetRegValue(SX127X_REG_SYNC_WORD, syncWord); - if(state == ERR_NONE) { - _syncWord = syncWord; - } - - return(state); + // write register + return(_mod->SPIsetRegValue(SX127X_REG_SYNC_WORD, syncWord)); } uint8_t SX127x::setFrequencyRaw(float newFreq) { diff --git a/src/modules/SX127x.h b/src/modules/SX127x.h index 5bd4bc2e..7318311e 100644 --- a/src/modules/SX127x.h +++ b/src/modules/SX127x.h @@ -173,7 +173,7 @@ class SX127x { float lastPacketSNR; // basic methods - uint8_t begin(uint8_t syncWord); + uint8_t begin(uint8_t chipVersion, uint8_t syncWord); uint8_t transmit(uint8_t* data, size_t len); uint8_t transmit(const char* str); uint8_t transmit(String& str); @@ -189,12 +189,9 @@ class SX127x { protected: Module* _mod; - float _freq; float _bw; uint8_t _sf; uint8_t _cr; - uint8_t _syncWord; - int8_t _power; uint8_t tx(char* data, uint8_t length); uint8_t rxSingle(char* data, uint8_t* length);