[LR11x0] Added direct mode support
This commit is contained in:
parent
6fa4aa3ebb
commit
99d2e6c452
6 changed files with 43 additions and 2 deletions
|
@ -8,6 +8,7 @@
|
|||
- SX127x/RFM9x
|
||||
- SX126x/LLCC68
|
||||
- SX128x
|
||||
- LR11x0
|
||||
|
||||
For default module settings, see the wiki page
|
||||
https://github.com/jgromes/RadioLib/wiki/Default-configuration
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
- SX126x
|
||||
- nRF24
|
||||
- Si443x/RFM2x
|
||||
- LR11x0
|
||||
|
||||
Using raw AX.25 frames requires some
|
||||
knowledge of the protocol, refer to
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
- SX126x
|
||||
- nRF24
|
||||
- Si443x/RFM2x
|
||||
- LR11x0
|
||||
|
||||
For default module settings, see the wiki page
|
||||
https://github.com/jgromes/RadioLib/wiki/Default-configuration
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
- nRF24
|
||||
- Si443x/RFM2x
|
||||
- SX128x
|
||||
- LR11x0
|
||||
|
||||
For default module settings, see the wiki page
|
||||
https://github.com/jgromes/RadioLib/wiki/Default-configuration
|
||||
|
|
|
@ -292,6 +292,29 @@ int16_t LR11x0::receive(uint8_t* data, size_t len) {
|
|||
return(readData(data, len));
|
||||
}
|
||||
|
||||
int16_t LR11x0::transmitDirect(uint32_t frf) {
|
||||
// set RF switch (if present)
|
||||
this->mod->setRfSwitchState(Module::MODE_TX);
|
||||
|
||||
// user requested to start transmitting immediately (required for RTTY)
|
||||
int16_t state = RADIOLIB_ERR_NONE;
|
||||
if(frf != 0) {
|
||||
state = setRfFrequency(frf);
|
||||
}
|
||||
RADIOLIB_ASSERT(state);
|
||||
|
||||
// start transmitting
|
||||
return(setTxCw());
|
||||
}
|
||||
|
||||
int16_t LR11x0::receiveDirect() {
|
||||
// set RF switch (if present)
|
||||
this->mod->setRfSwitchState(Module::MODE_RX);
|
||||
|
||||
// LR11x0 is unable to output received data directly
|
||||
return(RADIOLIB_ERR_UNKNOWN);
|
||||
}
|
||||
|
||||
int16_t LR11x0::standby() {
|
||||
return(LR11x0::standby(RADIOLIB_LR11X0_STANDBY_RC));
|
||||
}
|
||||
|
@ -643,7 +666,7 @@ int16_t LR11x0::setFrequencyDeviation(float freqDev) {
|
|||
}
|
||||
|
||||
RADIOLIB_CHECK_RANGE(newFreqDev, 0.6, 200.0, RADIOLIB_ERR_INVALID_FREQUENCY_DEVIATION);
|
||||
this->frequencyDev = freqDev * 1000.0;
|
||||
this->frequencyDev = newFreqDev * 1000.0;
|
||||
return(setModulationParamsGFSK(this->bitRate, this->pulseShape, this->rxBandwidth, this->frequencyDev));
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "../../protocols/PhysicalLayer/PhysicalLayer.h"
|
||||
|
||||
// LR11X0 physical layer properties
|
||||
#define RADIOLIB_LR11X0_FREQUENCY_STEP_SIZE 0.9536743164
|
||||
#define RADIOLIB_LR11X0_FREQUENCY_STEP_SIZE 1.0
|
||||
#define RADIOLIB_LR11X0_MAX_PACKET_LENGTH 255
|
||||
#define RADIOLIB_LR11X0_CRYSTAL_FREQ 32.0
|
||||
#define RADIOLIB_LR11X0_DIV_EXPONENT 25
|
||||
|
@ -606,6 +606,20 @@ class LR11x0: public PhysicalLayer {
|
|||
*/
|
||||
int16_t receive(uint8_t* data, size_t len) override;
|
||||
|
||||
/*!
|
||||
\brief Starts direct mode transmission.
|
||||
\param frf Raw RF frequency value. Defaults to 0, required for quick frequency shifts in RTTY.
|
||||
\returns \ref status_codes
|
||||
*/
|
||||
int16_t transmitDirect(uint32_t frf = 0) override;
|
||||
|
||||
/*!
|
||||
\brief Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as %SX126x series does not support direct mode reception.
|
||||
Will always return RADIOLIB_ERR_UNKNOWN.
|
||||
\returns \ref status_codes
|
||||
*/
|
||||
int16_t receiveDirect() override;
|
||||
|
||||
/*!
|
||||
\brief Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator).
|
||||
\returns \ref status_codes
|
||||
|
|
Loading…
Add table
Reference in a new issue