RadioLib
Universal wireless communication library for Arduino
SX1231.h
1 #if !defined(_RADIOLIB_SX1231_H)
2 #define _RADIOLIB_SX1231_H
3 
4 #include "../../TypeDef.h"
5 
6 #if !defined(RADIOLIB_EXCLUDE_SX1231)
7 
8 #include "../../Module.h"
9 #include "../RF69/RF69.h"
10 
11 #define RADIOLIB_SX1231_CHIP_REVISION_2_A 0x21
12 #define RADIOLIB_SX1231_CHIP_REVISION_2_B 0x22
13 #define RADIOLIB_SX1231_CHIP_REVISION_2_C 0x23
14 
15 //SX1231 specific register map
16 #define RADIOLIB_SX1231_REG_TEST_OOK 0x6E
17 
18 //SX1231_REG_TEST_OOK
19 #define RADIOLIB_SX1231_OOK_DELTA_THRESHOLD 0x0C
20 
21 // SX1231_REG_DIO_MAPPING_1
22 #define RADIOLIB_SX1231_DIO0_CONT_LOW_BAT 0b10000000 // 7 6
23 #define RADIOLIB_SX1231_DIO0_CONT_MODE_READY 0b11000000 // 7 6
24 #define RADIOLIB_SX1231_DIO0_CONT_PLL_LOCK 0b00000000 // 7 6
25 #define RADIOLIB_SX1231_DIO0_CONT_SYNC_ADDRESS 0b00000000 // 7 6
26 #define RADIOLIB_SX1231_DIO0_CONT_TIMEOUT 0b01000000 // 7 6
27 #define RADIOLIB_SX1231_DIO0_CONT_RSSI 0b10000000 // 7 6
28 #define RADIOLIB_SX1231_DIO0_CONT_MODE_READY 0b11000000 // 7 6
29 #define RADIOLIB_SX1231_DIO0_CONT_TX_READY 0b01000000 // 7 6
30 #define RADIOLIB_SX1231_DIO0_PACK_LOW_BAT 0b10000000 // 7 6
31 #define RADIOLIB_SX1231_DIO0_PACK_PLL_LOCK 0b11000000 // 7 6
32 #define RADIOLIB_SX1231_DIO0_PACK_CRC_OK 0b00000000 // 7 6
33 #define RADIOLIB_SX1231_DIO0_PACK_PAYLOAD_READY 0b01000000 // 7 6
34 #define RADIOLIB_SX1231_DIO0_PACK_SYNC_ADDRESS 0b10000000 // 7 6
35 #define RADIOLIB_SX1231_DIO0_PACK_RSSI 0b11000000 // 7 6
36 #define RADIOLIB_SX1231_DIO0_PACK_PACKET_SENT 0b00000000 // 7 6
37 #define RADIOLIB_SX1231_DIO0_PACK_TX_READY 0b01000000 // 7 6
38 #define RADIOLIB_SX1231_DIO1_CONT_LOW_BAT 0b00100000 // 5 4
39 #define RADIOLIB_SX1231_DIO1_CONT_PLL_LOCK 0b00110000 // 5 4
40 #define RADIOLIB_SX1231_DIO1_CONT_DCLK 0b00000000 // 5 4
41 #define RADIOLIB_SX1231_DIO1_CONT_RX_READY 0b00010000 // 5 4
42 #define RADIOLIB_SX1231_DIO1_CONT_SYNC_ADDRESS 0b00110000 // 5 4
43 #define RADIOLIB_SX1231_DIO1_CONT_TX_READY 0b00010000 // 5 4
44 #define RADIOLIB_SX1231_DIO1_PACK_FIFO_LEVEL 0b00000000 // 5 4
45 #define RADIOLIB_SX1231_DIO1_PACK_FIFO_FULL 0b00010000 // 5 4
46 #define RADIOLIB_SX1231_DIO1_PACK_FIFO_NOT_EMPTY 0b00100000 // 5 4
47 #define RADIOLIB_SX1231_DIO1_PACK_PLL_LOCK 0b00110000 // 5 4
48 #define RADIOLIB_SX1231_DIO1_PACK_TIMEOUT 0b00110000 // 5 4
49 #define RADIOLIB_SX1231_DIO2_CONT_DATA 0b00000000 // 3 2
50 #define RADIOLIB_SX1231_DIO2_PACK_FIFO_NOT_EMPTY 0b00000000 // 3 2
51 #define RADIOLIB_SX1231_DIO2_PACK_LOW_BAT 0b00001000 // 3 2
52 #define RADIOLIB_SX1231_DIO2_PACK_AUTO_MODE 0b00001100 // 3 2
53 #define RADIOLIB_SX1231_DIO2_PACK_DATA 0b00000100 // 3 2
54 #define RADIOLIB_SX1231_DIO3_CONT_AUTO_MODE 0b00000010 // 0 1
55 #define RADIOLIB_SX1231_DIO3_CONT_RSSI 0b00000000 // 0 1
56 #define RADIOLIB_SX1231_DIO3_CONT_RX_READY 0b00000001 // 0 1
57 #define RADIOLIB_SX1231_DIO3_CONT_TIMEOUT 0b00000011 // 0 1
58 #define RADIOLIB_SX1231_DIO3_CONT_TX_READY 0b00000001 // 0 1
59 #define RADIOLIB_SX1231_DIO3_PACK_FIFO_FULL 0b00000000 // 0 1
60 #define RADIOLIB_SX1231_DIO3_PACK_LOW_BAT 0b00000010 // 0 1
61 #define RADIOLIB_SX1231_DIO3_PACK_PLL_LOCK 0b00000011 // 0 1
62 #define RADIOLIB_SX1231_DIO3_PACK_RSSI 0b00000001 // 0 1
63 #define RADIOLIB_SX1231_DIO3_PACK_SYNC_ADDRESSS 0b00000010 // 0 1
64 #define RADIOLIB_SX1231_DIO3_PACK_TX_READY 0b00000001 // 0 1
65 
66 // SX1231_REG_DIO_MAPPING_2
67 #define RADIOLIB_SX1231_DIO4_CONT_LOW_BAT 0b10000000 // 7 6
68 #define RADIOLIB_SX1231_DIO4_CONT_PLL_LOCK 0b11000000 // 7 6
69 #define RADIOLIB_SX1231_DIO4_CONT_TIMEOUT 0b00000000 // 7 6
70 #define RADIOLIB_SX1231_DIO4_CONT_RX_READY 0b01000000 // 7 6
71 #define RADIOLIB_SX1231_DIO4_CONT_SYNC_ADDRESS 0b10000000 // 7 6
72 #define RADIOLIB_SX1231_DIO4_CONT_TX_READY 0b01000000 // 7 6
73 #define RADIOLIB_SX1231_DIO4_PACK_LOW_BAT 0b10000000 // 7 6
74 #define RADIOLIB_SX1231_DIO4_PACK_PLL_LOCK 0b11000000 // 7 6
75 #define RADIOLIB_SX1231_DIO4_PACK_TIMEOUT 0b00000000 // 7 6
76 #define RADIOLIB_SX1231_DIO4_PACK_RSSI 0b01000000 // 7 6
77 #define RADIOLIB_SX1231_DIO4_PACK_RX_READY 0b10000000 // 7 6
78 #define RADIOLIB_SX1231_DIO4_PACK_MODE_READY 0b00000000 // 7 6
79 #define RADIOLIB_SX1231_DIO4_PACK_TX_READY 0b01000000 // 7 6
80 #define RADIOLIB_SX1231_DIO5_CONT_LOW_BAT 0b00100000 // 5 4
81 #define RADIOLIB_SX1231_DIO5_CONT_MODE_READY 0b00110000 // 5 4
82 #define RADIOLIB_SX1231_DIO5_CONT_CLK_OUT 0b00000000 // 5 4
83 #define RADIOLIB_SX1231_DIO5_CONT_RSSI 0b00010000 // 5 4
84 #define RADIOLIB_SX1231_DIO5_PACK_LOW_BAT 0b00100000 // 5 4
85 #define RADIOLIB_SX1231_DIO5_PACK_MODE_READY 0b00110000 // 5 4
86 #define RADIOLIB_SX1231_DIO5_PACK_CLK_OUT 0b00000000 // 5 4
87 #define RADIOLIB_SX1231_DIO5_PACK_DATA 0b00010000 // 5 4
88 
94 class SX1231: public RF69 {
95  public:
101  SX1231(Module* mod);
102 
120  int16_t begin(float freq = 434.0, float br = 4.8, float freqDev = 5.0, float rxBw = 125.0, int8_t power = 10, uint8_t preambleLen = 16);
121 
122 #if !defined(RADIOLIB_GODMODE)
123  private:
124 #endif
125  uint8_t _chipRevision = 0;
126 };
127 
128 #endif
129 
130 #endif
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:16
Control class for RF69 module. Also serves as base class for SX1231.
Definition: RF69.h:479
Control class for SX1231 module. Overrides some methods from RF69 due to different register values.
Definition: SX1231.h:94
int16_t begin(float freq=434.0, float br=4.8, float freqDev=5.0, float rxBw=125.0, int8_t power=10, uint8_t preambleLen=16)
Initialization method.
Definition: SX1231.cpp:8
SX1231(Module *mod)
Default constructor.
Definition: SX1231.cpp:4