RadioLib
Universal wireless communication library for Arduino
|
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from this base class. This class should not be instantiated directly from Arduino sketch, only from its derived classes. More...
#include <SX126x.h>
Public Member Functions | |
SX126x (Module *mod) | |
Default constructor. More... | |
Module * | getMod () |
int16_t | begin (uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO=false) |
Initialization method for LoRa modem. More... | |
int16_t | beginFSK (float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO=false) |
Initialization method for FSK modem. More... | |
int16_t | reset (bool verify=true) |
Reset method. Will reset the chip to the default state using RST pin. More... | |
int16_t | transmit (uint8_t *data, size_t len, uint8_t addr=0) override |
Blocking binary transmit method. Overloads for string-based transmissions are implemented in PhysicalLayer. More... | |
int16_t | receive (uint8_t *data, size_t len) override |
Blocking binary receive method. Overloads for string-based transmissions are implemented in PhysicalLayer. More... | |
int16_t | transmitDirect (uint32_t frf=0) override |
Starts direct mode transmission. More... | |
int16_t | receiveDirect () override |
Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as SX126x series does not support direct mode reception. Will always return RADIOLIB_ERR_UNKNOWN. More... | |
int16_t | scanChannel () |
Performs scan for LoRa transmission in the current channel. Detects both preamble and payload. More... | |
int16_t | sleep (bool retainConfig=true) |
Sets the module to sleep mode. More... | |
int16_t | standby () override |
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator). More... | |
int16_t | standby (uint8_t mode) |
Sets the module to standby mode. More... | |
void | setDio1Action (void(*func)(void)) |
Sets interrupt service routine to call when DIO1 activates. More... | |
void | clearDio1Action () |
Clears interrupt service routine to call when DIO1 activates. | |
int16_t | startTransmit (uint8_t *data, size_t len, uint8_t addr=0) override |
Interrupt-driven binary transmit method. Overloads for string-based transmissions are implemented in PhysicalLayer. More... | |
int16_t | startReceive (uint32_t timeout=RADIOLIB_SX126X_RX_TIMEOUT_INF) |
Interrupt-driven receive method. DIO1 will be activated when full packet is received. More... | |
int16_t | startReceiveDutyCycle (uint32_t rxPeriod, uint32_t sleepPeriod) |
Interrupt-driven receive method where the device mostly sleeps and periodically wakes to listen. Note that this function assumes the unit will take 500us + TCXO_delay to change state. See datasheet section 13.1.7, version 1.2. More... | |
int16_t | startReceiveDutyCycleAuto (uint16_t senderPreambleLength=0, uint16_t minSymbols=8) |
Calls startReceiveDutyCycle with rxPeriod and sleepPeriod set so the unit shouldn't miss any messages. More... | |
uint16_t | getIrqStatus () |
Reads the current IRQ status. More... | |
int16_t | readData (uint8_t *data, size_t len) override |
Reads data received after calling startReceive method. More... | |
int16_t | startChannelScan () |
Interrupt-driven channel activity detection method. DIO0 will be activated when LoRa preamble is detected, or upon timeout. More... | |
int16_t | getChannelScanResult () |
Read the channel scan result. More... | |
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.0, 250.0 and 500.0 kHz. More... | |
int16_t | setSpreadingFactor (uint8_t sf) |
Sets LoRa spreading factor. Allowed values range from 5 to 12. More... | |
int16_t | setCodingRate (uint8_t cr) |
Sets LoRa coding rate denominator. Allowed values range from 5 to 8. More... | |
int16_t | setSyncWord (uint8_t syncWord, uint8_t controlBits=0x44) |
Sets LoRa sync word. More... | |
int16_t | setCurrentLimit (float currentLimit) |
Sets current protection limit. Can be set in 0.25 mA steps. More... | |
float | getCurrentLimit () |
Reads current protection limit. More... | |
int16_t | setPreambleLength (uint16_t preambleLength) |
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535. More... | |
int16_t | setFrequencyDeviation (float freqDev) override |
Sets FSK frequency deviation. Allowed values range from 0.0 to 200.0 kHz. More... | |
int16_t | setBitRate (float br) |
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps. More... | |
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.5, 23.4, 29.3, 39.0, 46.9, 58.6, 78.2, 93.8, 117.3, 156.2, 187.2, 234.3, 312.0, 373.6 and 467.0 kHz. More... | |
int16_t | setDataShaping (uint8_t sh) override |
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPING_0_3, RADIOLIB_SHAPING_0_5, RADIOLIB_SHAPING_0_7 or RADIOLIB_SHAPING_1_0. Set to RADIOLIB_SHAPING_NONE to disable data shaping. More... | |
int16_t | setSyncWord (uint8_t *syncWord, uint8_t len) |
Sets FSK sync word in the form of array of up to 8 bytes. More... | |
int16_t | setSyncBits (uint8_t *syncWord, uint8_t bitsLen) |
Sets FSK sync word in the form of array of up to 8 bytes. More... | |
int16_t | setNodeAddress (uint8_t nodeAddr) |
Sets node address. Calling this method will also enable address filtering for node address only. More... | |
int16_t | setBroadcastAddress (uint8_t broadAddr) |
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast address. More... | |
int16_t | disableAddressFiltering () |
Disables address filtering. Calling this method will also erase previously set addresses. More... | |
int16_t | setCRC (uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true) |
Sets CRC configuration. More... | |
int16_t | setWhitening (bool enabled, uint16_t initial=0x0100) |
Sets FSK whitening parameters. More... | |
int16_t | setTCXO (float voltage, uint32_t delay=5000) |
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration. More... | |
int16_t | setDio2AsRfSwitch (bool enable=true) |
Set DIO2 to function as RF switch (default in Semtech example designs). More... | |
float | getDataRate () const |
Gets effective data rate for the last transmitted packet. The value is calculated only for payload bytes. More... | |
float | getRSSI () |
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet. More... | |
float | getSNR () |
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem. More... | |
size_t | getPacketLength (bool update=true) override |
Query modem for the packet length of received payload. More... | |
int16_t | fixedPacketLengthMode (uint8_t len=RADIOLIB_SX126X_MAX_PACKET_LENGTH) |
Set modem in fixed packet length mode. Available in FSK mode only. More... | |
int16_t | variablePacketLengthMode (uint8_t maxLen=RADIOLIB_SX126X_MAX_PACKET_LENGTH) |
Set modem in variable packet length mode. Available in FSK mode only. More... | |
uint32_t | getTimeOnAir (size_t len) |
Get expected time-on-air for a given size of payload. More... | |
float | getRSSIInst () |
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT implementation. More... | |
int16_t | implicitHeader (size_t len) |
Set implicit header mode for future reception/transmission. More... | |
int16_t | explicitHeader () |
Set explicit header mode for future reception/transmission. More... | |
int16_t | setRegulatorLDO () |
Set regulator mode to LDO. More... | |
int16_t | setRegulatorDCDC () |
Set regulator mode to DC-DC. More... | |
int16_t | setEncoding (uint8_t encoding) override |
Sets transmission encoding. Available in FSK mode only. Serves only as alias for PhysicalLayer compatibility. More... | |
void | setRfSwitchPins (RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn) |
Some modules contain external RF switch controlled by two pins. This function gives RadioLib control over those two pins to automatically switch Rx and Tx state. When using automatic RF switch control, DO NOT change the pin mode of rxEn or txEn from Arduino sketch! More... | |
int16_t | forceLDRO (bool enable) |
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method, LDRO will always be set to the provided value, regardless of symbol length. To re-enable automatic LDRO configuration, call SX126x::autoLDRO() More... | |
int16_t | autoLDRO () |
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method, LDRO will be enabled automatically when symbol length exceeds 16 ms. More... | |
uint8_t | randomByte () |
Get one truly random byte from RSSI noise. More... | |
void | setDirectAction (void(*func)(void)) |
Dummy method, to ensure PhysicalLayer compatibility. More... | |
void | readBit (RADIOLIB_PIN_TYPE pin) |
Dummy method, to ensure PhysicalLayer compatibility. More... | |
int16_t | transmit (__FlashStringHelper *fstr, uint8_t addr=0) |
Arduino Flash String transmit method. More... | |
int16_t | transmit (String &str, uint8_t addr=0) |
Arduino String transmit method. More... | |
int16_t | transmit (const char *str, uint8_t addr=0) |
C-string transmit method. More... | |
virtual int16_t | transmit (uint8_t *data, size_t len, uint8_t addr=0)=0 |
Binary transmit method. Must be implemented in module class. More... | |
int16_t | receive (String &str, size_t len=0) |
Arduino String receive method. More... | |
virtual int16_t | receive (uint8_t *data, size_t len)=0 |
Binary receive method. Must be implemented in module class. More... | |
int16_t | startTransmit (String &str, uint8_t addr=0) |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes. More... | |
int16_t | startTransmit (const char *str, uint8_t addr=0) |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes. More... | |
virtual int16_t | startTransmit (uint8_t *data, size_t len, uint8_t addr=0)=0 |
Interrupt-driven binary transmit method. More... | |
int16_t | readData (String &str, size_t len=0) |
Reads data that was received after calling startReceive method. More... | |
virtual int16_t | readData (uint8_t *data, size_t len)=0 |
Reads data that was received after calling startReceive method. More... | |
![]() | |
PhysicalLayer (float freqStep, size_t maxPacketLength) | |
Default constructor. More... | |
int16_t | transmit (__FlashStringHelper *fstr, uint8_t addr=0) |
Arduino Flash String transmit method. More... | |
int16_t | transmit (String &str, uint8_t addr=0) |
Arduino String transmit method. More... | |
int16_t | transmit (const char *str, uint8_t addr=0) |
C-string transmit method. More... | |
int16_t | receive (String &str, size_t len=0) |
Arduino String receive method. More... | |
int16_t | startTransmit (String &str, uint8_t addr=0) |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes. More... | |
int16_t | startTransmit (const char *str, uint8_t addr=0) |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes. More... | |
int16_t | readData (String &str, size_t len=0) |
Reads data that was received after calling startReceive method. More... | |
float | getFreqStep () const |
Gets the module frequency step size that was set in constructor. More... | |
int32_t | random (int32_t max) |
Get truly random number in range 0 - max. More... | |
int32_t | random (int32_t min, int32_t max) |
Get truly random number in range min - max. More... | |
int16_t | startDirect () |
Configure module parameters for direct modes. Must be called prior to "ham" modes like RTTY or AX.25. Only available in FSK mode. More... | |
int16_t | setDirectSyncWord (uint32_t syncWord, uint8_t len) |
Set sync word to be used to determine start of packet in direct reception mode. More... | |
int16_t | available () |
Get the number of direct mode bytes currently available in buffer. More... | |
uint8_t | read () |
Get data from direct mode buffer. More... | |
virtual int16_t | setDIOMapping (RADIOLIB_PIN_TYPE pin, uint8_t value) |
Configure DIO pin mapping to get a given signal on a DIO pin (if available). More... | |
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from this base class. This class should not be instantiated directly from Arduino sketch, only from its derived classes.
SX126x::SX126x | ( | Module * | mod | ) |
Default constructor.
mod | Instance of Module that will be used to communicate with the radio. |
int16_t SX126x::autoLDRO | ( | ) |
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method, LDRO will be enabled automatically when symbol length exceeds 16 ms.
int16_t SX126x::begin | ( | uint8_t | cr, |
uint8_t | syncWord, | ||
uint16_t | preambleLength, | ||
float | tcxoVoltage, | ||
bool | useRegulatorLDO = false |
||
) |
Initialization method for LoRa modem.
cr | LoRa coding rate denominator. Allowed values range from 5 to 8. |
syncWord | 1-byte LoRa sync word. |
preambleLength | LoRa preamble length in symbols. Allowed values range from 1 to 65535. |
tcxoVoltage | TCXO reference voltage to be set on DIO3. Defaults to 1.6 V, set to 0 to skip. |
useRegulatorLDO | use the LDO instead of DC-DC converter (default false). This is necessary for some modules such as the LAMBDA from RF solutions. |
int16_t SX126x::beginFSK | ( | float | br, |
float | freqDev, | ||
float | rxBw, | ||
uint16_t | preambleLength, | ||
float | tcxoVoltage, | ||
bool | useRegulatorLDO = false |
||
) |
Initialization method for FSK modem.
br | FSK bit rate in kbps. Allowed values range from 0.6 to 300.0 kbps. |
freqDev | Frequency deviation from carrier frequency in kHz. Allowed values range from 0.0 to 200.0 kHz. |
rxBw | Receiver bandwidth in kHz. Allowed values are 4.8, 5.8, 7.3, 9.7, 11.7, 14.6, 19.5, 23.4, 29.3, 39.0, 46.9, 58.6, 78.2, 93.8, 117.3, 156.2, 187.2, 234.3, 312.0, 373.6 and 467.0 kHz. |
preambleLength | FSK preamble length in bits. Allowed values range from 0 to 65535. |
tcxoVoltage | TCXO reference voltage to be set on DIO3. Defaults to 1.6 V, set to 0 to skip. |
useRegulatorLDO | use the LDO instead of DC-DC converter (default false). This is necessary for some modules such as the LAMBDA from RF solutions. |
int16_t SX126x::disableAddressFiltering | ( | ) |
Disables address filtering. Calling this method will also erase previously set addresses.
int16_t SX126x::explicitHeader | ( | ) |
Set explicit header mode for future reception/transmission.
int16_t SX126x::fixedPacketLengthMode | ( | uint8_t | len = RADIOLIB_SX126X_MAX_PACKET_LENGTH | ) |
Set modem in fixed packet length mode. Available in FSK mode only.
len | Packet length. |
int16_t SX126x::forceLDRO | ( | bool | enable | ) |
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method, LDRO will always be set to the provided value, regardless of symbol length. To re-enable automatic LDRO configuration, call SX126x::autoLDRO()
enable | Force LDRO to be always enabled (true) or disabled (false). |
int16_t SX126x::getChannelScanResult | ( | ) |
Read the channel scan result.
float SX126x::getCurrentLimit | ( | ) |
Reads current protection limit.
float SX126x::getDataRate | ( | ) | const |
Gets effective data rate for the last transmitted packet. The value is calculated only for payload bytes.
uint16_t SX126x::getIrqStatus | ( | ) |
Reads the current IRQ status.
|
overridevirtual |
Query modem for the packet length of received payload.
update | Update received packet length. Will return cached value when set to false. |
Implements PhysicalLayer.
float SX126x::getRSSI | ( | ) |
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
float SX126x::getRSSIInst | ( | ) |
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT implementation.
float SX126x::getSNR | ( | ) |
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
uint32_t SX126x::getTimeOnAir | ( | size_t | len | ) |
Get expected time-on-air for a given size of payload.
len | Payload length in bytes. |
int16_t SX126x::implicitHeader | ( | size_t | len | ) |
Set implicit header mode for future reception/transmission.
len | Payload length in bytes. |
|
virtual |
|
virtual |
Dummy method, to ensure PhysicalLayer compatibility.
pin | Ignored. |
Implements PhysicalLayer.
int16_t PhysicalLayer::readData |
Reads data that was received after calling startReceive method.
str | Address of Arduino String to save the received data. |
len | Expected number of characters in the message. When set to 0, the packet length will be retreived automatically. When more bytes than received are requested, only the number of bytes requested will be returned. |
|
overridevirtual |
Reads data received after calling startReceive method.
data | Pointer to array to save the received binary data. |
len | Number of bytes that will be read. When set to 0, the packet length will be retreived automatically. When more bytes than received are requested, only the number of bytes requested will be returned. |
Implements PhysicalLayer.
virtual int16_t PhysicalLayer::readData |
Reads data that was received after calling startReceive method.
data | Pointer to array to save the received binary data. |
len | Number of bytes that will be read. When set to 0, the packet length will be retreived automatically. When more bytes than received are requested, only the number of bytes requested will be returned. |
int16_t PhysicalLayer::receive |
Arduino String receive method.
str | Address of Arduino String to save the received data. |
len | Expected number of characters in the message. Leave as 0 if expecting a unknown size packet |
|
overridevirtual |
Blocking binary receive method. Overloads for string-based transmissions are implemented in PhysicalLayer.
data | Binary data to be sent. |
len | Number of bytes to send. |
Implements PhysicalLayer.
virtual int16_t PhysicalLayer::receive |
Binary receive method. Must be implemented in module class.
data | Pointer to array to save the received binary data. |
len | Number of bytes that will be received. Must be known in advance for binary transmissions. |
|
overridevirtual |
Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as SX126x series does not support direct mode reception. Will always return RADIOLIB_ERR_UNKNOWN.
Implements PhysicalLayer.
int16_t SX126x::reset | ( | bool | verify = true | ) |
Reset method. Will reset the chip to the default state using RST pin.
verify | Whether correct module startup should be verified. When set to true, RadioLib will attempt to verify the module has started correctly by repeatedly issuing setStandby command. Enabled by default. |
int16_t SX126x::scanChannel | ( | ) |
Performs scan for LoRa transmission in the current channel. Detects both preamble and payload.
int16_t SX126x::setBandwidth | ( | float | bw | ) |
Sets LoRa bandwidth. Allowed values are 7.8, 10.4, 15.6, 20.8, 31.25, 41.7, 62.5, 125.0, 250.0 and 500.0 kHz.
bw | LoRa bandwidth to be set in kHz. |
int16_t SX126x::setBitRate | ( | float | br | ) |
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
br | FSK bit rate to be set in kbps. |
int16_t SX126x::setBroadcastAddress | ( | uint8_t | broadAddr | ) |
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast address.
broadAddr | Node address to be set. |
int16_t SX126x::setCodingRate | ( | uint8_t | cr | ) |
Sets LoRa coding rate denominator. Allowed values range from 5 to 8.
cr | LoRa coding rate denominator to be set. |
int16_t SX126x::setCRC | ( | uint8_t | len, |
uint16_t | initial = 0x1D0F , |
||
uint16_t | polynomial = 0x1021 , |
||
bool | inverted = true |
||
) |
Sets CRC configuration.
len | CRC length in bytes, Allowed values are 1 or 2, set to 0 to disable CRC. |
initial | Initial CRC value. FSK only. Defaults to 0x1D0F (CCIT CRC). |
polynomial | Polynomial for CRC calculation. FSK only. Defaults to 0x1021 (CCIT CRC). |
inverted | Invert CRC bytes. FSK only. Defaults to true (CCIT CRC). |
int16_t SX126x::setCurrentLimit | ( | float | currentLimit | ) |
Sets current protection limit. Can be set in 0.25 mA steps.
currentLimit | current protection limit to be set in mA. |
|
overridevirtual |
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPING_0_3, RADIOLIB_SHAPING_0_5, RADIOLIB_SHAPING_0_7 or RADIOLIB_SHAPING_1_0. Set to RADIOLIB_SHAPING_NONE to disable data shaping.
sh | Time-bandwidth product of Gaussian filter to be set. |
Implements PhysicalLayer.
void SX126x::setDio1Action | ( | void(*)(void) | func | ) |
Sets interrupt service routine to call when DIO1 activates.
func | ISR to call. |
int16_t SX126x::setDio2AsRfSwitch | ( | bool | enable = true | ) |
Set DIO2 to function as RF switch (default in Semtech example designs).
|
virtual |
Dummy method, to ensure PhysicalLayer compatibility.
func | Ignored. |
Implements PhysicalLayer.
|
overridevirtual |
Sets transmission encoding. Available in FSK mode only. Serves only as alias for PhysicalLayer compatibility.
encoding | Encoding to be used. Set to 0 for NRZ, and 2 for whitening. |
Implements PhysicalLayer.
|
overridevirtual |
Sets FSK frequency deviation. Allowed values range from 0.0 to 200.0 kHz.
freqDev | FSK frequency deviation to be set in kHz. |
Implements PhysicalLayer.
int16_t SX126x::setNodeAddress | ( | uint8_t | nodeAddr | ) |
Sets node address. Calling this method will also enable address filtering for node address only.
nodeAddr | Node address to be set. |
int16_t SX126x::setPreambleLength | ( | uint16_t | preambleLength | ) |
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535.
preambleLength | Preamble length to be set in symbols (LoRa) or bits (FSK). |
int16_t SX126x::setRegulatorDCDC | ( | ) |
Set regulator mode to DC-DC.
int16_t SX126x::setRegulatorLDO | ( | ) |
Set regulator mode to LDO.
void SX126x::setRfSwitchPins | ( | RADIOLIB_PIN_TYPE | rxEn, |
RADIOLIB_PIN_TYPE | txEn | ||
) |
Some modules contain external RF switch controlled by two pins. This function gives RadioLib control over those two pins to automatically switch Rx and Tx state. When using automatic RF switch control, DO NOT change the pin mode of rxEn or txEn from Arduino sketch!
rxEn | RX enable pin. |
txEn | TX enable pin. |
int16_t SX126x::setRxBandwidth | ( | float | rxBw | ) |
Sets FSK receiver bandwidth. Allowed values are 4.8, 5.8, 7.3, 9.7, 11.7, 14.6, 19.5, 23.4, 29.3, 39.0, 46.9, 58.6, 78.2, 93.8, 117.3, 156.2, 187.2, 234.3, 312.0, 373.6 and 467.0 kHz.
FSK | receiver bandwidth to be set in kHz. |
int16_t SX126x::setSpreadingFactor | ( | uint8_t | sf | ) |
Sets LoRa spreading factor. Allowed values range from 5 to 12.
sf | LoRa spreading factor to be set. |
int16_t SX126x::setSyncBits | ( | uint8_t * | syncWord, |
uint8_t | bitsLen | ||
) |
Sets FSK sync word in the form of array of up to 8 bytes.
syncWord | FSK sync word to be set. |
bitsLen | FSK sync word length in bits. If length is not divisible by 8, least significant bits of syncWord will be ignored. |
int16_t SX126x::setSyncWord | ( | uint8_t * | syncWord, |
uint8_t | len | ||
) |
Sets FSK sync word in the form of array of up to 8 bytes.
syncWord | FSK sync word to be set. |
len | FSK sync word length in bytes. |
int16_t SX126x::setSyncWord | ( | uint8_t | syncWord, |
uint8_t | controlBits = 0x44 |
||
) |
Sets LoRa sync word.
syncWord | LoRa sync word to be set. |
controlBits | Undocumented control bits, required for compatibility purposes. |
int16_t SX126x::setTCXO | ( | float | voltage, |
uint32_t | delay = 5000 |
||
) |
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
TCXO | reference voltage in volts. Allowed values are 1.6, 1.7, 1.8, 2.2. 2.4, 2.7, 3.0 and 3.3 V. Set to 0 to disable TCXO. NOTE: After setting this parameter to 0, the module will be reset (since there's no other way to disable TCXO). |
TCXO | timeout in us. Defaults to 5000 us. |
int16_t SX126x::setWhitening | ( | bool | enabled, |
uint16_t | initial = 0x0100 |
||
) |
Sets FSK whitening parameters.
enabled | True = Whitening enabled |
initial | Initial value used for the whitening LFSR in FSK mode. Defaults to 0x0100, use 0x01FF for SX127x compatibility. |
int16_t SX126x::sleep | ( | bool | retainConfig = true | ) |
Sets the module to sleep mode.
retainConfig | Set to true to retain configuration of the currently active modem ("warm start") or to false to discard current configuration ("cold start"). Defaults to true. |
|
overridevirtual |
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator).
Implements PhysicalLayer.
int16_t SX126x::standby | ( | uint8_t | mode | ) |
Sets the module to standby mode.
mode | Oscillator to be used in standby mode. Can be set to RADIOLIB_SX126X_STANDBY_RC (13 MHz RC oscillator) or RADIOLIB_SX126X_STANDBY_XOSC (32 MHz external crystal oscillator). |
int16_t SX126x::startChannelScan | ( | ) |
Interrupt-driven channel activity detection method. DIO0 will be activated when LoRa preamble is detected, or upon timeout.
int16_t SX126x::startReceive | ( | uint32_t | timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF | ) |
Interrupt-driven receive method. DIO1 will be activated when full packet is received.
timeout | Raw timeout value, expressed as multiples of 15.625 us. Defaults to RADIOLIB_SX126X_RX_TIMEOUT_INF for infinite timeout (Rx continuous mode), set to RADIOLIB_SX126X_RX_TIMEOUT_NONE for no timeout (Rx single mode). If timeout other than infinite is set, signal will be generated on DIO1. |
int16_t SX126x::startReceiveDutyCycle | ( | uint32_t | rxPeriod, |
uint32_t | sleepPeriod | ||
) |
Interrupt-driven receive method where the device mostly sleeps and periodically wakes to listen. Note that this function assumes the unit will take 500us + TCXO_delay to change state. See datasheet section 13.1.7, version 1.2.
rxPeriod | The duration the receiver will be in Rx mode, in microseconds. |
sleepPeriod | The duration the receiver will not be in Rx mode, in microseconds. |
int16_t SX126x::startReceiveDutyCycleAuto | ( | uint16_t | senderPreambleLength = 0 , |
uint16_t | minSymbols = 8 |
||
) |
Calls startReceiveDutyCycle with rxPeriod and sleepPeriod set so the unit shouldn't miss any messages.
senderPreambleLength | Expected preamble length of the messages to receive. If set to zero, the currently configured preamble length will be used. Defaults to zero. |
minSymbols | Parameters will be chosen to ensure that the unit will catch at least this many symbols of any preamble of the specified length. Defaults to 8. According to Semtech, receiver requires 8 symbols to reliably latch a preamble. This makes this method redundant when transmitter preamble length is less than 17 (2*minSymbols + 1). |
int16_t PhysicalLayer::startTransmit |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes.
str | C-string that will be transmitted. |
addr | Node address to transmit the packet to. Only used in FSK mode. |
int16_t PhysicalLayer::startTransmit |
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes.
str | Address of Arduino String that will be transmitted. |
addr | Node address to transmit the packet to. Only used in FSK mode. |
|
overridevirtual |
Interrupt-driven binary transmit method. Overloads for string-based transmissions are implemented in PhysicalLayer.
data | Binary data to be sent. |
len | Number of bytes to send. |
addr | Address to send the data to. Will only be added if address filtering was enabled. |
Implements PhysicalLayer.
virtual int16_t PhysicalLayer::startTransmit |
Interrupt-driven binary transmit method.
data | Binary data that will be transmitted. |
len | Length of binary data to transmit (in bytes). |
addr | Node address to transmit the packet to. Only used in FSK mode. |
int16_t PhysicalLayer::transmit |
Arduino Flash String transmit method.
str | Pointer to Arduino Flash String that will be transmitted. |
addr | Node address to transmit the packet to. Only used in FSK mode. |
int16_t PhysicalLayer::transmit |
C-string transmit method.
str | C-string that will be transmitted. |
addr | Node address to transmit the packet to. Only used in FSK mode. |
int16_t PhysicalLayer::transmit |
Arduino String transmit method.
str | Address of Arduino string that will be transmitted. |
addr | Node address to transmit the packet to. Only used in FSK mode. |
|
overridevirtual |
Blocking binary transmit method. Overloads for string-based transmissions are implemented in PhysicalLayer.
data | Binary data to be sent. |
len | Number of bytes to send. |
addr | Address to send the data to. Will only be added if address filtering was enabled. |
Implements PhysicalLayer.
virtual int16_t PhysicalLayer::transmit |
Binary transmit method. Must be implemented in module class.
data | Binary data that will be transmitted. |
len | Length of binary data to transmit (in bytes). |
addr | Node address to transmit the packet to. Only used in FSK mode. |
|
overridevirtual |
Starts direct mode transmission.
frf | Raw RF frequency value. Defaults to 0, required for quick frequency shifts in RTTY. |
Implements PhysicalLayer.
int16_t SX126x::variablePacketLengthMode | ( | uint8_t | maxLen = RADIOLIB_SX126X_MAX_PACKET_LENGTH | ) |
Set modem in variable packet length mode. Available in FSK mode only.
len | Maximum packet length. |