1#if !defined(_RADIOLIB_SX126X_H)
2#define _RADIOLIB_SX126X_H
4#include "../../TypeDef.h"
6#if !RADIOLIB_EXCLUDE_SX126X
8#include "../../Module.h"
10#include "../../protocols/PhysicalLayer/PhysicalLayer.h"
11#include "../../utils/FEC.h"
12#include "../../utils/CRC.h"
14#include "SX126x_commands.h"
15#include "SX126x_registers.h"
18#define RADIOLIB_SX126X_FREQUENCY_STEP_SIZE 0.9536743164
19#define RADIOLIB_SX126X_MAX_PACKET_LENGTH 255
20#define RADIOLIB_SX126X_CRYSTAL_FREQ 32.0f
21#define RADIOLIB_SX126X_DIV_EXPONENT 25
24#define RADIOLIB_SX126X_LR_FHSS_MAX_ENC_SIZE (608)
25#define RADIOLIB_SX126X_LR_FHSS_HEADER_BITS (114)
26#define RADIOLIB_SX126X_LR_FHSS_HDR_BYTES (10)
27#define RADIOLIB_SX126X_LR_FHSS_SYNC_WORD_BYTES (4)
28#define RADIOLIB_SX126X_LR_FHSS_FRAG_BITS (48)
29#define RADIOLIB_SX126X_LR_FHSS_BLOCK_PREAMBLE_BITS (2)
30#define RADIOLIB_SX126X_LR_FHSS_BLOCK_BITS (RADIOLIB_SX126X_LR_FHSS_FRAG_BITS + RADIOLIB_SX126X_LR_FHSS_BLOCK_PREAMBLE_BITS)
74 int16_t
begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength,
float tcxoVoltage,
bool useRegulatorLDO =
false);
87 int16_t
beginFSK(
float br,
float freqDev,
float rxBw, uint16_t preambleLength,
float tcxoVoltage,
bool useRegulatorLDO =
false);
98 int16_t
beginLRFHSS(uint8_t bw, uint8_t cr,
bool narrowGrid,
float tcxoVoltage,
bool useRegulatorLDO =
false);
108 int16_t
setLrFhssConfig(uint8_t bw, uint8_t cr, uint8_t hdrCount = 3, uint16_t hopSeqId = 0x100);
116 int16_t
reset(
bool verify =
true);
126 int16_t
transmit(
const uint8_t* data,
size_t len, uint8_t addr = 0)
override;
172 int16_t
sleep()
override;
180 int16_t
sleep(
bool retainConfig);
195 int16_t
standby(uint8_t mode,
bool wakeup =
true);
312 int16_t
readData(uint8_t* data,
size_t len)
override;
360 int16_t
setCodingRate(uint8_t cr,
bool longInterleave =
false);
368 int16_t
setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
464 int16_t
setSyncWord(uint8_t* syncWord,
size_t len)
override;
473 int16_t
setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
483 int16_t
setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021,
bool inverted =
true);
492 int16_t
setWhitening(
bool enabled, uint16_t initial = 0x01FF);
503 int16_t
setTCXO(
float voltage, uint32_t delay = 5000);
694 int16_t
invertIQ(
bool enable)
override;
701 int16_t
getModem(ModemType_t* modem)
override;
709 #if !RADIOLIB_EXCLUDE_DIRECT_RECEIVE
720 void readBit(uint32_t pin)
override;
732 int16_t
uploadPatch(
const uint32_t* patch,
size_t len,
bool nonvolatile =
true);
741 int16_t
spectralScanStart(uint16_t numSamples, uint8_t window = RADIOLIB_SX126X_SPECTRAL_SCAN_WINDOW_DEFAULT, uint8_t interval = RADIOLIB_SX126X_SCAN_INTERVAL_8_20_US);
772 int16_t
setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = RADIOLIB_SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = RADIOLIB_SX126X_PA_CONFIG_PA_LUT);
798#if !RADIOLIB_GODMODE && !RADIOLIB_LOW_LEVEL
801 Module* getMod()
override;
805 int16_t setTx(uint32_t timeout = 0);
806 int16_t setRx(uint32_t timeout);
807 int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin, uint8_t exitMode,
RadioLibTime_t timeout);
808 int16_t writeRegister(uint16_t addr,
const uint8_t* data, uint8_t numBytes);
809 int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
810 int16_t writeBuffer(
const uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
811 int16_t readBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
812 int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE);
813 virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL);
814 int16_t setRfFrequency(uint32_t frf);
816 uint8_t getPacketType();
817 int16_t setTxParams(uint8_t power, uint8_t rampTime);
818 int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
819 int16_t setModulationParamsFSK(uint32_t br, uint8_t sh, uint8_t rxBw, uint32_t freqDev);
820 int16_t setPacketParams(uint16_t preambleLen, uint8_t crcType, uint8_t payloadLen, uint8_t hdrType, uint8_t
invertIQ);
821 int16_t setPacketParamsFSK(uint16_t preambleLen, uint8_t preambleDetectorLen, uint8_t crcType, uint8_t syncWordLen, uint8_t addrCmp, uint8_t whiten, uint8_t packType = RADIOLIB_SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLen = 0xFF);
822 int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
823 int16_t setRegulatorMode(uint8_t mode);
825 uint32_t getPacketStatus();
826 uint16_t getDeviceErrors();
827 int16_t clearDeviceErrors();
832 const char* chipType = NULL;
833 uint8_t bandwidth = 0;
839 int16_t setFrequencyRaw(
float freq);
840 int16_t fixPaClamping(
bool enable =
true);
843 static int16_t SPIparseStatus(uint8_t in);
850 uint8_t spreadingFactor = 0, codingRate = 0, ldrOptimize = 0, crcTypeLoRa = 0, headerType = 0;
851 uint16_t preambleLengthLoRa = 0;
852 float bandwidthKhz = 0;
853 bool ldroAuto =
true;
855 uint32_t bitRate = 0, frequencyDev = 0;
856 uint8_t preambleDetLength = 0, rxBandwidth = 0, pulseShape = 0, crcTypeFSK = 0, syncWordLength = 0, whitening = 0, packetType = 0;
857 uint16_t preambleLengthFSK = 0;
858 float rxBandwidthKhz = 0;
860 float dataRateMeasured = 0;
862 uint32_t tcxoDelay = 0;
865 size_t implicitLen = 0;
866 uint8_t invertIQEnabled = RADIOLIB_SX126X_LORA_IQ_STANDARD;
867 uint32_t rxTimeout = 0;
870 uint8_t lrFhssCr = RADIOLIB_SX126X_LR_FHSS_CR_2_3;
871 uint8_t lrFhssBw = RADIOLIB_SX126X_LR_FHSS_BW_722_66;
872 uint8_t lrFhssHdrCount = 3;
873 uint8_t lrFhssSyncWord[RADIOLIB_SX126X_LR_FHSS_SYNC_WORD_BYTES] = { 0x12, 0xAD, 0x10, 0x1B };
874 bool lrFhssGridNonFcc =
false;
875 uint16_t lrFhssNgrid = 0;
876 uint16_t lrFhssLfsrState = 0;
877 uint16_t lrFhssPoly = 0;
878 uint16_t lrFhssSeed = 0;
879 uint16_t lrFhssHopSeqId = 0;
880 size_t lrFhssFrameBitsRem = 0;
881 size_t lrFhssFrameHopsRem = 0;
882 size_t lrFhssHopNum = 0;
884 int16_t modSetup(
float tcxoVoltage,
bool useRegulatorLDO, uint8_t modem);
885 int16_t config(uint8_t modem);
886 bool findChip(
const char* verStr);
887 int16_t startReceiveCommon(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF,
RadioLibIrqFlags_t irqFlags = RADIOLIB_IRQ_RX_DEFAULT_FLAGS,
RadioLibIrqFlags_t irqMask = RADIOLIB_IRQ_RX_DEFAULT_MASK);
888 int16_t setPacketMode(uint8_t mode, uint8_t len);
889 int16_t setHeaderType(uint8_t hdrType,
size_t len = 0xFF);
890 int16_t directMode();
891 int16_t packetMode();
894 int16_t fixSensitivity();
895 int16_t fixImplicitTimeout();
896 int16_t fixInvertedIQ(uint8_t iqConfig);
899 int16_t buildLRFHSSPacket(
const uint8_t* in,
size_t in_len, uint8_t* out,
size_t* out_len,
size_t* out_bits,
size_t* out_hops);
900 int16_t resetLRFHSS();
901 uint16_t stepLRFHSS();
902 int16_t setLRFHSSHop(uint8_t index);
905 void effectEvalPre(uint8_t* buff, uint32_t start);
906 void effectEvalPost(uint8_t* buff, uint32_t start);
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition Module.h:73
static const size_t RFSWITCH_MAX_PINS
The maximum number of pins supported by the RF switch code. Note: It is not recommended to use this c...
Definition Module.h:82
@ MODE_TX
Transmission mode.
Definition Module.h:119
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition PhysicalLayer.h:257
virtual int16_t startReceive()
Sets module to received mode using its default configuration.
Definition PhysicalLayer.cpp:131
virtual int16_t readData(uint8_t *data, size_t len)
Reads data that was received after calling startReceive method.
Definition PhysicalLayer.cpp:225
int16_t transmit(const char *str, uint8_t addr=0)
C-string transmit method.
Definition PhysicalLayer.cpp:53
int16_t startTransmit(const char *str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition PhysicalLayer.cpp:156
virtual int16_t receive(uint8_t *data, size_t len, RadioLibTime_t timeout=0)
Binary receive method. Must be implemented in module class.
Definition PhysicalLayer.cpp:111
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition SX126x.h:37
int16_t startChannelScan() override
Interrupt-driven channel activity detection method. DIO1 will be activated when LoRa preamble is dete...
Definition SX126x.cpp:615
float getFrequencyError()
Gets frequency error of the latest received packet. WARNING: This functionality is based on SX128x im...
Definition SX126x.cpp:713
void setRfSwitchPins(uint32_t rxEn, uint32_t txEn)
Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...
Definition SX126x_config.cpp:617
virtual void setDio1Action(void(*func)(void))
Sets interrupt service routine to call when DIO1 activates.
Definition SX126x_config.cpp:12
int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax=RADIOLIB_SX126X_PA_CONFIG_HP_MAX, uint8_t paLut=RADIOLIB_SX126X_PA_CONFIG_PA_LUT)
Set the PA configuration. Allows user to optimize PA for a specific output power and matching network...
Definition SX126x_commands.cpp:103
int16_t getLoRaRxHeaderInfo(uint8_t *cr, bool *hasCRC)
Get LoRa header information from last received packet. Only valid in explicit header mode.
Definition SX126x.cpp:767
RadioLibTime_t getTimeOnAir(size_t len) override
Get expected time-on-air for a given size of payload.
Definition SX126x.cpp:854
uint8_t randomByte() override
Get one truly random byte from RSSI noise.
Definition SX126x.cpp:929
RadioLibTime_t calculateRxTimeout(RadioLibTime_t timeoutUs) override
Calculate the timeout value for this specific module / series (in number of symbols or units of time)
Definition SX126x.cpp:908
int16_t setDataShaping(uint8_t sh) override
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPI...
Definition SX126x_config.cpp:396
int16_t setRegulatorLDO()
Set regulator mode to LDO.
Definition SX126x_config.cpp:605
RadioLibTime_t calculateTimeOnAir(ModemType_t modem, DataRate_t dr, PacketConfig_t pc, size_t len) override
Calculate the expected time-on-air for a given modem, data rate, packet configuration and payload siz...
Definition SX126x.cpp:781
int16_t invertIQ(bool enable) override
Enable/disable inversion of the I and Q signals.
Definition SX126x_config.cpp:646
int16_t uploadPatch(const uint32_t *patch, size_t len, bool nonvolatile=true)
Upload binary patch into the SX126x device RAM. Patch is needed to e.g., enable spectral scan and mus...
Definition SX126x.cpp:1137
int16_t setEncoding(uint8_t encoding) override
Sets transmission encoding. Available in FSK mode only. Serves only as alias for PhysicalLayer compat...
Definition SX126x_config.cpp:613
void setRfSwitchTable(const uint32_t(&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[])
Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...
Definition SX126x_config.cpp:621
int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO=false)
Initialization method for FSK modem.
Definition SX126x.cpp:70
virtual int16_t setBandwidth(float bw)
Sets LoRa bandwidth. Allowed values are 7.8, 10.4, 15.6, 20.8, 31.25, 41.7, 62.5, 125....
Definition SX126x_config.cpp:44
int16_t readData(uint8_t *data, size_t len) override
Reads data received after calling startReceive method. When the packet length is not known in advance...
Definition SX126x.cpp:575
int16_t calibrateImage(float freq)
Perform image rejection calibration for the specified frequency. Will try to use Semtech-defined pres...
Definition SX126x.cpp:1225
int16_t checkDataRate(DataRate_t dr, ModemType_t modem=RADIOLIB_MODEM_NONE) override
Check the data rate can be configured by this module.
Definition SX126x_config.cpp:291
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition SX126x_config.cpp:601
void clearChannelScanAction() override
Clears interrupt service routine to call when a channel scan is finished.
Definition SX126x_config.cpp:40
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition SX126x_config.cpp:625
int16_t hopLRFHSS()
Handle LR-FHSS hop. When using LR-FHSS in interrupt-driven mode, this method MUST be called each time...
Definition SX126x.cpp:430
void setDirectAction(void(*func)(void)) override
Set interrupt service routine function to call when data bit is received in direct mode.
Definition SX126x.cpp:1128
int16_t setIrqFlags(uint32_t irq) override
Set interrupt on DIO1 to be sent on a specific IRQ bit (e.g. RxTimeout, CadDone).
Definition SX126x.cpp:921
int16_t spectralScanGetStatus()
Read the status of spectral scan.
Definition SX126x.cpp:1205
void clearPacketReceivedAction() override
Clears interrupt service routine to call when a packet is received.
Definition SX126x_config.cpp:24
int16_t setTCXO(float voltage, uint32_t delay=5000)
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
Definition SX126x_config.cpp:660
float getSNR() override
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
Definition SX126x.cpp:697
int16_t setRxBandwidth(float rxBw)
Sets FSK receiver bandwidth. Allowed values are 4.8, 5.8, 7.3, 9.7, 11.7, 14.6, 19....
Definition SX126x_config.cpp:317
int16_t finishReceive() override
Clean up after reception is done.
Definition SX126x.cpp:449
int16_t setRegulatorDCDC()
Set regulator mode to DC-DC.
Definition SX126x_config.cpp:609
int16_t transmit(const uint8_t *data, size_t len, uint8_t addr=0) override
Blocking binary transmit method. Overloads for string-based transmissions are implemented in Physical...
Definition SX126x.cpp:197
int16_t startReceive() override
Interrupt-driven receive method with default parameters. Implemented for compatibility with PhysicalL...
Definition SX126x.cpp:463
virtual void clearDio1Action()
Clears interrupt service routine to call when DIO1 activates.
Definition SX126x_config.cpp:16
int16_t setCodingRate(uint8_t cr, bool longInterleave=false)
Sets LoRa coding rate denominator. Allowed values range from 4 to 8. Note that a value of 4 means no ...
Definition SX126x_config.cpp:108
void setPacketReceivedAction(void(*func)(void)) override
Sets interrupt service routine to call when a packet is received.
Definition SX126x_config.cpp:20
float getRSSI() override
Gets recorded signal strength indicator. Overload with packet mode enabled for PhysicalLayer compatib...
Definition SX126x.cpp:679
int16_t standby() override
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator)...
Definition SX126x_commands.cpp:31
int16_t setFrequencyDeviation(float freqDev) override
Sets FSK frequency deviation. Allowed values range from 0.0 to 200.0 kHz.
Definition SX126x_config.cpp:193
void spectralScanAbort()
Abort an ongoing spectral scan.
Definition SX126x.cpp:1201
int16_t getModem(ModemType_t *modem) override
Get modem currently in use by the radio.
Definition SX126x.cpp:958
int16_t sleep() override
Sets the module to sleep mode. To wake the device up, call standby(). Overload with warm start enable...
Definition SX126x_commands.cpp:11
int16_t receiveDirect() override
Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as SX126x series does...
Definition SX126x.cpp:327
int16_t spectralScanStart(uint16_t numSamples, uint8_t window=RADIOLIB_SX126X_SPECTRAL_SCAN_WINDOW_DEFAULT, uint8_t interval=RADIOLIB_SX126X_SCAN_INTERVAL_8_20_US)
Start spectral scan. Requires binary path to be uploaded.
Definition SX126x.cpp:1185
int16_t finishTransmit() override
Clean up after transmission is done.
Definition SX126x.cpp:440
int16_t setCurrentLimit(float currentLimit)
Sets current protection limit. Can be set in 2.5 mA steps.
Definition SX126x_config.cpp:150
int16_t setRxBoostedGainMode(bool rxbgm, bool persist=true)
Enables or disables Rx Boosted Gain mode as described in SX126x datasheet section 9....
Definition SX126x_config.cpp:380
int16_t transmitDirect(uint32_t frf=0) override
Starts direct mode transmission.
Definition SX126x.cpp:311
int16_t variablePacketLengthMode(uint8_t maxLen=RADIOLIB_SX126X_MAX_PACKET_LENGTH)
Set modem in variable packet length mode. Available in FSK mode only.
Definition SX126x_config.cpp:594
int16_t begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO=false)
Initialization method for LoRa modem.
Definition SX126x.cpp:24
int16_t setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)
Sets CRC configuration.
Definition SX126x_config.cpp:494
int16_t reset(bool verify=true)
Reset method. Will reset the chip to the default state using RST pin.
Definition SX126x.cpp:164
int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)
Sets LoRa sync word.
Definition SX126x_config.cpp:139
int16_t setLrFhssConfig(uint8_t bw, uint8_t cr, uint8_t hdrCount=3, uint16_t hopSeqId=0x100)
Sets LR-FHSS configuration.
Definition SX126x.cpp:151
int16_t calibrateImageRejection(float freqMin, float freqMax)
Perform image rejection calibration for the specified frequency band. WARNING: Use at your own risk!...
Definition SX126x.cpp:1262
float getCurrentLimit()
Reads current protection limit.
Definition SX126x_config.cpp:163
int16_t launchMode() override
Launch previously staged mode.
Definition SX126x.cpp:1100
int16_t stageMode(RadioModeType_t mode, RadioModeConfig_t *cfg) override
Stage mode of the radio to be launched later using launchMode.
Definition SX126x.cpp:977
int16_t clearIrqFlags(uint32_t irq) override
Clear interrupt on a specific IRQ bit (e.g. RxTimeout, CadDone).
Definition SX126x.cpp:925
uint32_t getIrqFlags() override
Read currently active IRQ flags.
Definition SX126x.cpp:915
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition SX126x_config.cpp:637
int16_t fixedPacketLengthMode(uint8_t len=RADIOLIB_SX126X_MAX_PACKET_LENGTH)
Set modem in fixed packet length mode. Available in FSK mode only.
Definition SX126x_config.cpp:590
int16_t setBitRate(float br) override
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
Definition SX126x_config.cpp:217
size_t getPacketLength(bool update=true) override
Query modem for the packet length of received payload.
Definition SX126x.cpp:746
int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen)
Sets FSK sync word in the form of array of up to 8 bytes.
Definition SX126x_config.cpp:475
void setPacketSentAction(void(*func)(void)) override
Sets interrupt service routine to call when a packet is sent.
Definition SX126x_config.cpp:28
int16_t setDataRate(DataRate_t dr, ModemType_t modem=RADIOLIB_MODEM_NONE) override
Set data rate.
Definition SX126x_config.cpp:238
void readBit(uint32_t pin) override
Function to read and process data bit in direct reception mode.
Definition SX126x.cpp:1132
int16_t scanChannel() override
Performs scan for LoRa transmission in the current channel. Detects both preamble and payload....
Definition SX126x.cpp:401
float getDataRate() const
Gets effective data rate for the last transmitted packet. The value is calculated only for payload by...
Definition SX126x.cpp:675
int16_t setPreambleLength(size_t preambleLength) override
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535.
Definition SX126x_config.cpp:172
int16_t setPaRampTime(uint8_t rampTime)
Set PA ramp-up time. Set to 200us by default.
Definition SX126x_config.cpp:717
bool XTAL
Whether the module has an XTAL (true) or TCXO (false). Defaults to false.
Definition SX126x.h:55
int16_t receive(uint8_t *data, size_t len, RadioLibTime_t timeout=0) override
Blocking binary receive method. Overloads for string-based transmissions are implemented in PhysicalL...
Definition SX126x.cpp:263
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition SX126x_config.cpp:597
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition SX126x_config.cpp:713
int16_t spectralScanGetResult(uint16_t *results)
Read the result of spectral scan.
Definition SX126x.cpp:1213
int16_t setWhitening(bool enabled, uint16_t initial=0x01FF)
Sets FSK whitening parameters.
Definition SX126x_config.cpp:553
virtual int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa spreading factor. Allowed values range from 5 to 12.
Definition SX126x_config.cpp:95
bool standbyXOSC
Whether to use XOSC (true) or RC (false) oscillator in standby mode. Defaults to false.
Definition SX126x.h:60
int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=0, RadioLibIrqFlags_t irqFlags=RADIOLIB_IRQ_RX_DEFAULT_FLAGS, RadioLibIrqFlags_t irqMask=RADIOLIB_IRQ_RX_DEFAULT_MASK)
Calls startReceiveDutyCycle with rxPeriod and sleepPeriod set so the unit shouldn't miss any messages...
Definition SX126x.cpp:494
void setChannelScanAction(void(*func)(void)) override
Sets interrupt service routine to call when a channel scan is finished.
Definition SX126x_config.cpp:36
void clearPacketSentAction() override
Clears interrupt service routine to call when a packet is sent.
Definition SX126x_config.cpp:32
int16_t beginLRFHSS(uint8_t bw, uint8_t cr, bool narrowGrid, float tcxoVoltage, bool useRegulatorLDO=false)
Initialization method for LR-FHSS modem. This modem only supports transmission!
Definition SX126x.cpp:123
int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod, RadioLibIrqFlags_t irqFlags=RADIOLIB_IRQ_RX_DEFAULT_FLAGS, RadioLibIrqFlags_t irqMask=RADIOLIB_IRQ_RX_DEFAULT_MASK)
Interrupt-driven receive method where the device mostly sleeps and periodically wakes to listen....
Definition SX126x.cpp:467
int16_t getChannelScanResult() override
Read the channel scan result.
Definition SX126x.cpp:656
unsigned long RadioLibTime_t
Type used for durations in RadioLib.
Definition TypeDef.h:647
uint32_t RadioLibIrqFlags_t
Type used for radio-agnostic IRQ flags. IRQ to enable corresponds to the bit index (RadioLibIrq_t)....
Definition TypeDef.h:653
Description of RF switch pin states for a single mode. See setRfSwitchTable for details.
Definition Module.h:89
Common channel scan configuration structure.
Definition PhysicalLayer.h:165
Common data rate structure.
Definition PhysicalLayer.h:74
Common packet configuration structure.
Definition PhysicalLayer.h:119
Definition PhysicalLayer.h:208