12 #include <RHGenericSPI.h>
13 #include <RHSPIDriver.h>
16 #define RH_RF69_FXOSC 32000000.0
19 #define RH_RF69_FSTEP (RH_RF69_FXOSC / 524288)
23 #define RH_RF69_NUM_INTERRUPTS 3
26 #define RH_RF69_SPI_WRITE_MASK 0x80
29 #define RH_RF69_FIFO_SIZE 66
32 #define RH_RF69_MAX_ENCRYPTABLE_PAYLOAD_LEN 64
36 #define RH_RF69_HEADER_LEN 4
44 #ifndef RH_RF69_MAX_MESSAGE_LEN
45 #define RH_RF69_MAX_MESSAGE_LEN (RH_RF69_MAX_ENCRYPTABLE_PAYLOAD_LEN - RH_RF69_HEADER_LEN)
49 #define RH_RF69_MODE_IDLE 0
50 #define RH_RF69_MODE_RX 1
51 #define RH_RF69_MODE_TX 2
54 #define RH_RF69_DEFAULT_NODE_ADDRESS 0
61 #define RH_RF69_DEFAULT_HIGHPOWER true
63 #define RH_RF69_DEFAULT_HIGHPOWER false
67 #define RH_RF69_REG_00_FIFO 0x00
68 #define RH_RF69_REG_01_OPMODE 0x01
69 #define RH_RF69_REG_02_DATAMODUL 0x02
70 #define RH_RF69_REG_03_BITRATEMSB 0x03
71 #define RH_RF69_REG_04_BITRATELSB 0x04
72 #define RH_RF69_REG_05_FDEVMSB 0x05
73 #define RH_RF69_REG_06_FDEVLSB 0x06
74 #define RH_RF69_REG_07_FRFMSB 0x07
75 #define RH_RF69_REG_08_FRFMID 0x08
76 #define RH_RF69_REG_09_FRFLSB 0x09
77 #define RH_RF69_REG_0A_OSC1 0x0a
78 #define RH_RF69_REG_0B_AFCCTRL 0x0b
79 #define RH_RF69_REG_0C_RESERVED 0x0c
80 #define RH_RF69_REG_0D_LISTEN1 0x0d
81 #define RH_RF69_REG_0E_LISTEN2 0x0e
82 #define RH_RF69_REG_0F_LISTEN3 0x0f
83 #define RH_RF69_REG_10_VERSION 0x10
84 #define RH_RF69_REG_11_PALEVEL 0x11
85 #define RH_RF69_REG_12_PARAMP 0x12
86 #define RH_RF69_REG_13_OCP 0x13
87 #define RH_RF69_REG_14_RESERVED 0x14
88 #define RH_RF69_REG_15_RESERVED 0x15
89 #define RH_RF69_REG_16_RESERVED 0x16
90 #define RH_RF69_REG_17_RESERVED 0x17
91 #define RH_RF69_REG_18_LNA 0x18
92 #define RH_RF69_REG_19_RXBW 0x19
93 #define RH_RF69_REG_1A_AFCBW 0x1a
94 #define RH_RF69_REG_1B_OOKPEAK 0x1b
95 #define RH_RF69_REG_1C_OOKAVG 0x1c
96 #define RH_RF69_REG_1D_OOKFIX 0x1d
97 #define RH_RF69_REG_1E_AFCFEI 0x1e
98 #define RH_RF69_REG_1F_AFCMSB 0x1f
99 #define RH_RF69_REG_20_AFCLSB 0x20
100 #define RH_RF69_REG_21_FEIMSB 0x21
101 #define RH_RF69_REG_22_FEILSB 0x22
102 #define RH_RF69_REG_23_RSSICONFIG 0x23
103 #define RH_RF69_REG_24_RSSIVALUE 0x24
104 #define RH_RF69_REG_25_DIOMAPPING1 0x25
105 #define RH_RF69_REG_26_DIOMAPPING2 0x26
106 #define RH_RF69_REG_27_IRQFLAGS1 0x27
107 #define RH_RF69_REG_28_IRQFLAGS2 0x28
108 #define RH_RF69_REG_29_RSSITHRESH 0x29
109 #define RH_RF69_REG_2A_RXTIMEOUT1 0x2a
110 #define RH_RF69_REG_2B_RXTIMEOUT2 0x2b
111 #define RH_RF69_REG_2C_PREAMBLEMSB 0x2c
112 #define RH_RF69_REG_2D_PREAMBLELSB 0x2d
113 #define RH_RF69_REG_2E_SYNCCONFIG 0x2e
114 #define RH_RF69_REG_2F_SYNCVALUE1 0x2f
116 #define RH_RF69_REG_37_PACKETCONFIG1 0x37
117 #define RH_RF69_REG_38_PAYLOADLENGTH 0x38
118 #define RH_RF69_REG_39_NODEADRS 0x39
119 #define RH_RF69_REG_3A_BROADCASTADRS 0x3a
120 #define RH_RF69_REG_3B_AUTOMODES 0x3b
121 #define RH_RF69_REG_3C_FIFOTHRESH 0x3c
122 #define RH_RF69_REG_3D_PACKETCONFIG2 0x3d
123 #define RH_RF69_REG_3E_AESKEY1 0x3e
125 #define RH_RF69_REG_4E_TEMP1 0x4e
126 #define RH_RF69_REG_4F_TEMP2 0x4f
127 #define RH_RF69_REG_58_TESTLNA 0x58
128 #define RH_RF69_REG_5A_TESTPA1 0x5a
129 #define RH_RF69_REG_5C_TESTPA2 0x5c
130 #define RH_RF69_REG_6F_TESTDAGC 0x6f
131 #define RH_RF69_REG_71_TESTAFC 0x71
137 #define RH_RF69_OPMODE_SEQUENCEROFF 0x80
138 #define RH_RF69_OPMODE_LISTENON 0x40
139 #define RH_RF69_OPMODE_LISTENABORT 0x20
140 #define RH_RF69_OPMODE_MODE 0x1c
141 #define RH_RF69_OPMODE_MODE_SLEEP 0x00
142 #define RH_RF69_OPMODE_MODE_STDBY 0x04
143 #define RH_RF69_OPMODE_MODE_FS 0x08
144 #define RH_RF69_OPMODE_MODE_TX 0x0c
145 #define RH_RF69_OPMODE_MODE_RX 0x10
148 #define RH_RF69_DATAMODUL_DATAMODE 0x60
149 #define RH_RF69_DATAMODUL_DATAMODE_PACKET 0x00
150 #define RH_RF69_DATAMODUL_DATAMODE_CONT_WITH_SYNC 0x40
151 #define RH_RF69_DATAMODUL_DATAMODE_CONT_WITHOUT_SYNC 0x60
152 #define RH_RF69_DATAMODUL_MODULATIONTYPE 0x18
153 #define RH_RF69_DATAMODUL_MODULATIONTYPE_FSK 0x00
154 #define RH_RF69_DATAMODUL_MODULATIONTYPE_OOK 0x08
155 #define RH_RF69_DATAMODUL_MODULATIONSHAPING 0x03
156 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_FSK_NONE 0x00
157 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_FSK_BT1_0 0x01
158 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_FSK_BT0_5 0x02
159 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_FSK_BT0_3 0x03
160 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_OOK_NONE 0x00
161 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_OOK_BR 0x01
162 #define RH_RF69_DATAMODUL_MODULATIONSHAPING_OOK_2BR 0x02
165 #define RH_RF69_PALEVEL_PA0ON 0x80
166 #define RH_RF69_PALEVEL_PA1ON 0x40
167 #define RH_RF69_PALEVEL_PA2ON 0x20
168 #define RH_RF69_PALEVEL_OUTPUTPOWER 0x1f
171 #define RH_RF69_RSSICONFIG_RSSIDONE 0x02
172 #define RH_RF69_RSSICONFIG_RSSISTART 0x01
175 #define RH_RF69_DIOMAPPING1_DIO0MAPPING 0xc0
176 #define RH_RF69_DIOMAPPING1_DIO0MAPPING_00 0x00
177 #define RH_RF69_DIOMAPPING1_DIO0MAPPING_01 0x40
178 #define RH_RF69_DIOMAPPING1_DIO0MAPPING_10 0x80
179 #define RH_RF69_DIOMAPPING1_DIO0MAPPING_11 0xc0
181 #define RH_RF69_DIOMAPPING1_DIO1MAPPING 0x30
182 #define RH_RF69_DIOMAPPING1_DIO1MAPPING_00 0x00
183 #define RH_RF69_DIOMAPPING1_DIO1MAPPING_01 0x10
184 #define RH_RF69_DIOMAPPING1_DIO1MAPPING_10 0x20
185 #define RH_RF69_DIOMAPPING1_DIO1MAPPING_11 0x30
187 #define RH_RF69_DIOMAPPING1_DIO2MAPPING 0x0c
188 #define RH_RF69_DIOMAPPING1_DIO2MAPPING_00 0x00
189 #define RH_RF69_DIOMAPPING1_DIO2MAPPING_01 0x04
190 #define RH_RF69_DIOMAPPING1_DIO2MAPPING_10 0x08
191 #define RH_RF69_DIOMAPPING1_DIO2MAPPING_11 0x0c
193 #define RH_RF69_DIOMAPPING1_DIO3MAPPING 0x03
194 #define RH_RF69_DIOMAPPING1_DIO3MAPPING_00 0x00
195 #define RH_RF69_DIOMAPPING1_DIO3MAPPING_01 0x01
196 #define RH_RF69_DIOMAPPING1_DIO3MAPPING_10 0x02
197 #define RH_RF69_DIOMAPPING1_DIO3MAPPING_11 0x03
200 #define RH_RF69_DIOMAPPING2_DIO4MAPPING 0xc0
201 #define RH_RF69_DIOMAPPING2_DIO4MAPPING_00 0x00
202 #define RH_RF69_DIOMAPPING2_DIO4MAPPING_01 0x40
203 #define RH_RF69_DIOMAPPING2_DIO4MAPPING_10 0x80
204 #define RH_RF69_DIOMAPPING2_DIO4MAPPING_11 0xc0
206 #define RH_RF69_DIOMAPPING2_DIO5MAPPING 0x30
207 #define RH_RF69_DIOMAPPING2_DIO5MAPPING_00 0x00
208 #define RH_RF69_DIOMAPPING2_DIO5MAPPING_01 0x10
209 #define RH_RF69_DIOMAPPING2_DIO5MAPPING_10 0x20
210 #define RH_RF69_DIOMAPPING2_DIO5MAPPING_11 0x30
212 #define RH_RF69_DIOMAPPING2_CLKOUT 0x07
213 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_ 0x00
214 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_2 0x01
215 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_4 0x02
216 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_8 0x03
217 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_16 0x04
218 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_32 0x05
219 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_RC 0x06
220 #define RH_RF69_DIOMAPPING2_CLKOUT_FXOSC_OFF 0x07
223 #define RH_RF69_IRQFLAGS1_MODEREADY 0x80
224 #define RH_RF69_IRQFLAGS1_RXREADY 0x40
225 #define RH_RF69_IRQFLAGS1_TXREADY 0x20
226 #define RH_RF69_IRQFLAGS1_PLLLOCK 0x10
227 #define RH_RF69_IRQFLAGS1_RSSI 0x08
228 #define RH_RF69_IRQFLAGS1_TIMEOUT 0x04
229 #define RH_RF69_IRQFLAGS1_AUTOMODE 0x02
230 #define RH_RF69_IRQFLAGS1_SYNADDRESSMATCH 0x01
233 #define RH_RF69_IRQFLAGS2_FIFOFULL 0x80
234 #define RH_RF69_IRQFLAGS2_FIFONOTEMPTY 0x40
235 #define RH_RF69_IRQFLAGS2_FIFOLEVEL 0x20
236 #define RH_RF69_IRQFLAGS2_FIFOOVERRUN 0x10
237 #define RH_RF69_IRQFLAGS2_PACKETSENT 0x08
238 #define RH_RF69_IRQFLAGS2_PAYLOADREADY 0x04
239 #define RH_RF69_IRQFLAGS2_CRCOK 0x02
242 #define RH_RF69_SYNCCONFIG_SYNCON 0x80
243 #define RH_RF69_SYNCCONFIG_FIFOFILLCONDITION_MANUAL 0x40
244 #define RH_RF69_SYNCCONFIG_SYNCSIZE 0x38
245 #define RH_RF69_SYNCCONFIG_SYNCSIZE_1 0x00
246 #define RH_RF69_SYNCCONFIG_SYNCSIZE_2 0x08
247 #define RH_RF69_SYNCCONFIG_SYNCSIZE_3 0x10
248 #define RH_RF69_SYNCCONFIG_SYNCSIZE_4 0x18
249 #define RH_RF69_SYNCCONFIG_SYNCSIZE_5 0x20
250 #define RH_RF69_SYNCCONFIG_SYNCSIZE_6 0x28
251 #define RH_RF69_SYNCCONFIG_SYNCSIZE_7 0x30
252 #define RH_RF69_SYNCCONFIG_SYNCSIZE_8 0x38
253 #define RH_RF69_SYNCCONFIG_SYNCSIZE_SYNCTOL 0x07
256 #define RH_RF69_PACKETCONFIG1_PACKETFORMAT_VARIABLE 0x80
257 #define RH_RF69_PACKETCONFIG1_DCFREE 0x60
258 #define RH_RF69_PACKETCONFIG1_DCFREE_NONE 0x00
259 #define RH_RF69_PACKETCONFIG1_DCFREE_MANCHESTER 0x20
260 #define RH_RF69_PACKETCONFIG1_DCFREE_WHITENING 0x40
261 #define RH_RF69_PACKETCONFIG1_DCFREE_RESERVED 0x60
262 #define RH_RF69_PACKETCONFIG1_CRC_ON 0x10
263 #define RH_RF69_PACKETCONFIG1_CRCAUTOCLEAROFF 0x08
264 #define RH_RF69_PACKETCONFIG1_ADDRESSFILTERING 0x06
265 #define RH_RF69_PACKETCONFIG1_ADDRESSFILTERING_NONE 0x00
266 #define RH_RF69_PACKETCONFIG1_ADDRESSFILTERING_NODE 0x02
267 #define RH_RF69_PACKETCONFIG1_ADDRESSFILTERING_NODE_BC 0x04
268 #define RH_RF69_PACKETCONFIG1_ADDRESSFILTERING_RESERVED 0x06
271 #define RH_RF69_AUTOMODE_ENTER_COND_NONE 0x00
272 #define RH_RF69_AUTOMODE_ENTER_COND_FIFO_NOT_EMPTY 0x20
273 #define RH_RF69_AUTOMODE_ENTER_COND_FIFO_LEVEL 0x40
274 #define RH_RF69_AUTOMODE_ENTER_COND_CRC_OK 0x60
275 #define RH_RF69_AUTOMODE_ENTER_COND_PAYLOAD_READY 0x80
276 #define RH_RF69_AUTOMODE_ENTER_COND_SYNC_ADDRESS 0xa0
277 #define RH_RF69_AUTOMODE_ENTER_COND_PACKET_SENT 0xc0
278 #define RH_RF69_AUTOMODE_ENTER_COND_FIFO_EMPTY 0xe0
280 #define RH_RF69_AUTOMODE_EXIT_COND_NONE 0x00
281 #define RH_RF69_AUTOMODE_EXIT_COND_FIFO_EMPTY 0x04
282 #define RH_RF69_AUTOMODE_EXIT_COND_FIFO_LEVEL 0x08
283 #define RH_RF69_AUTOMODE_EXIT_COND_CRC_OK 0x0c
284 #define RH_RF69_AUTOMODE_EXIT_COND_PAYLOAD_READY 0x10
285 #define RH_RF69_AUTOMODE_EXIT_COND_SYNC_ADDRESS 0x14
286 #define RH_RF69_AUTOMODE_EXIT_COND_PACKET_SENT 0x18
287 #define RH_RF69_AUTOMODE_EXIT_COND_TIMEOUT 0x1c
289 #define RH_RF69_AUTOMODE_INTERMEDIATE_MODE_SLEEP 0x00
290 #define RH_RF69_AUTOMODE_INTERMEDIATE_MODE_STDBY 0x01
291 #define RH_RF69_AUTOMODE_INTERMEDIATE_MODE_RX 0x02
292 #define RH_RF69_AUTOMODE_INTERMEDIATE_MODE_TX 0x03
295 #define RH_RF69_FIFOTHRESH_TXSTARTCONDITION_NOTEMPTY 0x80
296 #define RH_RF69_FIFOTHRESH_FIFOTHRESHOLD 0x7f
299 #define RH_RF69_PACKETCONFIG2_INTERPACKETRXDELAY 0xf0
300 #define RH_RF69_PACKETCONFIG2_RESTARTRX 0x04
301 #define RH_RF69_PACKETCONFIG2_AUTORXRESTARTON 0x02
302 #define RH_RF69_PACKETCONFIG2_AESON 0x01
305 #define RH_RF69_TEMP1_TEMPMEASSTART 0x08
306 #define RH_RF69_TEMP1_TEMPMEASRUNNING 0x04
309 #define RH_RF69_TESTPA1_NORMAL 0x55
310 #define RH_RF69_TESTPA1_BOOST 0x5d
313 #define RH_RF69_TESTPA2_NORMAL 0x70
314 #define RH_RF69_TESTPA2_BOOST 0x7c
317 #define RH_RF69_TESTDAGC_CONTINUOUSDAGC_NORMAL 0x00
318 #define RH_RF69_TESTDAGC_CONTINUOUSDAGC_IMPROVED_LOWBETAON 0x20
319 #define RH_RF69_TESTDAGC_CONTINUOUSDAGC_IMPROVED_LOWBETAOFF 0x30
322 #define RH_RF69_HAVE_SERIAL
794 RH_RF69(uint8_t slaveSelectPin = SS, uint8_t interruptPin = 2,
RHGenericSPI& spi = hardware_spi);
820 bool setFrequency(
float centre,
float afcPullInRange = 0.05);
861 void setTxPower(int8_t power,
bool ishighpowermodule = RH_RF69_DEFAULT_HIGHPOWER);
890 bool recv(uint8_t* buf, uint8_t* len);
898 bool send(
const uint8_t* data, uint8_t len);
918 void setSyncWords(
const uint8_t* syncWords = NULL, uint8_t len = 0);
961 virtual bool sleep();
1016 uint8_t
_buf[RH_RF69_MAX_MESSAGE_LEN];
volatile uint16_t _rxGood
Count of the number of successfully transmitted messaged.
Definition: RHGenericDriver.h:292
uint8_t reg_02
Value for register RH_RF69_REG_02_DATAMODUL.
Definition: RH_RF69.h:722
void handleInterrupt()
Definition: RH_RF69.cpp:200
bool printRegisters()
Definition: RH_RF69.cpp:558
@ OOK_Rb32Bw64
OOK, Whitening, Rb = 32kbs, Rx Bandwidth = 64kHz.
Definition: RH_RF69.h:770
void setOpMode(uint8_t mode)
Definition: RH_RF69.cpp:317
void setModeTx()
Definition: RH_RF69.cpp:370
@ FSK_Rb57_6Fd120
FSK, Whitening, Rb = 57.6kbs, Fd = 120kHz.
Definition: RH_RF69.h:748
RH_RF69(uint8_t slaveSelectPin=SS, uint8_t interruptPin=2, RHGenericSPI &spi=hardware_spi)
Definition: RH_RF69.cpp:86
Base class for SPI interfaces.
Definition: RHGenericSPI.h:30
@ OOK_Rb9_6Bw19_2
OOK, Whitening, Rb = 9.6kbs, Rx Bandwidth = 19.2kHz.
Definition: RH_RF69.h:768
bool setFrequency(float centre, float afcPullInRange=0.05)
Definition: RH_RF69.cpp:292
virtual void beginTransaction()
Definition: RHGenericSPI.h:155
@ GFSK_Rb9_6Fd19_2
GFSK, Whitening, Rb = 9.6kbs, Fd = 19.2kHz.
Definition: RH_RF69.h:756
uint8_t reg_03
Value for register RH_RF69_REG_03_BITRATEMSB.
Definition: RH_RF69.h:723
void setModeIdle()
Definition: RH_RF69.cpp:329
uint8_t reg_37
Value for register RH_RF69_REG_37_PACKETCONFIG1.
Definition: RH_RF69.h:729
volatile uint8_t _bufLen
The message length in _buf.
Definition: RH_RF69.h:1013
static void isr2()
Low level interrupt service routine for RF69 connected to interrupt 1.
Definition: RH_RF69.cpp:276
volatile uint8_t _rxHeaderFrom
FROM header in the last received mesasge.
Definition: RHGenericDriver.h:265
uint8_t _deviceType
The reported device type.
Definition: RH_RF69.h:1007
@ GFSK_Rb125Fd125
GFSK, Whitening, Rb = 125kbs, Fd = 125kHz.
Definition: RH_RF69.h:760
uint8_t spiWrite(uint8_t reg, uint8_t val)
Definition: RHSPIDriver.cpp:42
Base class for RadioHead drivers that use the SPI bus to communicate with its transport hardware.
Definition: RHSPIDriver.h:38
uint8_t reg_19
Value for register RH_RF69_REG_19_RXBW.
Definition: RH_RF69.h:727
@ FSK_Rb2_4Fd4_8
FSK, Whitening, Rb = 2.4kbs, Fd = 4.8kHz.
Definition: RH_RF69.h:743
uint8_t reg_05
Value for register RH_RF69_REG_05_FDEVMSB.
Definition: RH_RF69.h:725
volatile int16_t _lastRssi
The value of the last received RSSI value, in some transport specific units.
Definition: RHGenericDriver.h:286
uint8_t _buf[RH_RF69_MAX_MESSAGE_LEN]
Array of octets of teh last received message or the next to transmit message.
Definition: RH_RF69.h:1016
uint8_t reg_04
Value for register RH_RF69_REG_04_BITRATELSB.
Definition: RH_RF69.h:724
bool setModemConfig(ModemConfigChoice index)
Definition: RH_RF69.cpp:441
volatile uint8_t _rxHeaderTo
TO header in the last received mesasge.
Definition: RHGenericDriver.h:262
@ FSK_Rb38_4Fd76_8
FSK, Whitening, Rb = 38.4kbs, Fd = 76.8kHz.
Definition: RH_RF69.h:747
uint8_t _txHeaderFrom
FROM header to send in all messages.
Definition: RHGenericDriver.h:277
void setEncryptionKey(uint8_t *key=NULL)
Definition: RH_RF69.cpp:474
uint32_t getLastPreambleTime()
uint8_t _interruptPin
The configured interrupt pin connected to this instance.
Definition: RH_RF69.h:997
@ FSK_Rb19_2Fd38_4
FSK, Whitening, Rb = 19.2kbs, Fd = 38.4kHz.
Definition: RH_RF69.h:746
uint32_t _lastPreambleTime
Time in millis since the last preamble was received (and the last time the RSSI was measured)
Definition: RH_RF69.h:1022
void spiUsingInterrupt(uint8_t interruptNumber)
Definition: RHSPIDriver.cpp:91
void readFifo()
Definition: RH_RF69.cpp:230
uint8_t _thisAddress
This node id.
Definition: RHGenericDriver.h:256
@ FSK_Rb125Fd125
FSK, Whitening, Rb = 125kbs, Fd = 125kHz.
Definition: RH_RF69.h:749
static void isr1()
Low level interrupt service routine for RF69 connected to interrupt 1.
Definition: RH_RF69.cpp:271
volatile uint16_t _txGood
Count of the number of bad messages (correct checksum etc) received.
Definition: RHGenericDriver.h:295
@ GFSK_Rb250Fd250
GFSK, Whitening, Rb = 250kbs, Fd = 250kHz.
Definition: RH_RF69.h:761
@ FSK_Rb9_6Fd19_2
FSK, Whitening, Rb = 9.6kbs, Fd = 19.2kHz.
Definition: RH_RF69.h:745
Driver to send and receive unaddressed, unreliable datagrams via an RF69 and compatible radio transce...
Definition: RH_RF69.h:709
void setTxPower(int8_t power, bool ishighpowermodule=RH_RF69_DEFAULT_HIGHPOWER)
Definition: RH_RF69.cpp:387
@ GFSK_Rb2Fd5
GFSK, Whitening, Rb = 2kbs, Fd = 5kHz.
Definition: RH_RF69.h:753
bool _promiscuous
Whether the transport is in promiscuous mode.
Definition: RHGenericDriver.h:259
void setModeRx()
Definition: RH_RF69.cpp:354
volatile uint8_t _rxHeaderFlags
FLAGS header in the last received mesasge.
Definition: RHGenericDriver.h:271
uint16_t deviceType()
Definition: RH_RF69.h:968
@ GFSK_Rb4_8Fd9_6
GFSK, Whitening, Rb = 4.8kbs, Fd = 9.6kHz.
Definition: RH_RF69.h:755
@ GFSK_Rb38_4Fd76_8
GFSK, Whitening, Rb = 38.4kbs, Fd = 76.8kHz.
Definition: RH_RF69.h:758
int8_t rssiRead()
Definition: RH_RF69.cpp:305
void setModemRegisters(const ModemConfig *config)
Definition: RH_RF69.cpp:432
@ OOK_Rb19_2Bw38_4
OOK, Whitening, Rb = 19.2kbs, Rx Bandwidth = 38.4kHz.
Definition: RH_RF69.h:769
bool recv(uint8_t *buf, uint8_t *len)
Definition: RH_RF69.cpp:495
@ OOK_Rb4_8Bw9_6
OOK, Whitening, Rb = 4.8kbs, Rx Bandwidth = 9.6kHz.
Definition: RH_RF69.h:767
uint8_t reg_1a
Value for register RH_RF69_REG_1A_AFCBW.
Definition: RH_RF69.h:728
@ RHModeSleep
Transport hardware is in low power sleep mode (if supported)
Definition: RHGenericDriver.h:51
uint8_t spiBurstWrite(uint8_t reg, const uint8_t *src, uint8_t len)
Definition: RHSPIDriver.cpp:71
uint8_t _myInterruptIndex
Definition: RH_RF69.h:1001
uint8_t _idleMode
The radio OP mode to use when mode is RHModeIdle.
Definition: RH_RF69.h:1004
bool init()
Definition: RHSPIDriver.cpp:15
uint8_t _slaveSelectPin
The pin number of the Slave Select pin that is used to select the desired device.
Definition: RHSPIDriver.h:97
@ GFSK_Rb19_2Fd38_4
GFSK, Whitening, Rb = 19.2kbs, Fd = 38.4kHz.
Definition: RH_RF69.h:757
uint8_t maxMessageLength()
Definition: RH_RF69.cpp:543
@ OOK_Rb1_2Bw75
OOK, Whitening, Rb = 1.2kbs, Rx Bandwidth = 75kHz.
Definition: RH_RF69.h:765
void setSyncWords(const uint8_t *syncWords=NULL, uint8_t len=0)
Definition: RH_RF69.cpp:459
int8_t temperatureRead()
Definition: RH_RF69.cpp:282
uint8_t _txHeaderId
ID header to send in all messages.
Definition: RHGenericDriver.h:280
bool init()
Definition: RH_RF69.cpp:100
bool send(const uint8_t *data, uint8_t len)
Definition: RH_RF69.cpp:513
bool available()
Definition: RH_RF69.cpp:487
uint8_t _txHeaderTo
TO header to send in all messages.
Definition: RHGenericDriver.h:274
bool printRegister(uint8_t reg)
Definition: RH_RF69.cpp:548
ModemConfigChoice
Definition: RH_RF69.h:740
void setIdleMode(uint8_t idleMode)
Definition: RH_RF69.cpp:95
uint8_t _txHeaderFlags
FLAGS header to send in all messages.
Definition: RHGenericDriver.h:283
@ GFSK_Rb55555Fd50
GFSK, Whitening, Rb = 55555kbs,Fd = 50kHz.
Definition: RH_RF69.h:762
virtual bool sleep()
Definition: RH_RF69.cpp:344
@ OOK_Rb1Bw1
OOK, Whitening, Rb = 1kbs, Rx Bandwidth = 1kHz.
Definition: RH_RF69.h:764
uint8_t reg_06
Value for register RH_RF69_REG_06_FDEVLSB.
Definition: RH_RF69.h:726
volatile uint8_t _rxHeaderId
ID header in the last received mesasge.
Definition: RHGenericDriver.h:268
@ GFSK_Rb2_4Fd4_8
GFSK, Whitening, Rb = 2.4kbs, Fd = 4.8kHz.
Definition: RH_RF69.h:754
@ OOK_Rb2_4Bw4_8
OOK, Whitening, Rb = 2.4kbs, Rx Bandwidth = 4.8kHz.
Definition: RH_RF69.h:766
@ RHModeIdle
Transport is idle.
Definition: RHGenericDriver.h:52
uint8_t spiRead(uint8_t reg)
Definition: RHSPIDriver.cpp:30
@ GFSK_Rb57_6Fd120
GFSK, Whitening, Rb = 57.6kbs, Fd = 120kHz.
Definition: RH_RF69.h:759
virtual bool waitPacketSent()
Definition: RHGenericDriver.cpp:52
volatile RHMode _mode
The current transport operating mode.
Definition: RHGenericDriver.h:253
@ FSK_Rb4_8Fd9_6
FSK, Whitening, Rb = 4.8kbs, Fd = 9.6kHz.
Definition: RH_RF69.h:744
@ FSK_Rb250Fd250
FSK, Whitening, Rb = 250kbs, Fd = 250kHz.
Definition: RH_RF69.h:750
RHGenericSPI & _spi
Reference to the RHGenericSPI instance to use to transfer data with the SPI device.
Definition: RHSPIDriver.h:94
@ FSK_Rb2Fd5
FSK, Whitening, Rb = 2kbs, Fd = 5kHz.
Definition: RH_RF69.h:742
@ RHModeTx
Transport is in the process of transmitting a message.
Definition: RHGenericDriver.h:53
virtual void endTransaction()
Definition: RHGenericSPI.h:160
volatile bool _rxBufValid
True when there is a valid message in the Rx buffer.
Definition: RH_RF69.h:1019
int8_t _power
The selected output power in dBm.
Definition: RH_RF69.h:1010
void setPreambleLength(uint16_t bytes)
Definition: RH_RF69.cpp:453
Defines register values for a set of modem configuration registers.
Definition: RH_RF69.h:720
@ FSK_Rb55555Fd50
FSK, Whitening, Rb = 55555kbs,Fd = 50kHz for RFM69 lib compatibility.
Definition: RH_RF69.h:751
virtual RHMode mode()
Definition: RHGenericDriver.cpp:159
@ RHModeRx
Transport is in the process of receiving a message.
Definition: RHGenericDriver.h:54
virtual uint8_t transfer(uint8_t data)=0
static uint8_t _interruptCount
Index of next interrupt number to use in _deviceForInterrupt.
Definition: RH_RF69.h:994
static RH_RF69 * _deviceForInterrupt[]
Array of instances connected to interrupts 0 and 1.
Definition: RH_RF69.h:991
virtual bool waitCAD()
Definition: RHGenericDriver.cpp:72
static void isr0()
Low level interrupt service routine for RF69 connected to interrupt 0.
Definition: RH_RF69.cpp:266