34 lines
839 B
C++
34 lines
839 B
C++
#include "Si4432.h"
|
|
|
|
Si4432::Si4432(Module* mod) : Si443x(mod) {
|
|
|
|
}
|
|
|
|
int16_t Si4432::begin(float freq, float br, float freqDev, float rxBw, int8_t power) {
|
|
// execute common part
|
|
int16_t state = Si443x::begin(br, freqDev, rxBw);
|
|
RADIOLIB_ASSERT(state);
|
|
|
|
// configure publicly accessible settings
|
|
state = setFrequency(freq);
|
|
RADIOLIB_ASSERT(state);
|
|
|
|
state = setOutputPower(power);
|
|
RADIOLIB_ASSERT(state);
|
|
|
|
return(state);
|
|
}
|
|
|
|
int16_t Si4432::setFrequency(float freq) {
|
|
RADIOLIB_CHECK_RANGE(freq, 240.0, 930.0, ERR_INVALID_FREQUENCY);
|
|
|
|
// set frequency
|
|
return(Si443x::setFrequencyRaw(freq));
|
|
}
|
|
|
|
int16_t Si4432::setOutputPower(int8_t power) {
|
|
RADIOLIB_CHECK_RANGE(power, -1, 20, ERR_INVALID_OUTPUT_POWER);
|
|
|
|
// set output power
|
|
return(_mod->SPIsetRegValue(SI443X_REG_TX_POWER, (uint8_t)((power + 1) / 3), 2, 0));
|
|
}
|