1 #if !defined(_RADIOLIB_SX127X_H) 2 #define _RADIOLIB_SX127X_H 4 #include "../../TypeDef.h" 6 #if !defined(RADIOLIB_EXCLUDE_SX127X) 8 #include "../../Module.h" 10 #include "../../protocols/PhysicalLayer/PhysicalLayer.h" 13 #define SX127X_FREQUENCY_STEP_SIZE 61.03515625 14 #define SX127X_MAX_PACKET_LENGTH 255 15 #define SX127X_MAX_PACKET_LENGTH_FSK 64 16 #define SX127X_CRYSTAL_FREQ 32.0 17 #define SX127X_DIV_EXPONENT 19 20 #define SX127X_REG_FIFO 0x00 21 #define SX127X_REG_OP_MODE 0x01 22 #define SX127X_REG_FRF_MSB 0x06 23 #define SX127X_REG_FRF_MID 0x07 24 #define SX127X_REG_FRF_LSB 0x08 25 #define SX127X_REG_PA_CONFIG 0x09 26 #define SX127X_REG_PA_RAMP 0x0A 27 #define SX127X_REG_OCP 0x0B 28 #define SX127X_REG_LNA 0x0C 29 #define SX127X_REG_FIFO_ADDR_PTR 0x0D 30 #define SX127X_REG_FIFO_TX_BASE_ADDR 0x0E 31 #define SX127X_REG_FIFO_RX_BASE_ADDR 0x0F 32 #define SX127X_REG_FIFO_RX_CURRENT_ADDR 0x10 33 #define SX127X_REG_IRQ_FLAGS_MASK 0x11 34 #define SX127X_REG_IRQ_FLAGS 0x12 35 #define SX127X_REG_RX_NB_BYTES 0x13 36 #define SX127X_REG_RX_HEADER_CNT_VALUE_MSB 0x14 37 #define SX127X_REG_RX_HEADER_CNT_VALUE_LSB 0x15 38 #define SX127X_REG_RX_PACKET_CNT_VALUE_MSB 0x16 39 #define SX127X_REG_RX_PACKET_CNT_VALUE_LSB 0x17 40 #define SX127X_REG_MODEM_STAT 0x18 41 #define SX127X_REG_PKT_SNR_VALUE 0x19 42 #define SX127X_REG_PKT_RSSI_VALUE 0x1A 43 #define SX127X_REG_RSSI_VALUE 0x1B 44 #define SX127X_REG_HOP_CHANNEL 0x1C 45 #define SX127X_REG_MODEM_CONFIG_1 0x1D 46 #define SX127X_REG_MODEM_CONFIG_2 0x1E 47 #define SX127X_REG_SYMB_TIMEOUT_LSB 0x1F 48 #define SX127X_REG_PREAMBLE_MSB 0x20 49 #define SX127X_REG_PREAMBLE_LSB 0x21 50 #define SX127X_REG_PAYLOAD_LENGTH 0x22 51 #define SX127X_REG_MAX_PAYLOAD_LENGTH 0x23 52 #define SX127X_REG_HOP_PERIOD 0x24 53 #define SX127X_REG_FIFO_RX_BYTE_ADDR 0x25 54 #define SX127X_REG_FEI_MSB 0x28 55 #define SX127X_REG_FEI_MID 0x29 56 #define SX127X_REG_FEI_LSB 0x2A 57 #define SX127X_REG_RSSI_WIDEBAND 0x2C 58 #define SX127X_REG_DETECT_OPTIMIZE 0x31 59 #define SX127X_REG_INVERT_IQ 0x33 60 #define SX127X_REG_DETECTION_THRESHOLD 0x37 61 #define SX127X_REG_SYNC_WORD 0x39 62 #define SX127X_REG_INVERT_IQ2 0x3B 63 #define SX127X_REG_DIO_MAPPING_1 0x40 64 #define SX127X_REG_DIO_MAPPING_2 0x41 65 #define SX127X_REG_VERSION 0x42 69 #define SX127X_FSK_OOK 0b00000000 // 7 7 FSK/OOK mode 70 #define SX127X_LORA 0b10000000 // 7 7 LoRa mode 71 #define SX127X_ACCESS_SHARED_REG_OFF 0b00000000 // 6 6 access LoRa registers (0x0D:0x3F) in LoRa mode 72 #define SX127X_ACCESS_SHARED_REG_ON 0b01000000 // 6 6 access FSK registers (0x0D:0x3F) in LoRa mode 73 #define SX127X_SLEEP 0b00000000 // 2 0 sleep 74 #define SX127X_STANDBY 0b00000001 // 2 0 standby 75 #define SX127X_FSTX 0b00000010 // 2 0 frequency synthesis TX 76 #define SX127X_TX 0b00000011 // 2 0 transmit 77 #define SX127X_FSRX 0b00000100 // 2 0 frequency synthesis RX 78 #define SX127X_RXCONTINUOUS 0b00000101 // 2 0 receive continuous 79 #define SX127X_RXSINGLE 0b00000110 // 2 0 receive single 80 #define SX127X_CAD 0b00000111 // 2 0 channel activity detection 83 #define SX127X_PA_SELECT_RFO 0b00000000 // 7 7 RFO pin output, power limited to +14 dBm 84 #define SX127X_PA_SELECT_BOOST 0b10000000 // 7 7 PA_BOOST pin output, power limited to +20 dBm 85 #define SX127X_OUTPUT_POWER 0b00001111 // 3 0 output power: P_out = 2 + OUTPUT_POWER [dBm] for PA_SELECT_BOOST 89 #define SX127X_OCP_OFF 0b00000000 // 5 5 PA overload current protection disabled 90 #define SX127X_OCP_ON 0b00100000 // 5 5 PA overload current protection enabled 91 #define SX127X_OCP_TRIM 0b00001011 // 4 0 OCP current: I_max(OCP_TRIM = 0b1011) = 100 mA 94 #define SX127X_LNA_GAIN_1 0b00100000 // 7 5 LNA gain setting: max gain 95 #define SX127X_LNA_GAIN_2 0b01000000 // 7 5 . 96 #define SX127X_LNA_GAIN_3 0b01100000 // 7 5 . 97 #define SX127X_LNA_GAIN_4 0b10000000 // 7 5 . 98 #define SX127X_LNA_GAIN_5 0b10100000 // 7 5 . 99 #define SX127X_LNA_GAIN_6 0b11000000 // 7 5 min gain 100 #define SX127X_LNA_BOOST_OFF 0b00000000 // 1 0 default LNA current 101 #define SX127X_LNA_BOOST_ON 0b00000011 // 1 0 150% LNA current 104 #define SX127X_SF_6 0b01100000 // 7 4 spreading factor: 64 chips/bit 105 #define SX127X_SF_7 0b01110000 // 7 4 128 chips/bit 106 #define SX127X_SF_8 0b10000000 // 7 4 256 chips/bit 107 #define SX127X_SF_9 0b10010000 // 7 4 512 chips/bit 108 #define SX127X_SF_10 0b10100000 // 7 4 1024 chips/bit 109 #define SX127X_SF_11 0b10110000 // 7 4 2048 chips/bit 110 #define SX127X_SF_12 0b11000000 // 7 4 4096 chips/bit 111 #define SX127X_TX_MODE_SINGLE 0b00000000 // 3 3 single TX 112 #define SX127X_TX_MODE_CONT 0b00001000 // 3 3 continuous TX 113 #define SX127X_RX_TIMEOUT_MSB 0b00000000 // 1 0 116 #define SX127X_RX_TIMEOUT_LSB 0b01100100 // 7 0 10 bit RX operation timeout 119 #define SX127X_PREAMBLE_LENGTH_MSB 0b00000000 // 7 0 2 byte preamble length setting: l_P = PREAMBLE_LENGTH + 4.25 120 #define SX127X_PREAMBLE_LENGTH_LSB 0b00001000 // 7 0 where l_p = preamble length 123 #define SX127X_DETECT_OPTIMIZE_SF_6 0b00000101 // 2 0 SF6 detection optimization 124 #define SX127X_DETECT_OPTIMIZE_SF_7_12 0b00000011 // 2 0 SF7 to SF12 detection optimization 127 #define SX127X_INVERT_IQ_RXPATH_ON 0b01000000 // 6 6 I and Q signals are inverted 128 #define SX127X_INVERT_IQ_RXPATH_OFF 0b00000000 // 6 6 normal mode 129 #define SX127X_INVERT_IQ_TXPATH_ON 0b00000001 // 0 0 I and Q signals are inverted 130 #define SX127X_INVERT_IQ_TXPATH_OFF 0b00000000 // 0 0 normal mode 133 #define SX127X_DETECTION_THRESHOLD_SF_6 0b00001100 // 7 0 SF6 detection threshold 134 #define SX127X_DETECTION_THRESHOLD_SF_7_12 0b00001010 // 7 0 SF7 to SF12 detection threshold 137 #define SX127X_PA_BOOST_OFF 0b00000100 // 2 0 PA_BOOST disabled 138 #define SX127X_PA_BOOST_ON 0b00000111 // 2 0 +20 dBm on PA_BOOST when OUTPUT_POWER = 0b1111 141 #define SX127X_HOP_PERIOD_OFF 0b00000000 // 7 0 number of periods between frequency hops; 0 = disabled 142 #define SX127X_HOP_PERIOD_MAX 0b11111111 // 7 0 145 #define SX127X_DIO0_RX_DONE 0b00000000 // 7 6 146 #define SX127X_DIO0_TX_DONE 0b01000000 // 7 6 147 #define SX127X_DIO0_CAD_DONE 0b10000000 // 7 6 148 #define SX127X_DIO1_RX_TIMEOUT 0b00000000 // 5 4 149 #define SX127X_DIO1_FHSS_CHANGE_CHANNEL 0b00010000 // 5 4 150 #define SX127X_DIO1_CAD_DETECTED 0b00100000 // 5 4 153 #define SX127X_CLEAR_IRQ_FLAG_RX_TIMEOUT 0b10000000 // 7 7 timeout 154 #define SX127X_CLEAR_IRQ_FLAG_RX_DONE 0b01000000 // 6 6 packet reception complete 155 #define SX127X_CLEAR_IRQ_FLAG_PAYLOAD_CRC_ERROR 0b00100000 // 5 5 payload CRC error 156 #define SX127X_CLEAR_IRQ_FLAG_VALID_HEADER 0b00010000 // 4 4 valid header received 157 #define SX127X_CLEAR_IRQ_FLAG_TX_DONE 0b00001000 // 3 3 payload transmission complete 158 #define SX127X_CLEAR_IRQ_FLAG_CAD_DONE 0b00000100 // 2 2 CAD complete 159 #define SX127X_CLEAR_IRQ_FLAG_FHSS_CHANGE_CHANNEL 0b00000010 // 1 1 FHSS change channel 160 #define SX127X_CLEAR_IRQ_FLAG_CAD_DETECTED 0b00000001 // 0 0 valid LoRa signal detected during CAD operation 163 #define SX127X_MASK_IRQ_FLAG_RX_TIMEOUT 0b01111111 // 7 7 timeout 164 #define SX127X_MASK_IRQ_FLAG_RX_DONE 0b10111111 // 6 6 packet reception complete 165 #define SX127X_MASK_IRQ_FLAG_PAYLOAD_CRC_ERROR 0b11011111 // 5 5 payload CRC error 166 #define SX127X_MASK_IRQ_FLAG_VALID_HEADER 0b11101111 // 4 4 valid header received 167 #define SX127X_MASK_IRQ_FLAG_TX_DONE 0b11110111 // 3 3 payload transmission complete 168 #define SX127X_MASK_IRQ_FLAG_CAD_DONE 0b11111011 // 2 2 CAD complete 169 #define SX127X_MASK_IRQ_FLAG_FHSS_CHANGE_CHANNEL 0b11111101 // 1 1 FHSS change channel 170 #define SX127X_MASK_IRQ_FLAG_CAD_DETECTED 0b11111110 // 0 0 valid LoRa signal detected during CAD operation 173 #define SX127X_FIFO_TX_BASE_ADDR_MAX 0b00000000 // 7 0 allocate the entire FIFO buffer for TX only 176 #define SX127X_FIFO_RX_BASE_ADDR_MAX 0b00000000 // 7 0 allocate the entire FIFO buffer for RX only 179 #define SX127X_SYNC_WORD 0x12 // 7 0 default LoRa sync word 180 #define SX127X_SYNC_WORD_LORAWAN 0x34 // 7 0 sync word reserved for LoRaWAN networks 183 #define SX127X_IQ2_ENABLE 0x19 // 7 0 enable optimize for inverted IQ 184 #define SX127X_IQ2_DISABLE 0x1D // 7 0 reset optimize for inverted IQ 188 #define SX127X_REG_BITRATE_MSB 0x02 189 #define SX127X_REG_BITRATE_LSB 0x03 190 #define SX127X_REG_FDEV_MSB 0x04 191 #define SX127X_REG_FDEV_LSB 0x05 192 #define SX127X_REG_RX_CONFIG 0x0D 193 #define SX127X_REG_RSSI_CONFIG 0x0E 194 #define SX127X_REG_RSSI_COLLISION 0x0F 195 #define SX127X_REG_RSSI_THRESH 0x10 196 #define SX127X_REG_RSSI_VALUE_FSK 0x11 197 #define SX127X_REG_RX_BW 0x12 198 #define SX127X_REG_AFC_BW 0x13 199 #define SX127X_REG_OOK_PEAK 0x14 200 #define SX127X_REG_OOK_FIX 0x15 201 #define SX127X_REG_OOK_AVG 0x16 202 #define SX127X_REG_AFC_FEI 0x1A 203 #define SX127X_REG_AFC_MSB 0x1B 204 #define SX127X_REG_AFC_LSB 0x1C 205 #define SX127X_REG_FEI_MSB_FSK 0x1D 206 #define SX127X_REG_FEI_LSB_FSK 0x1E 207 #define SX127X_REG_PREAMBLE_DETECT 0x1F 208 #define SX127X_REG_RX_TIMEOUT_1 0x20 209 #define SX127X_REG_RX_TIMEOUT_2 0x21 210 #define SX127X_REG_RX_TIMEOUT_3 0x22 211 #define SX127X_REG_RX_DELAY 0x23 212 #define SX127X_REG_OSC 0x24 213 #define SX127X_REG_PREAMBLE_MSB_FSK 0x25 214 #define SX127X_REG_PREAMBLE_LSB_FSK 0x26 215 #define SX127X_REG_SYNC_CONFIG 0x27 216 #define SX127X_REG_SYNC_VALUE_1 0x28 217 #define SX127X_REG_SYNC_VALUE_2 0x29 218 #define SX127X_REG_SYNC_VALUE_3 0x2A 219 #define SX127X_REG_SYNC_VALUE_4 0x2B 220 #define SX127X_REG_SYNC_VALUE_5 0x2C 221 #define SX127X_REG_SYNC_VALUE_6 0x2D 222 #define SX127X_REG_SYNC_VALUE_7 0x2E 223 #define SX127X_REG_SYNC_VALUE_8 0x2F 224 #define SX127X_REG_PACKET_CONFIG_1 0x30 225 #define SX127X_REG_PACKET_CONFIG_2 0x31 226 #define SX127X_REG_PAYLOAD_LENGTH_FSK 0x32 227 #define SX127X_REG_NODE_ADRS 0x33 228 #define SX127X_REG_BROADCAST_ADRS 0x34 229 #define SX127X_REG_FIFO_THRESH 0x35 230 #define SX127X_REG_SEQ_CONFIG_1 0x36 231 #define SX127X_REG_SEQ_CONFIG_2 0x37 232 #define SX127X_REG_TIMER_RESOL 0x38 233 #define SX127X_REG_TIMER1_COEF 0x39 234 #define SX127X_REG_TIMER2_COEF 0x3A 235 #define SX127X_REG_IMAGE_CAL 0x3B 236 #define SX127X_REG_TEMP 0x3C 237 #define SX127X_REG_LOW_BAT 0x3D 238 #define SX127X_REG_IRQ_FLAGS_1 0x3E 239 #define SX127X_REG_IRQ_FLAGS_2 0x3F 243 #define SX127X_MODULATION_FSK 0b00000000 // 6 5 FSK modulation scheme 244 #define SX127X_MODULATION_OOK 0b00100000 // 6 5 OOK modulation scheme 245 #define SX127X_RX 0b00000101 // 2 0 receiver mode 248 #define SX127X_BITRATE_MSB 0x1A // 7 0 bit rate setting: BitRate = F(XOSC)/(BITRATE + BITRATE_FRAC/16) 249 #define SX127X_BITRATE_LSB 0x0B // 7 0 default value: 4.8 kbps 252 #define SX127X_FDEV_MSB 0x00 // 5 0 frequency deviation: Fdev = Fstep * FDEV 253 #define SX127X_FDEV_LSB 0x52 // 7 0 default value: 5 kHz 256 #define SX127X_RESTART_RX_ON_COLLISION_OFF 0b00000000 // 7 7 automatic receiver restart disabled (default) 257 #define SX127X_RESTART_RX_ON_COLLISION_ON 0b10000000 // 7 7 automatically restart receiver if it gets saturated or on packet collision 258 #define SX127X_RESTART_RX_WITHOUT_PLL_LOCK 0b01000000 // 6 6 manually restart receiver without frequency change 259 #define SX127X_RESTART_RX_WITH_PLL_LOCK 0b00100000 // 5 5 manually restart receiver with frequency change 260 #define SX127X_AFC_AUTO_OFF 0b00000000 // 4 4 no AFC performed (default) 261 #define SX127X_AFC_AUTO_ON 0b00010000 // 4 4 AFC performed at each receiver startup 262 #define SX127X_AGC_AUTO_OFF 0b00000000 // 3 3 LNA gain set manually by register 263 #define SX127X_AGC_AUTO_ON 0b00001000 // 3 3 LNA gain controlled by AGC 264 #define SX127X_RX_TRIGGER_NONE 0b00000000 // 2 0 receiver startup at: none 265 #define SX127X_RX_TRIGGER_RSSI_INTERRUPT 0b00000001 // 2 0 RSSI interrupt 266 #define SX127X_RX_TRIGGER_PREAMBLE_DETECT 0b00000110 // 2 0 preamble detected 267 #define SX127X_RX_TRIGGER_BOTH 0b00000111 // 2 0 RSSI interrupt and preamble detected 270 #define SX127X_RSSI_SMOOTHING_SAMPLES_2 0b00000000 // 2 0 number of samples for RSSI average: 2 271 #define SX127X_RSSI_SMOOTHING_SAMPLES_4 0b00000001 // 2 0 4 272 #define SX127X_RSSI_SMOOTHING_SAMPLES_8 0b00000010 // 2 0 8 (default) 273 #define SX127X_RSSI_SMOOTHING_SAMPLES_16 0b00000011 // 2 0 16 274 #define SX127X_RSSI_SMOOTHING_SAMPLES_32 0b00000100 // 2 0 32 275 #define SX127X_RSSI_SMOOTHING_SAMPLES_64 0b00000101 // 2 0 64 276 #define SX127X_RSSI_SMOOTHING_SAMPLES_128 0b00000110 // 2 0 128 277 #define SX127X_RSSI_SMOOTHING_SAMPLES_256 0b00000111 // 2 0 256 280 #define SX127X_RSSI_COLLISION_THRESHOLD 0x0A // 7 0 RSSI threshold in dB that will be considered a collision, default value: 10 dB 283 #define SX127X_RSSI_THRESHOLD 0xFF // 7 0 RSSI threshold that will trigger RSSI interrupt, RssiThreshold = RSSI_THRESHOLD / 2 [dBm] 286 #define SX127X_RX_BW_MANT_16 0b00000000 // 4 3 channel filter bandwidth: RxBw = F(XOSC) / (RxBwMant * 2^(RxBwExp + 2)) [kHz] 287 #define SX127X_RX_BW_MANT_20 0b00001000 // 4 3 288 #define SX127X_RX_BW_MANT_24 0b00010000 // 4 3 default RxBwMant parameter 289 #define SX127X_RX_BW_EXP 0b00000101 // 2 0 default RxBwExp parameter 292 #define SX127X_RX_BW_MANT_AFC 0b00001000 // 4 3 default RxBwMant parameter used during AFC 293 #define SX127X_RX_BW_EXP_AFC 0b00000011 // 2 0 default RxBwExp parameter used during AFC 296 #define SX127X_BIT_SYNC_OFF 0b00000000 // 5 5 bit synchronizer disabled (not allowed in packet mode) 297 #define SX127X_BIT_SYNC_ON 0b00100000 // 5 5 bit synchronizer enabled (default) 298 #define SX127X_OOK_THRESH_FIXED 0b00000000 // 4 3 OOK threshold type: fixed value 299 #define SX127X_OOK_THRESH_PEAK 0b00001000 // 4 3 peak mode (default) 300 #define SX127X_OOK_THRESH_AVERAGE 0b00010000 // 4 3 average mode 301 #define SX127X_OOK_PEAK_THRESH_STEP_0_5_DB 0b00000000 // 2 0 OOK demodulator step size: 0.5 dB (default) 302 #define SX127X_OOK_PEAK_THRESH_STEP_1_0_DB 0b00000001 // 2 0 1.0 dB 303 #define SX127X_OOK_PEAK_THRESH_STEP_1_5_DB 0b00000010 // 2 0 1.5 dB 304 #define SX127X_OOK_PEAK_THRESH_STEP_2_0_DB 0b00000011 // 2 0 2.0 dB 305 #define SX127X_OOK_PEAK_THRESH_STEP_3_0_DB 0b00000100 // 2 0 3.0 dB 306 #define SX127X_OOK_PEAK_THRESH_STEP_4_0_DB 0b00000101 // 2 0 4.0 dB 307 #define SX127X_OOK_PEAK_THRESH_STEP_5_0_DB 0b00000110 // 2 0 5.0 dB 308 #define SX127X_OOK_PEAK_THRESH_STEP_6_0_DB 0b00000111 // 2 0 6.0 dB 311 #define SX127X_OOK_FIXED_THRESHOLD 0x0C // 7 0 default fixed threshold for OOK data slicer 314 #define SX127X_OOK_PEAK_THRESH_DEC_1_1_CHIP 0b00000000 // 7 5 OOK demodulator step period: once per chip (default) 315 #define SX127X_OOK_PEAK_THRESH_DEC_1_2_CHIP 0b00100000 // 7 5 once every 2 chips 316 #define SX127X_OOK_PEAK_THRESH_DEC_1_4_CHIP 0b01000000 // 7 5 once every 4 chips 317 #define SX127X_OOK_PEAK_THRESH_DEC_1_8_CHIP 0b01100000 // 7 5 once every 8 chips 318 #define SX127X_OOK_PEAK_THRESH_DEC_2_1_CHIP 0b10000000 // 7 5 2 times per chip 319 #define SX127X_OOK_PEAK_THRESH_DEC_4_1_CHIP 0b10100000 // 7 5 4 times per chip 320 #define SX127X_OOK_PEAK_THRESH_DEC_8_1_CHIP 0b11000000 // 7 5 8 times per chip 321 #define SX127X_OOK_PEAK_THRESH_DEC_16_1_CHIP 0b11100000 // 7 5 16 times per chip 322 #define SX127X_OOK_AVERAGE_OFFSET_0_DB 0b00000000 // 3 2 OOK average threshold offset: 0.0 dB (default) 323 #define SX127X_OOK_AVERAGE_OFFSET_2_DB 0b00000100 // 3 2 2.0 dB 324 #define SX127X_OOK_AVERAGE_OFFSET_4_DB 0b00001000 // 3 2 4.0 dB 325 #define SX127X_OOK_AVERAGE_OFFSET_6_DB 0b00001100 // 3 2 6.0 dB 326 #define SX127X_OOK_AVG_THRESH_FILT_32_PI 0b00000000 // 1 0 OOK average filter coefficient: chip rate / 32*pi 327 #define SX127X_OOK_AVG_THRESH_FILT_8_PI 0b00000001 // 1 0 chip rate / 8*pi 328 #define SX127X_OOK_AVG_THRESH_FILT_4_PI 0b00000010 // 1 0 chip rate / 4*pi (default) 329 #define SX127X_OOK_AVG_THRESH_FILT_2_PI 0b00000011 // 1 0 chip rate / 2*pi 332 #define SX127X_AGC_START 0b00010000 // 4 4 manually start AGC sequence 333 #define SX127X_AFC_CLEAR 0b00000010 // 1 1 manually clear AFC register 334 #define SX127X_AFC_AUTO_CLEAR_OFF 0b00000000 // 0 0 AFC register will not be cleared at the start of AFC (default) 335 #define SX127X_AFC_AUTO_CLEAR_ON 0b00000001 // 0 0 AFC register will be cleared at the start of AFC 338 #define SX127X_PREAMBLE_DETECTOR_OFF 0b00000000 // 7 7 preamble detection disabled 339 #define SX127X_PREAMBLE_DETECTOR_ON 0b10000000 // 7 7 preamble detection enabled (default) 340 #define SX127X_PREAMBLE_DETECTOR_1_BYTE 0b00000000 // 6 5 preamble detection size: 1 byte (default) 341 #define SX127X_PREAMBLE_DETECTOR_2_BYTE 0b00100000 // 6 5 2 bytes 342 #define SX127X_PREAMBLE_DETECTOR_3_BYTE 0b01000000 // 6 5 3 bytes 343 #define SX127X_PREAMBLE_DETECTOR_TOL 0x0A // 4 0 default number of tolerated errors per chip (4 chips per bit) 346 #define SX127X_TIMEOUT_RX_RSSI_OFF 0x00 // 7 0 disable receiver timeout when RSSI interrupt doesn't occur (default) 349 #define SX127X_TIMEOUT_RX_PREAMBLE_OFF 0x00 // 7 0 disable receiver timeout when preamble interrupt doesn't occur (default) 352 #define SX127X_TIMEOUT_SIGNAL_SYNC_OFF 0x00 // 7 0 disable receiver timeout when sync address interrupt doesn't occur (default) 355 #define SX127X_RC_CAL_START 0b00000000 // 3 3 manually start RC oscillator calibration 356 #define SX127X_CLK_OUT_FXOSC 0b00000000 // 2 0 ClkOut frequency: F(XOSC) 357 #define SX127X_CLK_OUT_FXOSC_2 0b00000001 // 2 0 F(XOSC) / 2 358 #define SX127X_CLK_OUT_FXOSC_4 0b00000010 // 2 0 F(XOSC) / 4 359 #define SX127X_CLK_OUT_FXOSC_8 0b00000011 // 2 0 F(XOSC) / 8 360 #define SX127X_CLK_OUT_FXOSC_16 0b00000100 // 2 0 F(XOSC) / 16 361 #define SX127X_CLK_OUT_FXOSC_32 0b00000101 // 2 0 F(XOSC) / 32 362 #define SX127X_CLK_OUT_RC 0b00000110 // 2 0 RC 363 #define SX127X_CLK_OUT_OFF 0b00000111 // 2 0 disabled (default) 366 #define SX127X_PREAMBLE_SIZE_MSB 0x00 // 7 0 preamble size in bytes 367 #define SX127X_PREAMBLE_SIZE_LSB 0x03 // 7 0 default value: 3 bytes 370 #define SX127X_AUTO_RESTART_RX_MODE_OFF 0b00000000 // 7 6 Rx mode restart after packet reception: disabled 371 #define SX127X_AUTO_RESTART_RX_MODE_NO_PLL 0b01000000 // 7 6 enabled, don't wait for PLL lock 372 #define SX127X_AUTO_RESTART_RX_MODE_PLL 0b10000000 // 7 6 enabled, wait for PLL lock (default) 373 #define SX127X_PREAMBLE_POLARITY_AA 0b00000000 // 5 5 preamble polarity: 0xAA = 0b10101010 (default) 374 #define SX127X_PREAMBLE_POLARITY_55 0b00100000 // 5 5 0x55 = 0b01010101 375 #define SX127X_SYNC_OFF 0b00000000 // 4 4 sync word disabled 376 #define SX127X_SYNC_ON 0b00010000 // 4 4 sync word enabled (default) 377 #define SX127X_SYNC_SIZE 0x03 // 2 0 sync word size in bytes, SyncSize = SYNC_SIZE + 1 bytes 380 #define SX127X_SYNC_VALUE_1 0x01 // 7 0 sync word: 1st byte (MSB) 381 #define SX127X_SYNC_VALUE_2 0x01 // 7 0 2nd byte 382 #define SX127X_SYNC_VALUE_3 0x01 // 7 0 3rd byte 383 #define SX127X_SYNC_VALUE_4 0x01 // 7 0 4th byte 384 #define SX127X_SYNC_VALUE_5 0x01 // 7 0 5th byte 385 #define SX127X_SYNC_VALUE_6 0x01 // 7 0 6th byte 386 #define SX127X_SYNC_VALUE_7 0x01 // 7 0 7th byte 387 #define SX127X_SYNC_VALUE_8 0x01 // 7 0 8th byte (LSB) 390 #define SX127X_PACKET_FIXED 0b00000000 // 7 7 packet format: fixed length 391 #define SX127X_PACKET_VARIABLE 0b10000000 // 7 7 variable length (default) 392 #define SX127X_DC_FREE_NONE 0b00000000 // 6 5 DC-free encoding: disabled (default) 393 #define SX127X_DC_FREE_MANCHESTER 0b00100000 // 6 5 Manchester 394 #define SX127X_DC_FREE_WHITENING 0b01000000 // 6 5 Whitening 395 #define SX127X_CRC_OFF 0b00000000 // 4 4 CRC disabled 396 #define SX127X_CRC_ON 0b00010000 // 4 4 CRC enabled (default) 397 #define SX127X_CRC_AUTOCLEAR_OFF 0b00001000 // 3 3 keep FIFO on CRC mismatch, issue payload ready interrupt 398 #define SX127X_CRC_AUTOCLEAR_ON 0b00000000 // 3 3 clear FIFO on CRC mismatch, do not issue payload ready interrupt 399 #define SX127X_ADDRESS_FILTERING_OFF 0b00000000 // 2 1 address filtering: none (default) 400 #define SX127X_ADDRESS_FILTERING_NODE 0b00000010 // 2 1 node 401 #define SX127X_ADDRESS_FILTERING_NODE_BROADCAST 0b00000100 // 2 1 node or broadcast 402 #define SX127X_CRC_WHITENING_TYPE_CCITT 0b00000000 // 0 0 CRC and whitening algorithms: CCITT CRC with standard whitening (default) 403 #define SX127X_CRC_WHITENING_TYPE_IBM 0b00000001 // 0 0 IBM CRC with alternate whitening 406 #define SX127X_DATA_MODE_PACKET 0b01000000 // 6 6 data mode: packet (default) 407 #define SX127X_DATA_MODE_CONTINUOUS 0b00000000 // 6 6 continuous 408 #define SX127X_IO_HOME_OFF 0b00000000 // 5 5 io-homecontrol compatibility disabled (default) 409 #define SX127X_IO_HOME_ON 0b00100000 // 5 5 io-homecontrol compatibility enabled 412 #define SX127X_TX_START_FIFO_LEVEL 0b00000000 // 7 7 start packet transmission when: number of bytes in FIFO exceeds FIFO_THRESHOLD 413 #define SX127X_TX_START_FIFO_NOT_EMPTY 0b10000000 // 7 7 at least one byte in FIFO (default) 414 #define SX127X_FIFO_THRESH 0x0F // 5 0 FIFO level threshold 417 #define SX127X_SEQUENCER_START 0b10000000 // 7 7 manually start sequencer 418 #define SX127X_SEQUENCER_STOP 0b01000000 // 6 6 manually stop sequencer 419 #define SX127X_IDLE_MODE_STANDBY 0b00000000 // 5 5 chip mode during sequencer idle mode: standby (default) 420 #define SX127X_IDLE_MODE_SLEEP 0b00100000 // 5 5 sleep 421 #define SX127X_FROM_START_LP_SELECTION 0b00000000 // 4 3 mode that will be set after starting sequencer: low power selection (default) 422 #define SX127X_FROM_START_RECEIVE 0b00001000 // 4 3 receive 423 #define SX127X_FROM_START_TRANSMIT 0b00010000 // 4 3 transmit 424 #define SX127X_FROM_START_TRANSMIT_FIFO_LEVEL 0b00011000 // 4 3 transmit on a FIFO level interrupt 425 #define SX127X_LP_SELECTION_SEQ_OFF 0b00000000 // 2 2 mode that will be set after exiting low power selection: sequencer off (default) 426 #define SX127X_LP_SELECTION_IDLE 0b00000100 // 2 2 idle state 427 #define SX127X_FROM_IDLE_TRANSMIT 0b00000000 // 1 1 mode that will be set after exiting idle mode: transmit (default) 428 #define SX127X_FROM_IDLE_RECEIVE 0b00000010 // 1 1 receive 429 #define SX127X_FROM_TRANSMIT_LP_SELECTION 0b00000000 // 0 0 mode that will be set after exiting transmit mode: low power selection (default) 430 #define SX127X_FROM_TRANSMIT_RECEIVE 0b00000001 // 0 0 receive 433 #define SX127X_FROM_RECEIVE_PACKET_RECEIVED_PAYLOAD 0b00100000 // 7 5 mode that will be set after exiting receive mode: packet received on payload ready interrupt (default) 434 #define SX127X_FROM_RECEIVE_LP_SELECTION 0b01000000 // 7 5 low power selection 435 #define SX127X_FROM_RECEIVE_PACKET_RECEIVED_CRC_OK 0b01100000 // 7 5 packet received on CRC OK interrupt 436 #define SX127X_FROM_RECEIVE_SEQ_OFF_RSSI 0b10000000 // 7 5 sequencer off on RSSI interrupt 437 #define SX127X_FROM_RECEIVE_SEQ_OFF_SYNC_ADDR 0b10100000 // 7 5 sequencer off on sync address interrupt 438 #define SX127X_FROM_RECEIVE_SEQ_OFF_PREAMBLE_DETECT 0b11000000 // 7 5 sequencer off on preamble detect interrupt 439 #define SX127X_FROM_RX_TIMEOUT_RECEIVE 0b00000000 // 4 3 mode that will be set after Rx timeout: receive (default) 440 #define SX127X_FROM_RX_TIMEOUT_TRANSMIT 0b00001000 // 4 3 transmit 441 #define SX127X_FROM_RX_TIMEOUT_LP_SELECTION 0b00010000 // 4 3 low power selection 442 #define SX127X_FROM_RX_TIMEOUT_SEQ_OFF 0b00011000 // 4 3 sequencer off 443 #define SX127X_FROM_PACKET_RECEIVED_SEQ_OFF 0b00000000 // 2 0 mode that will be set after packet received: sequencer off (default) 444 #define SX127X_FROM_PACKET_RECEIVED_TRANSMIT 0b00000001 // 2 0 transmit 445 #define SX127X_FROM_PACKET_RECEIVED_LP_SELECTION 0b00000010 // 2 0 low power selection 446 #define SX127X_FROM_PACKET_RECEIVED_RECEIVE_FS 0b00000011 // 2 0 receive via FS 447 #define SX127X_FROM_PACKET_RECEIVED_RECEIVE 0b00000100 // 2 0 receive 450 #define SX127X_TIMER1_OFF 0b00000000 // 3 2 timer 1 resolution: disabled (default) 451 #define SX127X_TIMER1_RESOLUTION_64_US 0b00000100 // 3 2 64 us 452 #define SX127X_TIMER1_RESOLUTION_4_1_MS 0b00001000 // 3 2 4.1 ms 453 #define SX127X_TIMER1_RESOLUTION_262_MS 0b00001100 // 3 2 262 ms 454 #define SX127X_TIMER2_OFF 0b00000000 // 3 2 timer 2 resolution: disabled (default) 455 #define SX127X_TIMER2_RESOLUTION_64_US 0b00000001 // 3 2 64 us 456 #define SX127X_TIMER2_RESOLUTION_4_1_MS 0b00000010 // 3 2 4.1 ms 457 #define SX127X_TIMER2_RESOLUTION_262_MS 0b00000011 // 3 2 262 ms 460 #define SX127X_TIMER1_COEFFICIENT 0xF5 // 7 0 multiplication coefficient for timer 1 463 #define SX127X_TIMER2_COEFFICIENT 0x20 // 7 0 multiplication coefficient for timer 2 466 #define SX127X_AUTO_IMAGE_CAL_OFF 0b00000000 // 7 7 temperature calibration disabled (default) 467 #define SX127X_AUTO_IMAGE_CAL_ON 0b10000000 // 7 7 temperature calibration enabled 468 #define SX127X_IMAGE_CAL_START 0b01000000 // 6 6 start temperature calibration 469 #define SX127X_IMAGE_CAL_RUNNING 0b00100000 // 5 5 temperature calibration is on-going 470 #define SX127X_IMAGE_CAL_COMPLETE 0b00000000 // 5 5 temperature calibration finished 471 #define SX127X_TEMP_CHANGED 0b00001000 // 3 3 temperature changed more than TEMP_THRESHOLD since last calibration 472 #define SX127X_TEMP_THRESHOLD_5_DEG_C 0b00000000 // 2 1 temperature change threshold: 5 deg. C 473 #define SX127X_TEMP_THRESHOLD_10_DEG_C 0b00000010 // 2 1 10 deg. C (default) 474 #define SX127X_TEMP_THRESHOLD_15_DEG_C 0b00000100 // 2 1 15 deg. C 475 #define SX127X_TEMP_THRESHOLD_20_DEG_C 0b00000110 // 2 1 20 deg. C 476 #define SX127X_TEMP_MONITOR_ON 0b00000000 // 0 0 temperature monitoring enabled (default) 477 #define SX127X_TEMP_MONITOR_OFF 0b00000001 // 0 0 temperature monitoring disabled 480 #define SX127X_LOW_BAT_OFF 0b00000000 // 3 3 low battery detector disabled 481 #define SX127X_LOW_BAT_ON 0b00001000 // 3 3 low battery detector enabled 482 #define SX127X_LOW_BAT_TRIM_1_695_V 0b00000000 // 2 0 battery voltage threshold: 1.695 V 483 #define SX127X_LOW_BAT_TRIM_1_764_V 0b00000001 // 2 0 1.764 V 484 #define SX127X_LOW_BAT_TRIM_1_835_V 0b00000010 // 2 0 1.835 V (default) 485 #define SX127X_LOW_BAT_TRIM_1_905_V 0b00000011 // 2 0 1.905 V 486 #define SX127X_LOW_BAT_TRIM_1_976_V 0b00000100 // 2 0 1.976 V 487 #define SX127X_LOW_BAT_TRIM_2_045_V 0b00000101 // 2 0 2.045 V 488 #define SX127X_LOW_BAT_TRIM_2_116_V 0b00000110 // 2 0 2.116 V 489 #define SX127X_LOW_BAT_TRIM_2_185_V 0b00000111 // 2 0 2.185 V 492 #define SX127X_FLAG_MODE_READY 0b10000000 // 7 7 requested mode is ready 493 #define SX127X_FLAG_RX_READY 0b01000000 // 6 6 reception ready (after RSSI, AGC, AFC) 494 #define SX127X_FLAG_TX_READY 0b00100000 // 5 5 transmission ready (after PA ramp-up) 495 #define SX127X_FLAG_PLL_LOCK 0b00010000 // 4 4 PLL locked 496 #define SX127X_FLAG_RSSI 0b00001000 // 3 3 RSSI value exceeds RSSI threshold 497 #define SX127X_FLAG_TIMEOUT 0b00000100 // 2 2 timeout occurred 498 #define SX127X_FLAG_PREAMBLE_DETECT 0b00000010 // 1 1 valid preamble was detected 499 #define SX127X_FLAG_SYNC_ADDRESS_MATCH 0b00000001 // 0 0 sync address matched 502 #define SX127X_FLAG_FIFO_FULL 0b10000000 // 7 7 FIFO is full 503 #define SX127X_FLAG_FIFO_EMPTY 0b01000000 // 6 6 FIFO is empty 504 #define SX127X_FLAG_FIFO_LEVEL 0b00100000 // 5 5 number of bytes in FIFO exceeds FIFO_THRESHOLD 505 #define SX127X_FLAG_FIFO_OVERRUN 0b00010000 // 4 4 FIFO overrun occurred 506 #define SX127X_FLAG_PACKET_SENT 0b00001000 // 3 3 packet was successfully sent 507 #define SX127X_FLAG_PAYLOAD_READY 0b00000100 // 2 2 packet was successfully received 508 #define SX127X_FLAG_CRC_OK 0b00000010 // 1 1 CRC check passed 509 #define SX127X_FLAG_LOW_BAT 0b00000001 // 0 0 battery voltage dropped below threshold 512 #define SX127X_DIO0_CONT_SYNC_ADDRESS 0b00000000 // 7 6 513 #define SX127X_DIO0_CONT_TX_READY 0b00000000 // 7 6 514 #define SX127X_DIO0_CONT_RSSI_PREAMBLE_DETECTED 0b01000000 // 7 6 515 #define SX127X_DIO0_CONT_RX_READY 0b10000000 // 7 6 516 #define SX127X_DIO0_PACK_PAYLOAD_READY 0b00000000 // 7 6 517 #define SX127X_DIO0_PACK_PACKET_SENT 0b00000000 // 7 6 518 #define SX127X_DIO0_PACK_CRC_OK 0b01000000 // 7 6 519 #define SX127X_DIO0_PACK_TEMP_CHANGE_LOW_BAT 0b11000000 // 7 6 520 #define SX127X_DIO1_CONT_DCLK 0b00000000 // 5 4 521 #define SX127X_DIO1_CONT_RSSI_PREAMBLE_DETECTED 0b00010000 // 5 4 522 #define SX127X_DIO1_PACK_FIFO_LEVEL 0b00000000 // 5 4 523 #define SX127X_DIO1_PACK_FIFO_EMPTY 0b00010000 // 5 4 524 #define SX127X_DIO1_PACK_FIFO_FULL 0b00100000 // 5 4 525 #define SX127X_DIO2_CONT_DATA 0b00000000 // 3 2 528 #define SX127X_FAST_HOP_OFF 0b00000000 // 7 7 carrier frequency validated when FRF registers are written 529 #define SX127X_FAST_HOP_ON 0b10000000 // 7 7 carrier frequency validated when FS modes are requested 532 #define SX127X_TCXO_INPUT_EXTERNAL 0b00000000 // 4 4 use external crystal oscillator 533 #define SX127X_TCXO_INPUT_EXTERNAL_CLIPPED 0b00010000 // 4 4 use external crystal oscillator clipped sine connected to XTA pin 536 #define SX127X_PLL_BANDWIDTH_75_KHZ 0b00000000 // 7 6 PLL bandwidth: 75 kHz 537 #define SX127X_PLL_BANDWIDTH_150_KHZ 0b01000000 // 7 6 150 kHz 538 #define SX127X_PLL_BANDWIDTH_225_KHZ 0b10000000 // 7 6 225 kHz 539 #define SX127X_PLL_BANDWIDTH_300_KHZ 0b11000000 // 7 6 300 kHz (default) 577 int16_t
begin(uint8_t chipVersion, uint8_t syncWord, uint16_t preambleLength);
582 virtual void reset() = 0;
601 int16_t
beginFSK(uint8_t chipVersion,
float br,
float freqDev,
float rxBw, uint16_t preambleLength,
bool enableOOK);
615 int16_t
transmit(uint8_t* data,
size_t len, uint8_t addr = 0)
override;
627 int16_t
receive(uint8_t* data,
size_t len)
override;
713 int16_t
startTransmit(uint8_t* data,
size_t len, uint8_t addr = 0)
override;
724 int16_t
startReceive(uint8_t len = 0, uint8_t mode = SX127X_RXCONTINUOUS);
735 int16_t
readData(uint8_t* data,
size_t len)
override;
826 int16_t
setSyncWord(uint8_t* syncWord,
size_t len);
860 int16_t
setOOK(
bool enableOOK);
899 int16_t
setRSSIConfig(uint8_t smoothingSamples, int8_t offset = 0);
968 #ifndef RADIOLIB_GODMODE 980 bool _crcEnabled =
false;
981 size_t _packetLength = 0;
983 int16_t setFrequencyRaw(
float newFreq);
986 int16_t getActiveModem();
987 int16_t directMode();
988 int16_t setPacketMode(uint8_t mode, uint8_t len);
990 #ifndef RADIOLIB_GODMODE 994 bool _packetLengthQueried =
false;
995 uint8_t _packetLengthConfig = SX127X_PACKET_VARIABLE;
997 bool findChip(uint8_t ver);
998 int16_t setMode(uint8_t mode);
999 int16_t setActiveModem(uint8_t modem);
1000 void clearIRQFlags();
1001 void clearFIFO(
size_t count);
int16_t setRSSIConfig(uint8_t smoothingSamples, int8_t offset=0)
Sets RSSI measurement configuration in FSK mode.
Definition: SX127x.cpp:909
int16_t invertIQ(bool invertIQ)
Enables/disables Invert the LoRa I and Q signals.
Definition: SX127x.cpp:1193
Base class for SX127x series. All derived classes for SX127x (e.g. SX1278 or SX1272) inherit from thi...
Definition: SX127x.h:547
size_t getPacketLength(bool update=true) override
Query modem for the packet length of received payload.
Definition: SX127x.cpp:873
int16_t readData(uint8_t *data, size_t len) override
Reads data that was received after calling startReceive method. This method reads len characters...
Definition: SX127x.cpp:485
int16_t transmitDirect(uint32_t frf=0) override
Enables direct transmission mode on pins DIO1 (clock) and DIO2 (data). While in direct mode...
Definition: SX127x.cpp:293
uint8_t random()
Get one truly random byte from RSSI noise.
Definition: SX127x.cpp:980
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes.
Definition: PhysicalLayer.cpp:49
void clearDio0Action()
Clears interrupt service routine to call when DIO0 activates.
Definition: SX127x.cpp:406
virtual void reset()=0
Reset method. Will reset the chip to the default state using RST pin. Declared pure virtual since SX1...
int16_t setNodeAddress(uint8_t nodeAddr)
Sets FSK node address. Calling this method will enable address filtering. Only available in FSK mode...
Definition: SX127x.cpp:793
int16_t receive(uint8_t *data, size_t len) override
Binary receive method. Will attempt to receive arbitrary binary data up to 255 bytes long using LoRa ...
Definition: SX127x.cpp:193
int16_t transmit(uint8_t *data, size_t len, uint8_t addr=0) override
Binary transmit method. Will transmit arbitrary binary data up to 255 bytes long using LoRa or up to ...
Definition: SX127x.cpp:126
float getSNR()
Gets signal-to-noise ratio of the latest received packet.
Definition: SX127x.cpp:661
int16_t setSyncWord(uint8_t syncWord)
Sets LoRa sync word. Only available in LoRa mode.
Definition: SX127x.cpp:542
int16_t setBitRate(float br)
Sets FSK bit rate. Allowed values range from 1.2 to 300 kbps. Only available in FSK mode...
Definition: SX127x.cpp:676
int16_t setOOK(bool enableOOK)
Enables/disables OOK modulation instead of FSK.
Definition: SX127x.cpp:839
float getFrequencyError(bool autoCorrect=false)
Gets frequency error of the latest received packet.
Definition: SX127x.cpp:608
int16_t startTransmit(uint8_t *data, size_t len, uint8_t addr=0) override
Interrupt-driven binary transmit method. Will start transmitting arbitrary binary data up to 255 byte...
Definition: SX127x.cpp:424
uint8_t getModemStatus()
Reads modem status. Only available in LoRa mode.
Definition: SX127x.cpp:966
int16_t setCurrentLimit(uint8_t currentLimit)
Sets current limit for over current protection at transmitter amplifier. Allowed values range from 45...
Definition: SX127x.cpp:555
int16_t sleep()
Sets the LoRa module to sleep to save power. Module will not be able to transmit or receive any data ...
Definition: SX127x.cpp:277
int16_t startReceive(uint8_t len=0, uint8_t mode=SX127X_RXCONTINUOUS)
Interrupt-driven receive method. DIO0 will be activated when full valid packet is received...
Definition: SX127x.cpp:358
void setDio0Action(void(*func)(void))
Set interrupt service routine function to call when DIO0 activates.
Definition: SX127x.cpp:402
void clearDio1Action()
Clears interrupt service routine to call when DIO1 activates.
Definition: SX127x.cpp:417
int16_t getChipVersion()
Read version SPI register. Should return SX1278_CHIP_VERSION (0x12) or SX1272_CHIP_VERSION (0x22) if ...
Definition: SX127x.cpp:1005
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
int16_t receiveDirect() override
Enables direct reception mode on pins DIO1 (clock) and DIO2 (data). While in direct mode...
Definition: SX127x.cpp:319
int16_t setEncoding(uint8_t encoding) override
Sets transmission encoding. Only available in FSK mode. Allowed values are RADIOLIB_ENCODING_NRZ, RADIOLIB_ENCODING_MANCHESTER and RADIOLIB_ENCODING_WHITENING.
Definition: SX127x.cpp:932
int16_t variablePacketLengthMode(uint8_t maxLen=SX127X_MAX_PACKET_LENGTH_FSK)
Set modem in variable packet length mode. Available in FSK mode only.
Definition: SX127x.cpp:905
int16_t setFrequencyDeviation(float freqDev) override
Sets FSK frequency deviation from carrier frequency. Allowed values depend on bit rate setting and mu...
Definition: SX127x.cpp:705
int16_t standby() override
Sets the LoRa module to standby.
Definition: SX127x.cpp:285
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 range from 2.6 to 250 kHz. Only available in FSK mode...
Definition: SX127x.cpp:734
int16_t beginFSK(uint8_t chipVersion, float br, float freqDev, float rxBw, uint16_t preambleLength, bool enableOOK)
Initialization method for FSK modem. Will be called with appropriate parameters when calling FSK init...
Definition: SX127x.cpp:55
uint16_t getIRQFlags()
Reads currently active IRQ flags, can be used to check which event caused an interrupt. In LoRa mode, this is the content of SX127X_REG_IRQ_FLAGS register. In FSK mode, this is the contents of SX127X_REG_IRQ_FLAGS_2 (MSB) and SX127X_REG_IRQ_FLAGS_1 (LSB) registers.
Definition: SX127x.cpp:951
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN...
Definition: PhysicalLayer.h:13
int8_t getTempRaw()
Reads uncalibrated temperature value. This function will change operating mode and should not be call...
Definition: SX127x.cpp:1009
int16_t scanChannel()
Performs scan for valid LoRa preamble in the current channel.
Definition: SX127x.cpp:238
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: SX127x.cpp:976
int16_t packetMode()
Disables direct mode and enables packet mode, allowing the module to receive packets. Can only be activated in FSK mode.
Definition: SX127x.cpp:349
int16_t disableAddressFiltering()
Disables FSK address filtering.
Definition: SX127x.cpp:821
int16_t setBroadcastAddress(uint8_t broadAddr)
Sets FSK broadcast address. Calling this method will enable address filtering. Only available in FSK ...
Definition: SX127x.cpp:807
void setDio1Action(void(*func)(void))
Set interrupt service routine function to call when DIO1 activates.
Definition: SX127x.cpp:410
float getDataRate() const
Get data rate of the latest transmitted packet.
Definition: SX127x.cpp:672
SX127x(Module *mod)
Default constructor. Called internally when creating new LoRa instance.
Definition: SX127x.cpp:4
int16_t fixedPacketLengthMode(uint8_t len=SX127X_MAX_PACKET_LENGTH_FSK)
Set modem in fixed packet length mode. Available in FSK mode only.
Definition: SX127x.cpp:901
int16_t begin(uint8_t chipVersion, uint8_t syncWord, uint16_t preambleLength)
Initialization method. Will be called with appropriate parameters when calling initialization method ...
Definition: SX127x.cpp:8
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:57
int16_t setPreambleLength(uint16_t preambleLength)
Sets LoRa or FSK preamble length. Allowed values range from 6 to 65535 in LoRa mode or 0 to 65535 in ...
Definition: SX127x.cpp:579