diff --git a/_s_t_m32_w_lx_8h_source.html b/_s_t_m32_w_lx_8h_source.html index 0fbe50b0..2bea8b63 100644 --- a/_s_t_m32_w_lx_8h_source.html +++ b/_s_t_m32_w_lx_8h_source.html @@ -171,7 +171,7 @@ $(document).ready(function(){initNavTree('_s_t_m32_w_lx_8h_source.html',''); ini
STM32WLx::MODE_IDLE
@ MODE_IDLE
Definition: STM32WLx.h:57
STM32WLx::beginFSK
int16_t beginFSK(float freq=434.0, float br=4.8, float freqDev=5.0, float rxBw=156.2, int8_t power=10, uint16_t preambleLength=16, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for FSK modem.
Definition: STM32WLx.cpp:33
SX1262
Derived class for SX1262 modules.
Definition: SX1262.h:19
-
SX126x::setRfSwitchTable
void setRfSwitchTable(const RADIOLIB_PIN_TYPE(&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.cpp:1239
+
SX126x::setRfSwitchTable
void setRfSwitchTable(const RADIOLIB_PIN_TYPE(&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.cpp:1296
Module::RfSwitchMode_t
Definition: Module.h:34
diff --git a/_s_x1262_8h_source.html b/_s_x1262_8h_source.html index 5513b7f4..b2f47541 100644 --- a/_s_x1262_8h_source.html +++ b/_s_x1262_8h_source.html @@ -133,7 +133,7 @@ $(document).ready(function(){initNavTree('_s_x1262_8h_source.html',''); initResi
SX1262::begin
int16_t begin(float freq=434.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power=10, uint16_t preambleLength=8, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for LoRa modem.
Definition: SX1262.cpp:8
SX1262::setOutputPower
virtual int16_t setOutputPower(int8_t power)
Sets output power. Allowed values are in range from -9 to 22 dBm. This method is virtual to allow ove...
Definition: SX1262.cpp:84
SX1262::setFrequency
int16_t setFrequency(float freq)
Sets carrier frequency. Allowed values are in range from 150.0 to 960.0 MHz.
Definition: SX1262.cpp:50
-
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:364
+
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:368
diff --git a/_s_x1268_8h_source.html b/_s_x1268_8h_source.html index ed0a89a2..5808851e 100644 --- a/_s_x1268_8h_source.html +++ b/_s_x1268_8h_source.html @@ -133,7 +133,7 @@ $(document).ready(function(){initNavTree('_s_x1268_8h_source.html',''); initResi
SX1268::setFrequency
int16_t setFrequency(float freq)
Sets carrier frequency. Allowed values are in range from 410.0 to 810.0 MHz.
Definition: SX1268.cpp:50
SX1268::begin
int16_t begin(float freq=434.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power=10, uint16_t preambleLength=8, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for LoRa modem.
Definition: SX1268.cpp:8
SX1268::beginFSK
int16_t beginFSK(float freq=434.0, float br=4.8, float freqDev=5.0, float rxBw=156.2, int8_t power=10, uint16_t preambleLength=16, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for FSK modem.
Definition: SX1268.cpp:32
-
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:364
+
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:368
diff --git a/_s_x126x_8h_source.html b/_s_x126x_8h_source.html index 97831344..133ccd6a 100644 --- a/_s_x126x_8h_source.html +++ b/_s_x126x_8h_source.html @@ -171,511 +171,516 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html',''); initResi
83 #define RADIOLIB_SX126X_REG_DIOX_IN_ENABLE 0x0583
84 #define RADIOLIB_SX126X_REG_DIOX_PULL_UP_CTRL 0x0584
85 #define RADIOLIB_SX126X_REG_DIOX_PULL_DOWN_CTRL 0x0585
-
86 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
-
87 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
-
88 #define RADIOLIB_SX126X_REG_CRC_INITIAL_MSB 0x06BC
-
89 #define RADIOLIB_SX126X_REG_CRC_INITIAL_LSB 0x06BD
-
90 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
-
91 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
-
92 #define RADIOLIB_SX126X_REG_SYNC_WORD_0 0x06C0
-
93 #define RADIOLIB_SX126X_REG_SYNC_WORD_1 0x06C1
-
94 #define RADIOLIB_SX126X_REG_SYNC_WORD_2 0x06C2
-
95 #define RADIOLIB_SX126X_REG_SYNC_WORD_3 0x06C3
-
96 #define RADIOLIB_SX126X_REG_SYNC_WORD_4 0x06C4
-
97 #define RADIOLIB_SX126X_REG_SYNC_WORD_5 0x06C5
-
98 #define RADIOLIB_SX126X_REG_SYNC_WORD_6 0x06C6
-
99 #define RADIOLIB_SX126X_REG_SYNC_WORD_7 0x06C7
-
100 #define RADIOLIB_SX126X_REG_NODE_ADDRESS 0x06CD
-
101 #define RADIOLIB_SX126X_REG_BROADCAST_ADDRESS 0x06CE
-
102 #define RADIOLIB_SX126X_REG_IQ_CONFIG 0x0736
-
103 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
-
104 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
-
105 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_0 0x0819
-
106 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_1 0x081A
-
107 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_2 0x081B
-
108 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_3 0x081C
-
109 #define RADIOLIB_SX126X_REG_RX_GAIN 0x08AC
-
110 #define RADIOLIB_SX126X_REG_TX_CLAMP_CONFIG 0x08D8
-
111 #define RADIOLIB_SX126X_REG_OCP_CONFIGURATION 0x08E7
-
112 #define RADIOLIB_SX126X_REG_RTC_CTRL 0x0902
-
113 #define RADIOLIB_SX126X_REG_XTA_TRIM 0x0911
-
114 #define RADIOLIB_SX126X_REG_XTB_TRIM 0x0912
-
115 #define RADIOLIB_SX126X_REG_DIO3_OUT_VOLTAGE_CTRL 0x0920
-
116 #define RADIOLIB_SX126X_REG_EVENT_MASK 0x0944
-
117 
-
118 // undocumented registers
-
119 #define RADIOLIB_SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
-
120 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
-
121 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
-
122 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
-
123 
-
124 
-
125 // SX126X SPI command variables
-
126 //RADIOLIB_SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
-
127 #define RADIOLIB_SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
-
128 #define RADIOLIB_SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
-
129 #define RADIOLIB_SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
-
130 #define RADIOLIB_SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
-
131 
-
132 //RADIOLIB_SX126X_CMD_SET_STANDBY
-
133 #define RADIOLIB_SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
-
134 #define RADIOLIB_SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
+
86 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0 0x0587
+
87 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1 0x0680
+
88 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
+
89 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
+
90 #define RADIOLIB_SX126X_REG_RX_TX_PLD_LEN 0x06BB
+
91 #define RADIOLIB_SX126X_REG_CRC_INITIAL_MSB 0x06BC
+
92 #define RADIOLIB_SX126X_REG_CRC_INITIAL_LSB 0x06BD
+
93 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
+
94 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
+
95 #define RADIOLIB_SX126X_REG_SYNC_WORD_0 0x06C0
+
96 #define RADIOLIB_SX126X_REG_SYNC_WORD_1 0x06C1
+
97 #define RADIOLIB_SX126X_REG_SYNC_WORD_2 0x06C2
+
98 #define RADIOLIB_SX126X_REG_SYNC_WORD_3 0x06C3
+
99 #define RADIOLIB_SX126X_REG_SYNC_WORD_4 0x06C4
+
100 #define RADIOLIB_SX126X_REG_SYNC_WORD_5 0x06C5
+
101 #define RADIOLIB_SX126X_REG_SYNC_WORD_6 0x06C6
+
102 #define RADIOLIB_SX126X_REG_SYNC_WORD_7 0x06C7
+
103 #define RADIOLIB_SX126X_REG_NODE_ADDRESS 0x06CD
+
104 #define RADIOLIB_SX126X_REG_BROADCAST_ADDRESS 0x06CE
+
105 #define RADIOLIB_SX126X_REG_IQ_CONFIG 0x0736
+
106 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
+
107 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
+
108 #define RADIOLIB_SX126X_REG_RX_ADDR_PTR 0x0803
+
109 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_0 0x0819
+
110 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_1 0x081A
+
111 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_2 0x081B
+
112 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_3 0x081C
+
113 #define RADIOLIB_SX126X_REG_RX_GAIN 0x08AC
+
114 #define RADIOLIB_SX126X_REG_TX_CLAMP_CONFIG 0x08D8
+
115 #define RADIOLIB_SX126X_REG_OCP_CONFIGURATION 0x08E7
+
116 #define RADIOLIB_SX126X_REG_RTC_CTRL 0x0902
+
117 #define RADIOLIB_SX126X_REG_XTA_TRIM 0x0911
+
118 #define RADIOLIB_SX126X_REG_XTB_TRIM 0x0912
+
119 #define RADIOLIB_SX126X_REG_DIO3_OUT_VOLTAGE_CTRL 0x0920
+
120 #define RADIOLIB_SX126X_REG_EVENT_MASK 0x0944
+
121 
+
122 // undocumented registers
+
123 #define RADIOLIB_SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
+
124 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
+
125 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
+
126 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
+
127 
+
128 
+
129 // SX126X SPI command variables
+
130 //RADIOLIB_SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
+
131 #define RADIOLIB_SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
+
132 #define RADIOLIB_SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
+
133 #define RADIOLIB_SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
+
134 #define RADIOLIB_SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
135 
-
136 //RADIOLIB_SX126X_CMD_SET_RX
-
137 #define RADIOLIB_SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
-
138 #define RADIOLIB_SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
+
136 //RADIOLIB_SX126X_CMD_SET_STANDBY
+
137 #define RADIOLIB_SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
+
138 #define RADIOLIB_SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
139 
-
140 //RADIOLIB_SX126X_CMD_SET_TX
-
141 #define RADIOLIB_SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
-
142 
-
143 //RADIOLIB_SX126X_CMD_STOP_TIMER_ON_PREAMBLE
-
144 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
-
145 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
+
140 //RADIOLIB_SX126X_CMD_SET_RX
+
141 #define RADIOLIB_SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
+
142 #define RADIOLIB_SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
+
143 
+
144 //RADIOLIB_SX126X_CMD_SET_TX
+
145 #define RADIOLIB_SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
146 
-
147 //RADIOLIB_SX126X_CMD_SET_REGULATOR_MODE
-
148 #define RADIOLIB_SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
-
149 #define RADIOLIB_SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
+
147 //RADIOLIB_SX126X_CMD_STOP_TIMER_ON_PREAMBLE
+
148 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
+
149 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
150 
-
151 //RADIOLIB_SX126X_CMD_CALIBRATE
-
152 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
-
153 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
-
154 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
-
155 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
-
156 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
-
157 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
-
158 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
-
159 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
-
160 #define RADIOLIB_SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
-
161 #define RADIOLIB_SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
-
162 #define RADIOLIB_SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
-
163 #define RADIOLIB_SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
-
164 #define RADIOLIB_SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
-
165 #define RADIOLIB_SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
-
166 #define RADIOLIB_SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
-
167 
-
168 //RADIOLIB_SX126X_CMD_CALIBRATE_IMAGE
-
169 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_1 0x6B
-
170 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_2 0x6F
-
171 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_1 0x75
-
172 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_2 0x81
-
173 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_1 0xC1
-
174 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_2 0xC5
-
175 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_1 0xD7
-
176 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_2 0xDB
-
177 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_1 0xE1
-
178 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_2 0xE9
-
179 
-
180 //RADIOLIB_SX126X_CMD_SET_PA_CONFIG
-
181 #define RADIOLIB_SX126X_PA_CONFIG_HP_MAX 0x07
-
182 #define RADIOLIB_SX126X_PA_CONFIG_PA_LUT 0x01
-
183 #define RADIOLIB_SX126X_PA_CONFIG_SX1262_8 0x00
-
184 
-
185 //RADIOLIB_SX126X_CMD_SET_RX_TX_FALLBACK_MODE
-
186 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
-
187 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
-
188 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
-
189 
-
190 //RADIOLIB_SX126X_CMD_SET_DIO_IRQ_PARAMS
-
191 #define RADIOLIB_SX126X_IRQ_LR_FHSS_HOP 0b0100000000000000 // 14 14 PA ramped up during LR-FHSS hop
-
192 #define RADIOLIB_SX126X_IRQ_TIMEOUT 0b0000001000000000 // 9 9 Rx or Tx timeout
-
193 #define RADIOLIB_SX126X_IRQ_CAD_DETECTED 0b0000000100000000 // 8 8 channel activity detected
-
194 #define RADIOLIB_SX126X_IRQ_CAD_DONE 0b0000000010000000 // 7 7 channel activity detection finished
-
195 #define RADIOLIB_SX126X_IRQ_CRC_ERR 0b0000000001000000 // 6 6 wrong CRC received
-
196 #define RADIOLIB_SX126X_IRQ_HEADER_ERR 0b0000000000100000 // 5 5 LoRa header CRC error
-
197 #define RADIOLIB_SX126X_IRQ_HEADER_VALID 0b0000000000010000 // 4 4 valid LoRa header received
-
198 #define RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID 0b0000000000001000 // 3 3 valid sync word detected
-
199 #define RADIOLIB_SX126X_IRQ_RADIOLIB_PREAMBLE_DETECTED 0b0000000000000100 // 2 2 preamble detected
-
200 #define RADIOLIB_SX126X_IRQ_RX_DONE 0b0000000000000010 // 1 1 packet received
-
201 #define RADIOLIB_SX126X_IRQ_TX_DONE 0b0000000000000001 // 0 0 packet transmission completed
-
202 #define RADIOLIB_SX126X_IRQ_ALL 0b0100001111111111 // 14 0 all interrupts
-
203 #define RADIOLIB_SX126X_IRQ_NONE 0b0000000000000000 // 14 0 no interrupts
-
204 
-
205 //RADIOLIB_SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
-
206 #define RADIOLIB_SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
-
207 #define RADIOLIB_SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
+
151 //RADIOLIB_SX126X_CMD_SET_REGULATOR_MODE
+
152 #define RADIOLIB_SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
+
153 #define RADIOLIB_SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
+
154 
+
155 //RADIOLIB_SX126X_CMD_CALIBRATE
+
156 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
+
157 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
+
158 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
+
159 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
+
160 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
+
161 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
+
162 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
+
163 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
+
164 #define RADIOLIB_SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
+
165 #define RADIOLIB_SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
+
166 #define RADIOLIB_SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
+
167 #define RADIOLIB_SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
+
168 #define RADIOLIB_SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
+
169 #define RADIOLIB_SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
+
170 #define RADIOLIB_SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
+
171 
+
172 //RADIOLIB_SX126X_CMD_CALIBRATE_IMAGE
+
173 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_1 0x6B
+
174 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_2 0x6F
+
175 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_1 0x75
+
176 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_2 0x81
+
177 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_1 0xC1
+
178 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_2 0xC5
+
179 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_1 0xD7
+
180 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_2 0xDB
+
181 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_1 0xE1
+
182 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_2 0xE9
+
183 
+
184 //RADIOLIB_SX126X_CMD_SET_PA_CONFIG
+
185 #define RADIOLIB_SX126X_PA_CONFIG_HP_MAX 0x07
+
186 #define RADIOLIB_SX126X_PA_CONFIG_PA_LUT 0x01
+
187 #define RADIOLIB_SX126X_PA_CONFIG_SX1262_8 0x00
+
188 
+
189 //RADIOLIB_SX126X_CMD_SET_RX_TX_FALLBACK_MODE
+
190 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
+
191 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
+
192 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
+
193 
+
194 //RADIOLIB_SX126X_CMD_SET_DIO_IRQ_PARAMS
+
195 #define RADIOLIB_SX126X_IRQ_LR_FHSS_HOP 0b0100000000000000 // 14 14 PA ramped up during LR-FHSS hop
+
196 #define RADIOLIB_SX126X_IRQ_TIMEOUT 0b0000001000000000 // 9 9 Rx or Tx timeout
+
197 #define RADIOLIB_SX126X_IRQ_CAD_DETECTED 0b0000000100000000 // 8 8 channel activity detected
+
198 #define RADIOLIB_SX126X_IRQ_CAD_DONE 0b0000000010000000 // 7 7 channel activity detection finished
+
199 #define RADIOLIB_SX126X_IRQ_CRC_ERR 0b0000000001000000 // 6 6 wrong CRC received
+
200 #define RADIOLIB_SX126X_IRQ_HEADER_ERR 0b0000000000100000 // 5 5 LoRa header CRC error
+
201 #define RADIOLIB_SX126X_IRQ_HEADER_VALID 0b0000000000010000 // 4 4 valid LoRa header received
+
202 #define RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID 0b0000000000001000 // 3 3 valid sync word detected
+
203 #define RADIOLIB_SX126X_IRQ_RADIOLIB_PREAMBLE_DETECTED 0b0000000000000100 // 2 2 preamble detected
+
204 #define RADIOLIB_SX126X_IRQ_RX_DONE 0b0000000000000010 // 1 1 packet received
+
205 #define RADIOLIB_SX126X_IRQ_TX_DONE 0b0000000000000001 // 0 0 packet transmission completed
+
206 #define RADIOLIB_SX126X_IRQ_ALL 0b0100001111111111 // 14 0 all interrupts
+
207 #define RADIOLIB_SX126X_IRQ_NONE 0b0000000000000000 // 14 0 no interrupts
208 
-
209 //RADIOLIB_SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
-
210 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
-
211 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
-
212 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
-
213 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
-
214 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
-
215 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
-
216 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
-
217 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
-
218 
-
219 //RADIOLIB_SX126X_CMD_SET_PACKET_TYPE
-
220 #define RADIOLIB_SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
-
221 #define RADIOLIB_SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
-
222 #define RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS 0x03 // 7 0 LR-FHSS
-
223 
-
224 //RADIOLIB_SX126X_CMD_SET_TX_PARAMS
-
225 #define RADIOLIB_SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
-
226 #define RADIOLIB_SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
-
227 #define RADIOLIB_SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
-
228 #define RADIOLIB_SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
-
229 #define RADIOLIB_SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
-
230 #define RADIOLIB_SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
-
231 #define RADIOLIB_SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
-
232 #define RADIOLIB_SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
-
233 
-
234 //RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS
-
235 #define RADIOLIB_SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
-
236 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
-
237 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
-
238 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
-
239 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
-
240 #define RADIOLIB_SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
-
241 #define RADIOLIB_SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
-
242 #define RADIOLIB_SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
-
243 #define RADIOLIB_SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
-
244 #define RADIOLIB_SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
-
245 #define RADIOLIB_SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
-
246 #define RADIOLIB_SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
-
247 #define RADIOLIB_SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
-
248 #define RADIOLIB_SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
-
249 #define RADIOLIB_SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
-
250 #define RADIOLIB_SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
-
251 #define RADIOLIB_SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
-
252 #define RADIOLIB_SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
-
253 #define RADIOLIB_SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
-
254 #define RADIOLIB_SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
-
255 #define RADIOLIB_SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
-
256 #define RADIOLIB_SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
-
257 #define RADIOLIB_SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
-
258 #define RADIOLIB_SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
-
259 #define RADIOLIB_SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
-
260 #define RADIOLIB_SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
-
261 #define RADIOLIB_SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
-
262 #define RADIOLIB_SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
-
263 #define RADIOLIB_SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
-
264 #define RADIOLIB_SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
-
265 #define RADIOLIB_SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
-
266 #define RADIOLIB_SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
-
267 #define RADIOLIB_SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
-
268 #define RADIOLIB_SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
-
269 #define RADIOLIB_SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
-
270 #define RADIOLIB_SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
-
271 #define RADIOLIB_SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
-
272 #define RADIOLIB_SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
-
273 #define RADIOLIB_SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
-
274 #define RADIOLIB_SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
-
275 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
-
276 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
-
277 
-
278 //RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS
-
279 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
-
280 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
-
281 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
-
282 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
-
283 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
-
284 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
-
285 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
-
286 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
-
287 #define RADIOLIB_SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
-
288 #define RADIOLIB_SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
-
289 #define RADIOLIB_SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
-
290 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
-
291 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
-
292 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
-
293 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
-
294 #define RADIOLIB_SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
-
295 #define RADIOLIB_SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
-
296 #define RADIOLIB_SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
-
297 #define RADIOLIB_SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
-
298 #define RADIOLIB_SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
-
299 #define RADIOLIB_SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
-
300 #define RADIOLIB_SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
-
301 #define RADIOLIB_SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
-
302 
-
303 //RADIOLIB_SX126X_CMD_SET_CAD_PARAMS
-
304 #define RADIOLIB_SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
-
305 #define RADIOLIB_SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
-
306 #define RADIOLIB_SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
-
307 #define RADIOLIB_SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
-
308 #define RADIOLIB_SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
-
309 #define RADIOLIB_SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
-
310 #define RADIOLIB_SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
-
311 #define RADIOLIB_SX126X_CAD_PARAM_DEFAULT 0xFF // 7 0 used by the CAD methods to specify default parameter value
-
312 #define RADIOLIB_SX126X_CAD_PARAM_DET_MIN 10 // 7 0 default detMin CAD parameter
-
313 
-
314 //RADIOLIB_SX126X_CMD_GET_STATUS
-
315 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
-
316 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
-
317 #define RADIOLIB_SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
-
318 #define RADIOLIB_SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
-
319 #define RADIOLIB_SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
-
320 #define RADIOLIB_SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
-
321 #define RADIOLIB_SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
-
322 #define RADIOLIB_SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
-
323 #define RADIOLIB_SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
-
324 #define RADIOLIB_SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
-
325 #define RADIOLIB_SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
-
326 
-
327 //RADIOLIB_SX126X_CMD_GET_PACKET_STATUS
-
328 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
-
329 #define RADIOLIB_SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
-
330 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
-
331 #define RADIOLIB_SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
-
332 #define RADIOLIB_SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
-
333 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
-
334 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
-
335 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
-
336 
-
337 //RADIOLIB_SX126X_CMD_GET_DEVICE_ERRORS
-
338 #define RADIOLIB_SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
-
339 #define RADIOLIB_SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
-
340 #define RADIOLIB_SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
-
341 #define RADIOLIB_SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
-
342 #define RADIOLIB_SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
-
343 #define RADIOLIB_SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
-
344 #define RADIOLIB_SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
-
345 #define RADIOLIB_SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
-
346 
-
347 
-
348 // SX126X SPI register variables
-
349 //RADIOLIB_SX126X_REG_HOPPING_ENABLE
-
350 #define RADIOLIB_SX126X_HOPPING_ENABLED 0b00000001 // 0 0 intra-packet hopping for LR-FHSS: enabled
-
351 #define RADIOLIB_SX126X_HOPPING_DISABLED 0b00000000 // 0 0 (disabled)
-
352 
-
353 //RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB + LSB
-
354 #define RADIOLIB_SX126X_SYNC_WORD_PUBLIC 0x34 // actually 0x3444 NOTE: The low nibbles in each byte (0x_4_4) are masked out since apparently, they're reserved.
-
355 #define RADIOLIB_SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
+
209 //RADIOLIB_SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
+
210 #define RADIOLIB_SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
+
211 #define RADIOLIB_SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
+
212 
+
213 //RADIOLIB_SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
+
214 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
+
215 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
+
216 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
+
217 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
+
218 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
+
219 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
+
220 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
+
221 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
+
222 
+
223 //RADIOLIB_SX126X_CMD_SET_PACKET_TYPE
+
224 #define RADIOLIB_SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
+
225 #define RADIOLIB_SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
+
226 #define RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS 0x03 // 7 0 LR-FHSS
+
227 
+
228 //RADIOLIB_SX126X_CMD_SET_TX_PARAMS
+
229 #define RADIOLIB_SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
+
230 #define RADIOLIB_SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
+
231 #define RADIOLIB_SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
+
232 #define RADIOLIB_SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
+
233 #define RADIOLIB_SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
+
234 #define RADIOLIB_SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
+
235 #define RADIOLIB_SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
+
236 #define RADIOLIB_SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
+
237 
+
238 //RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS
+
239 #define RADIOLIB_SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
+
240 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
+
241 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
+
242 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
+
243 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
+
244 #define RADIOLIB_SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
+
245 #define RADIOLIB_SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
+
246 #define RADIOLIB_SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
+
247 #define RADIOLIB_SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
+
248 #define RADIOLIB_SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
+
249 #define RADIOLIB_SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
+
250 #define RADIOLIB_SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
+
251 #define RADIOLIB_SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
+
252 #define RADIOLIB_SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
+
253 #define RADIOLIB_SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
+
254 #define RADIOLIB_SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
+
255 #define RADIOLIB_SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
+
256 #define RADIOLIB_SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
+
257 #define RADIOLIB_SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
+
258 #define RADIOLIB_SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
+
259 #define RADIOLIB_SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
+
260 #define RADIOLIB_SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
+
261 #define RADIOLIB_SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
+
262 #define RADIOLIB_SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
+
263 #define RADIOLIB_SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
+
264 #define RADIOLIB_SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
+
265 #define RADIOLIB_SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
+
266 #define RADIOLIB_SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
+
267 #define RADIOLIB_SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
+
268 #define RADIOLIB_SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
+
269 #define RADIOLIB_SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
+
270 #define RADIOLIB_SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
+
271 #define RADIOLIB_SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
+
272 #define RADIOLIB_SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
+
273 #define RADIOLIB_SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
+
274 #define RADIOLIB_SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
+
275 #define RADIOLIB_SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
+
276 #define RADIOLIB_SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
+
277 #define RADIOLIB_SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
+
278 #define RADIOLIB_SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
+
279 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
+
280 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
+
281 
+
282 //RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS
+
283 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
+
284 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
+
285 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
+
286 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
+
287 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
+
288 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
+
289 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
+
290 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
+
291 #define RADIOLIB_SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
+
292 #define RADIOLIB_SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
+
293 #define RADIOLIB_SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
+
294 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
+
295 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
+
296 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
+
297 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
+
298 #define RADIOLIB_SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
+
299 #define RADIOLIB_SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
+
300 #define RADIOLIB_SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
+
301 #define RADIOLIB_SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
+
302 #define RADIOLIB_SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
+
303 #define RADIOLIB_SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
+
304 #define RADIOLIB_SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
+
305 #define RADIOLIB_SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
+
306 
+
307 //RADIOLIB_SX126X_CMD_SET_CAD_PARAMS
+
308 #define RADIOLIB_SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
+
309 #define RADIOLIB_SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
+
310 #define RADIOLIB_SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
+
311 #define RADIOLIB_SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
+
312 #define RADIOLIB_SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
+
313 #define RADIOLIB_SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
+
314 #define RADIOLIB_SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
+
315 #define RADIOLIB_SX126X_CAD_PARAM_DEFAULT 0xFF // 7 0 used by the CAD methods to specify default parameter value
+
316 #define RADIOLIB_SX126X_CAD_PARAM_DET_MIN 10 // 7 0 default detMin CAD parameter
+
317 
+
318 //RADIOLIB_SX126X_CMD_GET_STATUS
+
319 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
+
320 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
+
321 #define RADIOLIB_SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
+
322 #define RADIOLIB_SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
+
323 #define RADIOLIB_SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
+
324 #define RADIOLIB_SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
+
325 #define RADIOLIB_SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
+
326 #define RADIOLIB_SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
+
327 #define RADIOLIB_SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
+
328 #define RADIOLIB_SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
+
329 #define RADIOLIB_SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
+
330 
+
331 //RADIOLIB_SX126X_CMD_GET_PACKET_STATUS
+
332 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
+
333 #define RADIOLIB_SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
+
334 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
+
335 #define RADIOLIB_SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
+
336 #define RADIOLIB_SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
+
337 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
+
338 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
+
339 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
+
340 
+
341 //RADIOLIB_SX126X_CMD_GET_DEVICE_ERRORS
+
342 #define RADIOLIB_SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
+
343 #define RADIOLIB_SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
+
344 #define RADIOLIB_SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
+
345 #define RADIOLIB_SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
+
346 #define RADIOLIB_SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
+
347 #define RADIOLIB_SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
+
348 #define RADIOLIB_SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
+
349 #define RADIOLIB_SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
+
350 
+
351 
+
352 // SX126X SPI register variables
+
353 //RADIOLIB_SX126X_REG_HOPPING_ENABLE
+
354 #define RADIOLIB_SX126X_HOPPING_ENABLED 0b00000001 // 0 0 intra-packet hopping for LR-FHSS: enabled
+
355 #define RADIOLIB_SX126X_HOPPING_DISABLED 0b00000000 // 0 0 (disabled)
356 
-
357 
-
364 class SX126x: public PhysicalLayer {
-
365  public:
-
366  // introduce PhysicalLayer overloads
-
367  using PhysicalLayer::transmit;
-
368  using PhysicalLayer::receive;
-
369  using PhysicalLayer::startTransmit;
-
370  using PhysicalLayer::readData;
-
371 
-
377  SX126x(Module* mod);
-
378 
-
379  Module* getMod();
-
380 
-
381  // basic methods
+
357 //RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB + LSB
+
358 #define RADIOLIB_SX126X_SYNC_WORD_PUBLIC 0x34 // actually 0x3444 NOTE: The low nibbles in each byte (0x_4_4) are masked out since apparently, they're reserved.
+
359 #define RADIOLIB_SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
+
360 
+
361 
+
368 class SX126x: public PhysicalLayer {
+
369  public:
+
370  // introduce PhysicalLayer overloads
+
371  using PhysicalLayer::transmit;
+
372  using PhysicalLayer::receive;
+
373  using PhysicalLayer::startTransmit;
+
374  using PhysicalLayer::readData;
+
375 
+
381  SX126x(Module* mod);
382 
-
398  int16_t begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
-
399 
-
417  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
-
418 
-
427  int16_t reset(bool verify = true);
-
428 
-
441  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
-
442 
-
453  int16_t receive(uint8_t* data, size_t len) override;
-
454 
-
462  int16_t transmitDirect(uint32_t frf = 0) override;
-
463 
-
470  int16_t receiveDirect() override;
-
471 
-
483  int16_t scanChannel(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
-
484 
-
492  int16_t sleep(bool retainConfig = true);
-
493 
-
499  int16_t standby() override;
-
500 
-
508  int16_t standby(uint8_t mode);
-
509 
-
510  // interrupt methods
-
511 
-
517  void setDio1Action(void (*func)(void));
-
518 
-
522  void clearDio1Action();
-
523 
-
536  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
-
537 
-
543  int16_t finishTransmit() override;
-
544 
-
553  int16_t startReceive(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF);
-
554 
-
565  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod);
-
566 
-
578  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8);
-
579 
-
585  uint16_t getIrqStatus();
-
586 
-
597  int16_t readData(uint8_t* data, size_t len) override;
-
598 
-
610  int16_t startChannelScan(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
-
611 
-
617  int16_t getChannelScanResult();
-
618 
-
619  // configuration methods
-
620 
-
628  int16_t setBandwidth(float bw);
-
629 
-
637  int16_t setSpreadingFactor(uint8_t sf);
-
638 
-
646  int16_t setCodingRate(uint8_t cr);
-
647 
-
657  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
-
658 
-
666  int16_t setCurrentLimit(float currentLimit);
-
667 
-
673  float getCurrentLimit();
-
674 
-
682  int16_t setPreambleLength(uint16_t preambleLength);
-
683 
-
691  int16_t setFrequencyDeviation(float freqDev) override;
-
692 
-
700  int16_t setBitRate(float br);
-
701 
-
709  int16_t setRxBandwidth(float rxBw);
-
710 
-
720  int16_t setRxBoostedGainMode(bool rxbgm, bool persist = true);
-
721 
-
731  int16_t setDataShaping(uint8_t sh) override;
-
732 
-
742  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
-
743 
-
753  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
-
754 
-
762  int16_t setNodeAddress(uint8_t nodeAddr);
-
763 
-
771  int16_t setBroadcastAddress(uint8_t broadAddr);
-
772 
-
778  int16_t disableAddressFiltering();
-
779 
-
793  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
-
794 
-
804  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
-
805 
-
816  int16_t setTCXO(float voltage, uint32_t delay = 5000);
-
817 
-
823  int16_t setDio2AsRfSwitch(bool enable = true);
-
824 
-
830  float getDataRate() const;
-
831 
-
837  float getRSSI();
-
838 
-
844  float getSNR();
-
845 
-
853  size_t getPacketLength(bool update = true) override;
-
854 
-
862  int16_t fixedPacketLengthMode(uint8_t len = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
-
863 
-
871  int16_t variablePacketLengthMode(uint8_t maxLen = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
-
872 
-
880  uint32_t getTimeOnAir(size_t len);
-
881 
-
887  float getRSSIInst();
-
888 
-
896  int16_t implicitHeader(size_t len);
-
897 
-
903  int16_t explicitHeader();
-
904 
-
910  int16_t setRegulatorLDO();
-
911 
-
917  int16_t setRegulatorDCDC();
-
918 
-
926  int16_t setEncoding(uint8_t encoding) override;
-
927 
-
929  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
-
930 
-
932  void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]);
-
933 
-
942  int16_t forceLDRO(bool enable);
-
943 
-
950  int16_t autoLDRO();
-
951 
-
957  uint8_t randomByte();
-
958 
-
964  int16_t getLastError();
-
965 
-
966  #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
-
972  void setDirectAction(void (*func)(void));
-
973 
-
979  void readBit(RADIOLIB_PIN_TYPE pin);
-
980  #endif
-
981 
-
982 
-
983 #if !defined(RADIOLIB_GODMODE)
-
984  protected:
-
985 #endif
-
986  // SX126x SPI command implementations
-
987  int16_t setTx(uint32_t timeout = 0);
-
988  int16_t setRx(uint32_t timeout);
-
989  int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin);
-
990  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);
-
991  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
-
992  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
-
993  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
-
994  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
-
995  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE);
-
996  virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL);
-
997  int16_t setRfFrequency(uint32_t frf);
-
998  int16_t calibrateImage(uint8_t* data);
-
999  uint8_t getPacketType();
-
1000  int16_t setTxParams(uint8_t power, uint8_t rampTime = RADIOLIB_SX126X_PA_RAMP_200U);
-
1001  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
-
1002  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
-
1003  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = RADIOLIB_SX126X_LORA_IQ_STANDARD);
-
1004  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = RADIOLIB_SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16);
-
1005  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
-
1006  int16_t setRegulatorMode(uint8_t mode);
-
1007  uint8_t getStatus();
-
1008  uint32_t getPacketStatus();
-
1009  uint16_t getDeviceErrors();
-
1010  int16_t clearDeviceErrors();
-
1011 
-
1012  int16_t startReceiveCommon(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF);
-
1013  int16_t setFrequencyRaw(float freq);
-
1014  int16_t setPacketMode(uint8_t mode, uint8_t len);
-
1015  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
-
1016 
-
1017  // fixes to errata
-
1018  int16_t fixSensitivity();
-
1019  int16_t fixPaClamping(bool enable = true);
-
1020  int16_t fixImplicitTimeout();
-
1021  int16_t fixInvertedIQ(uint8_t iqConfig);
-
1022 
-
1023 #if !defined(RADIOLIB_GODMODE) && !defined(RADIOLIB_LOW_LEVEL)
-
1024  protected:
-
1025 #endif
-
1026  Module* _mod;
+
383  Module* getMod();
+
384 
+
385  // basic methods
+
386 
+
402  int16_t begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
+
403 
+
421  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
+
422 
+
431  int16_t reset(bool verify = true);
+
432 
+
445  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
+
446 
+
457  int16_t receive(uint8_t* data, size_t len) override;
+
458 
+
466  int16_t transmitDirect(uint32_t frf = 0) override;
+
467 
+
474  int16_t receiveDirect() override;
+
475 
+
487  int16_t scanChannel(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
+
488 
+
496  int16_t sleep(bool retainConfig = true);
+
497 
+
503  int16_t standby() override;
+
504 
+
512  int16_t standby(uint8_t mode);
+
513 
+
514  // interrupt methods
+
515 
+
521  void setDio1Action(void (*func)(void));
+
522 
+
526  void clearDio1Action();
+
527 
+
540  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
+
541 
+
547  int16_t finishTransmit() override;
+
548 
+
557  int16_t startReceive(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF);
+
558 
+
569  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod);
+
570 
+
582  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8);
+
583 
+
589  uint16_t getIrqStatus();
+
590 
+
601  int16_t readData(uint8_t* data, size_t len) override;
+
602 
+
614  int16_t startChannelScan(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
+
615 
+
621  int16_t getChannelScanResult();
+
622 
+
623  // configuration methods
+
624 
+
632  int16_t setBandwidth(float bw);
+
633 
+
641  int16_t setSpreadingFactor(uint8_t sf);
+
642 
+
650  int16_t setCodingRate(uint8_t cr);
+
651 
+
661  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
+
662 
+
670  int16_t setCurrentLimit(float currentLimit);
+
671 
+
677  float getCurrentLimit();
+
678 
+
686  int16_t setPreambleLength(uint16_t preambleLength);
+
687 
+
695  int16_t setFrequencyDeviation(float freqDev) override;
+
696 
+
704  int16_t setBitRate(float br);
+
705 
+
713  int16_t setRxBandwidth(float rxBw);
+
714 
+
724  int16_t setRxBoostedGainMode(bool rxbgm, bool persist = true);
+
725 
+
735  int16_t setDataShaping(uint8_t sh) override;
+
736 
+
746  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
+
747 
+
757  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
+
758 
+
766  int16_t setNodeAddress(uint8_t nodeAddr);
+
767 
+
775  int16_t setBroadcastAddress(uint8_t broadAddr);
+
776 
+
782  int16_t disableAddressFiltering();
+
783 
+
797  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
+
798 
+
808  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
+
809 
+
820  int16_t setTCXO(float voltage, uint32_t delay = 5000);
+
821 
+
827  int16_t setDio2AsRfSwitch(bool enable = true);
+
828 
+
834  float getDataRate() const;
+
835 
+
841  float getRSSI();
+
842 
+
848  float getSNR();
+
849 
+
857  size_t getPacketLength(bool update = true) override;
+
858 
+
866  int16_t fixedPacketLengthMode(uint8_t len = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
+
867 
+
875  int16_t variablePacketLengthMode(uint8_t maxLen = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
+
876 
+
884  uint32_t getTimeOnAir(size_t len);
+
885 
+
891  float getRSSIInst();
+
892 
+
900  int16_t implicitHeader(size_t len);
+
901 
+
907  int16_t explicitHeader();
+
908 
+
914  int16_t setRegulatorLDO();
+
915 
+
921  int16_t setRegulatorDCDC();
+
922 
+
930  int16_t setEncoding(uint8_t encoding) override;
+
931 
+
933  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
+
934 
+
936  void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]);
+
937 
+
946  int16_t forceLDRO(bool enable);
+
947 
+
954  int16_t autoLDRO();
+
955 
+
961  uint8_t randomByte();
+
962 
+
968  int16_t getLastError();
+
969 
+
970  #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
+
976  void setDirectAction(void (*func)(void));
+
977 
+
983  void readBit(RADIOLIB_PIN_TYPE pin);
+
984  #endif
+
985 
+
986 
+
987 #if !defined(RADIOLIB_GODMODE)
+
988  protected:
+
989 #endif
+
990  // SX126x SPI command implementations
+
991  int16_t setTx(uint32_t timeout = 0);
+
992  int16_t setRx(uint32_t timeout);
+
993  int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin);
+
994  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);
+
995  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
+
996  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
+
997  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
+
998  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
+
999  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE);
+
1000  virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL);
+
1001  int16_t setRfFrequency(uint32_t frf);
+
1002  int16_t calibrateImage(uint8_t* data);
+
1003  uint8_t getPacketType();
+
1004  int16_t setTxParams(uint8_t power, uint8_t rampTime = RADIOLIB_SX126X_PA_RAMP_200U);
+
1005  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
+
1006  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
+
1007  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = RADIOLIB_SX126X_LORA_IQ_STANDARD);
+
1008  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = RADIOLIB_SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16);
+
1009  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
+
1010  int16_t setRegulatorMode(uint8_t mode);
+
1011  uint8_t getStatus();
+
1012  uint32_t getPacketStatus();
+
1013  uint16_t getDeviceErrors();
+
1014  int16_t clearDeviceErrors();
+
1015 
+
1016  int16_t startReceiveCommon(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF);
+
1017  int16_t setFrequencyRaw(float freq);
+
1018  int16_t setPacketMode(uint8_t mode, uint8_t len);
+
1019  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
+
1020  int16_t directMode();
+
1021 
+
1022  // fixes to errata
+
1023  int16_t fixSensitivity();
+
1024  int16_t fixPaClamping(bool enable = true);
+
1025  int16_t fixImplicitTimeout();
+
1026  int16_t fixInvertedIQ(uint8_t iqConfig);
1027 
-
1028  // common low-level SPI interface
-
1029  int16_t SPIwriteCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
-
1030  int16_t SPIwriteCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
-
1031  int16_t SPIreadCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
-
1032  int16_t SPIreadCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
-
1033  int16_t SPItransfer(uint8_t* cmd, uint8_t cmdLen, bool write, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes, bool waitForBusy, uint32_t timeout = 5000);
-
1034 
-
1035 #if !defined(RADIOLIB_GODMODE)
-
1036  protected:
-
1037 #endif
-
1038 
-
1039  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
-
1040  uint16_t _preambleLength = 0;
-
1041  float _bwKhz = 0;
-
1042  bool _ldroAuto = true;
+
1028 #if !defined(RADIOLIB_GODMODE) && !defined(RADIOLIB_LOW_LEVEL)
+
1029  protected:
+
1030 #endif
+
1031  Module* _mod;
+
1032 
+
1033  // common low-level SPI interface
+
1034  int16_t SPIwriteCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
+
1035  int16_t SPIwriteCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
+
1036  int16_t SPIreadCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
+
1037  int16_t SPIreadCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true, bool verify = true);
+
1038  int16_t SPItransfer(uint8_t* cmd, uint8_t cmdLen, bool write, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes, bool waitForBusy, uint32_t timeout = 5000);
+
1039 
+
1040 #if !defined(RADIOLIB_GODMODE)
+
1041  protected:
+
1042 #endif
1043 
-
1044  uint32_t _br = 0, _freqDev = 0;
-
1045  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
-
1046  uint16_t _preambleLengthFSK = 0;
-
1047  float _rxBwKhz = 0;
+
1044  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
+
1045  uint16_t _preambleLength = 0;
+
1046  float _bwKhz = 0;
+
1047  bool _ldroAuto = true;
1048 
-
1049  float _dataRate = 0;
-
1050 
-
1051  uint32_t _tcxoDelay = 0;
-
1052 
-
1053  size_t _implicitLen = 0;
-
1054 
-
1055  int16_t _lastError = RADIOLIB_ERR_NONE;
-
1056 
-
1057  // Allow subclasses to define different TX modes
-
1058  uint8_t _tx_mode = Module::MODE_TX;
+
1049  uint32_t _br = 0, _freqDev = 0;
+
1050  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
+
1051  uint16_t _preambleLengthFSK = 0;
+
1052  float _rxBwKhz = 0;
+
1053 
+
1054  float _dataRate = 0;
+
1055 
+
1056  uint32_t _tcxoDelay = 0;
+
1057 
+
1058  size_t _implicitLen = 0;
1059 
-
1060  int16_t config(uint8_t modem);
-
1061  int16_t checkCommandResult();
-
1062 };
-
1063 
-
1064 #endif
-
1065 
-
1066 #endif
+
1060  int16_t _lastError = RADIOLIB_ERR_NONE;
+
1061 
+
1062  // Allow subclasses to define different TX modes
+
1063  uint8_t _tx_mode = Module::MODE_TX;
+
1064 
+
1065  int16_t config(uint8_t modem);
+
1066  int16_t checkCommandResult();
+
1067 };
+
1068 
+
1069 #endif
+
1070 
+
1071 #endif
Module
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:16
Module::RFSWITCH_MAX_PINS
static const size_t RFSWITCH_MAX_PINS
The maximum number of pins supported by the RF switch code.
Definition: Module.h:27
Module::MODE_TX
@ MODE_TX
Definition: Module.h:56
@@ -684,70 +689,70 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html',''); initResi
PhysicalLayer::readData
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:140
PhysicalLayer::startTransmit
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition: PhysicalLayer.cpp:121
PhysicalLayer::receive
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:60
-
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:364
-
SX126x::setDio1Action
void setDio1Action(void(*func)(void))
Sets interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:366
-
SX126x::getRSSI
float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition: SX126x.cpp:1135
-
SX126x::startChannelScan
int16_t startChannelScan(uint8_t symbolNum=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin=RADIOLIB_SX126X_CAD_PARAM_DEFAULT)
Interrupt-driven channel activity detection method. DIO0 will be activated when LoRa preamble is dete...
Definition: SX126x.cpp:592
-
SX126x::setDataShaping
int16_t setDataShaping(uint8_t sh) override
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPI...
Definition: SX126x.cpp:910
-
SX126x::setRegulatorLDO
int16_t setRegulatorLDO()
Set regulator mode to LDO.
Definition: SX126x.cpp:1223
-
SX126x::setRfSwitchPins
void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)
Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...
Definition: SX126x.cpp:1235
-
SX126x::setEncoding
int16_t setEncoding(uint8_t encoding) override
Sets transmission encoding. Available in FSK mode only. Serves only as alias for PhysicalLayer compat...
Definition: SX126x.cpp:1231
+
SX126x
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:368
+
SX126x::setDio1Action
void setDio1Action(void(*func)(void))
Sets interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:423
+
SX126x::getRSSI
float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition: SX126x.cpp:1192
+
SX126x::startChannelScan
int16_t startChannelScan(uint8_t symbolNum=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin=RADIOLIB_SX126X_CAD_PARAM_DEFAULT)
Interrupt-driven channel activity detection method. DIO0 will be activated when LoRa preamble is dete...
Definition: SX126x.cpp:649
+
SX126x::setDataShaping
int16_t setDataShaping(uint8_t sh) override
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPI...
Definition: SX126x.cpp:967
+
SX126x::setRegulatorLDO
int16_t setRegulatorLDO()
Set regulator mode to LDO.
Definition: SX126x.cpp:1280
+
SX126x::setRfSwitchPins
void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)
Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...
Definition: SX126x.cpp:1292
+
SX126x::setEncoding
int16_t setEncoding(uint8_t encoding) override
Sets transmission encoding. Available in FSK mode only. Serves only as alias for PhysicalLayer compat...
Definition: SX126x.cpp:1288
SX126x::beginFSK
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:78
-
SX126x::setBandwidth
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.cpp:639
-
SX126x::explicitHeader
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition: SX126x.cpp:1219
-
SX126x::forceLDRO
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition: SX126x.cpp:1243
-
SX126x::setNodeAddress
int16_t setNodeAddress(uint8_t nodeAddr)
Sets node address. Calling this method will also enable address filtering for node address only.
Definition: SX126x.cpp:990
-
SX126x::setTCXO
int16_t setTCXO(float voltage, uint32_t delay=5000)
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
Definition: SX126x.cpp:1303
-
SX126x::setRxBandwidth
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.cpp:810
-
SX126x::setRegulatorDCDC
int16_t setRegulatorDCDC()
Set regulator mode to DC-DC.
Definition: SX126x.cpp:1227
-
SX126x::setWhitening
int16_t setWhitening(bool enabled, uint16_t initial=0x0100)
Sets FSK whitening parameters.
Definition: SX126x.cpp:1094
-
SX126x::clearDio1Action
void clearDio1Action()
Clears interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:370
-
SX126x::startReceiveDutyCycleAuto
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...
Definition: SX126x.cpp:483
-
SX126x::scanChannel
int16_t scanChannel(uint8_t symbolNum=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin=RADIOLIB_SX126X_CAD_PARAM_DEFAULT)
Performs scan for LoRa transmission in the current channel. Detects both preamble and payload.
Definition: SX126x.cpp:324
-
SX126x::standby
int16_t standby() override
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator)...
Definition: SX126x.cpp:354
-
SX126x::setFrequencyDeviation
int16_t setFrequencyDeviation(float freqDev) override
Sets FSK frequency deviation. Allowed values range from 0.0 to 200.0 kHz.
Definition: SX126x.cpp:762
-
SX126x::setBitRate
int16_t setBitRate(float br)
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
Definition: SX126x.cpp:789
-
SX126x::getTimeOnAir
uint32_t getTimeOnAir(size_t len)
Get expected time-on-air for a given size of payload.
Definition: SX126x.cpp:1173
-
SX126x::randomByte
uint8_t randomByte()
Get one truly random byte from RSSI noise.
Definition: SX126x.cpp:1264
+
SX126x::setBandwidth
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.cpp:696
+
SX126x::explicitHeader
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition: SX126x.cpp:1276
+
SX126x::forceLDRO
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method,...
Definition: SX126x.cpp:1300
+
SX126x::setNodeAddress
int16_t setNodeAddress(uint8_t nodeAddr)
Sets node address. Calling this method will also enable address filtering for node address only.
Definition: SX126x.cpp:1047
+
SX126x::setTCXO
int16_t setTCXO(float voltage, uint32_t delay=5000)
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
Definition: SX126x.cpp:1360
+
SX126x::setRxBandwidth
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.cpp:867
+
SX126x::setRegulatorDCDC
int16_t setRegulatorDCDC()
Set regulator mode to DC-DC.
Definition: SX126x.cpp:1284
+
SX126x::setWhitening
int16_t setWhitening(bool enabled, uint16_t initial=0x0100)
Sets FSK whitening parameters.
Definition: SX126x.cpp:1151
+
SX126x::clearDio1Action
void clearDio1Action()
Clears interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:427
+
SX126x::startReceiveDutyCycleAuto
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...
Definition: SX126x.cpp:540
+
SX126x::scanChannel
int16_t scanChannel(uint8_t symbolNum=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak=RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin=RADIOLIB_SX126X_CAD_PARAM_DEFAULT)
Performs scan for LoRa transmission in the current channel. Detects both preamble and payload.
Definition: SX126x.cpp:381
+
SX126x::standby
int16_t standby() override
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator)...
Definition: SX126x.cpp:411
+
SX126x::setFrequencyDeviation
int16_t setFrequencyDeviation(float freqDev) override
Sets FSK frequency deviation. Allowed values range from 0.0 to 200.0 kHz.
Definition: SX126x.cpp:819
+
SX126x::setBitRate
int16_t setBitRate(float br)
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
Definition: SX126x.cpp:846
+
SX126x::getTimeOnAir
uint32_t getTimeOnAir(size_t len)
Get expected time-on-air for a given size of payload.
Definition: SX126x.cpp:1230
+
SX126x::randomByte
uint8_t randomByte()
Get one truly random byte from RSSI noise.
Definition: SX126x.cpp:1321
SX126x::receiveDirect
int16_t receiveDirect() override
Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as SX126x series does...
Definition: SX126x.cpp:316
-
SX126x::finishTransmit
int16_t finishTransmit() override
Clean up after transmission is done.
Definition: SX126x.cpp:435
-
SX126x::setCurrentLimit
int16_t setCurrentLimit(float currentLimit)
Sets current protection limit. Can be set in 2.5 mA steps.
Definition: SX126x.cpp:727
-
SX126x::setRxBoostedGainMode
int16_t setRxBoostedGainMode(bool rxbgm, bool persist=true)
Enables or disables Rx Boosted Gain mode as described in SX126x datasheet section 9....
Definition: SX126x.cpp:873
+
SX126x::finishTransmit
int16_t finishTransmit() override
Clean up after transmission is done.
Definition: SX126x.cpp:492
+
SX126x::setCurrentLimit
int16_t setCurrentLimit(float currentLimit)
Sets current protection limit. Can be set in 2.5 mA steps.
Definition: SX126x.cpp:784
+
SX126x::setRxBoostedGainMode
int16_t setRxBoostedGainMode(bool rxbgm, bool persist=true)
Enables or disables Rx Boosted Gain mode as described in SX126x datasheet section 9....
Definition: SX126x.cpp:930
SX126x::transmitDirect
int16_t transmitDirect(uint32_t frf=0) override
Starts direct mode transmission.
Definition: SX126x.cpp:300
-
SX126x::variablePacketLengthMode
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.cpp:1169
+
SX126x::variablePacketLengthMode
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.cpp:1226
SX126x::begin
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:12
-
SX126x::setCRC
int16_t setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)
Sets CRC configuration.
Definition: SX126x.cpp:1035
-
SX126x::getIrqStatus
uint16_t getIrqStatus()
Reads the current IRQ status.
Definition: SX126x.cpp:1452
+
SX126x::setCRC
int16_t setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)
Sets CRC configuration.
Definition: SX126x.cpp:1092
+
SX126x::getIrqStatus
uint16_t getIrqStatus()
Reads the current IRQ status.
Definition: SX126x.cpp:1509
SX126x::reset
int16_t reset(bool verify=true)
Reset method. Will reset the chip to the default state using RST pin.
Definition: SX126x.cpp:159
-
SX126x::setSyncWord
int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)
Sets LoRa sync word.
Definition: SX126x.cpp:716
-
SX126x::getCurrentLimit
float getCurrentLimit()
Reads current protection limit.
Definition: SX126x.cpp:740
+
SX126x::setSyncWord
int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)
Sets LoRa sync word.
Definition: SX126x.cpp:773
+
SX126x::getCurrentLimit
float getCurrentLimit()
Reads current protection limit.
Definition: SX126x.cpp:797
SX126x::SX126x
SX126x(Module *mod)
Default constructor.
Definition: SX126x.cpp:4
-
SX126x::setPreambleLength
int16_t setPreambleLength(uint16_t preambleLength)
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535.
Definition: SX126x.cpp:749
+
SX126x::setPreambleLength
int16_t setPreambleLength(uint16_t preambleLength)
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535.
Definition: SX126x.cpp:806
SX126x::transmit
int16_t transmit(__FlashStringHelper *fstr, uint8_t addr=0)
Arduino Flash String transmit method.
Definition: PhysicalLayer.cpp:12
-
SX126x::autoLDRO
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition: SX126x.cpp:1255
-
SX126x::setDirectAction
void setDirectAction(void(*func)(void))
Dummy method, to ensure PhysicalLayer compatibility.
Definition: SX126x.cpp:1290
-
SX126x::fixedPacketLengthMode
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.cpp:1165
-
SX126x::setBroadcastAddress
int16_t setBroadcastAddress(uint8_t broadAddr)
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast...
Definition: SX126x.cpp:1007
-
SX126x::getChannelScanResult
int16_t getChannelScanResult()
Read the channel scan result.
Definition: SX126x.cpp:618
-
SX126x::getPacketLength
size_t getPacketLength(bool update=true) override
Query modem for the packet length of received payload.
Definition: SX126x.cpp:1158
-
SX126x::setSyncBits
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.cpp:963
-
SX126x::getLastError
int16_t getLastError()
Get the last recorded transaction error.
Definition: SX126x.cpp:1285
-
SX126x::getDataRate
float getDataRate() const
Gets effective data rate for the last transmitted packet. The value is calculated only for payload by...
Definition: SX126x.cpp:1131
-
SX126x::setRfSwitchTable
void setRfSwitchTable(const RADIOLIB_PIN_TYPE(&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.cpp:1239
-
SX126x::startReceiveDutyCycle
int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)
Interrupt-driven receive method where the device mostly sleeps and periodically wakes to listen....
Definition: SX126x.cpp:456
-
SX126x::implicitHeader
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition: SX126x.cpp:1215
-
SX126x::getRSSIInst
float getRSSIInst()
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT...
Definition: SX126x.cpp:1208
-
SX126x::getSNR
float getSNR()
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
Definition: SX126x.cpp:1142
-
SX126x::setDio2AsRfSwitch
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1351
-
SX126x::setSpreadingFactor
int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa spreading factor. Allowed values range from 5 to 12.
Definition: SX126x.cpp:690
+
SX126x::autoLDRO
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method,...
Definition: SX126x.cpp:1312
+
SX126x::setDirectAction
void setDirectAction(void(*func)(void))
Dummy method, to ensure PhysicalLayer compatibility.
Definition: SX126x.cpp:1347
+
SX126x::fixedPacketLengthMode
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.cpp:1222
+
SX126x::setBroadcastAddress
int16_t setBroadcastAddress(uint8_t broadAddr)
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast...
Definition: SX126x.cpp:1064
+
SX126x::getChannelScanResult
int16_t getChannelScanResult()
Read the channel scan result.
Definition: SX126x.cpp:675
+
SX126x::getPacketLength
size_t getPacketLength(bool update=true) override
Query modem for the packet length of received payload.
Definition: SX126x.cpp:1215
+
SX126x::setSyncBits
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.cpp:1020
+
SX126x::getLastError
int16_t getLastError()
Get the last recorded transaction error.
Definition: SX126x.cpp:1342
+
SX126x::getDataRate
float getDataRate() const
Gets effective data rate for the last transmitted packet. The value is calculated only for payload by...
Definition: SX126x.cpp:1188
+
SX126x::setRfSwitchTable
void setRfSwitchTable(const RADIOLIB_PIN_TYPE(&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.cpp:1296
+
SX126x::startReceiveDutyCycle
int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)
Interrupt-driven receive method where the device mostly sleeps and periodically wakes to listen....
Definition: SX126x.cpp:513
+
SX126x::implicitHeader
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition: SX126x.cpp:1272
+
SX126x::getRSSIInst
float getRSSIInst()
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT...
Definition: SX126x.cpp:1265
+
SX126x::getSNR
float getSNR()
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
Definition: SX126x.cpp:1199
+
SX126x::setDio2AsRfSwitch
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1408
+
SX126x::setSpreadingFactor
int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa spreading factor. Allowed values range from 5 to 12.
Definition: SX126x.cpp:747
SX126x::readData
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:140
-
SX126x::startReceive
int16_t startReceive(uint32_t timeout=RADIOLIB_SX126X_RX_TIMEOUT_INF)
Interrupt-driven receive method. DIO1 will be activated when full packet is received.
Definition: SX126x.cpp:443
+
SX126x::startReceive
int16_t startReceive(uint32_t timeout=RADIOLIB_SX126X_RX_TIMEOUT_INF)
Interrupt-driven receive method. DIO1 will be activated when full packet is received.
Definition: SX126x.cpp:500
SX126x::startTransmit
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition: PhysicalLayer.cpp:121
SX126x::receive
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:60
-
SX126x::sleep
int16_t sleep(bool retainConfig=true)
Sets the module to sleep mode.
Definition: SX126x.cpp:338
-
SX126x::disableAddressFiltering
int16_t disableAddressFiltering()
Disables address filtering. Calling this method will also erase previously set addresses.
Definition: SX126x.cpp:1024
-
SX126x::setCodingRate
int16_t setCodingRate(uint8_t cr)
Sets LoRa coding rate denominator. Allowed values range from 5 to 8.
Definition: SX126x.cpp:703
-
SX126x::readBit
void readBit(RADIOLIB_PIN_TYPE pin)
Dummy method, to ensure PhysicalLayer compatibility.
Definition: SX126x.cpp:1296
+
SX126x::sleep
int16_t sleep(bool retainConfig=true)
Sets the module to sleep mode.
Definition: SX126x.cpp:395
+
SX126x::disableAddressFiltering
int16_t disableAddressFiltering()
Disables address filtering. Calling this method will also erase previously set addresses.
Definition: SX126x.cpp:1081
+
SX126x::setCodingRate
int16_t setCodingRate(uint8_t cr)
Sets LoRa coding rate denominator. Allowed values range from 5 to 8.
Definition: SX126x.cpp:760
+
SX126x::readBit
void readBit(RADIOLIB_PIN_TYPE pin)
Dummy method, to ensure PhysicalLayer compatibility.
Definition: SX126x.cpp:1353
RADIOLIB_ERR_NONE
#define RADIOLIB_ERR_NONE
No error, method executed successfully.
Definition: TypeDef.h:102
Module::RfSwitchMode_t
Definition: Module.h:34