24 #include <RHGenericSPI.h>
25 #include <RHSPIDriver.h>
29 #define RH_RF24_NUM_INTERRUPTS 3
32 #define RH_RF24_MAX_PAYLOAD_LEN 255
36 #define RH_RF24_HEADER_LEN 4
41 #ifndef RH_RF24_MAX_MESSAGE_LEN
42 #define RH_RF24_MAX_MESSAGE_LEN (RH_RF24_MAX_PAYLOAD_LEN - RH_RF24_HEADER_LEN - 1)
46 #define RH_RF24_CTS_RETRIES 2500
50 #define RH_RF24_CMD_NOP 0x00
51 #define RH_RF24_CMD_PART_INFO 0x01
52 #define RH_RF24_CMD_POWER_UP 0x02
53 #define RH_RF24_CMD_PATCH_IMAGE 0x04
54 #define RH_RF24_CMD_FUNC_INFO 0x10
55 #define RH_RF24_CMD_SET_PROPERTY 0x11
56 #define RH_RF24_CMD_GET_PROPERTY 0x12
57 #define RH_RF24_CMD_GPIO_PIN_CFG 0x13
58 #define RH_RF24_CMD_GET_ADC_READING 0x14
59 #define RH_RF24_CMD_FIFO_INFO 0x15
60 #define RH_RF24_CMD_PACKET_INFO 0x16
61 #define RH_RF24_CMD_IRCAL 0x17
62 #define RH_RF24_CMD_PROTOCOL_CFG 0x18
63 #define RH_RF24_CMD_GET_INT_STATUS 0x20
64 #define RH_RF24_CMD_GET_PH_STATUS 0x21
65 #define RH_RF24_CMD_GET_MODEM_STATUS 0x22
66 #define RH_RF24_CMD_GET_CHIP_STATUS 0x23
67 #define RH_RF24_CMD_START_TX 0x31
68 #define RH_RF24_CMD_START_RX 0x32
69 #define RH_RF24_CMD_REQUEST_DEVICE_STATE 0x33
70 #define RH_RF24_CMD_CHANGE_STATE 0x34
71 #define RH_RF24_CMD_RX_HOP 0x36
72 #define RH_RF24_CMD_READ_BUF 0x44
73 #define RH_RF24_CMD_FAST_RESPONSE_A 0x50
74 #define RH_RF24_CMD_FAST_RESPONSE_B 0x51
75 #define RH_RF24_CMD_FAST_RESPONSE_C 0x53
76 #define RH_RF24_CMD_FAST_RESPONSE_D 0x57
77 #define RH_RF24_CMD_TX_FIFO_WRITE 0x66
78 #define RH_RF24_CMD_RX_FIFO_READ 0x77
81 #define RH_RF24_REPLY_CTS 0xff
84 #define RH_RF24_CONDITION_TX_COMPLETE_STATE 0xf0
85 #define RH_RF24_CONDITION_RETRANSMIT_NO 0x00
86 #define RH_RF24_CONDITION_RETRANSMIT_YES 0x04
87 #define RH_RF24_CONDITION_START_IMMEDIATE 0x00
88 #define RH_RF24_CONDITION_START_AFTER_WUT 0x01
91 #define RH_RF24_CONDITION_RX_START_IMMEDIATE 0x00
94 #define RH_RF24_DEVICE_STATE_NO_CHANGE 0x00
95 #define RH_RF24_DEVICE_STATE_SLEEP 0x01
96 #define RH_RF24_DEVICE_STATE_SPI_ACTIVE 0x02
97 #define RH_RF24_DEVICE_STATE_READY 0x03
98 #define RH_RF24_DEVICE_STATE_ALSO_READY 0x04
99 #define RH_RF24_DEVICE_STATE_TUNE_TX 0x05
100 #define RH_RF24_DEVICE_STATE_TUNE_RX 0x06
101 #define RH_RF24_DEVICE_STATE_TX 0x07
102 #define RH_RF24_DEVICE_STATE_RX 0x08
105 #define RH_RF24_PROPERTY_GLOBAL_XO_TUNE 0x0000
106 #define RH_RF24_PROPERTY_GLOBAL_CLK_CFG 0x0001
107 #define RH_RF24_PROPERTY_GLOBAL_LOW_BATT_THRESH 0x0002
108 #define RH_RF24_PROPERTY_GLOBAL_CONFIG 0x0003
109 #define RH_RF24_PROPERTY_GLOBAL_WUT_CONFIG 0x0004
110 #define RH_RF24_PROPERTY_GLOBAL_WUT_M_15_8 0x0005
111 #define RH_RF24_PROPERTY_GLOBAL_WUT_M_7_0 0x0006
112 #define RH_RF24_PROPERTY_GLOBAL_WUT_R 0x0007
113 #define RH_RF24_PROPERTY_GLOBAL_WUT_LDC 0x0008
114 #define RH_RF24_PROPERTY_INT_CTL_ENABLE 0x0100
115 #define RH_RF24_PROPERTY_INT_CTL_PH_ENABLE 0x0101
116 #define RH_RF24_PROPERTY_INT_CTL_MODEM_ENABLE 0x0102
117 #define RH_RF24_PROPERTY_INT_CTL_CHIP_ENABLE 0x0103
118 #define RH_RF24_PROPERTY_FRR_CTL_A_MODE 0x0200
119 #define RH_RF24_PROPERTY_FRR_CTL_B_MODE 0x0201
120 #define RH_RF24_PROPERTY_FRR_CTL_C_MODE 0x0202
121 #define RH_RF24_PROPERTY_FRR_CTL_D_MODE 0x0203
122 #define RH_RF24_PROPERTY_PREAMBLE_TX_LENGTH 0x1000
123 #define RH_RF24_PROPERTY_PREAMBLE_CONFIG_STD_1 0x1001
124 #define RH_RF24_PROPERTY_PREAMBLE_CONFIG_NSTD 0x1002
125 #define RH_RF24_PROPERTY_PREAMBLE_CONFIG_STD_2 0x1003
126 #define RH_RF24_PROPERTY_PREAMBLE_CONFIG 0x1004
127 #define RH_RF24_PROPERTY_PREAMBLE_PATTERN_31_24 0x1005
128 #define RH_RF24_PROPERTY_PREAMBLE_PATTERN_23_16 0x1006
129 #define RH_RF24_PROPERTY_PREAMBLE_PATTERN_15_8 0x1007
130 #define RH_RF24_PROPERTY_PREAMBLE_PATTERN_7_0 0x1008
131 #define RH_RF24_PROPERTY_SYNC_CONFIG 0x1100
132 #define RH_RF24_PROPERTY_SYNC_BITS_31_24 0x1101
133 #define RH_RF24_PROPERTY_SYNC_BITS_23_16 0x1102
134 #define RH_RF24_PROPERTY_SYNC_BITS_15_8 0x1103
135 #define RH_RF24_PROPERTY_SYNC_BITS_7_0 0x1104
136 #define RH_RF24_PROPERTY_PKT_CRC_CONFIG 0x1200
137 #define RH_RF24_PROPERTY_PKT_CONFIG1 0x1206
138 #define RH_RF24_PROPERTY_PKT_LEN 0x1208
139 #define RH_RF24_PROPERTY_PKT_LEN_FIELD_SOURCE 0x1209
140 #define RH_RF24_PROPERTY_PKT_LEN_ADJUST 0x120a
141 #define RH_RF24_PROPERTY_PKT_TX_THRESHOLD 0x120b
142 #define RH_RF24_PROPERTY_PKT_RX_THRESHOLD 0x120c
143 #define RH_RF24_PROPERTY_PKT_FIELD_1_LENGTH_12_8 0x120d
144 #define RH_RF24_PROPERTY_PKT_FIELD_1_LENGTH_7_0 0x120e
145 #define RH_RF24_PROPERTY_PKT_FIELD_1_CONFIG 0x120f
146 #define RH_RF24_PROPERTY_PKT_FIELD_1_CRC_CONFIG 0x1210
147 #define RH_RF24_PROPERTY_PKT_FIELD_2_LENGTH_12_8 0x1211
148 #define RH_RF24_PROPERTY_PKT_FIELD_2_LENGTH_7_0 0x1212
149 #define RH_RF24_PROPERTY_PKT_FIELD_2_CONFIG 0x1213
150 #define RH_RF24_PROPERTY_PKT_FIELD_2_CRC_CONFIG 0x1214
151 #define RH_RF24_PROPERTY_PKT_FIELD_3_LENGTH_12_8 0x1215
152 #define RH_RF24_PROPERTY_PKT_FIELD_3_LENGTH_7_0 0x1216
153 #define RH_RF24_PROPERTY_PKT_FIELD_3_CONFIG 0x1217
154 #define RH_RF24_PROPERTY_PKT_FIELD_3_CRC_CONFIG 0x1218
155 #define RH_RF24_PROPERTY_PKT_FIELD_4_LENGTH_12_8 0x1219
156 #define RH_RF24_PROPERTY_PKT_FIELD_4_LENGTH_7_0 0x121a
157 #define RH_RF24_PROPERTY_PKT_FIELD_4_CONFIG 0x121b
158 #define RH_RF24_PROPERTY_PKT_FIELD_4_CRC_CONFIG 0x121c
159 #define RH_RF24_PROPERTY_PKT_FIELD_5_LENGTH_12_8 0x121d
160 #define RH_RF24_PROPERTY_PKT_FIELD_5_LENGTH_7_0 0x121e
161 #define RH_RF24_PROPERTY_PKT_FIELD_5_CONFIG 0x121f
162 #define RH_RF24_PROPERTY_PKT_FIELD_5_CRC_CONFIG 0x1220
163 #define RH_RF24_PROPERTY_PKT_RX_FIELD_1_LENGTH_12_8 0x1221
164 #define RH_RF24_PROPERTY_PKT_RX_FIELD_1_LENGTH_7_0 0x1222
165 #define RH_RF24_PROPERTY_PKT_RX_FIELD_1_CONFIG 0x1223
166 #define RH_RF24_PROPERTY_PKT_RX_FIELD_1_CRC_CONFIG 0x1224
167 #define RH_RF24_PROPERTY_PKT_RX_FIELD_2_LENGTH_12_8 0x1225
168 #define RH_RF24_PROPERTY_PKT_RX_FIELD_2_LENGTH_7_0 0x1226
169 #define RH_RF24_PROPERTY_PKT_RX_FIELD_2_CONFIG 0x1227
170 #define RH_RF24_PROPERTY_PKT_RX_FIELD_2_CRC_CONFIG 0x1228
171 #define RH_RF24_PROPERTY_PKT_RX_FIELD_3_LENGTH_12_8 0x1229
172 #define RH_RF24_PROPERTY_PKT_RX_FIELD_3_LENGTH_7_0 0x122a
173 #define RH_RF24_PROPERTY_PKT_RX_FIELD_3_CONFIG 0x122b
174 #define RH_RF24_PROPERTY_PKT_RX_FIELD_3_CRC_CONFIG 0x122c
175 #define RH_RF24_PROPERTY_PKT_RX_FIELD_4_LENGTH_12_8 0x122d
176 #define RH_RF24_PROPERTY_PKT_RX_FIELD_4_LENGTH_7_0 0x122e
177 #define RH_RF24_PROPERTY_PKT_RX_FIELD_4_CONFIG 0x122f
178 #define RH_RF24_PROPERTY_PKT_RX_FIELD_4_CRC_CONFIG 0x1230
179 #define RH_RF24_PROPERTY_PKT_RX_FIELD_5_LENGTH_12_8 0x1231
180 #define RH_RF24_PROPERTY_PKT_RX_FIELD_5_LENGTH_7_0 0x1232
181 #define RH_RF24_PROPERTY_PKT_RX_FIELD_5_CONFIG 0x1233
182 #define RH_RF24_PROPERTY_PKT_RX_FIELD_5_CRC_CONFIG 0x1234
183 #define RH_RF24_PROPERTY_MODEM_MOD_TYPE 0x2000
184 #define RH_RF24_PROPERTY_MODEM_MAP_CONTROL 0x2001
185 #define RH_RF24_PROPERTY_MODEM_DSM_CTRL 0x2002
186 #define RH_RF24_PROPERTY_MODEM_DATA_RATE_2 0x2003
187 #define RH_RF24_PROPERTY_MODEM_DATA_RATE_1 0x2004
188 #define RH_RF24_PROPERTY_MODEM_DATA_RATE_0 0x2005
189 #define RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_3 0x2006
190 #define RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_2 0x2007
191 #define RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_1 0x2008
192 #define RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_0 0x2009
193 #define RH_RF24_PROPERTY_MODEM_FREQ_DEV_2 0x200a
194 #define RH_RF24_PROPERTY_MODEM_FREQ_DEV_1 0x200b
195 #define RH_RF24_PROPERTY_MODEM_FREQ_DEV_0 0x200c
196 #define RH_RF24_PROPERTY_MODEM_TX_RAMP_DELAY 0x2018
197 #define RH_RF24_PROPERTY_MODEM_MDM_CTRL 0x2019
198 #define RH_RF24_PROPERTY_MODEM_IF_CONTROL 0x201a
199 #define RH_RF24_PROPERTY_MODEM_IF_FREQ_2 0x201b
200 #define RH_RF24_PROPERTY_MODEM_IF_FREQ_1 0x201c
201 #define RH_RF24_PROPERTY_MODEM_IF_FREQ_0 0x201d
202 #define RH_RF24_PROPERTY_MODEM_DECIMATION_CFG1 0x201e
203 #define RH_RF24_PROPERTY_MODEM_DECIMATION_CFG0 0x201f
204 #define RH_RF24_PROPERTY_MODEM_BCR_OSR_1 0x2022
205 #define RH_RF24_PROPERTY_MODEM_BCR_OSR_0 0x2023
206 #define RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_2 0x2024
207 #define RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_1 0x2025
208 #define RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_0 0x2026
209 #define RH_RF24_PROPERTY_MODEM_BCR_GAIN_1 0x2027
210 #define RH_RF24_PROPERTY_MODEM_BCR_GAIN_0 0x2028
211 #define RH_RF24_PROPERTY_MODEM_BCR_GEAR 0x2029
212 #define RH_RF24_PROPERTY_MODEM_BCR_MISC1 0x202a
213 #define RH_RF24_PROPERTY_MODEM_AFC_GEAR 0x202c
214 #define RH_RF24_PROPERTY_MODEM_AFC_WAIT 0x202d
215 #define RH_RF24_PROPERTY_MODEM_AFC_GAIN_1 0x202e
216 #define RH_RF24_PROPERTY_MODEM_AFC_GAIN_0 0x202f
217 #define RH_RF24_PROPERTY_MODEM_AFC_LIMITER_1 0x2030
218 #define RH_RF24_PROPERTY_MODEM_AFC_LIMITER_0 0x2031
219 #define RH_RF24_PROPERTY_MODEM_AFC_MISC 0x2032
220 #define RH_RF24_PROPERTY_MODEM_AGC_CONTROL 0x2035
221 #define RH_RF24_PROPERTY_MODEM_AGC_WINDOW_SIZE 0x2038
222 #define RH_RF24_PROPERTY_MODEM_AGC_RFPD_DECAY 0x2039
223 #define RH_RF24_PROPERTY_MODEM_AGC_IFPD_DECAY 0x203a
224 #define RH_RF24_PROPERTY_MODEM_FSK4_GAIN1 0x203b
225 #define RH_RF24_PROPERTY_MODEM_FSK4_GAIN0 0x203c
226 #define RH_RF24_PROPERTY_MODEM_FSK4_TH1 0x203d
227 #define RH_RF24_PROPERTY_MODEM_FSK4_TH0 0x203e
228 #define RH_RF24_PROPERTY_MODEM_FSK4_MAP 0x203f
229 #define RH_RF24_PROPERTY_MODEM_OOK_PDTC 0x2040
230 #define RH_RF24_PROPERTY_MODEM_OOK_CNT1 0x2042
231 #define RH_RF24_PROPERTY_MODEM_OOK_MISC 0x2043
232 #define RH_RF24_PROPERTY_MODEM_RAW_SEARCH 0x2044
233 #define RH_RF24_PROPERTY_MODEM_RAW_CONTROL 0x2045
234 #define RH_RF24_PROPERTY_MODEM_RAW_EYE_1 0x2046
235 #define RH_RF24_PROPERTY_MODEM_RAW_EYE_0 0x2047
236 #define RH_RF24_PROPERTY_MODEM_ANT_DIV_MODE 0x2048
237 #define RH_RF24_PROPERTY_MODEM_ANT_DIV_CONTROL 0x2049
238 #define RH_RF24_PROPERTY_MODEM_RSSI_THRESH 0x204a
239 #define RH_RF24_PROPERTY_MODEM_RSSI_JUMP_THRESH 0x204b
240 #define RH_RF24_PROPERTY_MODEM_RSSI_CONTROL 0x204c
241 #define RH_RF24_PROPERTY_MODEM_RSSI_CONTROL2 0x204d
242 #define RH_RF24_PROPERTY_MODEM_RSSI_COMP 0x204e
243 #define RH_RF24_PROPERTY_MODEM_ANT_DIV_CONT 0x2049
244 #define RH_RF24_PROPERTY_MODEM_CLKGEN_BAND 0x2051
245 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE13_7_0 0x2100
246 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE12_7_0 0x2101
247 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE11_7_0 0x2102
248 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE10_7_0 0x2103
249 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE9_7_0 0x2104
250 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE8_7_0 0x2105
251 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE7_7_0 0x2106
252 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE6_7_0 0x2107
253 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE5_7_0 0x2108
254 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE4_7_0 0x2109
255 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE3_7_0 0x210a
256 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE2_7_0 0x210b
257 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE1_7_0 0x210c
258 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE0_7_0 0x210d
259 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM0 0x210e
260 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM1 0x210f
261 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM2 0x2110
262 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM3 0x2111
263 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE13_7_0 0x2112
264 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE12_7_0 0x2113
265 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE11_7_0 0x2114
266 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE10_7_0 0x2115
267 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE9_7_0 0x2116
268 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE8_7_0 0x2117
269 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE7_7_0 0x2118
270 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE6_7_0 0x2119
271 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE5_7_0 0x211a
272 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE4_7_0 0x211b
273 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE3_7_0 0x211c
274 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE2_7_0 0x211d
275 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE1_7_0 0x211e
276 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE0_7_0 0x211f
277 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM0 0x2120
278 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM1 0x2121
279 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM2 0x2122
280 #define RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM3 0x2123
281 #define RH_RF24_PROPERTY_PA_MODE 0x2200
282 #define RH_RF24_PROPERTY_PA_PWR_LVL 0x2201
283 #define RH_RF24_PROPERTY_PA_BIAS_CLKDUTY 0x2202
284 #define RH_RF24_PROPERTY_PA_TC 0x2203
285 #define RH_RF24_PROPERTY_SYNTH_PFDCP_CPFF 0x2300
286 #define RH_RF24_PROPERTY_SYNTH_PFDCP_CPINT 0x2301
287 #define RH_RF24_PROPERTY_SYNTH_VCO_KV 0x2302
288 #define RH_RF24_PROPERTY_SYNTH_LPFILT3 0x2303
289 #define RH_RF24_PROPERTY_SYNTH_LPFILT2 0x2304
290 #define RH_RF24_PROPERTY_SYNTH_LPFILT1 0x2305
291 #define RH_RF24_PROPERTY_SYNTH_LPFILT0 0x2306
292 #define RH_RF24_PROPERTY_MATCH_VALUE_1 0x3000
293 #define RH_RF24_PROPERTY_MATCH_MASK_1 0x3001
294 #define RH_RF24_PROPERTY_MATCH_CTRL_1 0x3002
295 #define RH_RF24_PROPERTY_MATCH_VALUE_2 0x3003
296 #define RH_RF24_PROPERTY_MATCH_MASK_2 0x3004
297 #define RH_RF24_PROPERTY_MATCH_CTRL_2 0x3005
298 #define RH_RF24_PROPERTY_MATCH_VALUE_3 0x3006
299 #define RH_RF24_PROPERTY_MATCH_MASK_3 0x3007
300 #define RH_RF24_PROPERTY_MATCH_CTRL_3 0x3008
301 #define RH_RF24_PROPERTY_MATCH_VALUE_4 0x3009
302 #define RH_RF24_PROPERTY_MATCH_MASK_4 0x300a
303 #define RH_RF24_PROPERTY_MATCH_CTRL_4 0x300b
304 #define RH_RF24_PROPERTY_FREQ_CONTROL_INTE 0x4000
305 #define RH_RF24_PROPERTY_FREQ_CONTROL_FRAC_2 0x4001
306 #define RH_RF24_PROPERTY_FREQ_CONTROL_FRAC_1 0x4002
307 #define RH_RF24_PROPERTY_FREQ_CONTROL_FRAC_0 0x4003
308 #define RH_RF24_PROPERTY_FREQ_CONTROL_CHANNEL_STEP_SIZE_1 0x4004
309 #define RH_RF24_PROPERTY_FREQ_CONTROL_CHANNEL_STEP_SIZE_0 0x4005
310 #define RH_RF24_PROPERTY_FREQ_CONTROL_VCOCNT_RX_ADJ 0x4007
311 #define RH_RF24_PROPERTY_RX_HOP_CONTROL 0x5000
312 #define RH_RF24_PROPERTY_RX_HOP_TABLE_SIZE 0x5001
313 #define RH_RF24_PROPERTY_RX_HOP_TABLE_ENTRY_0 0x5002
316 #define RH_RF24_GPIO_NO_CHANGE 0
317 #define RH_RF24_GPIO_DISABLED 1
318 #define RH_RF24_GPIO_LOW 2
319 #define RH_RF24_GPIO_HIGH 3
320 #define RH_RF24_GPIO_INPUT 4
321 #define RH_RF24_GPIO_32_KHZ_CLOCK 5
322 #define RH_RF24_GPIO_BOOT_CLOCK 6
323 #define RH_RF24_GPIO_DIVIDED_MCU_CLOCK 7
324 #define RH_RF24_GPIO_CTS 8
325 #define RH_RF24_GPIO_INV_CTS 9
326 #define RH_RF24_GPIO_HIGH_ON_CMD_OVERLAP 10
327 #define RH_RF24_GPIO_SPI_DATA_OUT 11
328 #define RH_RF24_GPIO_HIGH_AFTER_RESET 12
329 #define RH_RF24_GPIO_HIGH_AFTER_CALIBRATION 13
330 #define RH_RF24_GPIO_HIGH_AFTER_WUT 14
331 #define RH_RF24_GPIO_UNUSED_0 15
332 #define RH_RF24_GPIO_TX_DATA_CLOCK 16
333 #define RH_RF24_GPIO_RX_DATA_CLOCK 17
334 #define RH_RF24_GPIO_UNUSED_1 18
335 #define RH_RF24_GPIO_TX_DATA 19
336 #define RH_RF24_GPIO_RX_DATA 20
337 #define RH_RF24_GPIO_RX_RAW_DATA 21
338 #define RH_RF24_GPIO_ANTENNA_1_SWITCH 22
339 #define RH_RF24_GPIO_ANTENNA_2_SWITCH 23
340 #define RH_RF24_GPIO_VALID_PREAMBLE 24
341 #define RH_RF24_GPIO_INVALID_PREAMBLE 25
342 #define RH_RF24_GPIO_SYNC_DETECTED 26
343 #define RH_RF24_GPIO_RSSI_ABOVE_CAT 27
344 #define RH_RF24_GPIO_TX_STATE 32
345 #define RH_RF24_GPIO_RX_STATE 33
346 #define RH_RF24_GPIO_RX_FIFO_ALMOST_FULL 34
347 #define RH_RF24_GPIO_TX_FIFO_ALMOST_EMPTY 35
348 #define RH_RF24_GPIO_BATT_LOW 36
349 #define RH_RF24_GPIO_RSSI_ABOVE_CAT_LOW 37
350 #define RH_RF24_GPIO_HOP 38
351 #define RH_RF24_GPIO_HOP_TABLE_WRAPPED 39
354 #define RH_RF24_INT_STATUS_CHIP_INT_STATUS 0x04
355 #define RH_RF24_INT_STATUS_MODEM_INT_STATUS 0x02
356 #define RH_RF24_INT_STATUS_PH_INT_STATUS 0x01
357 #define RH_RF24_INT_STATUS_FILTER_MATCH 0x80
358 #define RH_RF24_INT_STATUS_FILTER_MISS 0x40
359 #define RH_RF24_INT_STATUS_PACKET_SENT 0x20
360 #define RH_RF24_INT_STATUS_PACKET_RX 0x10
361 #define RH_RF24_INT_STATUS_CRC_ERROR 0x08
362 #define RH_RF24_INT_STATUS_TX_FIFO_ALMOST_EMPTY 0x02
363 #define RH_RF24_INT_STATUS_RX_FIFO_ALMOST_FULL 0x01
364 #define RH_RF24_INT_STATUS_INVALID_SYNC 0x20
365 #define RH_RF24_INT_STATUS_RSSI_JUMP 0x10
366 #define RH_RF24_INT_STATUS_RSSI 0x08
367 #define RH_RF24_INT_STATUS_INVALID_PREAMBLE 0x04
368 #define RH_RF24_INT_STATUS_PREAMBLE_DETECT 0x02
369 #define RH_RF24_INT_STATUS_SYNC_DETECT 0x01
370 #define RH_RF24_INT_STATUS_CAL 0x40
371 #define RH_RF24_INT_STATUS_FIFO_UNDERFLOW_OVERFLOW_ERROR 0x20
372 #define RH_RF24_INT_STATUS_STATE_CHANGE 0x10
373 #define RH_RF24_INT_STATUS_CMD_ERROR 0x08
374 #define RH_RF24_INT_STATUS_CHIP_READY 0x04
375 #define RH_RF24_INT_STATUS_LOW_BATT 0x02
376 #define RH_RF24_INT_STATUS_WUT 0x01
379 #define RH_RF24_CLK_CFG_DIVIDED_CLK_EN 0x40
380 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_30 0x30
381 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_15 0x28
382 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_10 0x20
383 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_7_5 0x18
384 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_3 0x10
385 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_2 0x08
386 #define RH_RF24_CLK_CFG_DIVIDED_CLK_SEL_1 0x00
387 #define RH_RF24_CLK_CFG_CLK_32K_SEL_EXTERNAL 0x02
388 #define RH_RF24_CLK_CFG_CLK_32K_SEL_RC 0x01
389 #define RH_RF24_CLK_CFG_CLK_32K_SEL_DISABLED 0x00
395 #define RH_RF24_FRR_MODE_DISABLED 0
396 #define RH_RF24_FRR_MODE_GLOBAL_STATUS 1
397 #define RH_RF24_FRR_MODE_GLOBAL_INTERRUPT_PENDING 2
398 #define RH_RF24_FRR_MODE_PACKET_HANDLER_STATUS 3
399 #define RH_RF24_FRR_MODE_PACKET_HANDLER_INTERRUPT_PENDING 4
400 #define RH_RF24_FRR_MODE_MODEM_STATUS 5
401 #define RH_RF24_FRR_MODE_MODEM_INTERRUPT_PENDING 6
402 #define RH_RF24_FRR_MODE_CHIP_STATUS 7
403 #define RH_RF24_FRR_MODE_CHIP_INTERRUPT_PENDING 8
404 #define RH_RF24_FRR_MODE_CURRENT_STATE 9
405 #define RH_RF24_FRR_MODE_LATCHED_RSSI 10
408 #define RH_RF24_CHIP_INT_STATUS_EN 0x04
409 #define RH_RF24_MODEM_INT_STATUS_EN 0x02
410 #define RH_RF24_PH_INT_STATUS_EN 0x01
413 #define RH_RF24_PREAMBLE_FIRST_1 0x20
414 #define RH_RF24_PREAMBLE_FIRST_0 0x00
415 #define RH_RF24_PREAMBLE_LENGTH_NIBBLES 0x00
416 #define RH_RF24_PREAMBLE_LENGTH_BYTES 0x10
417 #define RH_RF24_PREAMBLE_MAN_CONST 0x08
418 #define RH_RF24_PREAMBLE_MAN_ENABLE 0x02
419 #define RH_RF24_PREAMBLE_NON_STANDARD 0x00
420 #define RH_RF24_PREAMBLE_STANDARD_1010 0x01
421 #define RH_RF24_PREAMBLE_STANDARD_0101 0x02
424 #define RH_RF24_SYNC_CONFIG_SKIP_TX 0x80
425 #define RH_RF24_SYNC_CONFIG_RX_ERRORS_MASK 0x70
426 #define RH_RF24_SYNC_CONFIG_4FSK 0x08
427 #define RH_RF24_SYNC_CONFIG_MANCH 0x04
428 #define RH_RF24_SYNC_CONFIG_LENGTH_MASK 0x03
431 #define RH_RF24_CRC_SEED_ALL_0S 0x00
432 #define RH_RF24_CRC_SEED_ALL_1S 0x80
433 #define RH_RF24_CRC_MASK 0x0f
434 #define RH_RF24_CRC_NONE 0x00
435 #define RH_RF24_CRC_ITU_T 0x01
436 #define RH_RF24_CRC_IEC_16 0x02
437 #define RH_RF24_CRC_BIACHEVA 0x03
438 #define RH_RF24_CRC_16_IBM 0x04
439 #define RH_RF24_CRC_CCITT 0x05
440 #define RH_RF24_CRC_KOOPMAN 0x06
441 #define RH_RF24_CRC_IEEE_802_3 0x07
442 #define RH_RF24_CRC_CASTAGNOLI 0x08
445 #define RH_RF24_PH_FIELD_SPLIT 0x80
446 #define RH_RF24_PH_RX_DISABLE 0x40
447 #define RH_RF24_4FSK_EN 0x20
448 #define RH_RF24_RX_MULTI_PKT 0x10
449 #define RH_RF24_MANCH_POL 0x08
450 #define RH_RF24_CRC_INVERT 0x04
451 #define RH_RF24_CRC_ENDIAN 0x02
452 #define RH_RF24_BIT_ORDER 0x01
459 #define RH_RF24_FIELD_CONFIG_4FSK 0x10
460 #define RH_RF24_FIELD_CONFIG_WHITEN 0x02
461 #define RH_RF24_FIELD_CONFIG_MANCH 0x01
468 #define RH_RF24_FIELD_CONFIG_CRC_START 0x80
469 #define RH_RF24_FIELD_CONFIG_SEND_CRC 0x20
470 #define RH_RF24_FIELD_CONFIG_CHECK_CRC 0x08
471 #define RH_RF24_FIELD_CONFIG_CRC_ENABLE 0x02
477 #define RH_RF24_TX_DIRECT_MODE_TYPE_SYNCHRONOUS 0x00
478 #define RH_RF24_TX_DIRECT_MODE_TYPE_ASYNCHRONOUS 0x80
479 #define RH_RF24_TX_DIRECT_MODE_GPIO0 0x00
480 #define RH_RF24_TX_DIRECT_MODE_GPIO1 0x20
481 #define RH_RF24_TX_DIRECT_MODE_GPIO2 0x40
482 #define RH_RF24_TX_DIRECT_MODE_GPIO3 0x60
483 #define RH_RF24_MOD_SOURCE_PACKET_HANDLER 0x00
484 #define RH_RF24_MOD_SOURCE_DIRECT_MODE 0x08
485 #define RH_RF24_MOD_SOURCE_RANDOM_GENERATOR 0x10
486 #define RH_RF24_MOD_TYPE_CW 0x00
487 #define RH_RF24_MOD_TYPE_OOK 0x01
488 #define RH_RF24_MOD_TYPE_2FSK 0x02
489 #define RH_RF24_MOD_TYPE_2GFSK 0x03
490 #define RH_RF24_MOD_TYPE_4FSK 0x04
491 #define RH_RF24_MOD_TYPE_4GFSK 0x05
494 #define RH_RF24_PA_MODE_1_GROUP 0x04
495 #define RH_RF24_PA_MODE_2_GROUPS 0x08
496 #define RH_RF24_PA_MODE_CLASS_E 0x00
497 #define RH_RF24_PA_MODE_SWITCH_CURRENT 0x01
855 RH_RF24(uint8_t slaveSelectPin = SS, uint8_t interruptPin = 2, uint8_t sdnPin = 9,
RHGenericSPI& spi = hardware_spi);
892 bool setFrequency(
float centre,
float afcPullInRange = 0.05);
927 bool recv(uint8_t* buf, uint8_t* len);
935 bool send(
const uint8_t* data, uint8_t len);
955 void setSyncWords(
const uint8_t* syncWords = NULL, uint8_t len = 0);
1002 bool command(uint8_t cmd,
const uint8_t* write_buf = 0, uint8_t write_len = 0, uint8_t* read_buf = 0, uint8_t read_len = 0);
1012 bool set_properties(uint16_t firstProperty,
const uint8_t* values, uint8_t count);
1022 bool get_properties(uint16_t firstProperty, uint8_t* values, uint8_t count);
1052 virtual bool sleep();
1100 bool configure(
const uint8_t* commands);
1117 static RH_RF24* _deviceForInterrupt[];
1120 static uint8_t _interruptCount;
1123 uint8_t _interruptPin;
1127 uint8_t _myInterruptIndex;
1136 uint16_t _deviceType;
1142 volatile uint8_t _bufLen;
1145 uint8_t _buf[RH_RF24_MAX_PAYLOAD_LEN];
1148 volatile bool _rxBufValid;
1151 volatile uint8_t _txBufSentIndex;
1154 uint32_t _lastPreambleTime;
volatile uint16_t _rxGood
Count of the number of successfully transmitted messaged.
Definition: RHGenericDriver.h:292
uint8_t prop_2022
Value for property RH_RF24_PROPERTY_MODEM_BCR_OSR_1.
Definition: RH_RF24.h:712
uint8_t prop_2038
Value for property RH_RF24_PROPERTY_MODEM_AGC_WINDOW_SIZE.
Definition: RH_RF24.h:726
@ FSK_Rb150Fd300
FSK Rb = 50kbs, Fd = 100kHz.
Definition: RH_RF24.h:798
float get_gpio_voltage(uint8_t gpio)
Definition: RH_RF24.cpp:755
uint8_t prop_2039
Value for property RH_RF24_PROPERTY_MODEM_AGC_RFPD_DECAY.
Definition: RH_RF24.h:727
uint8_t prop_2045
Value for property RH_RF24_PROPERTY_MODEM_RAW_CONTROL.
Definition: RH_RF24.h:736
void setIdleMode(uint8_t idleMode)
Definition: RH_RF24.cpp:39
uint8_t prop_2040
Value for property RH_RF24_PROPERTY_MODEM_OOK_PDTC.
Definition: RH_RF24.h:734
float get_temperature()
Definition: RH_RF24.cpp:735
uint8_t prop_210d
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE0_7_0.
Definition: RH_RF24.h:753
uint8_t cmd
The command number.
Definition: RH_RF24.h:832
uint8_t prop_2003
Value for property RH_RF24_PROPERTY_MODEM_DATA_RATE_2.
Definition: RH_RF24.h:699
Base class for SPI interfaces.
Definition: RHGenericSPI.h:30
uint8_t prop_200b
Value for property RH_RF24_PROPERTY_MODEM_FREQ_DEV_1.
Definition: RH_RF24.h:707
Defines property values for a set of modem configuration registers.
Definition: RH_RF24.h:696
virtual void beginTransaction()
Definition: RHGenericSPI.h:155
uint8_t prop_2120
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM0.
Definition: RH_RF24.h:772
uint8_t prop_2203
Value for property RH_RF24_PROPERTY_PA_TC.
Definition: RH_RF24.h:776
volatile uint8_t _rxHeaderFrom
FROM header in the last received mesasge.
Definition: RHGenericDriver.h:265
bool setCRCPolynomial(CRCPolynomial polynomial)
Definition: RH_RF24.cpp:442
bool recv(uint8_t *buf, uint8_t *len)
Definition: RH_RF24.cpp:293
uint8_t prop_2123
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM3.
Definition: RH_RF24.h:775
uint8_t prop_211c
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE3_7_0.
Definition: RH_RF24.h:768
Defines the commands we can interrogate in printRegisters.
Definition: RH_RF24.h:830
Base class for RadioHead drivers that use the SPI bus to communicate with its transport hardware.
Definition: RHSPIDriver.h:38
uint8_t prop_211f
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE0_7_0.
Definition: RH_RF24.h:771
RH_RF24(uint8_t slaveSelectPin=SS, uint8_t interruptPin=2, uint8_t sdnPin=9, RHGenericSPI &spi=hardware_spi)
Definition: RH_RF24.cpp:29
uint8_t prop_2006
Value for property RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_3.
Definition: RH_RF24.h:702
uint8_t prop_2026
Value for property RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_0.
Definition: RH_RF24.h:716
void readNextFragment()
Definition: RH_RF24.cpp:380
bool set_properties(uint16_t firstProperty, const uint8_t *values, uint8_t count)
Definition: RH_RF24.cpp:711
uint16_t deviceType()
Definition: RH_RF24.h:1059
uint8_t prop_2027
Value for property RH_RF24_PROPERTY_MODEM_BCR_GAIN_1.
Definition: RH_RF24.h:717
volatile int16_t _lastRssi
The value of the last received RSSI value, in some transport specific units.
Definition: RHGenericDriver.h:286
uint8_t prop_211a
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE5_7_0.
Definition: RH_RF24.h:766
uint8_t prop_203b
Value for property RH_RF24_PROPERTY_MODEM_FSK4_GAIN1.
Definition: RH_RF24.h:729
volatile uint16_t _rxBad
Count of the number of bad messages (eg bad checksum etc) received.
Definition: RHGenericDriver.h:289
@ FSK_Rb50Fd100
FSK Rb = 50kbs, Fd = 100kHz.
Definition: RH_RF24.h:797
@ GFSK_Rb0_5Fd1
GFSK Rb = 0.5kbs, Fd = 1kHz.
Definition: RH_RF24.h:800
uint8_t prop_204e
Value for property RH_RF24_PROPERTY_MODEM_RSSI_COMP.
Definition: RH_RF24.h:739
volatile uint8_t _rxHeaderTo
TO header in the last received mesasge.
Definition: RHGenericDriver.h:262
Driver to send and receive unaddressed, unreliable datagrams via an RF24 and compatible radio transce...
Definition: RH_RF24.h:685
uint8_t prop_201e
Value for property RH_RF24_PROPERTY_MODEM_DECIMATION_CFG1.
Definition: RH_RF24.h:710
uint8_t prop_201f
Value for property RH_RF24_PROPERTY_MODEM_DECIMATION_CFG0.
Definition: RH_RF24.h:711
uint8_t _txHeaderFrom
FROM header to send in all messages.
Definition: RHGenericDriver.h:277
@ FSK_Rb0_5Fd1
FSK Rb = 0.5kbs, Fd = 1kHz.
Definition: RH_RF24.h:795
uint8_t prop_2030
Value for property RH_RF24_PROPERTY_MODEM_AFC_LIMITER_1.
Definition: RH_RF24.h:723
uint8_t prop_2031
Value for property RH_RF24_PROPERTY_MODEM_AFC_LIMITER_0.
Definition: RH_RF24.h:724
void spiUsingInterrupt(uint8_t interruptNumber)
Definition: RHSPIDriver.cpp:91
void setModeRx()
Definition: RH_RF24.cpp:559
uint8_t _thisAddress
This node id.
Definition: RHGenericDriver.h:256
uint8_t prop_2025
Value for property RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_1.
Definition: RH_RF24.h:715
volatile uint16_t _txGood
Count of the number of bad messages (correct checksum etc) received.
Definition: RHGenericDriver.h:295
uint8_t prop_202f
Value for property RH_RF24_PROPERTY_MODEM_AFC_GAIN_0.
Definition: RH_RF24.h:722
uint8_t prop_211e
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE1_7_0.
Definition: RH_RF24.h:770
void setPreambleLength(uint16_t bytes)
Definition: RH_RF24.cpp:435
uint8_t prop_2118
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE7_7_0.
Definition: RH_RF24.h:764
uint8_t prop_2108
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE5_7_0.
Definition: RH_RF24.h:748
bool _promiscuous
Whether the transport is in promiscuous mode.
Definition: RHGenericDriver.h:259
void setTxPower(uint8_t power)
Definition: RH_RF24.cpp:595
uint8_t prop_200c
Value for property RH_RF24_PROPERTY_MODEM_FREQ_DEV_0.
Definition: RH_RF24.h:708
volatile uint8_t _rxHeaderFlags
FLAGS header in the last received mesasge.
Definition: RHGenericDriver.h:271
bool writeTxFifo(uint8_t *data, uint8_t len)
Definition: RH_RF24.cpp:346
uint8_t replyLen
Number of bytes in the reply stream (after the CTS)
Definition: RH_RF24.h:833
uint8_t prop_2304
Value for property RH_RF24_PROPERTY_SYNTH_LPFILT2.
Definition: RH_RF24.h:780
void validateRxBuf()
Definition: RH_RF24.cpp:232
bool clearRxFifo()
Definition: RH_RF24.cpp:252
void handleInterrupt()
Definition: RH_RF24.cpp:162
bool configure(const uint8_t *commands)
Definition: RH_RF24.cpp:676
@ OOK_Rb10Bw40
OOK Rb = 10kbs, Bw = 40kHz.
Definition: RH_RF24.h:807
@ RHModeSleep
Transport hardware is in low power sleep mode (if supported)
Definition: RHGenericDriver.h:51
@ FSK_Rb5Fd10
FSK Rb = 5kbs, Fd = 10kHz.
Definition: RH_RF24.h:796
bool setModemConfig(ModemConfigChoice index)
Definition: RH_RF24.cpp:426
uint8_t prop_2104
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE9_7_0.
Definition: RH_RF24.h:744
uint8_t prop_2046
Value for property RH_RF24_PROPERTY_MODEM_RAW_EYE_1.
Definition: RH_RF24.h:737
uint8_t prop_2009
Value for property RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_0.
Definition: RH_RF24.h:705
bool init()
Definition: RHSPIDriver.cpp:15
uint8_t prop_2117
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE8_7_0.
Definition: RH_RF24.h:763
uint8_t prop_2047
Value for property RH_RF24_PROPERTY_MODEM_RAW_EYE_0.
Definition: RH_RF24.h:738
uint8_t _slaveSelectPin
The pin number of the Slave Select pin that is used to select the desired device.
Definition: RHSPIDriver.h:97
uint8_t prop_2043
Value for property RH_RF24_PROPERTY_MODEM_OOK_MISC.
Definition: RH_RF24.h:735
@ OOK_Rb5Bw30
OOK Rb = 5kbs, Bw = 30kHz.
Definition: RH_RF24.h:806
uint8_t prop_211b
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE4_7_0.
Definition: RH_RF24.h:767
uint8_t prop_2106
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE7_7_0.
Definition: RH_RF24.h:746
uint8_t prop_2121
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM1.
Definition: RH_RF24.h:773
uint8_t prop_2007
Value for property RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_2.
Definition: RH_RF24.h:703
void setSyncWords(const uint8_t *syncWords=NULL, uint8_t len=0)
Definition: RH_RF24.cpp:455
uint8_t prop_2008
Value for property RH_RF24_PROPERTY_MODEM_TX_NCO_MODE_1.
Definition: RH_RF24.h:704
uint8_t prop_2103
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE10_7_0.
Definition: RH_RF24.h:743
bool setFrequency(float centre, float afcPullInRange=0.05)
Definition: RH_RF24.cpp:464
uint8_t prop_2113
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE12_7_0.
Definition: RH_RF24.h:759
uint8_t prop_203e
Value for property RH_RF24_PROPERTY_MODEM_FSK4_TH0.
Definition: RH_RF24.h:732
uint8_t prop_200a
Value for property RH_RF24_PROPERTY_MODEM_FREQ_DEV_2.
Definition: RH_RF24.h:706
@ GFSK_Rb5Fd10
GFSK Rb = 5kbs, Fd = 10kHz.
Definition: RH_RF24.h:801
uint8_t _txHeaderId
ID header to send in all messages.
Definition: RHGenericDriver.h:280
uint8_t prop_211d
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE2_7_0.
Definition: RH_RF24.h:769
uint8_t prop_2115
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE10_7_0.
Definition: RH_RF24.h:761
uint8_t _txHeaderTo
TO header to send in all messages.
Definition: RHGenericDriver.h:274
bool init()
Definition: RH_RF24.cpp:44
uint8_t _txHeaderFlags
FLAGS header to send in all messages.
Definition: RHGenericDriver.h:283
uint8_t prop_2029
Value for property RH_RF24_PROPERTY_MODEM_BCR_GEAR.
Definition: RH_RF24.h:719
uint8_t prop_2301
Value for property RH_RF24_PROPERTY_SYNTH_PFDCP_CPINT.
Definition: RH_RF24.h:778
uint8_t prop_2303
Value for property RH_RF24_PROPERTY_SYNTH_LPFILT3.
Definition: RH_RF24.h:779
@ GFSK_Rb150Fd300
GFSK Rb = 150kbs, Fd = 300kHz.
Definition: RH_RF24.h:803
uint8_t prop_2300
Value for property RH_RF24_PROPERTY_SYNTH_PFDCP_CPFF.
Definition: RH_RF24.h:777
void setModemRegisters(const ModemConfig *config)
Definition: RH_RF24.cpp:416
uint8_t prop_203f
Value for property RH_RF24_PROPERTY_MODEM_FSK4_MAP.
Definition: RH_RF24.h:733
uint8_t prop_2018
Value for property RH_RF24_PROPERTY_MODEM_TX_RAMP_DELAY.
Definition: RH_RF24.h:709
uint8_t prop_2000
Value for property RH_RF24_PROPERTY_MODEM_MOD_TYPE.
Definition: RH_RF24.h:698
uint8_t prop_202e
Value for property RH_RF24_PROPERTY_MODEM_AFC_GAIN_1.
Definition: RH_RF24.h:721
uint8_t prop_2101
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE12_7_0.
Definition: RH_RF24.h:741
uint8_t prop_2035
Value for property RH_RF24_PROPERTY_MODEM_AGC_CONTROL.
Definition: RH_RF24.h:725
uint8_t prop_2023
Value for property RH_RF24_PROPERTY_MODEM_BCR_OSR_0.
Definition: RH_RF24.h:713
ModemConfigChoice
Definition: RH_RF24.h:793
uint8_t prop_2114
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE11_7_0.
Definition: RH_RF24.h:760
@ GFSK_Rb50Fd100
GFSK Rb = 50kbs, Fd = 100kHz.
Definition: RH_RF24.h:802
uint8_t prop_210a
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE3_7_0.
Definition: RH_RF24.h:750
bool get_properties(uint16_t firstProperty, uint8_t *values, uint8_t count)
Definition: RH_RF24.cpp:724
uint8_t prop_210e
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM0.
Definition: RH_RF24.h:754
uint8_t prop_2111
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM3.
Definition: RH_RF24.h:757
uint8_t prop_2107
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE6_7_0.
Definition: RH_RF24.h:747
uint8_t prop_2119
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE6_7_0.
Definition: RH_RF24.h:765
volatile uint8_t _rxHeaderId
ID header in the last received mesasge.
Definition: RHGenericDriver.h:268
void sendNextFragment()
Definition: RH_RF24.cpp:362
uint8_t frr_read(uint8_t reg)
Definition: RH_RF24.cpp:766
uint8_t prop_203a
Value for property RH_RF24_PROPERTY_MODEM_AGC_IFPD_DECAY.
Definition: RH_RF24.h:728
uint8_t prop_2004
Value for property RH_RF24_PROPERTY_MODEM_DATA_RATE_1.
Definition: RH_RF24.h:700
uint8_t prop_210f
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM1.
Definition: RH_RF24.h:755
CRCPolynomial
Defines the available choices for CRC Types of permitted CRC polynomials, to be passed to setCRCPolyn...
Definition: RH_RF24.h:816
@ RHModeIdle
Transport is idle.
Definition: RHGenericDriver.h:52
float get_battery_voltage()
Definition: RH_RF24.cpp:745
void clearBuffer()
Clears RH_RF24's internal TX and RX buffers and counters.
Definition: RH_RF24.cpp:258
uint8_t prop_2109
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE4_7_0.
Definition: RH_RF24.h:749
bool send(const uint8_t *data, uint8_t len)
Definition: RH_RF24.cpp:310
virtual bool waitPacketSent()
Definition: RHGenericDriver.cpp:52
volatile RHMode _mode
The current transport operating mode.
Definition: RHGenericDriver.h:253
bool printRegisters()
Definition: RH_RF24.cpp:1013
uint8_t prop_2105
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE8_7_0.
Definition: RH_RF24.h:745
void setModeTx()
Definition: RH_RF24.cpp:580
uint8_t prop_2100
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE13_7_0.
Definition: RH_RF24.h:740
uint8_t prop_202d
Value for property RH_RF24_PROPERTY_MODEM_AFC_WAIT.
Definition: RH_RF24.h:720
uint8_t prop_2305
Value for property RH_RF24_PROPERTY_SYNTH_LPFILT1.
Definition: RH_RF24.h:781
void setModeIdle()
Definition: RH_RF24.cpp:531
RHGenericSPI & _spi
Reference to the RHGenericSPI instance to use to transfer data with the SPI device.
Definition: RHSPIDriver.h:94
uint8_t prop_2112
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE13_7_0.
Definition: RH_RF24.h:758
void power_on_reset()
Cycles the Shutdown pin to force the cradio chip to reset.
Definition: RH_RF24.cpp:693
@ RHModeTx
Transport is in the process of transmitting a message.
Definition: RHGenericDriver.h:53
uint8_t prop_2110
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COEM2.
Definition: RH_RF24.h:756
bool cmd_clear_all_interrupts()
Clears all pending interrutps in the radio chip.
Definition: RH_RF24.cpp:705
uint8_t prop_2024
Value for property RH_RF24_PROPERTY_MODEM_BCR_NCO_OFFSET_2.
Definition: RH_RF24.h:714
virtual void endTransaction()
Definition: RHGenericSPI.h:160
uint8_t prop_203c
Value for property RH_RF24_PROPERTY_MODEM_FSK4_GAIN0.
Definition: RH_RF24.h:730
uint8_t prop_2122
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COEM2.
Definition: RH_RF24.h:774
bool available()
Definition: RH_RF24.cpp:284
uint8_t prop_210c
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE1_7_0.
Definition: RH_RF24.h:752
uint8_t maxMessageLength()
Definition: RH_RF24.cpp:410
bool command(uint8_t cmd, const uint8_t *write_buf=0, uint8_t write_len=0, uint8_t *read_buf=0, uint8_t read_len=0)
Definition: RH_RF24.cpp:628
uint8_t prop_203d
Value for property RH_RF24_PROPERTY_MODEM_FSK4_TH1.
Definition: RH_RF24.h:731
uint8_t prop_210b
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE2_7_0.
Definition: RH_RF24.h:751
virtual bool sleep()
Definition: RH_RF24.cpp:545
uint8_t prop_2005
Value for property RH_RF24_PROPERTY_MODEM_DATA_RATE_0.
Definition: RH_RF24.h:701
uint8_t prop_2102
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX1_CHFLT_COE11_7_0.
Definition: RH_RF24.h:742
uint8_t prop_2116
Value for property RH_RF24_PROPERTY_MODEM_CHFLT_RX2_CHFLT_COE9_7_0.
Definition: RH_RF24.h:762
uint8_t prop_2028
Value for property RH_RF24_PROPERTY_MODEM_BCR_GAIN_0.
Definition: RH_RF24.h:718
@ RHModeRx
Transport is in the process of receiving a message.
Definition: RHGenericDriver.h:54
virtual uint8_t transfer(uint8_t data)=0
virtual bool waitCAD()
Definition: RHGenericDriver.cpp:72