[SX128x] Added missing RF switch control
This commit is contained in:
parent
5f4481aef6
commit
75197d78a0
1 changed files with 17 additions and 2 deletions
|
@ -340,6 +340,9 @@ int16_t SX128x::receive(uint8_t* data, size_t len) {
|
|||
}
|
||||
|
||||
int16_t SX128x::transmitDirect(uint32_t frf) {
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(LOW, HIGH);
|
||||
|
||||
// user requested to start transmitting immediately (required for RTTY)
|
||||
int16_t state = ERR_NONE;
|
||||
if(frf != 0) {
|
||||
|
@ -352,6 +355,9 @@ int16_t SX128x::transmitDirect(uint32_t frf) {
|
|||
}
|
||||
|
||||
int16_t SX128x::receiveDirect() {
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(HIGH, LOW);
|
||||
|
||||
// SX128x is unable to output received data directly
|
||||
return(ERR_UNKNOWN);
|
||||
}
|
||||
|
@ -374,6 +380,9 @@ int16_t SX128x::scanChannel() {
|
|||
state = clearIrqStatus();
|
||||
RADIOLIB_ASSERT(state);
|
||||
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(HIGH, LOW);
|
||||
|
||||
// set mode to CAD
|
||||
state = setCad();
|
||||
RADIOLIB_ASSERT(state);
|
||||
|
@ -399,6 +408,9 @@ int16_t SX128x::scanChannel() {
|
|||
}
|
||||
|
||||
int16_t SX128x::sleep(bool retainConfig) {
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(LOW, LOW);
|
||||
|
||||
uint8_t sleepConfig = SX128X_SLEEP_DATA_BUFFER_RETAIN | SX128X_SLEEP_DATA_RAM_RETAIN;
|
||||
if(!retainConfig) {
|
||||
sleepConfig = SX128X_SLEEP_DATA_BUFFER_FLUSH | SX128X_SLEEP_DATA_RAM_FLUSH;
|
||||
|
@ -416,6 +428,9 @@ int16_t SX128x::standby() {
|
|||
}
|
||||
|
||||
int16_t SX128x::standby(uint8_t mode) {
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(LOW, LOW);
|
||||
|
||||
uint8_t data[] = { mode };
|
||||
return(SPIwriteCommand(SX128X_CMD_SET_STANDBY, data, 1));
|
||||
}
|
||||
|
@ -478,7 +493,7 @@ int16_t SX128x::startTransmit(uint8_t* data, size_t len, uint8_t addr) {
|
|||
RADIOLIB_ASSERT(state);
|
||||
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(true);
|
||||
_mod->setRfSwitchState(LOW, HIGH);
|
||||
|
||||
// start transmission
|
||||
state = setTx(SX128X_TX_TIMEOUT_NONE);
|
||||
|
@ -517,7 +532,7 @@ int16_t SX128x::startReceive(uint16_t timeout) {
|
|||
}
|
||||
|
||||
// set RF switch (if present)
|
||||
_mod->setRfSwitchState(false);
|
||||
_mod->setRfSwitchState(HIGH, LOW);
|
||||
|
||||
// set mode to receive
|
||||
state = setRx(timeout);
|
||||
|
|
Loading…
Add table
Reference in a new issue