sx127x: Major cleanup/rewrite, and tests pass with lorawan stack tests

This commit is contained in:
Olivier Fauchon
2022-01-20 16:32:09 +01:00
committed by Ron Evans
parent 28ddb2681d
commit dc4f0c974a
3 changed files with 392 additions and 523 deletions
+59 -60
View File
@@ -2,74 +2,73 @@ package sx127x
const (
// registers
REG_FIFO = 0x00
REG_OP_MODE = 0x01
REG_FRF_MSB = 0x06
REG_FRF_MID = 0x07
REG_FRF_LSB = 0x08
REG_PA_CONFIG = 0x09
REG_PA_RAMP = 0x0a
REG_OCP = 0x0b
REG_LNA = 0x0c
REG_FIFO_ADDR_PTR = 0x0d
REG_FIFO_TX_BASE_ADDR = 0x0e
REG_FIFO_RX_BASE_ADDR = 0x0f
REG_FIFO_RX_CURRENT_ADDR = 0x10
REG_IRQ_FLAGS_MASK = 0x11
REG_IRQ_FLAGS = 0x12
REG_RX_NB_BYTES = 0x13
REG_PKT_SNR_VALUE = 0x19
REG_PKT_RSSI_VALUE = 0x1a
REG_RSSI_VALUE = 0x1b
REG_MODEM_CONFIG_1 = 0x1d
REG_MODEM_CONFIG_2 = 0x1e
REG_SYMB_TIMEOUT_LSB = 0x1f
REG_PREAMBLE_MSB = 0x20
REG_PREAMBLE_LSB = 0x21
REG_PAYLOAD_LENGTH = 0x22
REG_MAX_PAYLOAD_LENGTH = 0x23
REG_HOP_PERIOD = 0x24
REG_MODEM_CONFIG_3 = 0x26
REG_FREQ_ERROR_MSB = 0x28
REG_FREQ_ERROR_MID = 0x29
REG_FREQ_ERROR_LSB = 0x2a
REG_RSSI_WIDEBAND = 0x2c
REG_DETECTION_OPTIMIZE = 0x31
REG_INVERTIQ = 0x33
REG_DETECTION_THRESHOLD = 0x37
REG_SYNC_WORD = 0x39
REG_INVERTIQ2 = 0x3b
REG_DIO_MAPPING_1 = 0x40
REG_DIO_MAPPING_2 = 0x41
REG_VERSION = 0x42
REG_PA_DAC = 0x4d
SX127X_REG_FIFO = 0x00
SX127X_REG_OP_MODE = 0x01
SX127X_REG_FRF_MSB = 0x06
SX127X_REG_FRF_MID = 0x07
SX127X_REG_FRF_LSB = 0x08
SX127X_REG_PA_CONFIG = 0x09
SX127X_REG_PA_RAMP = 0x0a
SX127X_REG_OCP = 0x0b
SX127X_REG_LNA = 0x0c
SX127X_REG_FIFO_ADDR_PTR = 0x0d
SX127X_REG_FIFO_TX_BASE_ADDR = 0x0e
SX127X_REG_FIFO_RX_BASE_ADDR = 0x0f
SX127X_REG_FIFO_RX_CURRENT_ADDR = 0x10
SX127X_REG_IRQ_FLAGS_MASK = 0x11
SX127X_REG_IRQ_FLAGS = 0x12
SX127X_REG_RX_NB_BYTES = 0x13
SX127X_REG_PKT_SNR_VALUE = 0x19
SX127X_REG_PKT_RSSI_VALUE = 0x1a
SX127X_REG_RSSI_VALUE = 0x1b
SX127X_REG_MODEM_CONFIG_1 = 0x1d
SX127X_REG_MODEM_CONFIG_2 = 0x1e
SX127X_REG_SYMB_TIMEOUT_LSB = 0x1f
SX127X_REG_PREAMBLE_MSB = 0x20
SX127X_REG_PREAMBLE_LSB = 0x21
SX127X_REG_PAYLOAD_LENGTH = 0x22
SX127X_REG_MAX_PAYLOAD_LENGTH = 0x23
SX127X_REG_HOP_PERIOD = 0x24
SX127X_REG_MODEM_CONFIG_3 = 0x26
SX127X_REG_FREQ_ERROR_MSB = 0x28
SX127X_REG_FREQ_ERROR_MID = 0x29
SX127X_REG_FREQ_ERROR_LSB = 0x2a
SX127X_REG_RSSI_WIDEBAND = 0x2c
SX127X_REG_DETECTION_OPTIMIZE = 0x31
SX127X_REG_INVERTIQ = 0x33
SX127X_REG_DETECTION_THRESHOLD = 0x37
SX127X_REG_SYNC_WORD = 0x39
SX127X_REG_INVERTIQ2 = 0x3b
SX127X_REG_DIO_MAPPING_1 = 0x40
SX127X_REG_DIO_MAPPING_2 = 0x41
SX127X_REG_VERSION = 0x42
SX127X_REG_PA_DAC = 0x4d
// PA config
PA_BOOST = 0x80
SX127X_PA_BOOST = 0x80
// Bits masking the corresponding IRQs from the radio
IRQ_LORA_RXTOUT_MASK = uint8(0x80)
IRQ_LORA_RXDONE_MASK = uint8(0x40)
IRQ_LORA_CRCERR_MASK = uint8(0x20)
IRQ_LORA_HEADER_MASK = uint8(0x10)
IRQ_LORA_TXDONE_MASK = uint8(0x08)
IRQ_LORA_CDDONE_MASK = uint8(0x04)
IRQ_LORA_FHSSCH_MASK = uint8(0x02)
IRQ_LORA_CDDETD_MASK = uint8(0x01)
SX127X_IRQ_LORA_RXTOUT_MASK = uint8(0x80)
SX127X_IRQ_LORA_RXDONE_MASK = uint8(0x40)
SX127X_IRQ_LORA_CRCERR_MASK = uint8(0x20)
SX127X_IRQ_LORA_HEADER_MASK = uint8(0x10)
SX127X_IRQ_LORA_TXDONE_MASK = uint8(0x08)
SX127X_IRQ_LORA_CDDONE_MASK = uint8(0x04)
SX127X_IRQ_LORA_FHSSCH_MASK = uint8(0x02)
SX127X_IRQ_LORA_CDDETD_MASK = uint8(0x01)
// DIO function mappings D0D1D2D3
MAP_DIO0_LORA_RXDONE = uint8(0x00) // 00------
MAP_DIO0_LORA_TXDONE = uint8(0x40) // 01------
MAP_DIO1_LORA_RXTOUT = uint8(0x00) // --00----
MAP_DIO1_LORA_NOP = uint8(0x30) // --11----
MAP_DIO2_LORA_NOP = uint8(0xC0) // ----11--
SX127X_MAP_DIO0_LORA_RXDONE = uint8(0x00) // 00------
SX127X_MAP_DIO0_LORA_TXDONE = uint8(0x40) // 01------
SX127X_MAP_DIO1_LORA_RXTOUT = uint8(0x00) // --00----
SX127X_MAP_DIO1_LORA_NOP = uint8(0x30) // --11----
SX127X_MAP_DIO2_LORA_NOP = uint8(0xC0) // ----11--
PAYLOAD_LENGTH = uint8(0x40)
SX127X_PAYLOAD_LENGTH = uint8(0x40)
// Low Noise Amp
LNA_MAX_GAIN = uint8(0x23)
LNA_OFF_GAIN = uint8(0x00)
LNA_LOW_GAIN = uint8(0x20)
SX127X_LNA_MAX_GAIN = uint8(0x23)
SX127X_LNA_OFF_GAIN = uint8(0x00)
SX127X_LNA_LOW_GAIN = uint8(0x20)
// Header type
SX127X_LORA_HEADER_EXPLICIT = uint8(0x00)