From 7536fabe5be459684c471ff399846fa691ab0f52 Mon Sep 17 00:00:00 2001 From: jgromes Date: Sun, 5 Mar 2023 17:08:56 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=208392c?= =?UTF-8?q?ea011edbc7808dd756b42d18ec4b21757be=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _s_x1262_8h_source.html | 2 +- _s_x1268_8h_source.html | 2 +- _s_x126x_8h_source.html | 1143 ++++++++++++++++++++------------------- 3 files changed, 576 insertions(+), 571 deletions(-) diff --git a/_s_x1262_8h_source.html b/_s_x1262_8h_source.html index b1eb41cc..03bc9403 100644 --- a/_s_x1262_8h_source.html +++ b/_s_x1262_8h_source.html @@ -139,7 +139,7 @@ $(document).ready(function(){initNavTree('_s_x1262_8h_source.html',''); initResi
int16_t begin(float freq=434.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power=10, uint16_t preambleLength=8, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for LoRa modem.
Definition: SX1262.cpp:8
virtual int16_t setOutputPower(int8_t power)
Sets output power. Allowed values are in range from -9 to 22 dBm. This method is virtual to allow ove...
Definition: SX1262.cpp:84
int16_t setFrequency(float freq)
Sets carrier frequency. Allowed values are in range from 150.0 to 960.0 MHz.
Definition: SX1262.cpp:50
-
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:425
+
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:430
diff --git a/_s_x1268_8h_source.html b/_s_x1268_8h_source.html index f2db7144..609633e5 100644 --- a/_s_x1268_8h_source.html +++ b/_s_x1268_8h_source.html @@ -136,7 +136,7 @@ $(document).ready(function(){initNavTree('_s_x1268_8h_source.html',''); initResi
int16_t setFrequency(float freq)
Sets carrier frequency. Allowed values are in range from 410.0 to 810.0 MHz.
Definition: SX1268.cpp:50
int16_t begin(float freq=434.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=RADIOLIB_SX126X_SYNC_WORD_PRIVATE, int8_t power=10, uint16_t preambleLength=8, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for LoRa modem.
Definition: SX1268.cpp:8
int16_t beginFSK(float freq=434.0, float br=4.8, float freqDev=5.0, float rxBw=156.2, int8_t power=10, uint16_t preambleLength=16, float tcxoVoltage=1.6, bool useRegulatorLDO=false)
Initialization method for FSK modem.
Definition: SX1268.cpp:32
-
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:425
+
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:430
diff --git a/_s_x126x_8h_source.html b/_s_x126x_8h_source.html index 759021fe..3050f5ca 100644 --- a/_s_x126x_8h_source.html +++ b/_s_x126x_8h_source.html @@ -157,583 +157,588 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html',''); initResi
69 #define RADIOLIB_SX126X_CMD_RESET_STATS 0x00
70 
71 #define RADIOLIB_SX126X_CMD_PRAM_UPDATE 0xD9
-
72 #define RADIOLIB_SX126X_CMD_SET_SCAN_PARAMS 0x9A
-
73 
-
74 // SX126X register map
-
75 #define RADIOLIB_SX126X_REG_VERSION_STRING 0x0320
-
76 #define RADIOLIB_SX126X_REG_HOPPING_ENABLE 0x0385
-
77 #define RADIOLIB_SX126X_REG_LR_FHSS_PACKET_LENGTH 0x0386
-
78 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_HOPPING_BLOCKS 0x0387
-
79 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_MSB(X) (0x0388 + (X)*6)
-
80 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_LSB(X) (0x0389 + (X)*6)
-
81 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_0(X) (0x038A + (X)*6)
-
82 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_1(X) (0x038B + (X)*6)
-
83 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_2(X) (0x038C + (X)*6)
-
84 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_3(X) (0x038D + (X)*6)
-
85 #define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_RESULT 0x0401
-
86 #define RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE 0x0580
-
87 #define RADIOLIB_SX126X_REG_DIOX_IN_ENABLE 0x0583
-
88 #define RADIOLIB_SX126X_REG_DIOX_PULL_UP_CTRL 0x0584
-
89 #define RADIOLIB_SX126X_REG_DIOX_PULL_DOWN_CTRL 0x0585
-
90 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0 0x0587
-
91 #define RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE 0x0610
-
92 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1 0x0680
-
93 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
-
94 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
-
95 #define RADIOLIB_SX126X_REG_RX_TX_PLD_LEN 0x06BB
-
96 #define RADIOLIB_SX126X_REG_CRC_INITIAL_MSB 0x06BC
-
97 #define RADIOLIB_SX126X_REG_CRC_INITIAL_LSB 0x06BD
-
98 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
-
99 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
-
100 #define RADIOLIB_SX126X_REG_SYNC_WORD_0 0x06C0
-
101 #define RADIOLIB_SX126X_REG_SYNC_WORD_1 0x06C1
-
102 #define RADIOLIB_SX126X_REG_SYNC_WORD_2 0x06C2
-
103 #define RADIOLIB_SX126X_REG_SYNC_WORD_3 0x06C3
-
104 #define RADIOLIB_SX126X_REG_SYNC_WORD_4 0x06C4
-
105 #define RADIOLIB_SX126X_REG_SYNC_WORD_5 0x06C5
-
106 #define RADIOLIB_SX126X_REG_SYNC_WORD_6 0x06C6
-
107 #define RADIOLIB_SX126X_REG_SYNC_WORD_7 0x06C7
-
108 #define RADIOLIB_SX126X_REG_NODE_ADDRESS 0x06CD
-
109 #define RADIOLIB_SX126X_REG_BROADCAST_ADDRESS 0x06CE
-
110 #define RADIOLIB_SX126X_REG_PAYLOAD_LENGTH 0x0702
-
111 #define RADIOLIB_SX126X_REG_PACKET_PARAMS 0x0704
-
112 #define RADIOLIB_SX126X_REG_IQ_CONFIG 0x0736
-
113 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
-
114 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
-
115 #define RADIOLIB_SX126X_REG_FREQ_ERROR 0x076B
-
116 #define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS 0x07CD
-
117 #define RADIOLIB_SX126X_REG_RX_ADDR_PTR 0x0803
-
118 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_0 0x0819
-
119 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_1 0x081A
-
120 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_2 0x081B
-
121 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_3 0x081C
-
122 #define RADIOLIB_SX126X_REG_TX_MODULATION 0x0889
-
123 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_0 0x088B
-
124 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_1 0x088C
-
125 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_2 0x088D
-
126 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_3 0x088E
-
127 #define RADIOLIB_SX126X_REG_RSSI_AVG_WINDOW 0x089B
-
128 #define RADIOLIB_SX126X_REG_RX_GAIN 0x08AC
-
129 #define RADIOLIB_SX126X_REG_TX_CLAMP_CONFIG 0x08D8
-
130 #define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_N 0x08E3
-
131 #define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_P 0x08E4
-
132 #define RADIOLIB_SX126X_REG_OCP_CONFIGURATION 0x08E7
-
133 #define RADIOLIB_SX126X_REG_RTC_CTRL 0x0902
-
134 #define RADIOLIB_SX126X_REG_XTA_TRIM 0x0911
-
135 #define RADIOLIB_SX126X_REG_XTB_TRIM 0x0912
-
136 #define RADIOLIB_SX126X_REG_DIO3_OUT_VOLTAGE_CTRL 0x0920
-
137 #define RADIOLIB_SX126X_REG_EVENT_MASK 0x0944
-
138 #define RADIOLIB_SX126X_REG_PATCH_MEMORY_BASE 0x8000
-
139 
-
140 // undocumented registers
-
141 #define RADIOLIB_SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
-
142 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
-
143 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
-
144 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
-
145 
+
72 #define RADIOLIB_SX126X_CMD_SET_LBT_SCAN_PARAMS 0x9A
+
73 #define RADIOLIB_SX126X_CMD_SET_SPECTR_SCAN_PARAMS 0x9B
+
74 
+
75 // SX126X register map
+
76 #define RADIOLIB_SX126X_REG_VERSION_STRING 0x0320
+
77 #define RADIOLIB_SX126X_REG_HOPPING_ENABLE 0x0385
+
78 #define RADIOLIB_SX126X_REG_LR_FHSS_PACKET_LENGTH 0x0386
+
79 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_HOPPING_BLOCKS 0x0387
+
80 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_MSB(X) (0x0388 + (X)*6)
+
81 #define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_LSB(X) (0x0389 + (X)*6)
+
82 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_0(X) (0x038A + (X)*6)
+
83 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_1(X) (0x038B + (X)*6)
+
84 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_2(X) (0x038C + (X)*6)
+
85 #define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_3(X) (0x038D + (X)*6)
+
86 #define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_RESULT 0x0401
+
87 #define RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE 0x0580
+
88 #define RADIOLIB_SX126X_REG_DIOX_IN_ENABLE 0x0583
+
89 #define RADIOLIB_SX126X_REG_DIOX_PULL_UP_CTRL 0x0584
+
90 #define RADIOLIB_SX126X_REG_DIOX_PULL_DOWN_CTRL 0x0585
+
91 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0 0x0587
+
92 #define RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE 0x0610
+
93 #define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1 0x0680
+
94 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
+
95 #define RADIOLIB_SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
+
96 #define RADIOLIB_SX126X_REG_RX_TX_PLD_LEN 0x06BB
+
97 #define RADIOLIB_SX126X_REG_CRC_INITIAL_MSB 0x06BC
+
98 #define RADIOLIB_SX126X_REG_CRC_INITIAL_LSB 0x06BD
+
99 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
+
100 #define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
+
101 #define RADIOLIB_SX126X_REG_SYNC_WORD_0 0x06C0
+
102 #define RADIOLIB_SX126X_REG_SYNC_WORD_1 0x06C1
+
103 #define RADIOLIB_SX126X_REG_SYNC_WORD_2 0x06C2
+
104 #define RADIOLIB_SX126X_REG_SYNC_WORD_3 0x06C3
+
105 #define RADIOLIB_SX126X_REG_SYNC_WORD_4 0x06C4
+
106 #define RADIOLIB_SX126X_REG_SYNC_WORD_5 0x06C5
+
107 #define RADIOLIB_SX126X_REG_SYNC_WORD_6 0x06C6
+
108 #define RADIOLIB_SX126X_REG_SYNC_WORD_7 0x06C7
+
109 #define RADIOLIB_SX126X_REG_NODE_ADDRESS 0x06CD
+
110 #define RADIOLIB_SX126X_REG_BROADCAST_ADDRESS 0x06CE
+
111 #define RADIOLIB_SX126X_REG_PAYLOAD_LENGTH 0x0702
+
112 #define RADIOLIB_SX126X_REG_PACKET_PARAMS 0x0704
+
113 #define RADIOLIB_SX126X_REG_IQ_CONFIG 0x0736
+
114 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
+
115 #define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
+
116 #define RADIOLIB_SX126X_REG_FREQ_ERROR 0x076B
+
117 #define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS 0x07CD
+
118 #define RADIOLIB_SX126X_REG_RX_ADDR_PTR 0x0803
+
119 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_0 0x0819
+
120 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_1 0x081A
+
121 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_2 0x081B
+
122 #define RADIOLIB_SX126X_REG_RANDOM_NUMBER_3 0x081C
+
123 #define RADIOLIB_SX126X_REG_TX_MODULATION 0x0889
+
124 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_0 0x088B
+
125 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_1 0x088C
+
126 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_2 0x088D
+
127 #define RADIOLIB_SX126X_REG_RF_FREQUENCY_3 0x088E
+
128 #define RADIOLIB_SX126X_REG_RSSI_AVG_WINDOW 0x089B
+
129 #define RADIOLIB_SX126X_REG_RX_GAIN 0x08AC
+
130 #define RADIOLIB_SX126X_REG_TX_CLAMP_CONFIG 0x08D8
+
131 #define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_N 0x08E3
+
132 #define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_P 0x08E4
+
133 #define RADIOLIB_SX126X_REG_OCP_CONFIGURATION 0x08E7
+
134 #define RADIOLIB_SX126X_REG_RTC_CTRL 0x0902
+
135 #define RADIOLIB_SX126X_REG_XTA_TRIM 0x0911
+
136 #define RADIOLIB_SX126X_REG_XTB_TRIM 0x0912
+
137 #define RADIOLIB_SX126X_REG_DIO3_OUT_VOLTAGE_CTRL 0x0920
+
138 #define RADIOLIB_SX126X_REG_EVENT_MASK 0x0944
+
139 #define RADIOLIB_SX126X_REG_PATCH_MEMORY_BASE 0x8000
+
140 
+
141 // undocumented registers
+
142 #define RADIOLIB_SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
+
143 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
+
144 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
+
145 #define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
146 
-
147 // SX126X SPI command variables
-
148 //RADIOLIB_SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
-
149 #define RADIOLIB_SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
-
150 #define RADIOLIB_SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
-
151 #define RADIOLIB_SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
-
152 #define RADIOLIB_SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
-
153 
-
154 //RADIOLIB_SX126X_CMD_SET_STANDBY
-
155 #define RADIOLIB_SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
-
156 #define RADIOLIB_SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
-
157 
-
158 //RADIOLIB_SX126X_CMD_SET_RX
-
159 #define RADIOLIB_SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
-
160 #define RADIOLIB_SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
-
161 
-
162 //RADIOLIB_SX126X_CMD_SET_TX
-
163 #define RADIOLIB_SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
-
164 
-
165 //RADIOLIB_SX126X_CMD_STOP_TIMER_ON_PREAMBLE
-
166 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
-
167 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
-
168 
-
169 //RADIOLIB_SX126X_CMD_SET_REGULATOR_MODE
-
170 #define RADIOLIB_SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
-
171 #define RADIOLIB_SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
-
172 
-
173 //RADIOLIB_SX126X_CMD_CALIBRATE
-
174 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
-
175 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
-
176 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
-
177 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
-
178 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
-
179 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
-
180 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
-
181 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
-
182 #define RADIOLIB_SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
-
183 #define RADIOLIB_SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
-
184 #define RADIOLIB_SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
-
185 #define RADIOLIB_SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
-
186 #define RADIOLIB_SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
-
187 #define RADIOLIB_SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
-
188 #define RADIOLIB_SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
-
189 
-
190 //RADIOLIB_SX126X_CMD_CALIBRATE_IMAGE
-
191 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_1 0x6B
-
192 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_2 0x6F
-
193 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_1 0x75
-
194 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_2 0x81
-
195 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_1 0xC1
-
196 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_2 0xC5
-
197 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_1 0xD7
-
198 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_2 0xDB
-
199 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_1 0xE1
-
200 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_2 0xE9
-
201 
-
202 //RADIOLIB_SX126X_CMD_SET_PA_CONFIG
-
203 #define RADIOLIB_SX126X_PA_CONFIG_HP_MAX 0x07
-
204 #define RADIOLIB_SX126X_PA_CONFIG_PA_LUT 0x01
-
205 #define RADIOLIB_SX126X_PA_CONFIG_SX1262_8 0x00
-
206 
-
207 //RADIOLIB_SX126X_CMD_SET_RX_TX_FALLBACK_MODE
-
208 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
-
209 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
-
210 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
-
211 
-
212 //RADIOLIB_SX126X_CMD_SET_DIO_IRQ_PARAMS
-
213 #define RADIOLIB_SX126X_IRQ_LR_FHSS_HOP 0b0100000000000000 // 14 14 PA ramped up during LR-FHSS hop
-
214 #define RADIOLIB_SX126X_IRQ_TIMEOUT 0b0000001000000000 // 9 9 Rx or Tx timeout
-
215 #define RADIOLIB_SX126X_IRQ_CAD_DETECTED 0b0000000100000000 // 8 8 channel activity detected
-
216 #define RADIOLIB_SX126X_IRQ_CAD_DONE 0b0000000010000000 // 7 7 channel activity detection finished
-
217 #define RADIOLIB_SX126X_IRQ_CRC_ERR 0b0000000001000000 // 6 6 wrong CRC received
-
218 #define RADIOLIB_SX126X_IRQ_HEADER_ERR 0b0000000000100000 // 5 5 LoRa header CRC error
-
219 #define RADIOLIB_SX126X_IRQ_HEADER_VALID 0b0000000000010000 // 4 4 valid LoRa header received
-
220 #define RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID 0b0000000000001000 // 3 3 valid sync word detected
-
221 #define RADIOLIB_SX126X_IRQ_RADIOLIB_PREAMBLE_DETECTED 0b0000000000000100 // 2 2 preamble detected
-
222 #define RADIOLIB_SX126X_IRQ_RX_DONE 0b0000000000000010 // 1 1 packet received
-
223 #define RADIOLIB_SX126X_IRQ_TX_DONE 0b0000000000000001 // 0 0 packet transmission completed
-
224 #define RADIOLIB_SX126X_IRQ_RX_DEFAULT 0b0000001001100010 // 14 0 default for Rx (RX_DONE, TIMEOUT, CRC_ERR and HEADER_ERR)
-
225 #define RADIOLIB_SX126X_IRQ_ALL 0b0100001111111111 // 14 0 all interrupts
-
226 #define RADIOLIB_SX126X_IRQ_NONE 0b0000000000000000 // 14 0 no interrupts
-
227 
-
228 //RADIOLIB_SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
-
229 #define RADIOLIB_SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
-
230 #define RADIOLIB_SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
-
231 
-
232 //RADIOLIB_SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
-
233 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
-
234 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
-
235 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
-
236 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
-
237 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
-
238 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
-
239 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
-
240 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
-
241 
-
242 //RADIOLIB_SX126X_CMD_SET_PACKET_TYPE
-
243 #define RADIOLIB_SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
-
244 #define RADIOLIB_SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
-
245 #define RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS 0x03 // 7 0 LR-FHSS
-
246 
-
247 //RADIOLIB_SX126X_CMD_SET_TX_PARAMS
-
248 #define RADIOLIB_SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
-
249 #define RADIOLIB_SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
-
250 #define RADIOLIB_SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
-
251 #define RADIOLIB_SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
-
252 #define RADIOLIB_SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
-
253 #define RADIOLIB_SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
-
254 #define RADIOLIB_SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
-
255 #define RADIOLIB_SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
-
256 
-
257 //RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS
-
258 #define RADIOLIB_SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
-
259 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
-
260 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
-
261 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
-
262 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
-
263 #define RADIOLIB_SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
-
264 #define RADIOLIB_SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
-
265 #define RADIOLIB_SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
-
266 #define RADIOLIB_SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
-
267 #define RADIOLIB_SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
-
268 #define RADIOLIB_SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
-
269 #define RADIOLIB_SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
-
270 #define RADIOLIB_SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
-
271 #define RADIOLIB_SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
-
272 #define RADIOLIB_SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
-
273 #define RADIOLIB_SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
-
274 #define RADIOLIB_SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
-
275 #define RADIOLIB_SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
-
276 #define RADIOLIB_SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
-
277 #define RADIOLIB_SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
-
278 #define RADIOLIB_SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
-
279 #define RADIOLIB_SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
-
280 #define RADIOLIB_SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
-
281 #define RADIOLIB_SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
-
282 #define RADIOLIB_SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
-
283 #define RADIOLIB_SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
-
284 #define RADIOLIB_SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
-
285 #define RADIOLIB_SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
-
286 #define RADIOLIB_SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
-
287 #define RADIOLIB_SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
-
288 #define RADIOLIB_SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
-
289 #define RADIOLIB_SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
-
290 #define RADIOLIB_SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
-
291 #define RADIOLIB_SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
-
292 #define RADIOLIB_SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
-
293 #define RADIOLIB_SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
-
294 #define RADIOLIB_SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
-
295 #define RADIOLIB_SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
-
296 #define RADIOLIB_SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
-
297 #define RADIOLIB_SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
-
298 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
-
299 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
-
300 
-
301 //RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS
-
302 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
-
303 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
-
304 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
-
305 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
-
306 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
-
307 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
-
308 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
-
309 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
-
310 #define RADIOLIB_SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
-
311 #define RADIOLIB_SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
-
312 #define RADIOLIB_SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
-
313 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
-
314 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
-
315 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
-
316 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
-
317 #define RADIOLIB_SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
-
318 #define RADIOLIB_SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
-
319 #define RADIOLIB_SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
-
320 #define RADIOLIB_SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
-
321 #define RADIOLIB_SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
-
322 #define RADIOLIB_SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
-
323 #define RADIOLIB_SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
-
324 #define RADIOLIB_SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
-
325 
-
326 //RADIOLIB_SX126X_CMD_SET_CAD_PARAMS
-
327 #define RADIOLIB_SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
-
328 #define RADIOLIB_SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
-
329 #define RADIOLIB_SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
-
330 #define RADIOLIB_SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
-
331 #define RADIOLIB_SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
-
332 #define RADIOLIB_SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
-
333 #define RADIOLIB_SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
-
334 #define RADIOLIB_SX126X_CAD_PARAM_DEFAULT 0xFF // 7 0 used by the CAD methods to specify default parameter value
-
335 #define RADIOLIB_SX126X_CAD_PARAM_DET_MIN 10 // 7 0 default detMin CAD parameter
-
336 
-
337 //RADIOLIB_SX126X_CMD_GET_STATUS
-
338 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
-
339 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
-
340 #define RADIOLIB_SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
-
341 #define RADIOLIB_SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
-
342 #define RADIOLIB_SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
-
343 #define RADIOLIB_SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
-
344 #define RADIOLIB_SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
-
345 #define RADIOLIB_SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
-
346 #define RADIOLIB_SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
-
347 #define RADIOLIB_SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
-
348 #define RADIOLIB_SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
-
349 
-
350 //RADIOLIB_SX126X_CMD_GET_PACKET_STATUS
-
351 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
-
352 #define RADIOLIB_SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
-
353 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
-
354 #define RADIOLIB_SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
-
355 #define RADIOLIB_SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
-
356 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
-
357 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
-
358 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
-
359 
-
360 //RADIOLIB_SX126X_CMD_GET_DEVICE_ERRORS
-
361 #define RADIOLIB_SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
-
362 #define RADIOLIB_SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
-
363 #define RADIOLIB_SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
-
364 #define RADIOLIB_SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
-
365 #define RADIOLIB_SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
-
366 #define RADIOLIB_SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
-
367 #define RADIOLIB_SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
-
368 #define RADIOLIB_SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
-
369 
+
147 
+
148 // SX126X SPI command variables
+
149 //RADIOLIB_SX126X_CMD_SET_SLEEP MSB LSB DESCRIPTION
+
150 #define RADIOLIB_SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default)
+
151 #define RADIOLIB_SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained
+
152 #define RADIOLIB_SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled
+
153 #define RADIOLIB_SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled
+
154 
+
155 //RADIOLIB_SX126X_CMD_SET_STANDBY
+
156 #define RADIOLIB_SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator
+
157 #define RADIOLIB_SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator
+
158 
+
159 //RADIOLIB_SX126X_CMD_SET_RX
+
160 #define RADIOLIB_SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode)
+
161 #define RADIOLIB_SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode)
+
162 
+
163 //RADIOLIB_SX126X_CMD_SET_TX
+
164 #define RADIOLIB_SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode)
+
165 
+
166 //RADIOLIB_SX126X_CMD_STOP_TIMER_ON_PREAMBLE
+
167 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default)
+
168 #define RADIOLIB_SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection
+
169 
+
170 //RADIOLIB_SX126X_CMD_SET_REGULATOR_MODE
+
171 #define RADIOLIB_SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default)
+
172 #define RADIOLIB_SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC
+
173 
+
174 //RADIOLIB_SX126X_CMD_CALIBRATE
+
175 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled
+
176 #define RADIOLIB_SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled
+
177 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled
+
178 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled
+
179 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled
+
180 #define RADIOLIB_SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled
+
181 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled
+
182 #define RADIOLIB_SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled
+
183 #define RADIOLIB_SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled
+
184 #define RADIOLIB_SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled
+
185 #define RADIOLIB_SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled
+
186 #define RADIOLIB_SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled
+
187 #define RADIOLIB_SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled
+
188 #define RADIOLIB_SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled
+
189 #define RADIOLIB_SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks
+
190 
+
191 //RADIOLIB_SX126X_CMD_CALIBRATE_IMAGE
+
192 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_1 0x6B
+
193 #define RADIOLIB_SX126X_CAL_IMG_430_MHZ_2 0x6F
+
194 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_1 0x75
+
195 #define RADIOLIB_SX126X_CAL_IMG_470_MHZ_2 0x81
+
196 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_1 0xC1
+
197 #define RADIOLIB_SX126X_CAL_IMG_779_MHZ_2 0xC5
+
198 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_1 0xD7
+
199 #define RADIOLIB_SX126X_CAL_IMG_863_MHZ_2 0xDB
+
200 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_1 0xE1
+
201 #define RADIOLIB_SX126X_CAL_IMG_902_MHZ_2 0xE9
+
202 
+
203 //RADIOLIB_SX126X_CMD_SET_PA_CONFIG
+
204 #define RADIOLIB_SX126X_PA_CONFIG_HP_MAX 0x07
+
205 #define RADIOLIB_SX126X_PA_CONFIG_PA_LUT 0x01
+
206 #define RADIOLIB_SX126X_PA_CONFIG_SX1262_8 0x00
+
207 
+
208 //RADIOLIB_SX126X_CMD_SET_RX_TX_FALLBACK_MODE
+
209 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode
+
210 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator
+
211 #define RADIOLIB_SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default)
+
212 
+
213 //RADIOLIB_SX126X_CMD_SET_DIO_IRQ_PARAMS
+
214 #define RADIOLIB_SX126X_IRQ_LR_FHSS_HOP 0b0100000000000000 // 14 14 PA ramped up during LR-FHSS hop
+
215 #define RADIOLIB_SX126X_IRQ_TIMEOUT 0b0000001000000000 // 9 9 Rx or Tx timeout
+
216 #define RADIOLIB_SX126X_IRQ_CAD_DETECTED 0b0000000100000000 // 8 8 channel activity detected
+
217 #define RADIOLIB_SX126X_IRQ_CAD_DONE 0b0000000010000000 // 7 7 channel activity detection finished
+
218 #define RADIOLIB_SX126X_IRQ_CRC_ERR 0b0000000001000000 // 6 6 wrong CRC received
+
219 #define RADIOLIB_SX126X_IRQ_HEADER_ERR 0b0000000000100000 // 5 5 LoRa header CRC error
+
220 #define RADIOLIB_SX126X_IRQ_HEADER_VALID 0b0000000000010000 // 4 4 valid LoRa header received
+
221 #define RADIOLIB_SX126X_IRQ_SYNC_WORD_VALID 0b0000000000001000 // 3 3 valid sync word detected
+
222 #define RADIOLIB_SX126X_IRQ_RADIOLIB_PREAMBLE_DETECTED 0b0000000000000100 // 2 2 preamble detected
+
223 #define RADIOLIB_SX126X_IRQ_RX_DONE 0b0000000000000010 // 1 1 packet received
+
224 #define RADIOLIB_SX126X_IRQ_TX_DONE 0b0000000000000001 // 0 0 packet transmission completed
+
225 #define RADIOLIB_SX126X_IRQ_RX_DEFAULT 0b0000001001100010 // 14 0 default for Rx (RX_DONE, TIMEOUT, CRC_ERR and HEADER_ERR)
+
226 #define RADIOLIB_SX126X_IRQ_ALL 0b0100001111111111 // 14 0 all interrupts
+
227 #define RADIOLIB_SX126X_IRQ_NONE 0b0000000000000000 // 14 0 no interrupts
+
228 
+
229 //RADIOLIB_SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
+
230 #define RADIOLIB_SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ
+
231 #define RADIOLIB_SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control
+
232 
+
233 //RADIOLIB_SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
+
234 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V
+
235 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V
+
236 #define RADIOLIB_SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V
+
237 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V
+
238 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V
+
239 #define RADIOLIB_SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V
+
240 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V
+
241 #define RADIOLIB_SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V
+
242 
+
243 //RADIOLIB_SX126X_CMD_SET_PACKET_TYPE
+
244 #define RADIOLIB_SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK
+
245 #define RADIOLIB_SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa
+
246 #define RADIOLIB_SX126X_PACKET_TYPE_LR_FHSS 0x03 // 7 0 LR-FHSS
+
247 
+
248 //RADIOLIB_SX126X_CMD_SET_TX_PARAMS
+
249 #define RADIOLIB_SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us
+
250 #define RADIOLIB_SX126X_PA_RAMP_20U 0x01 // 7 0 20 us
+
251 #define RADIOLIB_SX126X_PA_RAMP_40U 0x02 // 7 0 40 us
+
252 #define RADIOLIB_SX126X_PA_RAMP_80U 0x03 // 7 0 80 us
+
253 #define RADIOLIB_SX126X_PA_RAMP_200U 0x04 // 7 0 200 us
+
254 #define RADIOLIB_SX126X_PA_RAMP_800U 0x05 // 7 0 800 us
+
255 #define RADIOLIB_SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us
+
256 #define RADIOLIB_SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us
+
257 
+
258 //RADIOLIB_SX126X_CMD_SET_MODULATION_PARAMS
+
259 #define RADIOLIB_SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none
+
260 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3
+
261 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5
+
262 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7
+
263 #define RADIOLIB_SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1
+
264 #define RADIOLIB_SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz
+
265 #define RADIOLIB_SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz
+
266 #define RADIOLIB_SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz
+
267 #define RADIOLIB_SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz
+
268 #define RADIOLIB_SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz
+
269 #define RADIOLIB_SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz
+
270 #define RADIOLIB_SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz
+
271 #define RADIOLIB_SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz
+
272 #define RADIOLIB_SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz
+
273 #define RADIOLIB_SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz
+
274 #define RADIOLIB_SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz
+
275 #define RADIOLIB_SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz
+
276 #define RADIOLIB_SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz
+
277 #define RADIOLIB_SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz
+
278 #define RADIOLIB_SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz
+
279 #define RADIOLIB_SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz
+
280 #define RADIOLIB_SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz
+
281 #define RADIOLIB_SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz
+
282 #define RADIOLIB_SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz
+
283 #define RADIOLIB_SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz
+
284 #define RADIOLIB_SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz
+
285 #define RADIOLIB_SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz
+
286 #define RADIOLIB_SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz
+
287 #define RADIOLIB_SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz
+
288 #define RADIOLIB_SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz
+
289 #define RADIOLIB_SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz
+
290 #define RADIOLIB_SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz
+
291 #define RADIOLIB_SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz
+
292 #define RADIOLIB_SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz
+
293 #define RADIOLIB_SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz
+
294 #define RADIOLIB_SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz
+
295 #define RADIOLIB_SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5
+
296 #define RADIOLIB_SX126X_LORA_CR_4_6 0x02 // 7 0 4/6
+
297 #define RADIOLIB_SX126X_LORA_CR_4_7 0x03 // 7 0 4/7
+
298 #define RADIOLIB_SX126X_LORA_CR_4_8 0x04 // 7 0 4/8
+
299 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled
+
300 #define RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled
+
301 
+
302 //RADIOLIB_SX126X_CMD_SET_PACKET_PARAMS
+
303 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled
+
304 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits
+
305 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits
+
306 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits
+
307 #define RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits
+
308 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled
+
309 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only
+
310 #define RADIOLIB_SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast
+
311 #define RADIOLIB_SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides)
+
312 #define RADIOLIB_SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet)
+
313 #define RADIOLIB_SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled
+
314 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte
+
315 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte
+
316 #define RADIOLIB_SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted
+
317 #define RADIOLIB_SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted
+
318 #define RADIOLIB_SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled
+
319 #define RADIOLIB_SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled
+
320 #define RADIOLIB_SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit
+
321 #define RADIOLIB_SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit
+
322 #define RADIOLIB_SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled
+
323 #define RADIOLIB_SX126X_LORA_CRC_ON 0x01 // 7 0 enabled
+
324 #define RADIOLIB_SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard
+
325 #define RADIOLIB_SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted
+
326 
+
327 //RADIOLIB_SX126X_CMD_SET_CAD_PARAMS
+
328 #define RADIOLIB_SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1
+
329 #define RADIOLIB_SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2
+
330 #define RADIOLIB_SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4
+
331 #define RADIOLIB_SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8
+
332 #define RADIOLIB_SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16
+
333 #define RADIOLIB_SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode
+
334 #define RADIOLIB_SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected
+
335 #define RADIOLIB_SX126X_CAD_PARAM_DEFAULT 0xFF // 7 0 used by the CAD methods to specify default parameter value
+
336 #define RADIOLIB_SX126X_CAD_PARAM_DET_MIN 10 // 7 0 default detMin CAD parameter
+
337 
+
338 //RADIOLIB_SX126X_CMD_GET_STATUS
+
339 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC
+
340 #define RADIOLIB_SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC
+
341 #define RADIOLIB_SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS
+
342 #define RADIOLIB_SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX
+
343 #define RADIOLIB_SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX
+
344 #define RADIOLIB_SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved
+
345 #define RADIOLIB_SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out
+
346 #define RADIOLIB_SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command
+
347 #define RADIOLIB_SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute
+
348 #define RADIOLIB_SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done
+
349 #define RADIOLIB_SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed
+
350 
+
351 //RADIOLIB_SX126X_CMD_GET_PACKET_STATUS
+
352 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error
+
353 #define RADIOLIB_SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error
+
354 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error
+
355 #define RADIOLIB_SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error
+
356 #define RADIOLIB_SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error
+
357 #define RADIOLIB_SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error
+
358 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received
+
359 #define RADIOLIB_SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent
+
360 
+
361 //RADIOLIB_SX126X_CMD_GET_DEVICE_ERRORS
+
362 #define RADIOLIB_SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed
+
363 #define RADIOLIB_SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock
+
364 #define RADIOLIB_SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start
+
365 #define RADIOLIB_SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed
+
366 #define RADIOLIB_SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed
+
367 #define RADIOLIB_SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed
+
368 #define RADIOLIB_SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed
+
369 #define RADIOLIB_SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed
370 
-
371 // SX126X SPI register variables
-
372 //RADIOLIB_SX126X_REG_HOPPING_ENABLE
-
373 #define RADIOLIB_SX126X_HOPPING_ENABLED 0b00000001 // 0 0 intra-packet hopping for LR-FHSS: enabled
-
374 #define RADIOLIB_SX126X_HOPPING_DISABLED 0b00000000 // 0 0 (disabled)
+
371 //RADIOLIB_SX126X_CMD_SET_LBT_SCAN_PARAMS + RADIOLIB_SX126X_CMD_SET_SPECTR_SCAN_PARAMS
+
372 #define RADIOLIB_SX126X_SCAN_INTERVAL_7_68_US 10 // 7 0 RSSI reading interval: 7.68 us
+
373 #define RADIOLIB_SX126X_SCAN_INTERVAL_8_20_US 11 // 7 0 8.20 us
+
374 #define RADIOLIB_SX126X_SCAN_INTERVAL_8_68_US 12 // 7 0 8.68 us
375 
-
376 //RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB + LSB
-
377 #define RADIOLIB_SX126X_SYNC_WORD_PUBLIC 0x34 // actually 0x3444 NOTE: The low nibbles in each byte (0x_4_4) are masked out since apparently, they're reserved.
-
378 #define RADIOLIB_SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
-
379 
-
380 // RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1
-
381 #define RADIOLIB_SX126X_TX_BITBANG_1_DISABLED 0b00000000 // 6 4 Tx bitbang: disabled (default)
-
382 #define RADIOLIB_SX126X_TX_BITBANG_1_ENABLED 0b00010000 // 6 4 enabled
-
383 
-
384 // RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0
-
385 #define RADIOLIB_SX126X_TX_BITBANG_0_DISABLED 0b00000000 // 3 0 Tx bitbang: disabled (default)
-
386 #define RADIOLIB_SX126X_TX_BITBANG_0_ENABLED 0b00001100 // 3 0 enabled
-
387 
-
388 // RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE
-
389 #define RADIOLIB_SX126X_DIO1_OUT_DISABLED 0b00000010 // 1 1 DIO1 output: disabled
-
390 #define RADIOLIB_SX126X_DIO1_OUT_ENABLED 0b00000000 // 1 1 enabled
-
391 #define RADIOLIB_SX126X_DIO2_OUT_DISABLED 0b00000100 // 2 2 DIO2 output: disabled
-
392 #define RADIOLIB_SX126X_DIO2_OUT_ENABLED 0b00000000 // 2 2 enabled
-
393 #define RADIOLIB_SX126X_DIO3_OUT_DISABLED 0b00001000 // 3 3 DIO3 output: disabled
-
394 #define RADIOLIB_SX126X_DIO3_OUT_ENABLED 0b00000000 // 3 3 enabled
-
395 
-
396 // RADIOLIB_SX126X_REG_DIOX_IN_ENABLE
-
397 #define RADIOLIB_SX126X_DIO1_IN_DISABLED 0b00000000 // 1 1 DIO1 input: disabled
-
398 #define RADIOLIB_SX126X_DIO1_IN_ENABLED 0b00000010 // 1 1 enabled
-
399 #define RADIOLIB_SX126X_DIO2_IN_DISABLED 0b00000000 // 2 2 DIO2 input: disabled
-
400 #define RADIOLIB_SX126X_DIO2_IN_ENABLED 0b00000100 // 2 2 enabled
-
401 #define RADIOLIB_SX126X_DIO3_IN_DISABLED 0b00000000 // 3 3 DIO3 input: disabled
-
402 #define RADIOLIB_SX126X_DIO3_IN_ENABLED 0b00001000 // 3 3 enabled
-
403 
-
404 // RADIOLIB_SX126X_REG_RX_GAIN
-
405 #define RADIOLIB_SX126X_RX_GAIN_BOOSTED 0x96 // 7 0 Rx gain: boosted
-
406 #define RADIOLIB_SX126X_RX_GAIN_POWER_SAVING 0x94 // 7 0 power saving
-
407 #define RADIOLIB_SX126X_RX_GAIN_SPECTRAL_SCAN 0xCB // 7 0 spectral scan
+
376 // SX126X SPI register variables
+
377 //RADIOLIB_SX126X_REG_HOPPING_ENABLE
+
378 #define RADIOLIB_SX126X_HOPPING_ENABLED 0b00000001 // 0 0 intra-packet hopping for LR-FHSS: enabled
+
379 #define RADIOLIB_SX126X_HOPPING_DISABLED 0b00000000 // 0 0 (disabled)
+
380 
+
381 //RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB + LSB
+
382 #define RADIOLIB_SX126X_SYNC_WORD_PUBLIC 0x34 // actually 0x3444 NOTE: The low nibbles in each byte (0x_4_4) are masked out since apparently, they're reserved.
+
383 #define RADIOLIB_SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
+
384 
+
385 // RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1
+
386 #define RADIOLIB_SX126X_TX_BITBANG_1_DISABLED 0b00000000 // 6 4 Tx bitbang: disabled (default)
+
387 #define RADIOLIB_SX126X_TX_BITBANG_1_ENABLED 0b00010000 // 6 4 enabled
+
388 
+
389 // RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0
+
390 #define RADIOLIB_SX126X_TX_BITBANG_0_DISABLED 0b00000000 // 3 0 Tx bitbang: disabled (default)
+
391 #define RADIOLIB_SX126X_TX_BITBANG_0_ENABLED 0b00001100 // 3 0 enabled
+
392 
+
393 // RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE
+
394 #define RADIOLIB_SX126X_DIO1_OUT_DISABLED 0b00000010 // 1 1 DIO1 output: disabled
+
395 #define RADIOLIB_SX126X_DIO1_OUT_ENABLED 0b00000000 // 1 1 enabled
+
396 #define RADIOLIB_SX126X_DIO2_OUT_DISABLED 0b00000100 // 2 2 DIO2 output: disabled
+
397 #define RADIOLIB_SX126X_DIO2_OUT_ENABLED 0b00000000 // 2 2 enabled
+
398 #define RADIOLIB_SX126X_DIO3_OUT_DISABLED 0b00001000 // 3 3 DIO3 output: disabled
+
399 #define RADIOLIB_SX126X_DIO3_OUT_ENABLED 0b00000000 // 3 3 enabled
+
400 
+
401 // RADIOLIB_SX126X_REG_DIOX_IN_ENABLE
+
402 #define RADIOLIB_SX126X_DIO1_IN_DISABLED 0b00000000 // 1 1 DIO1 input: disabled
+
403 #define RADIOLIB_SX126X_DIO1_IN_ENABLED 0b00000010 // 1 1 enabled
+
404 #define RADIOLIB_SX126X_DIO2_IN_DISABLED 0b00000000 // 2 2 DIO2 input: disabled
+
405 #define RADIOLIB_SX126X_DIO2_IN_ENABLED 0b00000100 // 2 2 enabled
+
406 #define RADIOLIB_SX126X_DIO3_IN_DISABLED 0b00000000 // 3 3 DIO3 input: disabled
+
407 #define RADIOLIB_SX126X_DIO3_IN_ENABLED 0b00001000 // 3 3 enabled
408 
-
409 // RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE
-
410 #define RADIOLIB_SX126X_PATCH_UPDATE_DISABLED 0b00010000 // 4 4 patch update: disabled
-
411 #define RADIOLIB_SX126X_PATCH_UPDATE_ENABLED 0b00000000 // 4 4 enabled
-
412 
-
413 // RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS
-
414 #define RADIOLIB_SX126X_SPECTRAL_SCAN_NONE 0x00 // 7 0 spectral scan status: none
-
415 #define RADIOLIB_SX126X_SPECTRAL_SCAN_ONGOING 0x0F // 7 0 ongoing
-
416 #define RADIOLIB_SX126X_SPECTRAL_SCAN_ABORTED 0xF0 // 7 0 aborted
-
417 #define RADIOLIB_SX126X_SPECTRAL_SCAN_COMPLETED 0xFF // 7 0 completed
-
418 
-
425 class SX126x: public PhysicalLayer {
-
426  public:
-
427  // introduce PhysicalLayer overloads
-
428  using PhysicalLayer::transmit;
-
429  using PhysicalLayer::receive;
-
430  using PhysicalLayer::startTransmit;
-
431  using PhysicalLayer::readData;
-
432 
-
438  SX126x(Module* mod);
-
439 
-
440  Module* getMod();
-
441 
-
445  bool XTAL;
+
409 // RADIOLIB_SX126X_REG_RX_GAIN
+
410 #define RADIOLIB_SX126X_RX_GAIN_BOOSTED 0x96 // 7 0 Rx gain: boosted
+
411 #define RADIOLIB_SX126X_RX_GAIN_POWER_SAVING 0x94 // 7 0 power saving
+
412 #define RADIOLIB_SX126X_RX_GAIN_SPECTRAL_SCAN 0xCB // 7 0 spectral scan
+
413 
+
414 // RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE
+
415 #define RADIOLIB_SX126X_PATCH_UPDATE_DISABLED 0b00010000 // 4 4 patch update: disabled
+
416 #define RADIOLIB_SX126X_PATCH_UPDATE_ENABLED 0b00000000 // 4 4 enabled
+
417 
+
418 // RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS
+
419 #define RADIOLIB_SX126X_SPECTRAL_SCAN_NONE 0x00 // 7 0 spectral scan status: none
+
420 #define RADIOLIB_SX126X_SPECTRAL_SCAN_ONGOING 0x0F // 7 0 ongoing
+
421 #define RADIOLIB_SX126X_SPECTRAL_SCAN_ABORTED 0xF0 // 7 0 aborted
+
422 #define RADIOLIB_SX126X_SPECTRAL_SCAN_COMPLETED 0xFF // 7 0 completed
+
423 
+
430 class SX126x: public PhysicalLayer {
+
431  public:
+
432  // introduce PhysicalLayer overloads
+
433  using PhysicalLayer::transmit;
+
434  using PhysicalLayer::receive;
+
435  using PhysicalLayer::startTransmit;
+
436  using PhysicalLayer::readData;
+
437 
+
443  SX126x(Module* mod);
+
444 
+
445  Module* getMod();
446 
-
447  // basic methods
-
448 
-
464  int16_t begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
-
465 
-
483  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
-
484 
-
493  int16_t reset(bool verify = true);
-
494 
-
507  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
-
508 
-
519  int16_t receive(uint8_t* data, size_t len) override;
-
520 
-
528  int16_t transmitDirect(uint32_t frf = 0) override;
-
529 
-
536  int16_t receiveDirect() override;
-
537 
-
549  int16_t scanChannel(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
-
550 
-
558  int16_t sleep(bool retainConfig = true);
-
559 
-
565  int16_t standby() override;
-
566 
-
574  int16_t standby(uint8_t mode);
-
575 
-
576  // interrupt methods
-
577 
-
583  void setDio1Action(void (*func)(void));
-
584 
-
588  void clearDio1Action();
+
450  bool XTAL;
+
451 
+
452  // basic methods
+
453 
+
469  int16_t begin(uint8_t cr, uint8_t syncWord, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
+
470 
+
488  int16_t beginFSK(float br, float freqDev, float rxBw, uint16_t preambleLength, float tcxoVoltage, bool useRegulatorLDO = false);
+
489 
+
498  int16_t reset(bool verify = true);
+
499 
+
512  int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
+
513 
+
524  int16_t receive(uint8_t* data, size_t len) override;
+
525 
+
533  int16_t transmitDirect(uint32_t frf = 0) override;
+
534 
+
541  int16_t receiveDirect() override;
+
542 
+
554  int16_t scanChannel(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
+
555 
+
563  int16_t sleep(bool retainConfig = true);
+
564 
+
570  int16_t standby() override;
+
571 
+
579  int16_t standby(uint8_t mode);
+
580 
+
581  // interrupt methods
+
582 
+
588  void setDio1Action(void (*func)(void));
589 
-
602  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
-
603 
-
609  int16_t finishTransmit() override;
-
610 
-
623  int16_t startReceive(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
-
624 
-
639  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
-
640 
-
656  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
-
657 
-
663  uint16_t getIrqStatus();
-
664 
-
675  int16_t readData(uint8_t* data, size_t len) override;
-
676 
-
688  int16_t startChannelScan(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
-
689 
-
695  int16_t getChannelScanResult();
-
696 
-
697  // configuration methods
-
698 
-
706  int16_t setBandwidth(float bw);
-
707 
-
715  int16_t setSpreadingFactor(uint8_t sf);
-
716 
-
724  int16_t setCodingRate(uint8_t cr);
-
725 
-
735  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
-
736 
-
744  int16_t setCurrentLimit(float currentLimit);
-
745 
-
751  float getCurrentLimit();
-
752 
-
760  int16_t setPreambleLength(uint16_t preambleLength);
-
761 
-
769  int16_t setFrequencyDeviation(float freqDev) override;
-
770 
-
778  int16_t setBitRate(float br);
-
779 
-
787  int16_t setRxBandwidth(float rxBw);
-
788 
-
798  int16_t setRxBoostedGainMode(bool rxbgm, bool persist = true);
-
799 
-
809  int16_t setDataShaping(uint8_t sh) override;
-
810 
-
820  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
-
821 
-
831  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
-
832 
-
840  int16_t setNodeAddress(uint8_t nodeAddr);
-
841 
-
849  int16_t setBroadcastAddress(uint8_t broadAddr);
-
850 
-
856  int16_t disableAddressFiltering();
-
857 
-
871  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
-
872 
-
882  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
-
883 
-
894  int16_t setTCXO(float voltage, uint32_t delay = 5000);
-
895 
-
901  int16_t setDio2AsRfSwitch(bool enable = true);
-
902 
-
908  float getDataRate() const;
-
909 
-
915  float getRSSI();
-
916 
-
922  float getSNR();
-
923 
-
931  size_t getPacketLength(bool update = true) override;
-
932 
-
940  int16_t fixedPacketLengthMode(uint8_t len = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
-
941 
-
949  int16_t variablePacketLengthMode(uint8_t maxLen = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
-
950 
-
958  uint32_t getTimeOnAir(size_t len);
-
959 
-
965  float getRSSIInst();
-
966 
-
974  int16_t implicitHeader(size_t len);
-
975 
-
981  int16_t explicitHeader();
-
982 
-
988  int16_t setRegulatorLDO();
-
989 
-
995  int16_t setRegulatorDCDC();
-
996 
-
1004  int16_t setEncoding(uint8_t encoding) override;
-
1005 
-
1007  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
-
1008 
-
1010  void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]);
-
1011 
-
1020  int16_t forceLDRO(bool enable);
-
1021 
-
1028  int16_t autoLDRO();
-
1029 
-
1035  uint8_t randomByte();
-
1036 
-
1037  #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
-
1043  void setDirectAction(void (*func)(void));
-
1044 
-
1050  void readBit(RADIOLIB_PIN_TYPE pin);
-
1051  #endif
-
1052 
-
1053 
-
1054 #if !defined(RADIOLIB_GODMODE)
-
1055  protected:
-
1056 #endif
-
1057  // SX126x SPI command implementations
-
1058  int16_t setTx(uint32_t timeout = 0);
-
1059  int16_t setRx(uint32_t timeout);
-
1060  int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin);
-
1061  int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = RADIOLIB_SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = RADIOLIB_SX126X_PA_CONFIG_PA_LUT);
-
1062  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
-
1063  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
-
1064  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
-
1065  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
-
1066  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE);
-
1067  virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL);
-
1068  int16_t setRfFrequency(uint32_t frf);
-
1069  int16_t calibrateImage(uint8_t* data);
-
1070  uint8_t getPacketType();
-
1071  int16_t setTxParams(uint8_t power, uint8_t rampTime = RADIOLIB_SX126X_PA_RAMP_200U);
-
1072  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
-
1073  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
-
1074  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = RADIOLIB_SX126X_LORA_IQ_STANDARD);
-
1075  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = RADIOLIB_SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16);
-
1076  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
-
1077  int16_t setRegulatorMode(uint8_t mode);
-
1078  uint8_t getStatus();
-
1079  uint32_t getPacketStatus();
-
1080  uint16_t getDeviceErrors();
-
1081  int16_t clearDeviceErrors();
-
1082 
-
1083  int16_t startReceiveCommon(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
-
1084  int16_t setFrequencyRaw(float freq);
-
1085  int16_t setPacketMode(uint8_t mode, uint8_t len);
-
1086  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
-
1087  int16_t directMode();
-
1088  int16_t packetMode();
-
1089 
-
1090  // fixes to errata
-
1091  int16_t fixSensitivity();
-
1092  int16_t fixPaClamping(bool enable = true);
-
1093  int16_t fixImplicitTimeout();
-
1094  int16_t fixInvertedIQ(uint8_t iqConfig);
-
1095 
-
1096 #if !defined(RADIOLIB_GODMODE) && !defined(RADIOLIB_LOW_LEVEL)
-
1097  protected:
-
1098 #endif
-
1099  Module* _mod;
+
593  void clearDio1Action();
+
594 
+
607  int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
+
608 
+
614  int16_t finishTransmit() override;
+
615 
+
628  int16_t startReceive(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
+
629 
+
644  int16_t startReceiveDutyCycle(uint32_t rxPeriod, uint32_t sleepPeriod, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
+
645 
+
661  int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength = 0, uint16_t minSymbols = 8, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
+
662 
+
668  uint16_t getIrqStatus();
+
669 
+
680  int16_t readData(uint8_t* data, size_t len) override;
+
681 
+
693  int16_t startChannelScan(uint8_t symbolNum = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detPeak = RADIOLIB_SX126X_CAD_PARAM_DEFAULT, uint8_t detMin = RADIOLIB_SX126X_CAD_PARAM_DEFAULT);
+
694 
+
700  int16_t getChannelScanResult();
+
701 
+
702  // configuration methods
+
703 
+
711  int16_t setBandwidth(float bw);
+
712 
+
720  int16_t setSpreadingFactor(uint8_t sf);
+
721 
+
729  int16_t setCodingRate(uint8_t cr);
+
730 
+
740  int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
+
741 
+
749  int16_t setCurrentLimit(float currentLimit);
+
750 
+
756  float getCurrentLimit();
+
757 
+
765  int16_t setPreambleLength(uint16_t preambleLength);
+
766 
+
774  int16_t setFrequencyDeviation(float freqDev) override;
+
775 
+
783  int16_t setBitRate(float br);
+
784 
+
792  int16_t setRxBandwidth(float rxBw);
+
793 
+
803  int16_t setRxBoostedGainMode(bool rxbgm, bool persist = true);
+
804 
+
814  int16_t setDataShaping(uint8_t sh) override;
+
815 
+
825  int16_t setSyncWord(uint8_t* syncWord, uint8_t len);
+
826 
+
836  int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
+
837 
+
845  int16_t setNodeAddress(uint8_t nodeAddr);
+
846 
+
854  int16_t setBroadcastAddress(uint8_t broadAddr);
+
855 
+
861  int16_t disableAddressFiltering();
+
862 
+
876  int16_t setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021, bool inverted = true);
+
877 
+
887  int16_t setWhitening(bool enabled, uint16_t initial = 0x0100);
+
888 
+
899  int16_t setTCXO(float voltage, uint32_t delay = 5000);
+
900 
+
906  int16_t setDio2AsRfSwitch(bool enable = true);
+
907 
+
913  float getDataRate() const;
+
914 
+
920  float getRSSI();
+
921 
+
927  float getSNR();
+
928 
+
936  size_t getPacketLength(bool update = true) override;
+
937 
+
945  int16_t fixedPacketLengthMode(uint8_t len = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
+
946 
+
954  int16_t variablePacketLengthMode(uint8_t maxLen = RADIOLIB_SX126X_MAX_PACKET_LENGTH);
+
955 
+
963  uint32_t getTimeOnAir(size_t len);
+
964 
+
970  float getRSSIInst();
+
971 
+
979  int16_t implicitHeader(size_t len);
+
980 
+
986  int16_t explicitHeader();
+
987 
+
993  int16_t setRegulatorLDO();
+
994 
+
1000  int16_t setRegulatorDCDC();
+
1001 
+
1009  int16_t setEncoding(uint8_t encoding) override;
+
1010 
+
1012  void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn);
+
1013 
+
1015  void setRfSwitchTable(const RADIOLIB_PIN_TYPE (&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[]);
+
1016 
+
1025  int16_t forceLDRO(bool enable);
+
1026 
+
1033  int16_t autoLDRO();
+
1034 
+
1040  uint8_t randomByte();
+
1041 
+
1042  #if !defined(RADIOLIB_EXCLUDE_DIRECT_RECEIVE)
+
1048  void setDirectAction(void (*func)(void));
+
1049 
+
1055  void readBit(RADIOLIB_PIN_TYPE pin);
+
1056  #endif
+
1057 
+
1058 
+
1059 #if !defined(RADIOLIB_GODMODE)
+
1060  protected:
+
1061 #endif
+
1062  // SX126x SPI command implementations
+
1063  int16_t setTx(uint32_t timeout = 0);
+
1064  int16_t setRx(uint32_t timeout);
+
1065  int16_t setCad(uint8_t symbolNum, uint8_t detPeak, uint8_t detMin);
+
1066  int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = RADIOLIB_SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = RADIOLIB_SX126X_PA_CONFIG_PA_LUT);
+
1067  int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
+
1068  int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
+
1069  int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
+
1070  int16_t readBuffer(uint8_t* data, uint8_t numBytes);
+
1071  int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = RADIOLIB_SX126X_IRQ_NONE, uint16_t dio3Mask = RADIOLIB_SX126X_IRQ_NONE);
+
1072  virtual int16_t clearIrqStatus(uint16_t clearIrqParams = RADIOLIB_SX126X_IRQ_ALL);
+
1073  int16_t setRfFrequency(uint32_t frf);
+
1074  int16_t calibrateImage(uint8_t* data);
+
1075  uint8_t getPacketType();
+
1076  int16_t setTxParams(uint8_t power, uint8_t rampTime = RADIOLIB_SX126X_PA_RAMP_200U);
+
1077  int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
+
1078  int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
+
1079  int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = RADIOLIB_SX126X_LORA_IQ_STANDARD);
+
1080  int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = RADIOLIB_SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = RADIOLIB_SX126X_GFSK_PREAMBLE_DETECT_16);
+
1081  int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
+
1082  int16_t setRegulatorMode(uint8_t mode);
+
1083  uint8_t getStatus();
+
1084  uint32_t getPacketStatus();
+
1085  uint16_t getDeviceErrors();
+
1086  int16_t clearDeviceErrors();
+
1087 
+
1088  int16_t startReceiveCommon(uint32_t timeout = RADIOLIB_SX126X_RX_TIMEOUT_INF, uint16_t irqFlags = RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask = RADIOLIB_SX126X_IRQ_RX_DONE);
+
1089  int16_t setFrequencyRaw(float freq);
+
1090  int16_t setPacketMode(uint8_t mode, uint8_t len);
+
1091  int16_t setHeaderType(uint8_t headerType, size_t len = 0xFF);
+
1092  int16_t directMode();
+
1093  int16_t packetMode();
+
1094 
+
1095  // fixes to errata
+
1096  int16_t fixSensitivity();
+
1097  int16_t fixPaClamping(bool enable = true);
+
1098  int16_t fixImplicitTimeout();
+
1099  int16_t fixInvertedIQ(uint8_t iqConfig);
1100 
-
1101  // common low-level SPI interface
-
1102  static int16_t SPIparseStatus(uint8_t in);
-
1103 
-
1104 #if !defined(RADIOLIB_GODMODE)
-
1105  protected:
-
1106 #endif
-
1107 
-
1108  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
-
1109  uint16_t _preambleLength = 0;
-
1110  float _bwKhz = 0;
-
1111  bool _ldroAuto = true;
+
1101 #if !defined(RADIOLIB_GODMODE) && !defined(RADIOLIB_LOW_LEVEL)
+
1102  protected:
+
1103 #endif
+
1104  Module* _mod;
+
1105 
+
1106  // common low-level SPI interface
+
1107  static int16_t SPIparseStatus(uint8_t in);
+
1108 
+
1109 #if !defined(RADIOLIB_GODMODE)
+
1110  protected:
+
1111 #endif
1112 
-
1113  uint32_t _br = 0, _freqDev = 0;
-
1114  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
-
1115  uint16_t _preambleLengthFSK = 0;
-
1116  float _rxBwKhz = 0;
+
1113  uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
+
1114  uint16_t _preambleLength = 0;
+
1115  float _bwKhz = 0;
+
1116  bool _ldroAuto = true;
1117 
-
1118  float _dataRate = 0;
-
1119 
-
1120  uint32_t _tcxoDelay = 0;
-
1121 
-
1122  size_t _implicitLen = 0;
-
1123  uint8_t _chipType = 0;
+
1118  uint32_t _br = 0, _freqDev = 0;
+
1119  uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
+
1120  uint16_t _preambleLengthFSK = 0;
+
1121  float _rxBwKhz = 0;
+
1122 
+
1123  float _dataRate = 0;
1124 
-
1125  // Allow subclasses to define different TX modes
-
1126  uint8_t _tx_mode = Module::MODE_TX;
-
1127 
-
1128  int16_t config(uint8_t modem);
-
1129  bool findChip(uint8_t type);
-
1130 };
-
1131 
-
1132 #endif
-
1133 
-
1134 #endif
+
1125  uint32_t _tcxoDelay = 0;
+
1126 
+
1127  size_t _implicitLen = 0;
+
1128  uint8_t _chipType = 0;
+
1129 
+
1130  // Allow subclasses to define different TX modes
+
1131  uint8_t _tx_mode = Module::MODE_TX;
+
1132 
+
1133  int16_t config(uint8_t modem);
+
1134  bool findChip(uint8_t type);
+
1135 };
+
1136 
+
1137 #endif
+
1138 
+
1139 #endif
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:16
static const size_t RFSWITCH_MAX_PINS
The maximum number of pins supported by the RF switch code.
Definition: Module.h:27
@ MODE_TX
Definition: Module.h:56
@@ -742,7 +747,7 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html',''); initResi
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:141
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method,...
Definition: PhysicalLayer.cpp:122
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:60
-
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:425
+
Base class for SX126x series. All derived classes for SX126x (e.g. SX1262 or SX1268) inherit from thi...
Definition: SX126x.h:430
int16_t startReceiveDutyCycleAuto(uint16_t senderPreambleLength=0, uint16_t minSymbols=8, uint16_t irqFlags=RADIOLIB_SX126X_IRQ_RX_DEFAULT, uint16_t irqMask=RADIOLIB_SX126X_IRQ_RX_DONE)
Calls startReceiveDutyCycle with rxPeriod and sleepPeriod set so the unit shouldn't miss any messages...
Definition: SX126x.cpp:576
void setDio1Action(void(*func)(void))
Sets interrupt service routine to call when DIO1 activates.
Definition: SX126x.cpp:459
float getRSSI()
Gets RSSI (Recorded Signal Strength Indicator) of the last received packet.
Definition: SX126x.cpp:1221
@@ -793,7 +798,7 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html',''); initResi
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:1049
float getDataRate() const
Gets effective data rate for the last transmitted packet. The value is calculated only for payload by...
Definition: SX126x.cpp:1217
void setRfSwitchTable(const RADIOLIB_PIN_TYPE(&pins)[Module::RFSWITCH_MAX_PINS], const Module::RfSwitchMode_t table[])
Some modules contain external RF switch controlled by pins. This function gives RadioLib control over...
Definition: SX126x.cpp:1325
-
bool XTAL
Whether the module has an XTAL (true) or TCXO (false). Defaults to false.
Definition: SX126x.h:445
+
bool XTAL
Whether the module has an XTAL (true) or TCXO (false). Defaults to false.
Definition: SX126x.h:450
int16_t implicitHeader(size_t len)
Set implicit header mode for future reception/transmission.
Definition: SX126x.cpp:1301
float getRSSIInst()
Get instantaneous RSSI value during recption of the packet. Should switch to FSK receive mode for LBT...
Definition: SX126x.cpp:1294
float getSNR()
Gets SNR (Signal to Noise Ratio) of the last received packet. Only available for LoRa modem.
Definition: SX126x.cpp:1228