diff --git a/_s_x126x_8h_source.html b/_s_x126x_8h_source.html index b29e8207..824faf1a 100644 --- a/_s_x126x_8h_source.html +++ b/_s_x126x_8h_source.html @@ -84,7 +84,7 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html','');});
SX126x.h
-
1 #if !defined(_RADIOLIB_SX126X_H)
2 #define _RADIOLIB_SX126X_H
3 
4 #include "../../TypeDef.h"
5 
6 #if !defined(RADIOLIB_EXCLUDE_SX126X)
7 
8 #include "../../Module.h"
9 
10 #include "../../protocols/PhysicalLayer/PhysicalLayer.h"
11 
12 // SX126X physical layer properties
13 #define SX126X_FREQUENCY_STEP_SIZE 0.9536743164
14 #define SX126X_MAX_PACKET_LENGTH 255
15 #define SX126X_CRYSTAL_FREQ 32.0
16 #define SX126X_DIV_EXPONENT 25
17 
18 // SX126X SPI commands
19 // operational modes commands
20 #define SX126X_CMD_NOP 0x00
21 #define SX126X_CMD_SET_SLEEP 0x84
22 #define SX126X_CMD_SET_STANDBY 0x80
23 #define SX126X_CMD_SET_FS 0xC1
24 #define SX126X_CMD_SET_TX 0x83
25 #define SX126X_CMD_SET_RX 0x82
26 #define SX126X_CMD_STOP_TIMER_ON_PREAMBLE 0x9F
27 #define SX126X_CMD_SET_RX_DUTY_CYCLE 0x94
28 #define SX126X_CMD_SET_CAD 0xC5
29 #define SX126X_CMD_SET_TX_CONTINUOUS_WAVE 0xD1
30 #define SX126X_CMD_SET_TX_INFINITE_PREAMBLE 0xD2
31 #define SX126X_CMD_SET_REGULATOR_MODE 0x96
32 #define SX126X_CMD_CALIBRATE 0x89
33 #define SX126X_CMD_CALIBRATE_IMAGE 0x98
34 #define SX126X_CMD_SET_PA_CONFIG 0x95
35 #define SX126X_CMD_SET_RX_TX_FALLBACK_MODE 0x93
36 
37 // register and buffer access commands
38 #define SX126X_CMD_WRITE_REGISTER 0x0D
39 #define SX126X_CMD_READ_REGISTER 0x1D
40 #define SX126X_CMD_WRITE_BUFFER 0x0E
41 #define SX126X_CMD_READ_BUFFER 0x1E
42 
43 // DIO and IRQ control
44 #define SX126X_CMD_SET_DIO_IRQ_PARAMS 0x08
45 #define SX126X_CMD_GET_IRQ_STATUS 0x12
46 #define SX126X_CMD_CLEAR_IRQ_STATUS 0x02
47 #define SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL 0x9D
48 #define SX126X_CMD_SET_DIO3_AS_TCXO_CTRL 0x97
49 
50 // RF, modulation and packet commands
51 #define SX126X_CMD_SET_RF_FREQUENCY 0x86
52 #define SX126X_CMD_SET_PACKET_TYPE 0x8A
53 #define SX126X_CMD_GET_PACKET_TYPE 0x11
54 #define SX126X_CMD_SET_TX_PARAMS 0x8E
55 #define SX126X_CMD_SET_MODULATION_PARAMS 0x8B
56 #define SX126X_CMD_SET_PACKET_PARAMS 0x8C
57 #define SX126X_CMD_SET_CAD_PARAMS 0x88
58 #define SX126X_CMD_SET_BUFFER_BASE_ADDRESS 0x8F
59 #define SX126X_CMD_SET_LORA_SYMB_NUM_TIMEOUT 0x0A
60 
61 // status commands
62 #define SX126X_CMD_GET_STATUS 0xC0
63 #define SX126X_CMD_GET_RSSI_INST 0x15
64 #define SX126X_CMD_GET_RX_BUFFER_STATUS 0x13
65 #define SX126X_CMD_GET_PACKET_STATUS 0x14
66 #define SX126X_CMD_GET_DEVICE_ERRORS 0x17
67 #define SX126X_CMD_CLEAR_DEVICE_ERRORS 0x07
68 #define SX126X_CMD_GET_STATS 0x10
69 #define SX126X_CMD_RESET_STATS 0x00
70 
71 
72 // SX126X register map
73 #define SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
74 #define SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
75 #define SX126X_REG_CRC_INITIAL_MSB 0x06BC
76 #define SX126X_REG_CRC_INITIAL_LSB 0x06BD
77 #define SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
78 #define SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
79 #define SX126X_REG_SYNC_WORD_0 0x06C0
80 #define SX126X_REG_SYNC_WORD_1 0x06C1
81 #define SX126X_REG_SYNC_WORD_2 0x06C2
82 #define SX126X_REG_SYNC_WORD_3 0x06C3
83 #define SX126X_REG_SYNC_WORD_4 0x06C4
84 #define SX126X_REG_SYNC_WORD_5 0x06C5
85 #define SX126X_REG_SYNC_WORD_6 0x06C6
86 #define SX126X_REG_SYNC_WORD_7 0x06C7
87 #define SX126X_REG_NODE_ADDRESS 0x06CD
88 #define SX126X_REG_BROADCAST_ADDRESS 0x06CE
89 #define SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
90 #define SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
91 #define SX126X_REG_RANDOM_NUMBER_0 0x0819
92 #define SX126X_REG_RANDOM_NUMBER_1 0x081A
93 #define SX126X_REG_RANDOM_NUMBER_2 0x081B
94 #define SX126X_REG_RANDOM_NUMBER_3 0x081C
95 #define SX126X_REG_RX_GAIN 0x08AC
96 #define SX126X_REG_OCP_CONFIGURATION 0x08E7
97 #define SX126X_REG_XTA_TRIM 0x0911
98 #define SX126X_REG_XTB_TRIM 0x0912
99 
100 // undocumented registers
101 #define SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
102 #define SX126X_REG_TX_CLAMP_CONFIG 0x08D8 // SX1268 datasheet v1.1, section 15.2
103 #define SX126X_REG_RTC_STOP 0x0920 // SX1268 datasheet v1.1, section 15.3
104 #define SX126X_REG_RTC_EVENT 0x0944 // SX1268 datasheet v1.1, section 15.3
105 #define SX126X_REG_IQ_CONFIG 0x0736 // SX1268 datasheet v1.1, section 15.4
106 #define SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
107 #define SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
108 #define SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
109 
110 
111 // SX126X SPI command variables
112 //SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
113 #define SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
114 #define SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
115 #define SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
116 #define SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
117 
118 //SX126X_CMD_SET_STANDBY
119 #define SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
120 #define SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
121 
122 //SX126X_CMD_SET_RX
123 #define SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
124 #define SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
125 
126 //SX126X_CMD_SET_TX
127 #define SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
128 
129 //SX126X_CMD_STOP_TIMER_ON_PREAMBLE
130 #define SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
131 #define SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
132 
133 //SX126X_CMD_SET_REGULATOR_MODE
134 #define SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
135 #define SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
136 
137 //SX126X_CMD_CALIBRATE
138 #define SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
139 #define SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
140 #define SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
141 #define SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
142 #define SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
143 #define SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
144 #define SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
145 #define SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
146 #define SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
147 #define SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
148 #define SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
149 #define SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
150 #define SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
151 #define SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
152 #define SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
153 
154 //SX126X_CMD_CALIBRATE_IMAGE
155 #define SX126X_CAL_IMG_430_MHZ_1 0x6B
156 #define SX126X_CAL_IMG_430_MHZ_2 0x6F
157 #define SX126X_CAL_IMG_470_MHZ_1 0x75
158 #define SX126X_CAL_IMG_470_MHZ_2 0x81
159 #define SX126X_CAL_IMG_779_MHZ_1 0xC1
160 #define SX126X_CAL_IMG_779_MHZ_2 0xC5
161 #define SX126X_CAL_IMG_863_MHZ_1 0xD7
162 #define SX126X_CAL_IMG_863_MHZ_2 0xDB
163 #define SX126X_CAL_IMG_902_MHZ_1 0xE1
164 #define SX126X_CAL_IMG_902_MHZ_2 0xE9
165 
166 //SX126X_CMD_SET_PA_CONFIG
167 #define SX126X_PA_CONFIG_HP_MAX 0x07
168 #define SX126X_PA_CONFIG_PA_LUT 0x01
169 #define SX126X_PA_CONFIG_SX1262_8 0x00
170 
171 //SX126X_CMD_SET_RX_TX_FALLBACK_MODE
172 #define SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
173 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
174 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
175 
176 //SX126X_CMD_SET_DIO_IRQ_PARAMS
177 #define SX126X_IRQ_TIMEOUT 0b1000000000 // 9 9 Rx or Tx timeout
178 #define SX126X_IRQ_CAD_DETECTED 0b0100000000 // 8 8 channel activity detected
179 #define SX126X_IRQ_CAD_DONE 0b0010000000 // 7 7 channel activity detection finished
180 #define SX126X_IRQ_CRC_ERR 0b0001000000 // 6 6 wrong CRC received
181 #define SX126X_IRQ_HEADER_ERR 0b0000100000 // 5 5 LoRa header CRC error
182 #define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received
183 #define SX126X_IRQ_SYNC_WORD_VALID 0b0000001000 // 3 3 valid sync word detected
184 #define SX126X_IRQ_PREAMBLE_DETECTED 0b0000000100 // 2 2 preamble detected
185 #define SX126X_IRQ_RX_DONE 0b0000000010 // 1 1 packet received
186 #define SX126X_IRQ_TX_DONE 0b0000000001 // 0 0 packet transmission completed
187 #define SX126X_IRQ_ALL 0b1111111111 // 9 0 all interrupts
188 #define SX126X_IRQ_NONE 0b0000000000 // 9 0 no interrupts
189 
190 //SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
191 #define SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
192 #define SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
193 
194 //SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
195 #define SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
196 #define SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
197 #define SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
198 #define SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
199 #define SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
200 #define SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
201 #define SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
202 #define SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
203 
204 //SX126X_CMD_SET_PACKET_TYPE
205 #define SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
206 #define SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
207 
208 //SX126X_CMD_SET_TX_PARAMS
209 #define SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
210 #define SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
211 #define SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
212 #define SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
213 #define SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
214 #define SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
215 #define SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
216 #define SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
217 
218 //SX126X_CMD_SET_MODULATION_PARAMS
219 #define SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
220 #define SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
221 #define SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
222 #define SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
223 #define SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
224 #define SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
225 #define SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
226 #define SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
227 #define SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
228 #define SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
229 #define SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
230 #define SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
231 #define SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
232 #define SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
233 #define SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
234 #define SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
235 #define SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
236 #define SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
237 #define SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
238 #define SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
239 #define SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
240 #define SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
241 #define SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
242 #define SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
243 #define SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
244 #define SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
245 #define SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
246 #define SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
247 #define SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
248 #define SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
249 #define SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
250 #define SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
251 #define SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
252 #define SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
253 #define SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
254 #define SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
255 #define SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
256 #define SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
257 #define SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
258 #define SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
259 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
260 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
261 
262 //SX126X_CMD_SET_PACKET_PARAMS
263 #define SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
264 #define SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
265 #define SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
266 #define SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
267 #define SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
268 #define SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
269 #define SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
270 #define SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
271 #define SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
272 #define SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
273 #define SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
274 #define SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
275 #define SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
276 #define SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
277 #define SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
278 #define SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
279 #define SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
280 #define SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
281 #define SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
282 #define SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
283 #define SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
284 #define SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
285 #define SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
286 
287 //SX126X_CMD_SET_CAD_PARAMS
288 #define SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
289 #define SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
290 #define SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
291 #define SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
292 #define SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
293 #define SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
294 #define SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
295 
296 //SX126X_CMD_GET_STATUS
297 #define SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
298 #define SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
299 #define SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
300 #define SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
301 #define SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
302 #define SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
303 #define SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
304 #define SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
305 #define SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
306 #define SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
307 #define SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
308 
309 //SX126X_CMD_GET_PACKET_STATUS
310 #define SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
311 #define SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
312 #define SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
313 #define SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
314 #define SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
315 #define SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
316 #define SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
317 #define SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
318 
319 //SX126X_CMD_GET_DEVICE_ERRORS
320 #define SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
321 #define SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
322 #define SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
323 #define SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
324 #define SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
325 #define SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
326 #define SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
327 #define SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
328 
329 
330 // SX126X SPI register variables
331 //SX126X_REG_LORA_SYNC_WORD_MSB + LSB
332 #define 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.
333 #define SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
334 
335 
342 class SX126x: public PhysicalLayer {
343  public:
344  // introduce PhysicalLayer overloads
349 
355  SX126x(Module* mod);
356 
357  // basic methods
358 
378  int16_t begin(float bw, uint8_t sf, uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
379 
397  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
398 
407  int16_t reset(bool verify = true);
408 
421  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
422 
433  int16_t receive(uint8_t* data, size_t len) override;
434 
442  int16_t transmitDirect(uint32_t frf = 0) override;
443 
450  int16_t receiveDirect() override;
451 
457  int16_t scanChannel();
458 
466  int16_t sleep(bool retainConfig = true);
467 
473  int16_t standby() override;
474 
482  int16_t standby(uint8_t mode);
483 
484  // interrupt methods
485 
491  void setDio1Action(void (*func)(void));
492 
496  void clearDio1Action();
497 
510  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
511 
519  int16_t startReceive(uint32_t timeout = SX126X_RX_TIMEOUT_INF);
520 
531  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod);
532 
544  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8);
545 
555  int16_t readData(uint8_t* data, size_t len) override;
556 
557  // configuration methods
558 
566  int16_t setBandwidth(float bw);
567 
575  int16_t setSpreadingFactor(uint8_t sf);
576 
584  int16_t setCodingRate(uint8_t cr);
585 
595  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
596 
604  int16_t setCurrentLimit(float currentLimit);
605 
611  float getCurrentLimit();
612 
620  int16_t setPreambleLength(uint16_t preambleLength);
621 
629  int16_t setFrequencyDeviation(float freqDev) override;
630 
638  int16_t setBitRate(float br);
639 
647  int16_t setRxBandwidth(float rxBw);
648 
658  int16_t setDataShaping(uint8_t sh) override;
659 
669  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
670 
680  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
681 
689  int16_t setNodeAddress(uint8_t nodeAddr);
690 
698  int16_t setBroadcastAddress(uint8_t broadAddr);
699 
705  int16_t disableAddressFiltering();
706 
720  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
721 
731  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
732 
743  int16_t setTCXO(float voltage, uint32_t delay = 5000);
744 
750  int16_t setDio2AsRfSwitch(bool enable = true);
751 
757  float getDataRate() const;
758 
764  float getRSSI();
765 
771  float getSNR();
772 
780  size_t getPacketLength(bool update = true) override;
781 
789  int16_t fixedPacketLengthMode(uint8_t len = SX126X_MAX_PACKET_LENGTH);
790 
798  int16_t variablePacketLengthMode(uint8_t maxLen = SX126X_MAX_PACKET_LENGTH);
799 
807  uint32_t getTimeOnAir(size_t len);
808 
814  int16_t implicitHeader(size_t len);
815 
823  int16_t explicitHeader();
824 
830  int16_t setRegulatorLDO();
831 
837  int16_t setRegulatorDCDC();
838 
846  int16_t setEncoding(uint8_t encoding) override;
847 
856  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
857 
866  int16_t forceLDRO(bool enable);
867 
874  int16_t autoLDRO();
875 
881  uint8_t random();
882 
883 #ifndef RADIOLIB_GODMODE
884  protected:
885 #endif
886  // SX126x SPI command implementations
887  int16_t setTx(uint32_t timeout = 0);
888  int16_t setRx(uint32_t timeout);
889  int16_t setCad();
890  int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = SX126X_PA_CONFIG_PA_LUT);
891  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
892  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
893  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
894  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
895  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = SX126X_IRQ_NONE, uint16_t dio3Mask = SX126X_IRQ_NONE);
896  uint16_t getIrqStatus();
897  int16_t clearIrqStatus(uint16_t clearIrqParams = SX126X_IRQ_ALL);
898  int16_t setRfFrequency(uint32_t frf);
899  int16_t calibrateImage(uint8_t* data);
900  uint8_t getPacketType();
901  int16_t setTxParams(uint8_t power, uint8_t rampTime = SX126X_PA_RAMP_200U);
902  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
903  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
904  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = SX126X_LORA_IQ_STANDARD);
905  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = SX126X_GFSK_PREAMBLE_DETECT_16);
906  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
907  int16_t setRegulatorMode(uint8_t mode);
908  uint8_t getStatus();
909  uint32_t getPacketStatus();
910  uint16_t getDeviceErrors();
911  int16_t clearDeviceErrors();
912 
913  int16_t startReceiveCommon();
914  int16_t setFrequencyRaw(float freq);
915  int16_t setPacketMode(uint8_t mode, uint8_t len);
916  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
917 
918  // fixes to errata
919  int16_t fixSensitivity();
920  int16_t fixPaClamping();
921  int16_t fixImplicitTimeout();
922  int16_t fixInvertedIQ(uint8_t iqConfig);
923 
924 #ifndef RADIOLIB_GODMODE
925  private:
926 #endif
927  Module* _mod;
928 
929  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
930  uint16_t _preambleLength = 0;
931  float _bwKhz = 0;
932  bool _ldroAuto = true;
933 
934  uint32_t _br = 0, _freqDev = 0;
935  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
936  uint16_t _preambleLengthFSK = 0;
937  float _rxBwKhz = 0;
938 
939  float _dataRate = 0;
940 
941  uint32_t _tcxoDelay = 0;
942 
943  size_t _implicitLen = 0;
944 
945  int16_t config(uint8_t modem);
946 
947  // common low-level SPI interface
948  int16_t SPIwriteCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
949  int16_t SPIwriteCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
950  int16_t SPIreadCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
951  int16_t SPIreadCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
952  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);
953 };
954 
955 #endif
956 
957 #endif
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 ...
Definition: SX126x.cpp:1153
+
1 #if !defined(_RADIOLIB_SX126X_H)
2 #define _RADIOLIB_SX126X_H
3 
4 #include "../../TypeDef.h"
5 
6 #if !defined(RADIOLIB_EXCLUDE_SX126X)
7 
8 #include "../../Module.h"
9 
10 #include "../../protocols/PhysicalLayer/PhysicalLayer.h"
11 
12 // SX126X physical layer properties
13 #define SX126X_FREQUENCY_STEP_SIZE 0.9536743164
14 #define SX126X_MAX_PACKET_LENGTH 255
15 #define SX126X_CRYSTAL_FREQ 32.0
16 #define SX126X_DIV_EXPONENT 25
17 
18 // SX126X SPI commands
19 // operational modes commands
20 #define SX126X_CMD_NOP 0x00
21 #define SX126X_CMD_SET_SLEEP 0x84
22 #define SX126X_CMD_SET_STANDBY 0x80
23 #define SX126X_CMD_SET_FS 0xC1
24 #define SX126X_CMD_SET_TX 0x83
25 #define SX126X_CMD_SET_RX 0x82
26 #define SX126X_CMD_STOP_TIMER_ON_PREAMBLE 0x9F
27 #define SX126X_CMD_SET_RX_DUTY_CYCLE 0x94
28 #define SX126X_CMD_SET_CAD 0xC5
29 #define SX126X_CMD_SET_TX_CONTINUOUS_WAVE 0xD1
30 #define SX126X_CMD_SET_TX_INFINITE_PREAMBLE 0xD2
31 #define SX126X_CMD_SET_REGULATOR_MODE 0x96
32 #define SX126X_CMD_CALIBRATE 0x89
33 #define SX126X_CMD_CALIBRATE_IMAGE 0x98
34 #define SX126X_CMD_SET_PA_CONFIG 0x95
35 #define SX126X_CMD_SET_RX_TX_FALLBACK_MODE 0x93
36 
37 // register and buffer access commands
38 #define SX126X_CMD_WRITE_REGISTER 0x0D
39 #define SX126X_CMD_READ_REGISTER 0x1D
40 #define SX126X_CMD_WRITE_BUFFER 0x0E
41 #define SX126X_CMD_READ_BUFFER 0x1E
42 
43 // DIO and IRQ control
44 #define SX126X_CMD_SET_DIO_IRQ_PARAMS 0x08
45 #define SX126X_CMD_GET_IRQ_STATUS 0x12
46 #define SX126X_CMD_CLEAR_IRQ_STATUS 0x02
47 #define SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL 0x9D
48 #define SX126X_CMD_SET_DIO3_AS_TCXO_CTRL 0x97
49 
50 // RF, modulation and packet commands
51 #define SX126X_CMD_SET_RF_FREQUENCY 0x86
52 #define SX126X_CMD_SET_PACKET_TYPE 0x8A
53 #define SX126X_CMD_GET_PACKET_TYPE 0x11
54 #define SX126X_CMD_SET_TX_PARAMS 0x8E
55 #define SX126X_CMD_SET_MODULATION_PARAMS 0x8B
56 #define SX126X_CMD_SET_PACKET_PARAMS 0x8C
57 #define SX126X_CMD_SET_CAD_PARAMS 0x88
58 #define SX126X_CMD_SET_BUFFER_BASE_ADDRESS 0x8F
59 #define SX126X_CMD_SET_LORA_SYMB_NUM_TIMEOUT 0x0A
60 
61 // status commands
62 #define SX126X_CMD_GET_STATUS 0xC0
63 #define SX126X_CMD_GET_RSSI_INST 0x15
64 #define SX126X_CMD_GET_RX_BUFFER_STATUS 0x13
65 #define SX126X_CMD_GET_PACKET_STATUS 0x14
66 #define SX126X_CMD_GET_DEVICE_ERRORS 0x17
67 #define SX126X_CMD_CLEAR_DEVICE_ERRORS 0x07
68 #define SX126X_CMD_GET_STATS 0x10
69 #define SX126X_CMD_RESET_STATS 0x00
70 
71 
72 // SX126X register map
73 #define SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
74 #define SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
75 #define SX126X_REG_CRC_INITIAL_MSB 0x06BC
76 #define SX126X_REG_CRC_INITIAL_LSB 0x06BD
77 #define SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
78 #define SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
79 #define SX126X_REG_SYNC_WORD_0 0x06C0
80 #define SX126X_REG_SYNC_WORD_1 0x06C1
81 #define SX126X_REG_SYNC_WORD_2 0x06C2
82 #define SX126X_REG_SYNC_WORD_3 0x06C3
83 #define SX126X_REG_SYNC_WORD_4 0x06C4
84 #define SX126X_REG_SYNC_WORD_5 0x06C5
85 #define SX126X_REG_SYNC_WORD_6 0x06C6
86 #define SX126X_REG_SYNC_WORD_7 0x06C7
87 #define SX126X_REG_NODE_ADDRESS 0x06CD
88 #define SX126X_REG_BROADCAST_ADDRESS 0x06CE
89 #define SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
90 #define SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
91 #define SX126X_REG_RANDOM_NUMBER_0 0x0819
92 #define SX126X_REG_RANDOM_NUMBER_1 0x081A
93 #define SX126X_REG_RANDOM_NUMBER_2 0x081B
94 #define SX126X_REG_RANDOM_NUMBER_3 0x081C
95 #define SX126X_REG_RX_GAIN 0x08AC
96 #define SX126X_REG_OCP_CONFIGURATION 0x08E7
97 #define SX126X_REG_XTA_TRIM 0x0911
98 #define SX126X_REG_XTB_TRIM 0x0912
99 
100 // undocumented registers
101 #define SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
102 #define SX126X_REG_TX_CLAMP_CONFIG 0x08D8 // SX1268 datasheet v1.1, section 15.2
103 #define SX126X_REG_RTC_STOP 0x0920 // SX1268 datasheet v1.1, section 15.3
104 #define SX126X_REG_RTC_EVENT 0x0944 // SX1268 datasheet v1.1, section 15.3
105 #define SX126X_REG_IQ_CONFIG 0x0736 // SX1268 datasheet v1.1, section 15.4
106 #define SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
107 #define SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
108 #define SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
109 
110 
111 // SX126X SPI command variables
112 //SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
113 #define SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
114 #define SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
115 #define SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
116 #define SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
117 
118 //SX126X_CMD_SET_STANDBY
119 #define SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
120 #define SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
121 
122 //SX126X_CMD_SET_RX
123 #define SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
124 #define SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
125 
126 //SX126X_CMD_SET_TX
127 #define SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
128 
129 //SX126X_CMD_STOP_TIMER_ON_PREAMBLE
130 #define SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
131 #define SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
132 
133 //SX126X_CMD_SET_REGULATOR_MODE
134 #define SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
135 #define SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
136 
137 //SX126X_CMD_CALIBRATE
138 #define SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
139 #define SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
140 #define SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
141 #define SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
142 #define SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
143 #define SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
144 #define SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
145 #define SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
146 #define SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
147 #define SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
148 #define SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
149 #define SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
150 #define SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
151 #define SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
152 #define SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
153 
154 //SX126X_CMD_CALIBRATE_IMAGE
155 #define SX126X_CAL_IMG_430_MHZ_1 0x6B
156 #define SX126X_CAL_IMG_430_MHZ_2 0x6F
157 #define SX126X_CAL_IMG_470_MHZ_1 0x75
158 #define SX126X_CAL_IMG_470_MHZ_2 0x81
159 #define SX126X_CAL_IMG_779_MHZ_1 0xC1
160 #define SX126X_CAL_IMG_779_MHZ_2 0xC5
161 #define SX126X_CAL_IMG_863_MHZ_1 0xD7
162 #define SX126X_CAL_IMG_863_MHZ_2 0xDB
163 #define SX126X_CAL_IMG_902_MHZ_1 0xE1
164 #define SX126X_CAL_IMG_902_MHZ_2 0xE9
165 
166 //SX126X_CMD_SET_PA_CONFIG
167 #define SX126X_PA_CONFIG_HP_MAX 0x07
168 #define SX126X_PA_CONFIG_PA_LUT 0x01
169 #define SX126X_PA_CONFIG_SX1262_8 0x00
170 
171 //SX126X_CMD_SET_RX_TX_FALLBACK_MODE
172 #define SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
173 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
174 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
175 
176 //SX126X_CMD_SET_DIO_IRQ_PARAMS
177 #define SX126X_IRQ_TIMEOUT 0b1000000000 // 9 9 Rx or Tx timeout
178 #define SX126X_IRQ_CAD_DETECTED 0b0100000000 // 8 8 channel activity detected
179 #define SX126X_IRQ_CAD_DONE 0b0010000000 // 7 7 channel activity detection finished
180 #define SX126X_IRQ_CRC_ERR 0b0001000000 // 6 6 wrong CRC received
181 #define SX126X_IRQ_HEADER_ERR 0b0000100000 // 5 5 LoRa header CRC error
182 #define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received
183 #define SX126X_IRQ_SYNC_WORD_VALID 0b0000001000 // 3 3 valid sync word detected
184 #define SX126X_IRQ_PREAMBLE_DETECTED 0b0000000100 // 2 2 preamble detected
185 #define SX126X_IRQ_RX_DONE 0b0000000010 // 1 1 packet received
186 #define SX126X_IRQ_TX_DONE 0b0000000001 // 0 0 packet transmission completed
187 #define SX126X_IRQ_ALL 0b1111111111 // 9 0 all interrupts
188 #define SX126X_IRQ_NONE 0b0000000000 // 9 0 no interrupts
189 
190 //SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
191 #define SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
192 #define SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
193 
194 //SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
195 #define SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
196 #define SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
197 #define SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
198 #define SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
199 #define SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
200 #define SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
201 #define SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
202 #define SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
203 
204 //SX126X_CMD_SET_PACKET_TYPE
205 #define SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
206 #define SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
207 
208 //SX126X_CMD_SET_TX_PARAMS
209 #define SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
210 #define SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
211 #define SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
212 #define SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
213 #define SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
214 #define SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
215 #define SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
216 #define SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
217 
218 //SX126X_CMD_SET_MODULATION_PARAMS
219 #define SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
220 #define SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
221 #define SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
222 #define SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
223 #define SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
224 #define SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
225 #define SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
226 #define SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
227 #define SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
228 #define SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
229 #define SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
230 #define SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
231 #define SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
232 #define SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
233 #define SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
234 #define SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
235 #define SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
236 #define SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
237 #define SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
238 #define SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
239 #define SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
240 #define SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
241 #define SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
242 #define SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
243 #define SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
244 #define SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
245 #define SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
246 #define SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
247 #define SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
248 #define SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
249 #define SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
250 #define SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
251 #define SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
252 #define SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
253 #define SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
254 #define SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
255 #define SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
256 #define SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
257 #define SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
258 #define SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
259 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
260 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
261 
262 //SX126X_CMD_SET_PACKET_PARAMS
263 #define SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
264 #define SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
265 #define SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
266 #define SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
267 #define SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
268 #define SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
269 #define SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
270 #define SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
271 #define SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
272 #define SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
273 #define SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
274 #define SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
275 #define SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
276 #define SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
277 #define SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
278 #define SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
279 #define SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
280 #define SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
281 #define SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
282 #define SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
283 #define SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
284 #define SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
285 #define SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
286 
287 //SX126X_CMD_SET_CAD_PARAMS
288 #define SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
289 #define SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
290 #define SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
291 #define SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
292 #define SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
293 #define SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
294 #define SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
295 
296 //SX126X_CMD_GET_STATUS
297 #define SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
298 #define SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
299 #define SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
300 #define SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
301 #define SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
302 #define SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
303 #define SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
304 #define SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
305 #define SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
306 #define SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
307 #define SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
308 
309 //SX126X_CMD_GET_PACKET_STATUS
310 #define SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
311 #define SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
312 #define SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
313 #define SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
314 #define SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
315 #define SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
316 #define SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
317 #define SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
318 
319 //SX126X_CMD_GET_DEVICE_ERRORS
320 #define SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
321 #define SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
322 #define SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
323 #define SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
324 #define SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
325 #define SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
326 #define SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
327 #define SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
328 
329 
330 // SX126X SPI register variables
331 //SX126X_REG_LORA_SYNC_WORD_MSB + LSB
332 #define 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.
333 #define SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
334 
335 
342 class SX126x: public PhysicalLayer {
343  public:
344  // introduce PhysicalLayer overloads
349 
355  SX126x(Module* mod);
356 
357  // basic methods
358 
378  int16_t begin(float bw, uint8_t sf, uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
379 
397  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
398 
407  int16_t reset(bool verify = true);
408 
421  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
422 
433  int16_t receive(uint8_t* data, size_t len) override;
434 
442  int16_t transmitDirect(uint32_t frf = 0) override;
443 
450  int16_t receiveDirect() override;
451 
457  int16_t scanChannel();
458 
466  int16_t sleep(bool retainConfig = true);
467 
473  int16_t standby() override;
474 
482  int16_t standby(uint8_t mode);
483 
484  // interrupt methods
485 
491  void setDio1Action(void (*func)(void));
492 
496  void clearDio1Action();
497 
510  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
511 
519  int16_t startReceive(uint32_t timeout = SX126X_RX_TIMEOUT_INF);
520 
531  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod);
532 
544  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8);
545 
555  int16_t readData(uint8_t* data, size_t len) override;
556 
557  // configuration methods
558 
566  int16_t setBandwidth(float bw);
567 
575  int16_t setSpreadingFactor(uint8_t sf);
576 
584  int16_t setCodingRate(uint8_t cr);
585 
595  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
596 
604  int16_t setCurrentLimit(float currentLimit);
605 
611  float getCurrentLimit();
612 
620  int16_t setPreambleLength(uint16_t preambleLength);
621 
629  int16_t setFrequencyDeviation(float freqDev) override;
630 
638  int16_t setBitRate(float br);
639 
647  int16_t setRxBandwidth(float rxBw);
648 
658  int16_t setDataShaping(uint8_t sh) override;
659 
669  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
670 
680  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
681 
689  int16_t setNodeAddress(uint8_t nodeAddr);
690 
698  int16_t setBroadcastAddress(uint8_t broadAddr);
699 
705  int16_t disableAddressFiltering();
706 
720  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
721 
731  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
732 
743  int16_t setTCXO(float voltage, uint32_t delay = 5000);
744 
750  int16_t setDio2AsRfSwitch(bool enable = true);
751 
757  float getDataRate() const;
758 
764  float getRSSI();
765 
771  float getSNR();
772 
780  size_t getPacketLength(bool update = true) override;
781 
789  int16_t fixedPacketLengthMode(uint8_t len = SX126X_MAX_PACKET_LENGTH);
790 
798  int16_t variablePacketLengthMode(uint8_t maxLen = SX126X_MAX_PACKET_LENGTH);
799 
807  uint32_t getTimeOnAir(size_t len);
808 
814  float getRSSIInst();
815 
821  int16_t implicitHeader(size_t len);
822 
830  int16_t explicitHeader();
831 
837  int16_t setRegulatorLDO();
838 
844  int16_t setRegulatorDCDC();
845 
853  int16_t setEncoding(uint8_t encoding) override;
854 
863  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
864 
873  int16_t forceLDRO(bool enable);
874 
881  int16_t autoLDRO();
882 
888  uint8_t random();
889 
890 #ifndef RADIOLIB_GODMODE
891  protected:
892 #endif
893  // SX126x SPI command implementations
894  int16_t setTx(uint32_t timeout = 0);
895  int16_t setRx(uint32_t timeout);
896  int16_t setCad();
897  int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = SX126X_PA_CONFIG_PA_LUT);
898  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
899  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
900  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
901  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
902  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = SX126X_IRQ_NONE, uint16_t dio3Mask = SX126X_IRQ_NONE);
903  uint16_t getIrqStatus();
904  int16_t clearIrqStatus(uint16_t clearIrqParams = SX126X_IRQ_ALL);
905  int16_t setRfFrequency(uint32_t frf);
906  int16_t calibrateImage(uint8_t* data);
907  uint8_t getPacketType();
908  int16_t setTxParams(uint8_t power, uint8_t rampTime = SX126X_PA_RAMP_200U);
909  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
910  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
911  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = SX126X_LORA_IQ_STANDARD);
912  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = SX126X_GFSK_PREAMBLE_DETECT_16);
913  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
914  int16_t setRegulatorMode(uint8_t mode);
915  uint8_t getStatus();
916  uint32_t getPacketStatus();
917  uint16_t getDeviceErrors();
918  int16_t clearDeviceErrors();
919 
920  int16_t startReceiveCommon();
921  int16_t setFrequencyRaw(float freq);
922  int16_t setPacketMode(uint8_t mode, uint8_t len);
923  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
924 
925  // fixes to errata
926  int16_t fixSensitivity();
927  int16_t fixPaClamping();
928  int16_t fixImplicitTimeout();
929  int16_t fixInvertedIQ(uint8_t iqConfig);
930 
931 #ifndef RADIOLIB_GODMODE
932  private:
933 #endif
934  Module* _mod;
935 
936  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
937  uint16_t _preambleLength = 0;
938  float _bwKhz = 0;
939  bool _ldroAuto = true;
940 
941  uint32_t _br = 0, _freqDev = 0;
942  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
943  uint16_t _preambleLengthFSK = 0;
944  float _rxBwKhz = 0;
945 
946  float _dataRate = 0;
947 
948  uint32_t _tcxoDelay = 0;
949 
950  size_t _implicitLen = 0;
951 
952  int16_t config(uint8_t modem);
953 
954  // common low-level SPI interface
955  int16_t SPIwriteCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
956  int16_t SPIwriteCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
957  int16_t SPIreadCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
958  int16_t SPIreadCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes, bool waitForBusy = true);
959  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);
960 };
961 
962 #endif
963 
964 #endif
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 ...
Definition: SX126x.cpp:1160
int16_t setBroadcastAddress(uint8_t broadAddr)
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast...
Definition: SX126x.cpp:932
int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)
Sets LoRa sync word.
Definition: SX126x.cpp:684
float getCurrentLimit()
Reads current protection limit.
Definition: SX126x.cpp:708
@@ -92,11 +92,11 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html','');});
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:488
SX126x(Module *mod)
Default constructor.
Definition: SX126x.cpp:4
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:888
-
uint8_t random()
Get one truly random byte from RSSI noise.
Definition: SX126x.cpp:1178
+
uint8_t random()
Get one truly random byte from RSSI noise.
Definition: SX126x.cpp:1185
int16_t readData(uint8_t *data, size_t len) override
Reads data received after calling startReceive method.
Definition: SX126x.cpp:576
-
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1247
+
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1254
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:835
-
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition: SX126x.cpp:1137
+
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition: SX126x.cpp:1144
int16_t setBitRate(float br)
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
Definition: SX126x.cpp:751
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:515
int16_t standby() override
Sets the module to standby mode (overload for PhysicalLayer compatibility, uses 13 MHz RC oscillator)...
Definition: SX126x.cpp:394
@@ -113,6 +113,7 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html','');});
int16_t startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)
Interrupt-driven receive method. DIO1 will be activated when full packet is received.
Definition: SX126x.cpp:475
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 Physical...
Definition: SX126x.cpp:193
float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition: SX126x.cpp:1060
+
float getRSSIInst()
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT...
Definition: SX126x.cpp:1133
Implements all common low-level SPI/UART/I2C methods to control the wireless module. Every module class contains one private instance of this class.
Definition: Module.h:17
int16_t transmit(__FlashStringHelper *fstr, uint8_t addr=0)
Arduino Flash String transmit method.
Definition: PhysicalLayer.cpp:8
float getSNR()
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem...
Definition: SX126x.cpp:1067
@@ -121,27 +122,27 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html','');});
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:98
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.
Definition: SX126x.cpp:772
void setDio1Action(void(*func)(void))
Sets interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:406
-
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method...
Definition: SX126x.cpp:1169
+
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method...
Definition: SX126x.cpp:1176
int16_t setCodingRate(uint8_t cr)
Sets LoRa coding rate denominator. Allowed values range from 5 to 8.
Definition: SX126x.cpp:671
-
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:1149
+
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:1156
int16_t transmitDirect(uint32_t frf=0) override
Starts direct mode transmission.
Definition: SX126x.cpp:309
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN...
Definition: PhysicalLayer.h:13
uint32_t getTimeOnAir(size_t len)
Get expected time-on-air for a given size of payload.
Definition: SX126x.cpp:1098
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:607
int16_t fixedPacketLengthMode(uint8_t len=SX126X_MAX_PACKET_LENGTH)
Set modem in fixed packet length mode. Available in FSK mode only.
Definition: SX126x.cpp:1090
-
int16_t setRegulatorDCDC()
Set regulator mode to DC-DC.
Definition: SX126x.cpp:1145
+
int16_t setRegulatorDCDC()
Set regulator mode to DC-DC.
Definition: SX126x.cpp:1152
int16_t setNodeAddress(uint8_t nodeAddr)
Sets node address. Calling this method will also enable address filtering for node address only...
Definition: SX126x.cpp:915
int16_t receiveDirect() override
Starts direct mode reception. Only implemented for PhysicalLayer compatibility, as SX126x series does...
Definition: SX126x.cpp:325
-
int16_t setRegulatorLDO()
Set regulator mode to LDO.
Definition: SX126x.cpp:1141
+
int16_t setRegulatorLDO()
Set regulator mode to LDO.
Definition: SX126x.cpp:1148
int16_t setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)
Sets CRC configuration.
Definition: SX126x.cpp:960
int16_t setPreambleLength(uint16_t preambleLength)
Sets preamble length for LoRa or FSK modem. Allowed values range from 1 to 65535. ...
Definition: SX126x.cpp:717
-
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition: SX126x.cpp:1133
+
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition: SX126x.cpp:1140
int16_t sleep(bool retainConfig=true)
Sets the module to sleep mode.
Definition: SX126x.cpp:378
int16_t disableAddressFiltering()
Disables address filtering. Calling this method will also erase previously set addresses.
Definition: SX126x.cpp:949
int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa spreading factor. Allowed values range from 5 to 12.
Definition: SX126x.cpp:658
-
int16_t setTCXO(float voltage, uint32_t delay=5000)
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
Definition: SX126x.cpp:1199
+
int16_t setTCXO(float voltage, uint32_t delay=5000)
Sets TCXO (Temperature Compensated Crystal Oscillator) configuration.
Definition: SX126x.cpp:1206
int16_t receive(uint8_t *data, size_t len) override
Blocking binary receive method. Overloads for string-based transmissions are implemented in PhysicalL...
Definition: SX126x.cpp:252
-
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method...
Definition: SX126x.cpp:1157
+
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method...
Definition: SX126x.cpp:1164
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:57
size_t getPacketLength(bool update=true) override
Query modem for the packet length of received payload.
Definition: SX126x.cpp:1083
diff --git a/class_physical_layer.html b/class_physical_layer.html index 2a788faf..fff41057 100644 --- a/class_physical_layer.html +++ b/class_physical_layer.html @@ -386,7 +386,7 @@ Public Member Functions

Get one truly random byte from RSSI noise. Must be implemented in module class.

Returns
TRNG byte.
-

Implemented in SX127x, CC1101, SX126x, RF69, Si443x, SX128x, and nRF24.

+

Implemented in SX127x, SX126x, CC1101, RF69, Si443x, SX128x, and nRF24.

diff --git a/class_s_x1261-members.html b/class_s_x1261-members.html index 0614bb12..8df2a5d7 100644 --- a/class_s_x1261-members.html +++ b/class_s_x1261-members.html @@ -102,63 +102,64 @@ $(document).ready(function(){initNavTree('class_s_x1261.html','');}); getFreqStep() constPhysicalLayer getPacketLength(bool update=true) overrideSX126xvirtual getRSSI()SX126x - getSNR()SX126x - getTimeOnAir(size_t len)SX126x - implicitHeader(size_t len)SX126x - PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer - random()SX126xvirtual - PhysicalLayer::random(int32_t max)PhysicalLayer - PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer - readData(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer - receive(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer - receiveDirect() overrideSX126xvirtual - reset(bool verify=true)SX126x - scanChannel()SX126x - setBandwidth(float bw)SX126x - setBitRate(float br)SX126x - setBroadcastAddress(uint8_t broadAddr)SX126x - setCodingRate(uint8_t cr)SX126x - setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x - setCurrentLimit(float currentLimit)SX126x - setDataShaping(uint8_t sh) overrideSX126xvirtual - setDio1Action(void(*func)(void))SX126x - setDio2AsRfSwitch(bool enable=true)SX126x - setEncoding(uint8_t encoding) overrideSX126xvirtual - setFrequency(float freq, bool calibrate=true)SX1262 - setFrequencyDeviation(float freqDev) overrideSX126xvirtual - setNodeAddress(uint8_t nodeAddr)SX126x - setOutputPower(int8_t power)SX1261 - setPreambleLength(uint16_t preambleLength)SX126x - setRegulatorDCDC()SX126x - setRegulatorLDO()SX126x - setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x - setRxBandwidth(float rxBw)SX126x - setSpreadingFactor(uint8_t sf)SX126x - setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x - setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x - setSyncWord(uint8_t *syncWord, uint8_t len)SX126x - setTCXO(float voltage, uint32_t delay=5000)SX126x - setWhitening(bool enabled, uint16_t initial=0x0100)SX126x - sleep(bool retainConfig=true)SX126x - standby() overrideSX126xvirtual - standby(uint8_t mode)SX126x - startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x - startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x - startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x - startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer - SX1261(Module *mod)SX1261 - SX1262(Module *mod)SX1262 - SX126x(Module *mod)SX126x - transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer - transmitDirect(uint32_t frf=0) overrideSX126xvirtual - variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x + getRSSIInst()SX126x + getSNR()SX126x + getTimeOnAir(size_t len)SX126x + implicitHeader(size_t len)SX126x + PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer + random()SX126xvirtual + PhysicalLayer::random(int32_t max)PhysicalLayer + PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer + readData(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer + receive(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer + receiveDirect() overrideSX126xvirtual + reset(bool verify=true)SX126x + scanChannel()SX126x + setBandwidth(float bw)SX126x + setBitRate(float br)SX126x + setBroadcastAddress(uint8_t broadAddr)SX126x + setCodingRate(uint8_t cr)SX126x + setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x + setCurrentLimit(float currentLimit)SX126x + setDataShaping(uint8_t sh) overrideSX126xvirtual + setDio1Action(void(*func)(void))SX126x + setDio2AsRfSwitch(bool enable=true)SX126x + setEncoding(uint8_t encoding) overrideSX126xvirtual + setFrequency(float freq, bool calibrate=true)SX1262 + setFrequencyDeviation(float freqDev) overrideSX126xvirtual + setNodeAddress(uint8_t nodeAddr)SX126x + setOutputPower(int8_t power)SX1261 + setPreambleLength(uint16_t preambleLength)SX126x + setRegulatorDCDC()SX126x + setRegulatorLDO()SX126x + setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x + setRxBandwidth(float rxBw)SX126x + setSpreadingFactor(uint8_t sf)SX126x + setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x + setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x + setSyncWord(uint8_t *syncWord, uint8_t len)SX126x + setTCXO(float voltage, uint32_t delay=5000)SX126x + setWhitening(bool enabled, uint16_t initial=0x0100)SX126x + sleep(bool retainConfig=true)SX126x + standby() overrideSX126xvirtual + standby(uint8_t mode)SX126x + startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x + startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x + startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x + startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer + SX1261(Module *mod)SX1261 + SX1262(Module *mod)SX1262 + SX126x(Module *mod)SX126x + transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer + transmitDirect(uint32_t frf=0) overrideSX126xvirtual + variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x diff --git a/class_s_x1261.html b/class_s_x1261.html index 63cfa70a..837de922 100644 --- a/class_s_x1261.html +++ b/class_s_x1261.html @@ -268,6 +268,9 @@ void 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...
  diff --git a/class_s_x1262-members.html b/class_s_x1262-members.html index ede92bde..7f704cb5 100644 --- a/class_s_x1262-members.html +++ b/class_s_x1262-members.html @@ -102,62 +102,63 @@ $(document).ready(function(){initNavTree('class_s_x1262.html','');}); getFreqStep() constPhysicalLayer getPacketLength(bool update=true) overrideSX126xvirtual getRSSI()SX126x - getSNR()SX126x - getTimeOnAir(size_t len)SX126x - implicitHeader(size_t len)SX126x - PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer - random()SX126xvirtual - PhysicalLayer::random(int32_t max)PhysicalLayer - PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer - readData(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer - receive(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer - receiveDirect() overrideSX126xvirtual - reset(bool verify=true)SX126x - scanChannel()SX126x - setBandwidth(float bw)SX126x - setBitRate(float br)SX126x - setBroadcastAddress(uint8_t broadAddr)SX126x - setCodingRate(uint8_t cr)SX126x - setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x - setCurrentLimit(float currentLimit)SX126x - setDataShaping(uint8_t sh) overrideSX126xvirtual - setDio1Action(void(*func)(void))SX126x - setDio2AsRfSwitch(bool enable=true)SX126x - setEncoding(uint8_t encoding) overrideSX126xvirtual - setFrequency(float freq, bool calibrate=true)SX1262 - setFrequencyDeviation(float freqDev) overrideSX126xvirtual - setNodeAddress(uint8_t nodeAddr)SX126x - setOutputPower(int8_t power)SX1262 - setPreambleLength(uint16_t preambleLength)SX126x - setRegulatorDCDC()SX126x - setRegulatorLDO()SX126x - setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x - setRxBandwidth(float rxBw)SX126x - setSpreadingFactor(uint8_t sf)SX126x - setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x - setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x - setSyncWord(uint8_t *syncWord, uint8_t len)SX126x - setTCXO(float voltage, uint32_t delay=5000)SX126x - setWhitening(bool enabled, uint16_t initial=0x0100)SX126x - sleep(bool retainConfig=true)SX126x - standby() overrideSX126xvirtual - standby(uint8_t mode)SX126x - startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x - startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x - startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x - startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer - SX1262(Module *mod)SX1262 - SX126x(Module *mod)SX126x - transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer - transmitDirect(uint32_t frf=0) overrideSX126xvirtual - variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x + getRSSIInst()SX126x + getSNR()SX126x + getTimeOnAir(size_t len)SX126x + implicitHeader(size_t len)SX126x + PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer + random()SX126xvirtual + PhysicalLayer::random(int32_t max)PhysicalLayer + PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer + readData(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer + receive(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer + receiveDirect() overrideSX126xvirtual + reset(bool verify=true)SX126x + scanChannel()SX126x + setBandwidth(float bw)SX126x + setBitRate(float br)SX126x + setBroadcastAddress(uint8_t broadAddr)SX126x + setCodingRate(uint8_t cr)SX126x + setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x + setCurrentLimit(float currentLimit)SX126x + setDataShaping(uint8_t sh) overrideSX126xvirtual + setDio1Action(void(*func)(void))SX126x + setDio2AsRfSwitch(bool enable=true)SX126x + setEncoding(uint8_t encoding) overrideSX126xvirtual + setFrequency(float freq, bool calibrate=true)SX1262 + setFrequencyDeviation(float freqDev) overrideSX126xvirtual + setNodeAddress(uint8_t nodeAddr)SX126x + setOutputPower(int8_t power)SX1262 + setPreambleLength(uint16_t preambleLength)SX126x + setRegulatorDCDC()SX126x + setRegulatorLDO()SX126x + setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x + setRxBandwidth(float rxBw)SX126x + setSpreadingFactor(uint8_t sf)SX126x + setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x + setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x + setSyncWord(uint8_t *syncWord, uint8_t len)SX126x + setTCXO(float voltage, uint32_t delay=5000)SX126x + setWhitening(bool enabled, uint16_t initial=0x0100)SX126x + sleep(bool retainConfig=true)SX126x + standby() overrideSX126xvirtual + standby(uint8_t mode)SX126x + startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x + startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x + startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x + startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer + SX1262(Module *mod)SX1262 + SX126x(Module *mod)SX126x + transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer + transmitDirect(uint32_t frf=0) overrideSX126xvirtual + variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x diff --git a/class_s_x1262.html b/class_s_x1262.html index 0d493e91..e19784f8 100644 --- a/class_s_x1262.html +++ b/class_s_x1262.html @@ -261,6 +261,9 @@ void 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...
  diff --git a/class_s_x1268-members.html b/class_s_x1268-members.html index aabd7c91..69b01b68 100644 --- a/class_s_x1268-members.html +++ b/class_s_x1268-members.html @@ -102,62 +102,63 @@ $(document).ready(function(){initNavTree('class_s_x1268.html','');}); getFreqStep() constPhysicalLayer getPacketLength(bool update=true) overrideSX126xvirtual getRSSI()SX126x - getSNR()SX126x - getTimeOnAir(size_t len)SX126x - implicitHeader(size_t len)SX126x - PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer - random()SX126xvirtual - PhysicalLayer::random(int32_t max)PhysicalLayer - PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer - readData(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer - receive(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer - receiveDirect() overrideSX126xvirtual - reset(bool verify=true)SX126x - scanChannel()SX126x - setBandwidth(float bw)SX126x - setBitRate(float br)SX126x - setBroadcastAddress(uint8_t broadAddr)SX126x - setCodingRate(uint8_t cr)SX126x - setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x - setCurrentLimit(float currentLimit)SX126x - setDataShaping(uint8_t sh) overrideSX126xvirtual - setDio1Action(void(*func)(void))SX126x - setDio2AsRfSwitch(bool enable=true)SX126x - setEncoding(uint8_t encoding) overrideSX126xvirtual - setFrequency(float freq, bool calibrate=true)SX1268 - setFrequencyDeviation(float freqDev) overrideSX126xvirtual - setNodeAddress(uint8_t nodeAddr)SX126x - setOutputPower(int8_t power)SX1268 - setPreambleLength(uint16_t preambleLength)SX126x - setRegulatorDCDC()SX126x - setRegulatorLDO()SX126x - setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x - setRxBandwidth(float rxBw)SX126x - setSpreadingFactor(uint8_t sf)SX126x - setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x - setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x - setSyncWord(uint8_t *syncWord, uint8_t len)SX126x - setTCXO(float voltage, uint32_t delay=5000)SX126x - setWhitening(bool enabled, uint16_t initial=0x0100)SX126x - sleep(bool retainConfig=true)SX126x - standby() overrideSX126xvirtual - standby(uint8_t mode)SX126x - startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x - startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x - startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x - startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer - SX1268(Module *mod)SX1268 - SX126x(Module *mod)SX126x - transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer - transmitDirect(uint32_t frf=0) overrideSX126xvirtual - variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x + getRSSIInst()SX126x + getSNR()SX126x + getTimeOnAir(size_t len)SX126x + implicitHeader(size_t len)SX126x + PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer + random()SX126xvirtual + PhysicalLayer::random(int32_t max)PhysicalLayer + PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer + readData(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer + receive(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer + receiveDirect() overrideSX126xvirtual + reset(bool verify=true)SX126x + scanChannel()SX126x + setBandwidth(float bw)SX126x + setBitRate(float br)SX126x + setBroadcastAddress(uint8_t broadAddr)SX126x + setCodingRate(uint8_t cr)SX126x + setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x + setCurrentLimit(float currentLimit)SX126x + setDataShaping(uint8_t sh) overrideSX126xvirtual + setDio1Action(void(*func)(void))SX126x + setDio2AsRfSwitch(bool enable=true)SX126x + setEncoding(uint8_t encoding) overrideSX126xvirtual + setFrequency(float freq, bool calibrate=true)SX1268 + setFrequencyDeviation(float freqDev) overrideSX126xvirtual + setNodeAddress(uint8_t nodeAddr)SX126x + setOutputPower(int8_t power)SX1268 + setPreambleLength(uint16_t preambleLength)SX126x + setRegulatorDCDC()SX126x + setRegulatorLDO()SX126x + setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x + setRxBandwidth(float rxBw)SX126x + setSpreadingFactor(uint8_t sf)SX126x + setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x + setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x + setSyncWord(uint8_t *syncWord, uint8_t len)SX126x + setTCXO(float voltage, uint32_t delay=5000)SX126x + setWhitening(bool enabled, uint16_t initial=0x0100)SX126x + sleep(bool retainConfig=true)SX126x + standby() overrideSX126xvirtual + standby(uint8_t mode)SX126x + startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x + startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x + startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x + startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer + SX1268(Module *mod)SX1268 + SX126x(Module *mod)SX126x + transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer + transmitDirect(uint32_t frf=0) overrideSX126xvirtual + variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x diff --git a/class_s_x1268.html b/class_s_x1268.html index 92a56f4e..1dac3dd7 100644 --- a/class_s_x1268.html +++ b/class_s_x1268.html @@ -260,6 +260,9 @@ void 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...
  diff --git a/class_s_x126x-members.html b/class_s_x126x-members.html index 0bc12d4e..5c097da3 100644 --- a/class_s_x126x-members.html +++ b/class_s_x126x-members.html @@ -100,59 +100,60 @@ $(document).ready(function(){initNavTree('class_s_x126x.html','');}); getFreqStep() constPhysicalLayer getPacketLength(bool update=true) overrideSX126xvirtual getRSSI()SX126x - getSNR()SX126x - getTimeOnAir(size_t len)SX126x - implicitHeader(size_t len)SX126x - PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer - random()SX126xvirtual - PhysicalLayer::random(int32_t max)PhysicalLayer - PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer - readData(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer - receive(uint8_t *data, size_t len) overrideSX126xvirtual - PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer - receiveDirect() overrideSX126xvirtual - reset(bool verify=true)SX126x - scanChannel()SX126x - setBandwidth(float bw)SX126x - setBitRate(float br)SX126x - setBroadcastAddress(uint8_t broadAddr)SX126x - setCodingRate(uint8_t cr)SX126x - setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x - setCurrentLimit(float currentLimit)SX126x - setDataShaping(uint8_t sh) overrideSX126xvirtual - setDio1Action(void(*func)(void))SX126x - setDio2AsRfSwitch(bool enable=true)SX126x - setEncoding(uint8_t encoding) overrideSX126xvirtual - setFrequencyDeviation(float freqDev) overrideSX126xvirtual - setNodeAddress(uint8_t nodeAddr)SX126x - setPreambleLength(uint16_t preambleLength)SX126x - setRegulatorDCDC()SX126x - setRegulatorLDO()SX126x - setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x - setRxBandwidth(float rxBw)SX126x - setSpreadingFactor(uint8_t sf)SX126x - setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x - setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x - setSyncWord(uint8_t *syncWord, uint8_t len)SX126x - setTCXO(float voltage, uint32_t delay=5000)SX126x - setWhitening(bool enabled, uint16_t initial=0x0100)SX126x - sleep(bool retainConfig=true)SX126x - standby() overrideSX126xvirtual - standby(uint8_t mode)SX126x - startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x - startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x - startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x - startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer - SX126x(Module *mod)SX126x - transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual - PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer - PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer - transmitDirect(uint32_t frf=0) overrideSX126xvirtual - variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x + getRSSIInst()SX126x + getSNR()SX126x + getTimeOnAir(size_t len)SX126x + implicitHeader(size_t len)SX126x + PhysicalLayer(float freqStep, size_t maxPacketLength)PhysicalLayer + random()SX126xvirtual + PhysicalLayer::random(int32_t max)PhysicalLayer + PhysicalLayer::random(int32_t min, int32_t max)PhysicalLayer + readData(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::readData(String &str, size_t len=0)PhysicalLayer + receive(uint8_t *data, size_t len) overrideSX126xvirtual + PhysicalLayer::receive(String &str, size_t len=0)PhysicalLayer + receiveDirect() overrideSX126xvirtual + reset(bool verify=true)SX126x + scanChannel()SX126x + setBandwidth(float bw)SX126x + setBitRate(float br)SX126x + setBroadcastAddress(uint8_t broadAddr)SX126x + setCodingRate(uint8_t cr)SX126x + setCRC(uint8_t len, uint16_t initial=0x1D0F, uint16_t polynomial=0x1021, bool inverted=true)SX126x + setCurrentLimit(float currentLimit)SX126x + setDataShaping(uint8_t sh) overrideSX126xvirtual + setDio1Action(void(*func)(void))SX126x + setDio2AsRfSwitch(bool enable=true)SX126x + setEncoding(uint8_t encoding) overrideSX126xvirtual + setFrequencyDeviation(float freqDev) overrideSX126xvirtual + setNodeAddress(uint8_t nodeAddr)SX126x + setPreambleLength(uint16_t preambleLength)SX126x + setRegulatorDCDC()SX126x + setRegulatorLDO()SX126x + setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)SX126x + setRxBandwidth(float rxBw)SX126x + setSpreadingFactor(uint8_t sf)SX126x + setSyncBits(uint8_t *syncWord, uint8_t bitsLen)SX126x + setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)SX126x + setSyncWord(uint8_t *syncWord, uint8_t len)SX126x + setTCXO(float voltage, uint32_t delay=5000)SX126x + setWhitening(bool enabled, uint16_t initial=0x0100)SX126x + sleep(bool retainConfig=true)SX126x + standby() overrideSX126xvirtual + standby(uint8_t mode)SX126x + startReceive(uint32_t timeout=SX126X_RX_TIMEOUT_INF)SX126x + startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod)SX126x + startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8)SX126x + startTransmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::startTransmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::startTransmit(const char *str, uint8_t addr=0)PhysicalLayer + SX126x(Module *mod)SX126x + transmit(uint8_t *data, size_t len, uint8_t addr=0) overrideSX126xvirtual + PhysicalLayer::transmit(__FlashStringHelper *fstr, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(String &str, uint8_t addr=0)PhysicalLayer + PhysicalLayer::transmit(const char *str, uint8_t addr=0)PhysicalLayer + transmitDirect(uint32_t frf=0) overrideSX126xvirtual + variablePacketLengthMode(uint8_t maxLen=SX126X_MAX_PACKET_LENGTH)SX126x diff --git a/class_s_x126x.html b/class_s_x126x.html index 70f3bb27..d07b0f97 100644 --- a/class_s_x126x.html +++ b/class_s_x126x.html @@ -246,6 +246,9 @@ void 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...
  @@ -692,6 +695,26 @@ void 
Returns
RSSI of the last received packet in dBm.
+ + +
+

◆ getRSSIInst()

+ +
+
+ + + + + + + +
float SX126x::getRSSIInst ()
+
+ +

Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT implementation.

+
Returns
Instantaneous RSSI value in dBm, in steps of 0.5dBm
+
diff --git a/class_s_x126x.js b/class_s_x126x.js index b741aa55..f8878c50 100644 --- a/class_s_x126x.js +++ b/class_s_x126x.js @@ -13,6 +13,7 @@ var class_s_x126x = [ "getDataRate", "class_s_x126x.html#acbe2d75b1e2df8bcc58c4fd9d8e6e4f9", null ], [ "getPacketLength", "class_s_x126x.html#ac4ef8c8751a3c09d64e431684840c987", null ], [ "getRSSI", "class_s_x126x.html#a0e5f0032a91686b9673a48c908eb1925", null ], + [ "getRSSIInst", "class_s_x126x.html#ae36664f9c605a8fe74b2f357e0ec3323", null ], [ "getSNR", "class_s_x126x.html#ae36823d3539667bdf7d2f073bd4fa1ca", null ], [ "getTimeOnAir", "class_s_x126x.html#a7e342ddbef84cf845bef8f4448b8da10", null ], [ "implicitHeader", "class_s_x126x.html#adec09cba71494bd927ad1da786606ca6", null ], diff --git a/functions_func_g.html b/functions_func_g.html index db353ca6..64bbc9a1 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -157,6 +157,9 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');}); , SX1278 , SX128x +
  • getRSSIInst() +: SX126x +
  • getRst() : Module
  • diff --git a/functions_g.html b/functions_g.html index f2bf15dc..b7ba4a2b 100644 --- a/functions_g.html +++ b/functions_g.html @@ -157,6 +157,9 @@ $(document).ready(function(){initNavTree('functions_g.html','');}); , SX1278 , SX128x +
  • getRSSIInst() +: SX126x +
  • getRst() : Module
  • diff --git a/navtreedata.js b/navtreedata.js index f115f606..702074e6 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -24,8 +24,8 @@ var NAVTREEINDEX = [ "_a_f_s_k_8h_source.html", "class_module.html#ad5767216ba9340ae6d86915b12e89bd6", -"class_s_x1272.html#aaa5a787164fb216c12b8dea4d810f7f3", -"dir_7b8feacc70eb38d5fd56f060c649a59c.html" +"class_s_x1272.html#a9ffe467a6baaeaa079e02c3f1f43f626", +"dir_79690749eba542503bb1a9a3dbb495e1.html" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex1.js b/navtreeindex1.js index 907501fa..0b62bfd4 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -184,61 +184,62 @@ var NAVTREEINDEX1 = "class_s_x1268.html#a6ad998275281de5c6f24f8a64db88052":[3,0,33,3], "class_s_x1268.html#a6bc50597d50fd9a2387628e452eac42f":[3,0,33,0], "class_s_x126x.html":[3,0,34], -"class_s_x126x.html#a0da667fe702d7b4aafaa4bf7e69ea40d":[3,0,34,29], +"class_s_x126x.html#a0da667fe702d7b4aafaa4bf7e69ea40d":[3,0,34,30], "class_s_x126x.html#a0e5f0032a91686b9673a48c908eb1925":[3,0,34,12], "class_s_x126x.html#a1b97488c6887df2e0291bba1b852605e":[3,0,34,2], -"class_s_x126x.html#a1d8f4deb555844b24c2426dd86e69676":[3,0,34,28], -"class_s_x126x.html#a21c263ce1a339faa74c568d9afb81cd2":[3,0,34,36], -"class_s_x126x.html#a288257242e483cb3eb6944333179dd26":[3,0,34,37], -"class_s_x126x.html#a2b3eb51117558c58384b03de4b7bfe60":[3,0,34,31], +"class_s_x126x.html#a1d8f4deb555844b24c2426dd86e69676":[3,0,34,29], +"class_s_x126x.html#a21c263ce1a339faa74c568d9afb81cd2":[3,0,34,37], +"class_s_x126x.html#a288257242e483cb3eb6944333179dd26":[3,0,34,38], +"class_s_x126x.html#a2b3eb51117558c58384b03de4b7bfe60":[3,0,34,32], "class_s_x126x.html#a2e500e5b6044ccab8f6b19af4ffa917c":[3,0,34,3], -"class_s_x126x.html#a2f60df59c80241d98ce078c0417a7f08":[3,0,34,22], -"class_s_x126x.html#a3350cbfab628956c1a456383ac7bb2b2":[3,0,34,17], +"class_s_x126x.html#a2f60df59c80241d98ce078c0417a7f08":[3,0,34,23], +"class_s_x126x.html#a3350cbfab628956c1a456383ac7bb2b2":[3,0,34,18], "class_s_x126x.html#a3765f534418d4e0540c179621c019138":[3,0,34,6], -"class_s_x126x.html#a38e6d7831f35893a5b8328c10a2901bf":[3,0,34,42], -"class_s_x126x.html#a3dd88861454d8b6e742470dee04961be":[3,0,34,16], +"class_s_x126x.html#a38e6d7831f35893a5b8328c10a2901bf":[3,0,34,43], +"class_s_x126x.html#a3dd88861454d8b6e742470dee04961be":[3,0,34,17], "class_s_x126x.html#a420c23bb1861646e29f44c0f4c646ee8":[3,0,34,8], -"class_s_x126x.html#a5052dc09f4b10ee22e169129f368685f":[3,0,34,48], -"class_s_x126x.html#a514cabe74bbe3434d7e4f244c4077752":[3,0,34,33], -"class_s_x126x.html#a57bee6f4b3a3b7ec646ac8de347ee0d6":[3,0,34,43], -"class_s_x126x.html#a59d443c02d4620cda32c63a00c6bcc22":[3,0,34,38], -"class_s_x126x.html#a5ae69309ca0cf5f13c60f2d162916ff8":[3,0,34,35], -"class_s_x126x.html#a67702de41ae866b9f9d73234fc9ae376":[3,0,34,44], +"class_s_x126x.html#a5052dc09f4b10ee22e169129f368685f":[3,0,34,49], +"class_s_x126x.html#a514cabe74bbe3434d7e4f244c4077752":[3,0,34,34], +"class_s_x126x.html#a57bee6f4b3a3b7ec646ac8de347ee0d6":[3,0,34,44], +"class_s_x126x.html#a59d443c02d4620cda32c63a00c6bcc22":[3,0,34,39], +"class_s_x126x.html#a5ae69309ca0cf5f13c60f2d162916ff8":[3,0,34,36], +"class_s_x126x.html#a67702de41ae866b9f9d73234fc9ae376":[3,0,34,45], "class_s_x126x.html#a6848afe4c16a47edb3e0b342a86ecdfd":[3,0,34,4], -"class_s_x126x.html#a6b50cb78f02a3d93939437eb48489d3f":[3,0,34,50], -"class_s_x126x.html#a7a1579e2557c36a4a34b09039c0d0c71":[3,0,34,46], -"class_s_x126x.html#a7cd95a5f2e39ae8fb1a3040e77fa21a3":[3,0,34,32], -"class_s_x126x.html#a7deeef45d7f64a4018a3e56aaea4eb0e":[3,0,34,23], -"class_s_x126x.html#a7e342ddbef84cf845bef8f4448b8da10":[3,0,34,14], -"class_s_x126x.html#a8a18aee2bf05793aa29b5cf6b47bb435":[3,0,34,19], -"class_s_x126x.html#a8f971dca834be7e0470a9a9f0c01854e":[3,0,34,27], -"class_s_x126x.html#a921aa8afb8d33b2660731c1f8d67664b":[3,0,34,53], -"class_s_x126x.html#a95007639c2648a1dbb614493224606f1":[3,0,34,26], -"class_s_x126x.html#a9aa6dd05dd32ef717a06cc8ba28ff71f":[3,0,34,20], -"class_s_x126x.html#a9d92dce566f8aefa836fe8f332e9560f":[3,0,34,41], -"class_s_x126x.html#aa11ab2c6f4488daf2ece93288e05c504":[3,0,34,54], +"class_s_x126x.html#a6b50cb78f02a3d93939437eb48489d3f":[3,0,34,51], +"class_s_x126x.html#a7a1579e2557c36a4a34b09039c0d0c71":[3,0,34,47], +"class_s_x126x.html#a7cd95a5f2e39ae8fb1a3040e77fa21a3":[3,0,34,33], +"class_s_x126x.html#a7deeef45d7f64a4018a3e56aaea4eb0e":[3,0,34,24], +"class_s_x126x.html#a7e342ddbef84cf845bef8f4448b8da10":[3,0,34,15], +"class_s_x126x.html#a8a18aee2bf05793aa29b5cf6b47bb435":[3,0,34,20], +"class_s_x126x.html#a8f971dca834be7e0470a9a9f0c01854e":[3,0,34,28], +"class_s_x126x.html#a921aa8afb8d33b2660731c1f8d67664b":[3,0,34,54], +"class_s_x126x.html#a95007639c2648a1dbb614493224606f1":[3,0,34,27], +"class_s_x126x.html#a9aa6dd05dd32ef717a06cc8ba28ff71f":[3,0,34,21], +"class_s_x126x.html#a9d92dce566f8aefa836fe8f332e9560f":[3,0,34,42], +"class_s_x126x.html#aa11ab2c6f4488daf2ece93288e05c504":[3,0,34,55], "class_s_x126x.html#aa668babb0bd129b2facee9fd280525ab":[3,0,34,9], "class_s_x126x.html#aa768ce757a0f7ee66cdd72cab7a855fa":[3,0,34,7], -"class_s_x126x.html#aab18364237ddac0c56aeaf63f08cf009":[3,0,34,52], +"class_s_x126x.html#aab18364237ddac0c56aeaf63f08cf009":[3,0,34,53], "class_s_x126x.html#aaca5a8fa8a3e634dd1b5b4c2bb5058d8":[3,0,34,0], -"class_s_x126x.html#ab00f765bbfbfaa8c693532ea3a90c29b":[3,0,34,34], -"class_s_x126x.html#ab843614658a79db7aa24e48d5b6e84f1":[3,0,34,51], +"class_s_x126x.html#ab00f765bbfbfaa8c693532ea3a90c29b":[3,0,34,35], +"class_s_x126x.html#ab843614658a79db7aa24e48d5b6e84f1":[3,0,34,52], "class_s_x126x.html#ab9ce38cfeaa36ddcc2d82b2974d7088c":[3,0,34,1], -"class_s_x126x.html#abd8eea7e468db3d6064c19d4934d5034":[3,0,34,24], +"class_s_x126x.html#abd8eea7e468db3d6064c19d4934d5034":[3,0,34,25], "class_s_x126x.html#ac4ef8c8751a3c09d64e431684840c987":[3,0,34,11], -"class_s_x126x.html#ac594fbb30c5010658c970a64654c7162":[3,0,34,40], +"class_s_x126x.html#ac594fbb30c5010658c970a64654c7162":[3,0,34,41], "class_s_x126x.html#acbe2d75b1e2df8bcc58c4fd9d8e6e4f9":[3,0,34,10], -"class_s_x126x.html#ad7569396f09f3867dc1bd4d4a0613acd":[3,0,34,47], -"class_s_x126x.html#adc46b6adda2d0e82e25ed1fc78274136":[3,0,34,49], -"class_s_x126x.html#adec09cba71494bd927ad1da786606ca6":[3,0,34,15], -"class_s_x126x.html#ae36823d3539667bdf7d2f073bd4fa1ca":[3,0,34,13], -"class_s_x126x.html#ae3db6b29c482d94eef8a43cd8b5751c0":[3,0,34,18], -"class_s_x126x.html#ae46e08d579f4acbad029b4cd4f4fffaf":[3,0,34,30], -"class_s_x126x.html#ae5993359ace652fbdc862eb23fdd263d":[3,0,34,39], -"class_s_x126x.html#ae9f24414bd684434c310df54b3558f21":[3,0,34,21], -"class_s_x126x.html#afb5509f0705cdd971065251ed6b2fb4e":[3,0,34,45], +"class_s_x126x.html#ad7569396f09f3867dc1bd4d4a0613acd":[3,0,34,48], +"class_s_x126x.html#adc46b6adda2d0e82e25ed1fc78274136":[3,0,34,50], +"class_s_x126x.html#adec09cba71494bd927ad1da786606ca6":[3,0,34,16], +"class_s_x126x.html#ae36664f9c605a8fe74b2f357e0ec3323":[3,0,34,13], +"class_s_x126x.html#ae36823d3539667bdf7d2f073bd4fa1ca":[3,0,34,14], +"class_s_x126x.html#ae3db6b29c482d94eef8a43cd8b5751c0":[3,0,34,19], +"class_s_x126x.html#ae46e08d579f4acbad029b4cd4f4fffaf":[3,0,34,31], +"class_s_x126x.html#ae5993359ace652fbdc862eb23fdd263d":[3,0,34,40], +"class_s_x126x.html#ae9f24414bd684434c310df54b3558f21":[3,0,34,22], +"class_s_x126x.html#afb5509f0705cdd971065251ed6b2fb4e":[3,0,34,46], "class_s_x126x.html#afc3a7a42c401b6c44e00cb6c5b9696f2":[3,0,34,5], -"class_s_x126x.html#afd3113858966e878e9c67a1e710bd586":[3,0,34,25], +"class_s_x126x.html#afd3113858966e878e9c67a1e710bd586":[3,0,34,26], "class_s_x1272.html":[3,0,35], "class_s_x1272.html#a0978cc9ecbb7b9d3a017c133506e57ac":[3,0,35,6], "class_s_x1272.html#a0cc8eeb00241031796fc73b08711469b":[3,0,35,7], @@ -248,6 +249,5 @@ var NAVTREEINDEX1 = "class_s_x1272.html#a5a57abb0bc9f474452ffb828b13d1efb":[3,0,35,9], "class_s_x1272.html#a82084ac58502c83d2ada998410307490":[3,0,35,15], "class_s_x1272.html#a91aca64124321c07a67f26b3c6934aea":[3,0,35,10], -"class_s_x1272.html#a960913438feccad4c1913a9222384a5f":[3,0,35,8], -"class_s_x1272.html#a9ffe467a6baaeaa079e02c3f1f43f626":[3,0,35,0] +"class_s_x1272.html#a960913438feccad4c1913a9222384a5f":[3,0,35,8] }; diff --git a/navtreeindex2.js b/navtreeindex2.js index b60fb3cf..b210ff77 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,5 +1,6 @@ var NAVTREEINDEX2 = { +"class_s_x1272.html#a9ffe467a6baaeaa079e02c3f1f43f626":[3,0,35,0], "class_s_x1272.html#aaa5a787164fb216c12b8dea4d810f7f3":[3,0,35,2], "class_s_x1272.html#abb4bbfe8acc6026c833d267d78417b63":[3,0,35,1], "class_s_x1272.html#ae1c57ad5e8496dc28cd3ba9852809852":[3,0,35,13], @@ -248,6 +249,5 @@ var NAVTREEINDEX2 = "dir_68267d1309a1af8e8297ef4c3efbcdba.html":[4,0,0], "dir_6baa7f88a31cf8c1ad1b651eaa1fd5b9.html":[4,0,0,0,7], "dir_70c194bd40717a4946dbd8bc35f09b17.html":[4,0,0,1,0], -"dir_747c20e84f9dfe1cc835713177129efc.html":[4,0,0,0,10], -"dir_79690749eba542503bb1a9a3dbb495e1.html":[4,0,0,1] +"dir_747c20e84f9dfe1cc835713177129efc.html":[4,0,0,0,10] }; diff --git a/navtreeindex3.js b/navtreeindex3.js index ed482682..cd1f86db 100644 --- a/navtreeindex3.js +++ b/navtreeindex3.js @@ -1,5 +1,6 @@ var NAVTREEINDEX3 = { +"dir_79690749eba542503bb1a9a3dbb495e1.html":[4,0,0,1], "dir_7b8feacc70eb38d5fd56f060c649a59c.html":[4,0,0,0,13], "dir_8d5439df06ea2679013aa8390703d116.html":[4,0,0,0,4], "dir_a6b6d785787649e9a3efd5036a39108c.html":[4,0,0,1,5], @@ -21,8 +22,8 @@ var NAVTREEINDEX3 = "functions_d.html":[3,3,0,3], "functions_e.html":[3,3,0,4], "functions_f.html":[3,3,0,5], -"functions_func.html":[3,3,1,0], "functions_func.html":[3,3,1], +"functions_func.html":[3,3,1,0], "functions_func_0x7e.html":[3,3,1,22], "functions_func_b.html":[3,3,1,1], "functions_func_c.html":[3,3,1,2], @@ -162,8 +163,8 @@ var NAVTREEINDEX3 = "group__uart__config.html#gad418f0922126e27279d1a374fc63e036":[2,1,8], "group__uart__config.html#gae077d53c5c120a989b1f285f183f1b78":[2,1,3], "hierarchy.html":[3,2], -"index.html":[], "index.html":[0], +"index.html":[], "modules.html":[2], "n_r_f24_8h_source.html":[4,0,0,0,4,0], "pages.html":[], diff --git a/search/all_6.js b/search/all_6.js index bb4f0160..24dae708 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -19,6 +19,7 @@ var searchData= ['getpictureheight',['getPictureHeight',['../class_s_s_t_v_client.html#ad66e5082788b507f0f18e6e0e255314d',1,'SSTVClient']]], ['getrangingresult',['getRangingResult',['../class_s_x1280.html#a91f4f241f02cd4e79d15a9ba08eb1e8f',1,'SX1280']]], ['getrssi',['getRSSI',['../class_c_c1101.html#a48fd0452d6f7d7d51ea7d23b2dbe1551',1,'CC1101::getRSSI()'],['../class_r_f69.html#ac4fc3f2b178ef08caec3a9f548f44cd7',1,'RF69::getRSSI()'],['../class_s_x126x.html#a0e5f0032a91686b9673a48c908eb1925',1,'SX126x::getRSSI()'],['../class_s_x1272.html#af5a7dee50a1a7d8261bc62bb869cda92',1,'SX1272::getRSSI()'],['../class_s_x1278.html#a0b1fe4d0b1acfa454d7bab59cdf319fe',1,'SX1278::getRSSI()'],['../class_s_x128x.html#a94d3003277925e2dc3372548b3311008',1,'SX128x::getRSSI()']]], + ['getrssiinst',['getRSSIInst',['../class_s_x126x.html#ae36664f9c605a8fe74b2f357e0ec3323',1,'SX126x']]], ['getrst',['getRst',['../class_module.html#ae352c7a7b997fc1b17189c1312a8347f',1,'Module']]], ['getrx',['getRx',['../class_module.html#a5d66f76c11ac91a35a3a1d9647aa6f6d',1,'Module']]], ['getsnr',['getSNR',['../class_s_x126x.html#ae36823d3539667bdf7d2f073bd4fa1ca',1,'SX126x::getSNR()'],['../class_s_x127x.html#abc5069b39dc31b637ee561d5745e1deb',1,'SX127x::getSNR()'],['../class_s_x128x.html#a89ebf1f4f227cd35c0799c06d5d9c1d2',1,'SX128x::getSNR()']]], diff --git a/search/functions_6.js b/search/functions_6.js index bb4f0160..24dae708 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -19,6 +19,7 @@ var searchData= ['getpictureheight',['getPictureHeight',['../class_s_s_t_v_client.html#ad66e5082788b507f0f18e6e0e255314d',1,'SSTVClient']]], ['getrangingresult',['getRangingResult',['../class_s_x1280.html#a91f4f241f02cd4e79d15a9ba08eb1e8f',1,'SX1280']]], ['getrssi',['getRSSI',['../class_c_c1101.html#a48fd0452d6f7d7d51ea7d23b2dbe1551',1,'CC1101::getRSSI()'],['../class_r_f69.html#ac4fc3f2b178ef08caec3a9f548f44cd7',1,'RF69::getRSSI()'],['../class_s_x126x.html#a0e5f0032a91686b9673a48c908eb1925',1,'SX126x::getRSSI()'],['../class_s_x1272.html#af5a7dee50a1a7d8261bc62bb869cda92',1,'SX1272::getRSSI()'],['../class_s_x1278.html#a0b1fe4d0b1acfa454d7bab59cdf319fe',1,'SX1278::getRSSI()'],['../class_s_x128x.html#a94d3003277925e2dc3372548b3311008',1,'SX128x::getRSSI()']]], + ['getrssiinst',['getRSSIInst',['../class_s_x126x.html#ae36664f9c605a8fe74b2f357e0ec3323',1,'SX126x']]], ['getrst',['getRst',['../class_module.html#ae352c7a7b997fc1b17189c1312a8347f',1,'Module']]], ['getrx',['getRx',['../class_module.html#a5d66f76c11ac91a35a3a1d9647aa6f6d',1,'Module']]], ['getsnr',['getSNR',['../class_s_x126x.html#ae36823d3539667bdf7d2f073bd4fa1ca',1,'SX126x::getSNR()'],['../class_s_x127x.html#abc5069b39dc31b637ee561d5745e1deb',1,'SX127x::getSNR()'],['../class_s_x128x.html#a89ebf1f4f227cd35c0799c06d5d9c1d2',1,'SX128x::getSNR()']]],