2019-05-10 13:47:10 +00:00
|
|
|
#include "SX1262.h"
|
|
|
|
|
|
|
|
SX1262::SX1262(Module* mod) : SX126x(mod) {
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int16_t SX1262::begin(float freq, float bw, uint8_t sf, uint8_t cr, uint16_t syncWord, int8_t power, float currentLimit, uint16_t preambleLength) {
|
|
|
|
// execute common part
|
2019-05-12 17:24:07 +00:00
|
|
|
int16_t state = SX126x::begin(bw, sf, cr, syncWord, preambleLength);
|
2019-05-10 13:47:10 +00:00
|
|
|
if(state != ERR_NONE) {
|
|
|
|
return(state);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
// configure publicly accessible settings
|
|
|
|
state = setFrequency(freq);
|
|
|
|
if(state != ERR_NONE) {
|
|
|
|
return(state);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
state = setOutputPower(power);
|
|
|
|
if(state != ERR_NONE) {
|
|
|
|
return(state);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
|
|
|
// OCP must be configured after PA
|
|
|
|
state = SX126x::setCurrentLimit(currentLimit);
|
|
|
|
if(state != ERR_NONE) {
|
|
|
|
return(state);
|
|
|
|
}
|
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
return(state);
|
|
|
|
}
|
|
|
|
|
|
|
|
int16_t SX1262::setFrequency(float freq) {
|
|
|
|
// check frequency range
|
|
|
|
if((freq < 150.0) || (freq > 960.0)) {
|
|
|
|
return(ERR_INVALID_FREQUENCY);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
// set frequency
|
|
|
|
return(SX126x::setFrequencyRaw(freq));
|
|
|
|
}
|
|
|
|
|
|
|
|
int16_t SX1262::setOutputPower(int8_t power) {
|
|
|
|
// check allowed power range
|
|
|
|
if(!((power >= -17) && (power <= 22))) {
|
|
|
|
return(ERR_INVALID_OUTPUT_POWER);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
// enable high power PA for output power higher than 14 dBm
|
2019-05-12 17:24:07 +00:00
|
|
|
if(power > 13) {
|
2019-05-10 13:47:10 +00:00
|
|
|
SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1262);
|
|
|
|
} else {
|
|
|
|
SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1261);
|
|
|
|
}
|
2019-05-12 17:24:07 +00:00
|
|
|
|
2019-05-10 13:47:10 +00:00
|
|
|
// set output power
|
|
|
|
// TODO power ramp time configuration
|
|
|
|
SX126x::setTxParams(power);
|
|
|
|
return(ERR_NONE);
|
|
|
|
}
|