4#include "driver/spi_master.h"
13#define SX1276_REG_FIFO 0x00
14#define SX1276_REG_OP_MODE 0x01
15#define SX1276_REG_FRF_MSB 0x06
16#define SX1276_REG_FRF_MID 0x07
17#define SX1276_REG_FRF_LSB 0x08
18#define SX1276_REG_PA_CONFIG 0x09
19#define SX1276_REG_PA_RAMP 0x0A
20#define SX1276_REG_OCP 0x0B
21#define SX1276_REG_LNA 0x0C
22#define SX1276_REG_FIFO_ADDR_PTR 0x0D
23#define SX1276_REG_FIFO_TX_BASE_ADDR 0x0E
24#define SX1276_REG_FIFO_RX_BASE_ADDR 0x0F
25#define SX1276_REG_FIFO_RX_CURRENT_ADDR 0x10
26#define SX1276_REG_IRQ_FLAGS_MASK 0x11
27#define SX1276_REG_IRQ_FLAGS 0x12
28#define SX1276_REG_RX_NB_BYTES 0x13
29#define SX1276_REG_PKT_SNR_VALUE 0x19
30#define SX1276_REG_PKT_RSSI_VALUE 0x1A
31#define SX1276_REG_MODEM_CONFIG_1 0x1D
32#define SX1276_REG_MODEM_CONFIG_2 0x1E
33#define SX1276_REG_SYMB_TIMEOUT_LSB 0x1F
34#define SX1276_REG_PREAMBLE_MSB 0x20
35#define SX1276_REG_PREAMBLE_LSB 0x21
36#define SX1276_REG_PAYLOAD_LENGTH 0x22
37#define SX1276_REG_MAX_PAYLOAD_LENGTH 0x23
38#define SX1276_REG_HOP_PERIOD 0x24
39#define SX1276_REG_FIFO_RX_BYTE_ADDR 0x25
40#define SX1276_REG_MODEM_CONFIG_3 0x26
41#define SX1276_REG_DETECTION_OPTIMIZE 0x31
42#define SX1276_REG_DETECTION_THRESHOLD 0x37
43#define SX1276_REG_SYNC_WORD 0x39
44#define SX1276_REG_DIO_MAPPING_1 0x40
45#define SX1276_REG_DIO_MAPPING_2 0x41
46#define SX1276_REG_VERSION 0x42
47#define SX1276_REG_PA_DAC 0x4D
52#define SX1276_MODE_SLEEP 0x00
53#define SX1276_MODE_STDBY 0x01
54#define SX1276_MODE_FSTX 0x02
55#define SX1276_MODE_TX 0x03
56#define SX1276_MODE_FSRX 0x04
57#define SX1276_MODE_RX_CONTINUOUS 0x05
58#define SX1276_MODE_RX_SINGLE 0x06
59#define SX1276_MODE_CAD 0x07
61#define SX1276_MODE_LORA 0x80
66#define SX1276_IRQ_CAD_DETECTED 0x01
67#define SX1276_IRQ_FHSS_CHANGE_CHANNEL 0x02
68#define SX1276_IRQ_CAD_DONE 0x04
69#define SX1276_IRQ_TX_DONE 0x08
70#define SX1276_IRQ_VALID_HEADER 0x10
71#define SX1276_IRQ_PAYLOAD_CRC_ERROR 0x20
72#define SX1276_IRQ_RX_DONE 0x40
73#define SX1276_IRQ_RX_TIMEOUT 0x80
int pin_miso
Definition sx1276.h:80
int pin_mosi
Definition sx1276.h:81
int pin_rst
Definition sx1276.h:84
int pin_dio2
Definition sx1276.h:87
int pin_sck
Definition sx1276.h:82
int pin_cs
Definition sx1276.h:83
int pin_dio1
Definition sx1276.h:86
int pin_dio0
Definition sx1276.h:85
spi_host_device_t spi_host
Definition sx1276.h:88
uint8_t spreading_factor
Definition sx1276.h:94
uint8_t bandwidth
Definition sx1276.h:95
uint32_t frequency
Definition sx1276.h:93
bool implicit_header
Definition sx1276.h:99
bool crc_on
Definition sx1276.h:98
uint8_t sync_word
Definition sx1276.h:100
uint8_t coding_rate
Definition sx1276.h:96
uint8_t tx_power
Definition sx1276.h:97
int sx1276_transmit(const uint8_t *data, uint8_t len)
Load payload into FIFO and start transmit.
int sx1276_start_receive(void)
Start continuous receive mode.
uint8_t sx1276_get_irq_flags(void)
Read raw IRQ flags register.
int sx1276_configure_lora(const sx1276_lora_config_t *config)
Set LoRa parameters: frequency, SF, BW, TX power, sync word.
void sx1276_reset(void)
Hardware reset via RST pin.
bool sx1276_is_tx_done(void)
Check if last transmit has finished.
int sx1276_read_received(uint8_t *data, uint8_t *len, uint8_t max_len)
Copy last received packet into buffer.
void sx1276_clear_irq(void)
Clear all IRQ flags.
int sx1276_set_mode(uint8_t mode)
Set operating mode (standby, TX, RX, etc.)
bool sx1276_is_rx_done(void)
Check if a packet has been received.
int sx1276_init(const sx1276_config_t *config)
Initialize SX1276: GPIOs, SPI, reset chip, switch to LoRa and standby.
void sx1276_write_reg(uint8_t reg, uint8_t value)
Write one SX1276 register (low-level)
uint8_t sx1276_read_reg(uint8_t reg)
Read one SX1276 register (low-level)