17 #include <RHNRFSPIDriver.h>
21 #define RH_CC110_NUM_INTERRUPTS 3
24 #define RH_CC110_FIFO_SIZE 64
28 #define RH_CC110_MAX_PAYLOAD_LEN RH_CC110_FIFO_SIZE
32 #define RH_CC110_HEADER_LEN 4
37 #ifndef RH_CC110_MAX_MESSAGE_LEN
38 #define RH_CC110_MAX_MESSAGE_LEN (RH_CC110_MAX_PAYLOAD_LEN - RH_CC110_HEADER_LEN - 1)
41 #define RH_CC110_SPI_READ_MASK 0x80
42 #define RH_CC110_SPI_BURST_MASK 0x40
45 #define RH_CC110_REG_00_IOCFG2 0x00
46 #define RH_CC110_REG_01_IOCFG1 0x01
47 #define RH_CC110_REG_02_IOCFG0 0x02
48 #define RH_CC110_REG_03_FIFOTHR 0x03
49 #define RH_CC110_REG_04_SYNC1 0x04
50 #define RH_CC110_REG_05_SYNC0 0x05
51 #define RH_CC110_REG_06_PKTLEN 0x06
52 #define RH_CC110_REG_07_PKTCTRL1 0x07
53 #define RH_CC110_REG_08_PKTCTRL0 0x08
54 #define RH_CC110_REG_09_ADDR 0x09
55 #define RH_CC110_REG_0A_CHANNR 0x0a
56 #define RH_CC110_REG_0B_FSCTRL1 0x0b
57 #define RH_CC110_REG_0C_FSCTRL0 0x0c
58 #define RH_CC110_REG_0D_FREQ2 0x0d
59 #define RH_CC110_REG_0E_FREQ1 0x0e
60 #define RH_CC110_REG_0F_FREQ0 0x0f
61 #define RH_CC110_REG_10_MDMCFG4 0x10
62 #define RH_CC110_REG_11_MDMCFG3 0x11
63 #define RH_CC110_REG_12_MDMCFG2 0x12
64 #define RH_CC110_REG_13_MDMCFG1 0x13
65 #define RH_CC110_REG_14_MDMCFG0 0x14
66 #define RH_CC110_REG_15_DEVIATN 0x15
67 #define RH_CC110_REG_16_MCSM2 0x16
68 #define RH_CC110_REG_17_MCSM1 0x17
69 #define RH_CC110_REG_18_MCSM0 0x18
70 #define RH_CC110_REG_19_FOCCFG 0x19
71 #define RH_CC110_REG_1A_BSCFG 0x1a
72 #define RH_CC110_REG_1B_AGCCTRL2 0x1b
73 #define RH_CC110_REG_1C_AGCCTRL1 0x1c
74 #define RH_CC110_REG_1D_AGCCTRL0 0x1d
75 #define RH_CC110_REG_1E_WOREVT1 0x1e
76 #define RH_CC110_REG_1F_WOREVT0 0x1f
77 #define RH_CC110_REG_20_WORCTRL 0x20
78 #define RH_CC110_REG_21_FREND1 0x21
79 #define RH_CC110_REG_22_FREND0 0x22
80 #define RH_CC110_REG_23_FSCAL3 0x23
81 #define RH_CC110_REG_24_FSCAL2 0x24
82 #define RH_CC110_REG_25_FSCAL1 0x25
83 #define RH_CC110_REG_26_FSCAL0 0x26
84 #define RH_CC110_REG_27_RCCTRL1 0x28
85 #define RH_CC110_REG_28_RCCTRL0 0x29
86 #define RH_CC110_REG_29_FSTEST 0x2a
87 #define RH_CC110_REG_2A_PTEST 0x2b
88 #define RH_CC110_REG_2B_AGCTEST 0x2c
89 #define RH_CC110_REG_2C_TEST2 0x2c
90 #define RH_CC110_REG_2D_TEST1 0x2d
91 #define RH_CC110_REG_2E_TEST0 0x2e
95 #define RH_CC110_STROBE_30_SRES 0x30
96 #define RH_CC110_STROBE_31_SFSTXON 0x31
97 #define RH_CC110_STROBE_32_SXOFF 0x32
98 #define RH_CC110_STROBE_33_SCAL 0x33
99 #define RH_CC110_STROBE_34_SRX 0x34
100 #define RH_CC110_STROBE_35_STX 0x35
101 #define RH_CC110_STROBE_36_SIDLE 0x36
103 #define RH_CC110_STROBE_39_SPWD 0x39
104 #define RH_CC110_STROBE_3A_SFRX 0x3a
105 #define RH_CC110_STROBE_3B_SFTX 0x3b
107 #define RH_CC110_STROBE_3D_SNOP 0x3d
112 #define RH_CC110_REG_30_PARTNUM 0x30
113 #define RH_CC110_REG_31_VERSION 0x31
114 #define RH_CC110_REG_32_FREQEST 0x32
115 #define RH_CC110_REG_33_CRC_REG 0x33
116 #define RH_CC110_REG_34_RSSI 0x34
117 #define RH_CC110_REG_35_MARCSTATE 0x35
119 #define RH_CC110_REG_38_PKTSTATUS 0x38
121 #define RH_CC110_REG_3A_TXBYTES 0x3a
122 #define RH_CC110_REG_3B_RXBYTES 0x3b
125 #define RH_CC110_REG_3E_PATABLE 0x3e
126 #define RH_CC110_REG_3F_FIFO 0x3f
129 #define RH_CC110_STATUS_CHIP_RDY 0x80
130 #define RH_CC110_STATUS_STATE 0x70
131 #define RH_CC110_STATUS_IDLE 0x00
132 #define RH_CC110_STATUS_RX 0x10
133 #define RH_CC110_STATUS_TX 0x20
134 #define RH_CC110_STATUS_FSTXON 0x30
135 #define RH_CC110_STATUS_CALIBRATE 0x40
136 #define RH_CC110_STATUS_SETTLING 0x50
137 #define RH_CC110_STATUS_RXFIFO_OVERFLOW 0x60
138 #define RH_CC110_STATUS_TXFIFO_UNDERFLOW 0x70
139 #define RH_CC110_STATUS_FIFOBYTES_AVAILABLE 0x0f
143 #define RH_CC110_CHIP_RDY 0x80
144 #define RH_CC110_STATE 0x70
145 #define RH_CC110_FIFO_BYTES_AVAILABLE 0x0f
151 #define RH_CC110_GDO_CFG_RX_FIFO_THR 0x00
152 #define RH_CC110_GDO_CFG_RX_FIFO_FULL 0x01
153 #define RH_CC110_GDO_CFG_TX_FIFO_THR 0x02
154 #define RH_CC110_GDO_CFG_TX_FIFO_EMPTY 0x03
155 #define RH_CC110_GDO_CFG_RX_FIFO_OVERFLOW 0x04
156 #define RH_CC110_GDO_CFG_TX_FIFO_UNDEFLOOW 0x05
157 #define RH_CC110_GDO_CFG_SYNC 0x06
158 #define RH_CC110_GDO_CFG_CRC_OK_AUTORESET 0x07
159 #define RH_CC110_GDO_CFG_CCA 0x09
160 #define RH_CC110_GDO_CFG_LOCK_DETECT 0x0a
161 #define RH_CC110_GDO_CFG_SERIAL_CLOCK 0x0b
162 #define RH_CC110_GDO_CFG_SYNCHRONOUS_SDO 0x0c
163 #define RH_CC110_GDO_CFG_SDO 0x0d
164 #define RH_CC110_GDO_CFG_CARRIER 0x0e
165 #define RH_CC110_GDO_CFG_CRC_OK 0x0f
166 #define RH_CC110_GDO_CFG_PA_PD 0x1b
167 #define RH_CC110_GDO_CFG_LNA_PD 0x1c
168 #define RH_CC110_GDO_CFG_CLK_32K 0x27
169 #define RH_CC110_GDO_CFG_CHIP_RDYN 0x29
170 #define RH_CC110_GDO_CFG_XOSC_STABLE 0x2b
171 #define RH_CC110_GDO_CFG_HIGH_IMPEDANCE 0x2e
172 #define RH_CC110_GDO_CFG_0 0x2f
173 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_1 0x30
174 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_1_5 0x31
175 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_2 0x32
176 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_3 0x33
177 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_4 0x34
178 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_6 0x35
179 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_8 0x36
180 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_12 0x37
181 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_16 0x38
182 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_24 0x39
183 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_32 0x3a
184 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_48 0x3b
185 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_64 0x3c
186 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_96 0x3d
187 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_128 0x3e
188 #define RH_CC110_GDO_CFG_CLK_XOSC_DIV_192 0x3f
191 #define RH_CC110_ADC_RETENTION 0x80
193 #define RH_CC110_CLOSE_IN_RX 0x30
194 #define RH_CC110_CLOSE_IN_RX_0DB 0x00
195 #define RH_CC110_CLOSE_IN_RX_6DB 0x10
196 #define RH_CC110_CLOSE_IN_RX_12DB 0x20
197 #define RH_CC110_CLOSE_IN_RX_18DB 0x30
199 #define RH_CC110_FIFO_THR 0x0f
205 #define RH_CC110_CRC_AUTOFLUSH 0x08
206 #define RH_CC110_APPEND_STATUS 0x04
207 #define RH_CC110_ADDR_CHK 0x03
209 #define RH_CC110_ADDR_CHK_ADDRESS 0x01
210 #define RH_CC110_ADDR_CHK_BROADCAST 0x02
214 #define RH_CC110_PKT_FORMAT 0x30
215 #define RH_CC110_PKT_FORMAT_NORMAL 0x00
216 #define RH_CC110_PKT_FORMAT_SYNC_SERIAL 0x10
217 #define RH_CC110_PKT_FORMAT_RANDOM_TX 0x20
218 #define RH_CC110_PKT_FORMAT_ASYNC_SERIAL 0x30
220 #define RH_CC110_CRC_EN 0x04
222 #define RH_CC110_LENGTH_CONFIG 0x03
223 #define RH_CC110_LENGTH_CONFIG_FIXED 0x00
224 #define RH_CC110_LENGTH_CONFIG_VARIABLE 0x01
225 #define RH_CC110_LENGTH_CONFIG_INFINITE 0x02
235 #define RH_CC110_CHANBW_E 0xc0
236 #define RH_CC110_CHANBW_M 0x30
237 #define RH_CC110_DRATE_E 0x0f
241 #define RH_CC110_DEM_DCFILT_OFF 0x80
242 #define RH_CC110_MOD_FORMAT 0x70
243 #define RH_CC110_MOD_FORMAT_2FSK 0x00
244 #define RH_CC110_MOD_FORMAT_GFSK 0x10
245 #define RH_CC110_MOD_FORMAT_OOK 0x30
246 #define RH_CC110_MOD_FORMAT_4FSK 0x40
247 #define RH_CC110_MANCHESTER_EN 0x08
248 #define RH_CC110_SYNC_MODE 0x07
249 #define RH_CC110_SYNC_MODE_NONE 0x00
250 #define RH_CC110_SYNC_MODE_15_16 0x01
251 #define RH_CC110_SYNC_MODE_16_16 0x02
252 #define RH_CC110_SYNC_MODE_30_32 0x03
253 #define RH_CC110_SYNC_MODE_NONE_CARRIER 0x04
254 #define RH_CC110_SYNC_MODE_15_16_CARRIER 0x05
255 #define RH_CC110_SYNC_MODE_16_16_CARRIER 0x06
256 #define RH_CC110_SYNC_MODE_30_32_CARRIER 0x07
259 #define RH_CC110_NUM_PREAMBLE 0x70
260 #define RH_CC110_NUM_PREAMBLE_2 0x00
261 #define RH_CC110_NUM_PREAMBLE_3 0x10
262 #define RH_CC110_NUM_PREAMBLE_4 0x20
263 #define RH_CC110_NUM_PREAMBLE_6 0x30
264 #define RH_CC110_NUM_PREAMBLE_8 0x40
265 #define RH_CC110_NUM_PREAMBLE_12 0x50
266 #define RH_CC110_NUM_PREAMBLE_16 0x60
267 #define RH_CC110_NUM_PREAMBLE_24 0x70
269 #define RH_CC110_CHANSPC_E 0x03
273 #define RH_CC110_DEVIATION_E 0x70
274 #define RH_CC110_DEVIATION_M 0x07
277 #define RH_CC110_RX_TIME_RSSI 0x10
280 #define RH_CC110_CCA_MODE 0x30
281 #define RH_CC110_CCA_MODE_ALWAYS 0x00
282 #define RH_CC110_CCA_MODE_RSSI 0x10
283 #define RH_CC110_CCA_MODE_PACKET 0x20
284 #define RH_CC110_CCA_MODE_RSSI_PACKET 0x30
285 #define RH_CC110_RXOFF_MODE 0x0c
286 #define RH_CC110_RXOFF_MODE_IDLE 0x00
287 #define RH_CC110_RXOFF_MODE_FSTXON 0x04
288 #define RH_CC110_RXOFF_MODE_TX 0x08
289 #define RH_CC110_RXOFF_MODE_RX 0x0c
290 #define RH_CC110_TXOFF_MODE 0x03
291 #define RH_CC110_TXOFF_MODE_IDLE 0x00
292 #define RH_CC110_TXOFF_MODE_FSTXON 0x01
293 #define RH_CC110_TXOFF_MODE_TX 0x02
294 #define RH_CC110_TXOFF_MODE_RX 0x03
297 #define RH_CC110_FS_AUTOCAL 0x30
298 #define RH_CC110_FS_AUTOCAL_NEVER 0x00
299 #define RH_CC110_FS_AUTOCAL_FROM_IDLE 0x10
300 #define RH_CC110_FS_AUTOCAL_TO_IDLE 0x20
301 #define RH_CC110_FS_AUTOCAL_TO_IDLE_4 0x30
302 #define RH_CC110_PO_TIMEOUT 0x0c
303 #define RH_CC110_PO_TIMEOUT_1 0x00
304 #define RH_CC110_PO_TIMEOUT_16 0x04
305 #define RH_CC110_PO_TIMEOUT_64 0x08
306 #define RH_CC110_PO_TIMEOUT_256 0x0c
307 #define RH_CC110_XOSC_FORCE_ON 0x01
310 #define RH_CC110_FOC_BS_CS_GATE 0x20
311 #define RH_CC110_FOC_PRE_K 0x18
312 #define RH_CC110_FOC_PRE_K_0 0x00
313 #define RH_CC110_FOC_PRE_K_1 0x08
314 #define RH_CC110_FOC_PRE_K_2 0x10
315 #define RH_CC110_FOC_PRE_K_3 0x18
316 #define RH_CC110_FOC_POST_K 0x04
317 #define RH_CC110_FOC_LIMIT 0x03
318 #define RH_CC110_FOC_LIMIT_0 0x00
319 #define RH_CC110_FOC_LIMIT_8 0x01
320 #define RH_CC110_FOC_LIMIT_4 0x02
321 #define RH_CC110_FOC_LIMIT_2 0x03
324 #define RH_CC110_BS_PRE_K 0xc0
325 #define RH_CC110_BS_PRE_K_1 0x00
326 #define RH_CC110_BS_PRE_K_2 0x40
327 #define RH_CC110_BS_PRE_K_3 0x80
328 #define RH_CC110_BS_PRE_K_4 0xc0
329 #define RH_CC110_BS_PRE_KP 0x30
330 #define RH_CC110_BS_PRE_KP_1 0x00
331 #define RH_CC110_BS_PRE_KP_2 0x10
332 #define RH_CC110_BS_PRE_KP_3 0x20
333 #define RH_CC110_BS_PRE_KP_4 0x30
334 #define RH_CC110_BS_POST_KI 0x08
335 #define RH_CC110_BS_POST_KP 0x04
336 #define RH_CC110_BS_LIMIT 0x03
337 #define RH_CC110_BS_LIMIT_0 0x00
338 #define RH_CC110_BS_LIMIT_3 0x01
339 #define RH_CC110_BS_LIMIT_6 0x02
340 #define RH_CC110_BS_LIMIT_12 0x03
343 #define RH_CC110_MAX_DVA_GAIN 0xc0
344 #define RH_CC110_MAX_DVA_GAIN_ALL 0x00
345 #define RH_CC110_MAX_DVA_GAIN_ALL_LESS_1 0x40
346 #define RH_CC110_MAX_DVA_GAIN_ALL_LESS_2 0x80
347 #define RH_CC110_MAX_DVA_GAIN_ALL_LESS_3 0xc0
348 #define RH_CC110_MAX_LNA_GAIN 0x38
350 #define RH_CC110_MAGN_TARGET 0x07
351 #define RH_CC110_MAGN_TARGET_24DB 0x00
352 #define RH_CC110_MAGN_TARGET_27DB 0x01
353 #define RH_CC110_MAGN_TARGET_30DB 0x02
354 #define RH_CC110_MAGN_TARGET_33DB 0x03
355 #define RH_CC110_MAGN_TARGET_36DB 0x04
356 #define RH_CC110_MAGN_TARGET_38DB 0x05
357 #define RH_CC110_MAGN_TARGET_40DB 0x06
358 #define RH_CC110_MAGN_TARGET_42DB 0x07
361 #define RH_CC110_AGC_LNA_PRIORITY 0x40
362 #define RH_CC110_CARRIER_SENSE_REL_THR 0x30
363 #define RH_CC110_CARRIER_SENSE_REL_THR_0DB 0x00
364 #define RH_CC110_CARRIER_SENSE_REL_THR_6DB 0x10
365 #define RH_CC110_CARRIER_SENSE_REL_THR_10DB 0x20
366 #define RH_CC110_CARRIER_SENSE_REL_THR_14DB 0x30
367 #define RH_CC110_CARRIER_SENSE_ABS_THR 0x0f
370 #define RH_CC110_HYST_LEVEL 0xc0
371 #define RH_CC110_HYST_LEVEL_NONE 0x00
372 #define RH_CC110_HYST_LEVEL_LOW 0x40
373 #define RH_CC110_HYST_LEVEL_MEDIUM 0x80
374 #define RH_CC110_HYST_LEVEL_HIGH 0xc0
375 #define RH_CC110_WAIT_TIME 0x30
376 #define RH_CC110_WAIT_TIME_8 0x00
377 #define RH_CC110_WAIT_TIME_16 0x10
378 #define RH_CC110_WAIT_TIME_24 0x20
379 #define RH_CC110_WAIT_TIME_32 0x30
380 #define RH_CC110_AGC_FREEZE 0x0c
381 #define RH_CC110_AGC_FILTER_LENGTH 0x03
382 #define RH_CC110_AGC_FILTER_LENGTH_8 0x00
383 #define RH_CC110_AGC_FILTER_LENGTH_16 0x01
384 #define RH_CC110_AGC_FILTER_LENGTH_32 0x02
385 #define RH_CC110_AGC_FILTER_LENGTH_64 0x03
391 #define RH_CC110_LNA_CURRENT 0xc0
392 #define RH_CC110_LNA2MIX_CURRENT 0x30
393 #define RH_CC110_LODIV_BUF_CURRENT_RX 0x0c
394 #define RH_CC110_MIX_CURRENT 0x03
397 #define RH_CC110_LODIV_BUF_CURRENT_TX 0x30
398 #define RH_CC110_PA_POWER 0x07
401 #define RH_CC110_FSCAL3_7_6 0xc0
402 #define RH_CC110_CHP_CURR_CAL_EN 0x30
403 #define RH_CC110_FSCAL3_3_0 0x0f
406 #define RH_CC110_VCO_CORE_H_EN 0x20
407 #define RH_CC110_FSCAL2 0x1f
410 #define RH_CC110_FSCAL1 0x3f
413 #define RH_CC110_FSCAL0 0x7f
423 #define RH_CC110_TEST0_7_2 0xfc
424 #define RH_CC110_VCO_SEL_CAL_EN 0x02
425 #define RH_CC110_TEST0_0 0x01
431 #define RH_CC110_CRC_REG_CRC_OK 0x80
435 #define RH_CC110_MARC_STATE 0x1f
436 #define RH_CC110_MARC_STATE_SLEEP 0x00
437 #define RH_CC110_MARC_STATE_IDLE 0x01
438 #define RH_CC110_MARC_STATE_XOFF 0x02
439 #define RH_CC110_MARC_STATE_VCOON_MC 0x03
440 #define RH_CC110_MARC_STATE_REGON_MC 0x04
441 #define RH_CC110_MARC_STATE_MANCAL 0x05
442 #define RH_CC110_MARC_STATE_VCOON 0x06
443 #define RH_CC110_MARC_STATE_REGON 0x07
444 #define RH_CC110_MARC_STATE_STARTCAL 0x08
445 #define RH_CC110_MARC_STATE_BWBOOST 0x09
446 #define RH_CC110_MARC_STATE_FS_LOCK 0x0a
447 #define RH_CC110_MARC_STATE_IFADCON 0x0b
448 #define RH_CC110_MARC_STATE_ENDCAL 0x0c
449 #define RH_CC110_MARC_STATE_RX 0x0d
450 #define RH_CC110_MARC_STATE_RX_END 0x0e
451 #define RH_CC110_MARC_STATE_RX_RST 0x0f
452 #define RH_CC110_MARC_STATE_TXRX_SWITCH 0x10
453 #define RH_CC110_MARC_STATE_RXFIFO_OVERFLOW 0x11
454 #define RH_CC110_MARC_STATE_FSTXON 0x12
455 #define RH_CC110_MARC_STATE_TX 0x13
456 #define RH_CC110_MARC_STATE_TX_END 0x14
457 #define RH_CC110_MARC_STATE_RXTX_SWITCH 0x15
458 #define RH_CC110_MARC_STATE_TXFIFO_UNDERFLOW 0x16
461 #define RH_CC110_PKTSTATUS_CRC_OK 0x80
462 #define RH_CC110_PKTSTATUS_CS 0x40
463 #define RH_CC110_PKTSTATUS_CCA 0x10
464 #define RH_CC110_PKTSTATUS_SFD 0x08
465 #define RH_CC110_PKTSTATUS_GDO2 0x04
466 #define RH_CC110_PKTSTATUS_GDO0 0x01
469 #define RH_CC110_TXFIFO_UNDERFLOW 0x80
470 #define RH_CC110_NUM_TXBYTES 0x7f
473 #define RH_CC110_RXFIFO_UNDERFLOW 0x80
474 #define RH_CC110_NUM_RXBYTES 0x7f
678 RH_CC110(uint8_t slaveSelectPin = SS, uint8_t interruptPin = 2,
bool is27MHz =
false,
RHGenericSPI& spi = hardware_spi);
720 virtual bool recv(uint8_t* buf, uint8_t* len);
728 virtual bool send(
const uint8_t* data, uint8_t len);
754 virtual bool sleep();
801 void setSyncWords(
const uint8_t* syncWords, uint8_t len);
806 void setPaTable(uint8_t* patable, uint8_t patablesize);
867 static RH_CC110* _deviceForInterrupt[];
870 static uint8_t _interruptCount;
873 uint8_t _interruptPin;
877 uint8_t _myInterruptIndex;
880 volatile uint8_t _bufLen;
883 uint8_t _buf[RH_CC110_MAX_PAYLOAD_LEN];
886 volatile bool _rxBufValid;
volatile uint16_t _rxGood
Count of the number of successfully transmitted messaged.
Definition: RHGenericDriver.h:292
uint8_t spiReadRegister(uint8_t reg)
Definition: RH_CC110.cpp:208
void handleInterrupt()
Definition: RH_CC110.cpp:158
void setModemRegisters(const ModemConfig *config)
Definition: RH_CC110.cpp:447
uint8_t spiBurstWriteRegister(uint8_t reg, const uint8_t *src, uint8_t len)
Definition: RH_CC110.cpp:223
uint8_t reg_15
RH_CC110_REG_15_DEVIATN.
Definition: RH_CC110.h:607
@ TransmitPowerM20dBm
-20dBm
Definition: RH_CC110.h:651
uint8_t reg_24
RH_CC110_REG_24_FSCAL2.
Definition: RH_CC110.h:616
void setModeRx()
Definition: RH_CC110.cpp:369
@ GFSK_Rb100Fd47
GFSK, Data Rate: 100kBaud, Dev: 47kHz, RX BW 325kHz, optimised for sensitivity.
Definition: RH_CC110.h:640
uint8_t spiCommand(uint8_t command)
Definition: RHNRFSPIDriver.cpp:31
uint8_t reg_0c
RH_CC110_REG_0C_FSCTRL0.
Definition: RH_CC110.h:603
Base class for SPI interfaces.
Definition: RHGenericSPI.h:30
uint8_t spiRead(uint8_t reg)
Definition: RHNRFSPIDriver.cpp:48
virtual bool sleep()
Definition: RH_CC110.cpp:358
uint8_t reg_0b
RH_CC110_REG_0B_FSCTRL1.
Definition: RH_CC110.h:602
volatile uint8_t _rxHeaderFrom
FROM header in the last received mesasge.
Definition: RHGenericDriver.h:265
void setModeTx()
Definition: RH_CC110.cpp:380
@ TransmitPowerM15dBm
-15dBm
Definition: RH_CC110.h:652
virtual bool recv(uint8_t *buf, uint8_t *len)
Definition: RH_CC110.cpp:286
@ GFSK_Rb10Fd19
GFSK, Data Rate: 10kBaud, Dev: 19kHz, RX BW 100kHz, optimised for sensitivity.
Definition: RH_CC110.h:637
uint8_t reg_2c
RH_CC110_REG_2C_TEST2.
Definition: RH_CC110.h:619
@ GFSK_Rb4_8Fd25_4
GFSK, Data Rate: 4.8kBaud, Dev: 25.4kHz, RX BW 100kHz, optimised for sensitivity.
Definition: RH_CC110.h:636
volatile int16_t _lastRssi
The value of the last received RSSI value, in some transport specific units.
Definition: RHGenericDriver.h:286
RH_CC110(uint8_t slaveSelectPin=SS, uint8_t interruptPin=2, bool is27MHz=false, RHGenericSPI &spi=hardware_spi)
Definition: RH_CC110.cpp:67
bool printRegisters()
Definition: RH_CC110.cpp:228
volatile uint8_t _rxHeaderTo
TO header in the last received mesasge.
Definition: RHGenericDriver.h:262
TransmitPower
Definition: RH_CC110.h:648
uint8_t reg_23
RH_CC110_REG_23_FSCAL3.
Definition: RH_CC110.h:615
uint8_t _txHeaderFrom
FROM header to send in all messages.
Definition: RHGenericDriver.h:277
uint8_t reg_19
RH_CC110_REG_19_FOCCFG.
Definition: RH_CC110.h:608
uint8_t spiBurstReadRegister(uint8_t reg)
Definition: RH_CC110.cpp:213
uint8_t spiWriteRegister(uint8_t reg, uint8_t val)
Definition: RH_CC110.cpp:218
uint8_t reg_2e
RH_CC110_REG_2E_TEST0.
Definition: RH_CC110.h:621
uint8_t _thisAddress
This node id.
Definition: RHGenericDriver.h:256
void clearRxBuf()
Clear our local receive buffer.
Definition: RH_CC110.cpp:278
void setIs27MHz(bool is27MHz=true)
Definition: RH_CC110.cpp:151
bool init()
Definition: RHNRFSPIDriver.cpp:15
@ TransmitPower5dBm
5dBm
Definition: RH_CC110.h:655
uint8_t reg_10
RH_CC110_REG_10_MDMCFG4.
Definition: RH_CC110.h:604
bool _promiscuous
Whether the transport is in promiscuous mode.
Definition: RHGenericDriver.h:259
uint8_t spiBurstWrite(uint8_t reg, const uint8_t *src, uint8_t len)
Definition: RHNRFSPIDriver.cpp:109
volatile uint8_t _rxHeaderFlags
FLAGS header in the last received mesasge.
Definition: RHGenericDriver.h:271
uint8_t reg_1c
RH_CC110_REG_1C_AGCCTRL1.
Definition: RH_CC110.h:611
ModemConfigChoice
Definition: RH_CC110.h:632
Defines register configuration values for a desired modulation.
Definition: RH_CC110.h:600
@ GFSK_Rb38_4Fd20
GFSK, Data Rate: 38.4kBaud, Dev: 20kHz, RX BW 100kHz, optimised for sensitivity.
Definition: RH_CC110.h:638
void validateRxBuf()
Definition: RH_CC110.cpp:250
virtual bool send(const uint8_t *data, uint8_t len)
Definition: RH_CC110.cpp:305
void setSyncWords(const uint8_t *syncWords, uint8_t len)
Definition: RH_CC110.cpp:486
@ RHModeSleep
Transport hardware is in low power sleep mode (if supported)
Definition: RHGenericDriver.h:51
Send and receive unaddressed, unreliable, datagrams by Texas Instruments CC110L and compatible transc...
Definition: RH_CC110.h:592
bool setModemConfig(ModemConfigChoice index)
Definition: RH_CC110.cpp:473
void spiUsingInterrupt(uint8_t interruptNumber)
Definition: RHNRFSPIDriver.cpp:133
uint8_t statusRead()
Definition: RH_CC110.cpp:389
uint8_t reg_12
RH_CC110_REG_12_MDMCFG2.
Definition: RH_CC110.h:606
@ TransmitPower7dBm
7dBm
Definition: RH_CC110.h:656
uint8_t reg_1a
RH_CC110_REG_1A_BSCFG.
Definition: RH_CC110.h:609
virtual bool available()
Definition: RH_CC110.cpp:268
uint8_t reg_25
RH_CC110_REG_25_FSCAL1.
Definition: RH_CC110.h:617
virtual bool init()
Definition: RH_CC110.cpp:77
uint8_t _txHeaderId
ID header to send in all messages.
Definition: RHGenericDriver.h:280
uint8_t reg_22
RH_CC110_REG_22_FREND0.
Definition: RH_CC110.h:614
@ GFSK_Rb76_8Fd32
GFSK, Data Rate: 76.8kBaud, Dev: 32kHz, RX BW 232kHz, optimised for sensitivity.
Definition: RH_CC110.h:639
uint8_t _txHeaderTo
TO header to send in all messages.
Definition: RHGenericDriver.h:274
uint8_t reg_2d
RH_CC110_REG_2D_TEST1.
Definition: RH_CC110.h:620
uint8_t reg_1d
RH_CC110_REG_1D_AGCCTRL0.
Definition: RH_CC110.h:612
uint8_t _txHeaderFlags
FLAGS header to send in all messages.
Definition: RHGenericDriver.h:283
@ TransmitPower0dBm
0dBm
Definition: RH_CC110.h:654
bool setFrequency(float centre)
Definition: RH_CC110.cpp:428
@ TransmitPowerM30dBm
-30dBm
Definition: RH_CC110.h:650
Base class for RadioHead drivers that use the SPI bus to communicate with its NRF family transport ha...
Definition: RHNRFSPIDriver.h:33
uint8_t spiWrite(uint8_t reg, uint8_t val)
Definition: RHNRFSPIDriver.cpp:66
@ GFSK_Rb1_2Fd5_2
GFSK, Data Rate: 1.2kBaud, Dev: 5.2kHz, RX BW 58kHz, optimised for sensitivity.
Definition: RH_CC110.h:634
@ GFSK_Rb2_4Fd5_2
GFSK, Data Rate: 2.4kBaud, Dev: 5.2kHz, RX BW 58kHz, optimised for sensitivity.
Definition: RH_CC110.h:635
@ GFSK_Rb250Fd127
GFSK, Data Rate: 250kBaud, Dev: 127kHz, RX BW 540kHz, optimised for sensitivity.
Definition: RH_CC110.h:641
volatile uint8_t _rxHeaderId
ID header in the last received mesasge.
Definition: RHGenericDriver.h:268
@ TransmitPowerM10dBm
-10dBm
Definition: RH_CC110.h:653
uint8_t reg_26
RH_CC110_REG_26_FSCAL0.
Definition: RH_CC110.h:618
uint8_t spiBurstRead(uint8_t reg, uint8_t *dest, uint8_t len)
Definition: RHNRFSPIDriver.cpp:90
@ RHModeIdle
Transport is idle.
Definition: RHGenericDriver.h:52
void setModeIdle()
Definition: RH_CC110.cpp:348
bool setTxPower(TransmitPower power)
Definition: RH_CC110.cpp:411
volatile RHMode _mode
The current transport operating mode.
Definition: RHGenericDriver.h:253
@ RHModeTx
Transport is in the process of transmitting a message.
Definition: RHGenericDriver.h:53
@ TransmitPower10dBm
10dBm
Definition: RH_CC110.h:657
virtual uint8_t maxMessageLength()
Definition: RH_CC110.cpp:330
void setPaTable(uint8_t *patable, uint8_t patablesize)
Definition: RH_CC110.cpp:423
uint8_t reg_1b
RH_CC110_REG_1B_AGCCTRL2.
Definition: RH_CC110.h:610
uint8_t reg_11
RH_CC110_REG_11_MDMCFG3.
Definition: RH_CC110.h:605
void handleOverFlows(uint8_t status)
Definition: RH_CC110.cpp:335
uint8_t reg_21
RH_CC110_REG_21_FREND1.
Definition: RH_CC110.h:613
@ RHModeRx
Transport is in the process of receiving a message.
Definition: RHGenericDriver.h:54
virtual bool waitCAD()
Definition: RHGenericDriver.cpp:72
virtual bool waitPacketSent()
Definition: RH_CC110.cpp:397