tinygo.org/x/drivers@v0.27.1-0.20240509133757-7dbca2a54349/sx126x/registers.go (about)

     1  package sx126x
     2  
     3  const (
     4  	// SX126X physical layer properties
     5  	SX126X_FREQUENCY_STEP_SIZE = 0.9536743164
     6  	SX126X_MAX_PACKET_LENGTH   = 255
     7  	SX126X_CRYSTAL_FREQ        = 32.0
     8  	SX126X_DIV_EXPONENT        = 25
     9  
    10  	// SX126X SPI commands
    11  	// operational modes commands
    12  	SX126X_CMD_NOP                      = 0x00
    13  	SX126X_CMD_SET_SLEEP                = 0x84
    14  	SX126X_CMD_SET_STANDBY              = 0x80
    15  	SX126X_CMD_SET_FS                   = 0xC1
    16  	SX126X_CMD_SET_TX                   = 0x83
    17  	SX126X_CMD_SET_RX                   = 0x82
    18  	SX126X_CMD_STOP_TIMER_ON_PREAMBLE   = 0x9F
    19  	SX126X_CMD_SET_RX_DUTY_CYCLE        = 0x94
    20  	SX126X_CMD_SET_CAD                  = 0xC5
    21  	SX126X_CMD_SET_TX_CONTINUOUS_WAVE   = 0xD1
    22  	SX126X_CMD_SET_TX_INFINITE_PREAMBLE = 0xD2
    23  	SX126X_CMD_SET_REGULATOR_MODE       = 0x96
    24  	SX126X_CMD_CALIBRATE                = 0x89
    25  	SX126X_CMD_CALIBRATE_IMAGE          = 0x98
    26  	SX126X_CMD_SET_PA_CONFIG            = 0x95
    27  	SX126X_CMD_SET_RX_TX_FALLBACK_MODE  = 0x93
    28  
    29  	// register and buffer access commands
    30  	SX126X_CMD_WRITE_REGISTER = 0x0D
    31  	SX126X_CMD_READ_REGISTER  = 0x1D
    32  	SX126X_CMD_WRITE_BUFFER   = 0x0E
    33  	SX126X_CMD_READ_BUFFER    = 0x1E
    34  
    35  	// DIO and IRQ control
    36  	SX126X_CMD_SET_DIO_IRQ_PARAMS         = 0x08
    37  	SX126X_CMD_GET_IRQ_STATUS             = 0x12
    38  	SX126X_CMD_CLEAR_IRQ_STATUS           = 0x02
    39  	SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL = 0x9D
    40  	SX126X_CMD_SET_DIO3_AS_TCXO_CTRL      = 0x97
    41  
    42  	// RF, modulation and packet commands
    43  	SX126X_CMD_SET_RF_FREQUENCY          = 0x86
    44  	SX126X_CMD_SET_PACKET_TYPE           = 0x8A
    45  	SX126X_CMD_GET_PACKET_TYPE           = 0x11
    46  	SX126X_CMD_SET_TX_PARAMS             = 0x8E
    47  	SX126X_CMD_SET_MODULATION_PARAMS     = 0x8B
    48  	SX126X_CMD_SET_PACKET_PARAMS         = 0x8C
    49  	SX126X_CMD_SET_CAD_PARAMS            = 0x88
    50  	SX126X_CMD_SET_BUFFER_BASE_ADDRESS   = 0x8F
    51  	SX126X_CMD_SET_LORA_SYMB_NUM_TIMEOUT = 0x0A
    52  
    53  	// status commands
    54  	SX126X_CMD_GET_STATUS           = 0xC0
    55  	SX126X_CMD_GET_RSSI_INST        = 0x15
    56  	SX126X_CMD_GET_RX_BUFFER_STATUS = 0x13
    57  	SX126X_CMD_GET_PACKET_STATUS    = 0x14
    58  	SX126X_CMD_GET_DEVICE_ERRORS    = 0x17
    59  	SX126X_CMD_CLEAR_DEVICE_ERRORS  = 0x07
    60  	SX126X_CMD_GET_STATS            = 0x10
    61  	SX126X_CMD_RESET_STATS          = 0x00
    62  
    63  	// SX126X register map
    64  	SX126X_REG_WHITENING_INITIAL_MSB = 0x06B8
    65  	SX126X_REG_WHITENING_INITIAL_LSB = 0x06B9
    66  	SX126X_REG_CRC_INITIAL_MSB       = 0x06BC
    67  	SX126X_REG_CRC_INITIAL_LSB       = 0x06BD
    68  	SX126X_REG_CRC_POLYNOMIAL_MSB    = 0x06BE
    69  	SX126X_REG_CRC_POLYNOMIAL_LSB    = 0x06BF
    70  	SX126X_REG_SYNC_WORD_0           = 0x06C0
    71  	SX126X_REG_SYNC_WORD_1           = 0x06C1
    72  	SX126X_REG_SYNC_WORD_2           = 0x06C2
    73  	SX126X_REG_SYNC_WORD_3           = 0x06C3
    74  	SX126X_REG_SYNC_WORD_4           = 0x06C4
    75  	SX126X_REG_SYNC_WORD_5           = 0x06C5
    76  	SX126X_REG_SYNC_WORD_6           = 0x06C6
    77  	SX126X_REG_SYNC_WORD_7           = 0x06C7
    78  	SX126X_REG_NODE_ADDRESS          = 0x06CD
    79  	SX126X_REG_BROADCAST_ADDRESS     = 0x06CE
    80  	SX126X_REG_LORA_SYNC_WORD_MSB    = 0x0740
    81  	SX126X_REG_LORA_SYNC_WORD_LSB    = 0x0741
    82  	SX126X_REG_RANDOM_NUMBER_0       = 0x0819
    83  	SX126X_REG_RANDOM_NUMBER_1       = 0x081A
    84  	SX126X_REG_RANDOM_NUMBER_2       = 0x081B
    85  	SX126X_REG_RANDOM_NUMBER_3       = 0x081C
    86  	SX126X_REG_RX_GAIN               = 0x08AC
    87  	SX126X_REG_OCP_CONFIGURATION     = 0x08E7
    88  	SX126X_REG_XTA_TRIM              = 0x0911
    89  	SX126X_REG_XTB_TRIM              = 0x0912
    90  
    91  	// undocumented registers
    92  	SX126X_REG_SENSITIVITY_CONFIG  = 0x0889 // SX1268 datasheet v1.1, section 15.1
    93  	SX126X_REG_TX_CLAMP_CONFIG     = 0x08D8 // SX1268 datasheet v1.1, section 15.2
    94  	SX126X_REG_RTC_STOP            = 0x0920 // SX1268 datasheet v1.1, section 15.3
    95  	SX126X_REG_RTC_EVENT           = 0x0944 // SX1268 datasheet v1.1, section 15.3
    96  	SX126X_REG_IQ_CONFIG           = 0x0736 // SX1268 datasheet v1.1, section 15.4
    97  	SX126X_REG_RX_GAIN_RETENTION_0 = 0x029F // SX1268 datasheet v1.1, section 9.6
    98  	SX126X_REG_RX_GAIN_RETENTION_1 = 0x02A0 // SX1268 datasheet v1.1, section 9.6
    99  	SX126X_REG_RX_GAIN_RETENTION_2 = 0x02A1 // SX1268 datasheet v1.1, section 9.6
   100  
   101  	// SX126X SPI command variables
   102  	//SX126X_CMD_SET_SLEEP                                                MSB   LSB   DESCRIPTION
   103  	SX126X_SLEEP_START_COLD = 0b00000000 //  2     2     sleep mode: cold start, configuration is lost (default)
   104  	SX126X_SLEEP_START_WARM = 0b00000100 //  2     2                 warm start, configuration is retained
   105  	SX126X_SLEEP_RTC_OFF    = 0b00000000 //  0     0     wake on RTC timeout: disabled
   106  	SX126X_SLEEP_RTC_ON     = 0b00000001 //  0     0                          enabled
   107  
   108  	//SX126X_CMD_SET_STANDBY
   109  	SX126X_STANDBY_RC   = 0x00 //  7     0     standby mode: 13 MHz RC oscillator
   110  	SX126X_STANDBY_XOSC = 0x01 //  7     0                   32 MHz crystal oscillator
   111  
   112  	//SX126X_CMD_SET_RX
   113  	SX126X_RX_TIMEOUT_NONE = 0x000000 //  23    0     Rx timeout duration: no timeout (Rx single mode)
   114  	SX126X_RX_TIMEOUT_INF  = 0xFFFFFF //  23    0                          infinite (Rx continuous mode)
   115  
   116  	//SX126X_CMD_SET_TX
   117  	SX126X_TX_TIMEOUT_NONE = 0x000000 //  23    0     Tx timeout duration: no timeout (Tx single mode)
   118  
   119  	//SX126X_CMD_STOP_TIMER_ON_PREAMBLE
   120  	SX126X_STOP_ON_PREAMBLE_OFF = 0x00 //  7     0     stop timer on: sync word or header (default)
   121  	SX126X_STOP_ON_PREAMBLE_ON  = 0x01 //  7     0                    preamble detection
   122  
   123  	//SX126X_CMD_SET_REGULATOR_MODE
   124  	SX126X_REGULATOR_LDO   = 0x00 //  7     0     set regulator mode: LDO (default)
   125  	SX126X_REGULATOR_DC_DC = 0x01 //  7     0                         DC-DC
   126  
   127  	//SX126X_CMD_CALIBRATE
   128  	SX126X_CALIBRATE_IMAGE_OFF      = 0b00000000 //  6     6     image calibration: disabled
   129  	SX126X_CALIBRATE_IMAGE_ON       = 0b01000000 //  6     6                        enabled
   130  	SX126X_CALIBRATE_ADC_BULK_P_OFF = 0b00000000 //  5     5     ADC bulk P calibration: disabled
   131  	SX126X_CALIBRATE_ADC_BULK_P_ON  = 0b00100000 //  5     5                             enabled
   132  	SX126X_CALIBRATE_ADC_BULK_N_OFF = 0b00000000 //  4     4     ADC bulk N calibration: disabled
   133  	SX126X_CALIBRATE_ADC_BULK_N_ON  = 0b00010000 //  4     4                             enabled
   134  	SX126X_CALIBRATE_ADC_PULSE_OFF  = 0b00000000 //  3     3     ADC pulse calibration: disabled
   135  	SX126X_CALIBRATE_ADC_PULSE_ON   = 0b00001000 //  3     3                            enabled
   136  	SX126X_CALIBRATE_PLL_OFF        = 0b00000000 //  2     2     PLL calibration: disabled
   137  	SX126X_CALIBRATE_PLL_ON         = 0b00000100 //  2     2                      enabled
   138  	SX126X_CALIBRATE_RC13M_OFF      = 0b00000000 //  1     1     13 MHz RC osc. calibration: disabled
   139  	SX126X_CALIBRATE_RC13M_ON       = 0b00000010 //  1     1                                 enabled
   140  	SX126X_CALIBRATE_RC64K_OFF      = 0b00000000 //  0     0     64 kHz RC osc. calibration: disabled
   141  	SX126X_CALIBRATE_RC64K_ON       = 0b00000001 //  0     0                                 enabled
   142  	SX126X_CALIBRATE_ALL            = 0b01111111 //  6     0     calibrate all blocks
   143  
   144  	//SX126X_CMD_CALIBRATE_IMAGE
   145  	SX126X_CAL_IMG_430_MHZ_1 = 0x6B
   146  	SX126X_CAL_IMG_430_MHZ_2 = 0x6F
   147  	SX126X_CAL_IMG_470_MHZ_1 = 0x75
   148  	SX126X_CAL_IMG_470_MHZ_2 = 0x81
   149  	SX126X_CAL_IMG_779_MHZ_1 = 0xC1
   150  	SX126X_CAL_IMG_779_MHZ_2 = 0xC5
   151  	SX126X_CAL_IMG_863_MHZ_1 = 0xD7
   152  	SX126X_CAL_IMG_863_MHZ_2 = 0xDB
   153  	SX126X_CAL_IMG_902_MHZ_1 = 0xE1
   154  	SX126X_CAL_IMG_902_MHZ_2 = 0xE9
   155  
   156  	//SX126X_CMD_SET_PA_CONFIG
   157  	SX126X_PA_CONFIG_HP_MAX   = 0x07
   158  	SX126X_PA_CONFIG_PA_LUT   = 0x01
   159  	SX126X_PA_CONFIG_SX1262_8 = 0x00
   160  
   161  	//SX126X_CMD_SET_RX_TX_FALLBACK_MODE
   162  	SX126X_RX_TX_FALLBACK_MODE_FS         = 0x40 //  7     0     after Rx/Tx go to: FS mode
   163  	SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC = 0x30 //  7     0                        standby with crystal oscillator
   164  	SX126X_RX_TX_FALLBACK_MODE_STDBY_RC   = 0x20 //  7     0                        standby with RC oscillator (default)
   165  
   166  	//SX126X_CMD_SET_DIO_IRQ_PARAMS
   167  	SX126X_IRQ_TIMEOUT           = 0b1000000000 //  9     9     Rx or Tx timeout
   168  	SX126X_IRQ_CAD_DETECTED      = 0b0100000000 //  8     8     channel activity detected
   169  	SX126X_IRQ_CAD_DONE          = 0b0010000000 //  7     7     channel activity detection finished
   170  	SX126X_IRQ_CRC_ERR           = 0b0001000000 //  6     6     wrong CRC received
   171  	SX126X_IRQ_HEADER_ERR        = 0b0000100000 //  5     5     LoRa header CRC error
   172  	SX126X_IRQ_HEADER_VALID      = 0b0000010000 //  4     4     valid LoRa header received
   173  	SX126X_IRQ_SYNC_WORD_VALID   = 0b0000001000 //  3     3     valid sync word detected
   174  	SX126X_IRQ_PREAMBLE_DETECTED = 0b0000000100 //  2     2     preamble detected
   175  	SX126X_IRQ_RX_DONE           = 0b0000000010 //  1     1     packet received
   176  	SX126X_IRQ_TX_DONE           = 0b0000000001 //  0     0     packet transmission completed
   177  	SX126X_IRQ_ALL               = 0b1111111111 //  9     0     all interrupts
   178  	SX126X_IRQ_NONE              = 0b0000000000 //  9     0     no interrupts
   179  
   180  	//SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL
   181  	SX126X_DIO2_AS_IRQ       = 0x00 //  7     0     DIO2 configuration: IRQ
   182  	SX126X_DIO2_AS_RF_SWITCH = 0x01 //  7     0                         RF switch control
   183  
   184  	//SX126X_CMD_SET_DIO3_AS_TCXO_CTRL
   185  	SX126X_DIO3_OUTPUT_1_6 = 0x00 //  7     0     DIO3 voltage output for TCXO: 1.6 V
   186  	SX126X_DIO3_OUTPUT_1_7 = 0x01 //  7     0                                   1.7 V
   187  	SX126X_DIO3_OUTPUT_1_8 = 0x02 //  7     0                                   1.8 V
   188  	SX126X_DIO3_OUTPUT_2_2 = 0x03 //  7     0                                   2.2 V
   189  	SX126X_DIO3_OUTPUT_2_4 = 0x04 //  7     0                                   2.4 V
   190  	SX126X_DIO3_OUTPUT_2_7 = 0x05 //  7     0                                   2.7 V
   191  	SX126X_DIO3_OUTPUT_3_0 = 0x06 //  7     0                                   3.0 V
   192  	SX126X_DIO3_OUTPUT_3_3 = 0x07 //  7     0                                   3.3 V
   193  
   194  	//SX126X_CMD_SET_PACKET_TYPE
   195  	SX126X_PACKET_TYPE_GFSK = 0x00 //  7     0     packet type: GFSK
   196  	SX126X_PACKET_TYPE_LORA = 0x01 //  7     0                  LoRa
   197  
   198  	//SX126X_CMD_SET_TX_PARAMS
   199  	SX126X_PA_RAMP_10U   = 0x00 //  7     0     ramp time: 10 us
   200  	SX126X_PA_RAMP_20U   = 0x01 //  7     0                20 us
   201  	SX126X_PA_RAMP_40U   = 0x02 //  7     0                40 us
   202  	SX126X_PA_RAMP_80U   = 0x03 //  7     0                80 us
   203  	SX126X_PA_RAMP_200U  = 0x04 //  7     0                200 us
   204  	SX126X_PA_RAMP_800U  = 0x05 //  7     0                800 us
   205  	SX126X_PA_RAMP_1700U = 0x06 //  7     0                1700 us
   206  	SX126X_PA_RAMP_3400U = 0x07 //  7     0                3400 us
   207  
   208  	//SX126X_CMD_SET_MODULATION_PARAMS
   209  	SX126X_GFSK_FILTER_NONE      = 0x00 //  7     0     GFSK filter: none
   210  	SX126X_GFSK_FILTER_GAUSS_0_3 = 0x08 //  7     0                  Gaussian, BT = 0.3
   211  	SX126X_GFSK_FILTER_GAUSS_0_5 = 0x09 //  7     0                  Gaussian, BT = 0.5
   212  	SX126X_GFSK_FILTER_GAUSS_0_7 = 0x0A //  7     0                  Gaussian, BT = 0.7
   213  	SX126X_GFSK_FILTER_GAUSS_1   = 0x0B //  7     0                  Gaussian, BT = 1
   214  	SX126X_GFSK_RX_BW_4_8        = 0x1F //  7     0     GFSK Rx bandwidth: 4.8 kHz
   215  	SX126X_GFSK_RX_BW_5_8        = 0x17 //  7     0                        5.8 kHz
   216  	SX126X_GFSK_RX_BW_7_3        = 0x0F //  7     0                        7.3 kHz
   217  	SX126X_GFSK_RX_BW_9_7        = 0x1E //  7     0                        9.7 kHz
   218  	SX126X_GFSK_RX_BW_11_7       = 0x16 //  7     0                        11.7 kHz
   219  	SX126X_GFSK_RX_BW_14_6       = 0x0E //  7     0                        14.6 kHz
   220  	SX126X_GFSK_RX_BW_19_5       = 0x1D //  7     0                        19.5 kHz
   221  	SX126X_GFSK_RX_BW_23_4       = 0x15 //  7     0                        23.4 kHz
   222  	SX126X_GFSK_RX_BW_29_3       = 0x0D //  7     0                        29.3 kHz
   223  	SX126X_GFSK_RX_BW_39_0       = 0x1C //  7     0                        39.0 kHz
   224  	SX126X_GFSK_RX_BW_46_9       = 0x14 //  7     0                        46.9 kHz
   225  	SX126X_GFSK_RX_BW_58_6       = 0x0C //  7     0                        58.6 kHz
   226  	SX126X_GFSK_RX_BW_78_2       = 0x1B //  7     0                        78.2 kHz
   227  	SX126X_GFSK_RX_BW_93_8       = 0x13 //  7     0                        93.8 kHz
   228  	SX126X_GFSK_RX_BW_117_3      = 0x0B //  7     0                        117.3 kHz
   229  	SX126X_GFSK_RX_BW_156_2      = 0x1A //  7     0                        156.2 kHz
   230  	SX126X_GFSK_RX_BW_187_2      = 0x12 //  7     0                        187.2 kHz
   231  	SX126X_GFSK_RX_BW_234_3      = 0x0A //  7     0                        234.3 kHz
   232  	SX126X_GFSK_RX_BW_312_0      = 0x19 //  7     0                        312.0 kHz
   233  	SX126X_GFSK_RX_BW_373_6      = 0x11 //  7     0                        373.6 kHz
   234  	SX126X_GFSK_RX_BW_467_0      = 0x09 //  7     0                        467.0 kHz
   235  	SX126X_LORA_BW_7_8           = 0x00 //  7     0     LoRa bandwidth: 7.8 kHz
   236  	SX126X_LORA_BW_10_4          = 0x08 //  7     0                     10.4 kHz
   237  	SX126X_LORA_BW_15_6          = 0x01 //  7     0                     15.6 kHz
   238  	SX126X_LORA_BW_20_8          = 0x09 //  7     0                     20.8 kHz
   239  	SX126X_LORA_BW_31_25         = 0x02 //  7     0                     31.25 kHz
   240  	SX126X_LORA_BW_41_7          = 0x0A //  7     0                     41.7 kHz
   241  	SX126X_LORA_BW_62_5          = 0x03 //  7     0                     62.5 kHz
   242  	SX126X_LORA_BW_125_0         = 0x04 //  7     0                     125.0 kHz
   243  	SX126X_LORA_BW_250_0         = 0x05 //  7     0                     250.0 kHz
   244  	SX126X_LORA_BW_500_0         = 0x06 //  7     0                     500.0 kHz
   245  
   246  	//SX126X_CMD_SET_PACKET_PARAMS
   247  	SX126X_GFSK_PREAMBLE_DETECT_OFF         = 0x00 //  7     0     GFSK minimum preamble length before reception starts: detector disabled
   248  	SX126X_GFSK_PREAMBLE_DETECT_8           = 0x04 //  7     0                                                           8 bits
   249  	SX126X_GFSK_PREAMBLE_DETECT_16          = 0x05 //  7     0                                                           16 bits
   250  	SX126X_GFSK_PREAMBLE_DETECT_24          = 0x06 //  7     0                                                           24 bits
   251  	SX126X_GFSK_PREAMBLE_DETECT_32          = 0x07 //  7     0                                                           32 bits
   252  	SX126X_GFSK_ADDRESS_FILT_OFF            = 0x00 //  7     0     GFSK address filtering: disabled
   253  	SX126X_GFSK_ADDRESS_FILT_NODE           = 0x01 //  7     0                             node only
   254  	SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST = 0x02 //  7     0                             node and broadcast
   255  	SX126X_GFSK_PACKET_FIXED                = 0x00 //  7     0     GFSK packet type: fixed (payload length known in advance to both sides)
   256  	SX126X_GFSK_PACKET_VARIABLE             = 0x01 //  7     0                       variable (payload length added to packet)
   257  	SX126X_GFSK_CRC_OFF                     = 0x01 //  7     0     GFSK packet CRC: disabled
   258  	SX126X_GFSK_CRC_1_BYTE                  = 0x00 //  7     0                      1 byte
   259  	SX126X_GFSK_CRC_2_BYTE                  = 0x02 //  7     0                      2 byte
   260  	SX126X_GFSK_CRC_1_BYTE_INV              = 0x04 //  7     0                      1 byte, inverted
   261  	SX126X_GFSK_CRC_2_BYTE_INV              = 0x06 //  7     0                      2 byte, inverted
   262  	SX126X_GFSK_WHITENING_OFF               = 0x00 //  7     0     GFSK data whitening: disabled
   263  	SX126X_GFSK_WHITENING_ON                = 0x01 //  7     0                          enabled
   264  
   265  	//SX126X_CMD_SET_CAD_PARAMS
   266  	SX126X_CAD_ON_1_SYMB  = 0x00 //  7     0     number of symbols used for CAD: 1
   267  	SX126X_CAD_ON_2_SYMB  = 0x01 //  7     0                                     2
   268  	SX126X_CAD_ON_4_SYMB  = 0x02 //  7     0                                     4
   269  	SX126X_CAD_ON_8_SYMB  = 0x03 //  7     0                                     8
   270  	SX126X_CAD_ON_16_SYMB = 0x04 //  7     0                                     16
   271  	SX126X_CAD_GOTO_STDBY = 0x00 //  7     0     after CAD is done, always go to STDBY_RC mode
   272  	SX126X_CAD_GOTO_RX    = 0x01 //  7     0     after CAD is done, go to Rx mode if activity is detected
   273  
   274  	//SX126X_CMD_GET_STATUS
   275  	SX126X_STATUS_MODE_STDBY_RC   = 0b00100000 //  6     4     current chip mode: STDBY_RC
   276  	SX126X_STATUS_MODE_STDBY_XOSC = 0b00110000 //  6     4                        STDBY_XOSC
   277  	SX126X_STATUS_MODE_FS         = 0b01000000 //  6     4                        FS
   278  	SX126X_STATUS_MODE_RX         = 0b01010000 //  6     4                        RX
   279  	SX126X_STATUS_MODE_TX         = 0b01100000 //  6     4                        TX
   280  	SX126X_STATUS_DATA_AVAILABLE  = 0b00000100 //  3     1     command status: packet received and data can be retrieved
   281  	SX126X_STATUS_CMD_TIMEOUT     = 0b00000110 //  3     1                     SPI command timed out
   282  	SX126X_STATUS_CMD_INVALID     = 0b00001000 //  3     1                     invalid SPI command
   283  	SX126X_STATUS_CMD_FAILED      = 0b00001010 //  3     1                     SPI command failed to execute
   284  	SX126X_STATUS_TX_DONE         = 0b00001100 //  3     1                     packet transmission done
   285  	SX126X_STATUS_SPI_FAILED      = 0b11111111 //  7     0     SPI transaction failed
   286  
   287  	//SX126X_CMD_GET_PACKET_STATUS
   288  	SX126X_GFSK_RX_STATUS_PREAMBLE_ERR    = 0b10000000 //  7     7     GFSK Rx status: preamble error
   289  	SX126X_GFSK_RX_STATUS_SYNC_ERR        = 0b01000000 //  6     6                     sync word error
   290  	SX126X_GFSK_RX_STATUS_ADRS_ERR        = 0b00100000 //  5     5                     address error
   291  	SX126X_GFSK_RX_STATUS_CRC_ERR         = 0b00010000 //  4     4                     CRC error
   292  	SX126X_GFSK_RX_STATUS_LENGTH_ERR      = 0b00001000 //  3     3                     length error
   293  	SX126X_GFSK_RX_STATUS_ABORT_ERR       = 0b00000100 //  2     2                     abort error
   294  	SX126X_GFSK_RX_STATUS_PACKET_RECEIVED = 0b00000010 //  2     2                     packet received
   295  	SX126X_GFSK_RX_STATUS_PACKET_SENT     = 0b00000001 //  2     2                     packet sent
   296  
   297  	//SX126X_CMD_GET_DEVICE_ERRORS
   298  	SX126X_PA_RAMP_ERR     = 0b100000000 //  8     8     device errors: PA ramping failed
   299  	SX126X_PLL_LOCK_ERR    = 0b001000000 //  6     6                    PLL failed to lock
   300  	SX126X_XOSC_START_ERR  = 0b000100000 //  5     5                    crystal oscillator failed to start
   301  	SX126X_IMG_CALIB_ERR   = 0b000010000 //  4     4                    image calibration failed
   302  	SX126X_ADC_CALIB_ERR   = 0b000001000 //  3     3                    ADC calibration failed
   303  	SX126X_PLL_CALIB_ERR   = 0b000000100 //  2     2                    PLL calibration failed
   304  	SX126X_RC13M_CALIB_ERR = 0b000000010 //  1     1                    RC13M calibration failed
   305  	SX126X_RC64K_CALIB_ERR = 0b000000001 //  0     0                    RC64K calibration failed
   306  
   307  	// SX126X SPI register variables
   308  	//SX126X_REG_LORA_SYNC_WORD_MSB + LSB
   309  	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.
   310  	SX126X_SYNC_WORD_PRIVATE = 0x12 // actually 0x1424        You couldn't make this up if you tried.
   311  
   312  	SX126X_LORA_MAC_PUBLIC_SYNCWORD  = 0x3444
   313  	SX126X_LORA_MAC_PRIVATE_SYNCWORD = 0x1424
   314  )