|
MySensors Library & Examples
2.3.2-62-ge298769
|
Go to the documentation of this file.
77 #include "RFM69registers_new.h"
79 #if !defined(RFM69_SPI)
80 #define RFM69_SPI hwSPI
83 #if defined(ARDUINO_ARCH_AVR)
84 #if defined(__AVR_ATmega32U4__)
85 #define DEFAULT_RFM69_IRQ_PIN (3)
87 #define DEFAULT_RFM69_IRQ_PIN (2)
89 #elif defined(ARDUINO_ARCH_ESP8266)
90 #define DEFAULT_RFM69_IRQ_PIN (5)
91 #elif defined(ARDUINO_ARCH_ESP32)
92 #define DEFAULT_RFM69_IRQ_PIN (16)
93 #define DEFAULT_RFM69_IRQ_NUM digitalPinToInterrupt(DEFAULT_RFM69_IRQ_PIN)
94 #elif defined(ARDUINO_ARCH_SAMD)
95 #define DEFAULT_RFM69_IRQ_PIN (2)
96 #elif defined(LINUX_ARCH_RASPBERRYPI)
97 #define DEFAULT_RFM69_IRQ_PIN (22)
98 #elif defined(ARDUINO_ARCH_STM32F1)
99 #define DEFAULT_RFM69_IRQ_PIN (PA3)
100 #elif defined(TEENSYDUINO)
101 #define DEFAULT_RFM69_IRQ_PIN (8)
103 #define DEFAULT_RFM69_IRQ_PIN (2)
106 #define DEFAULT_RFM69_CS_PIN (SS)
109 #define RFM69_SPI_DATA_ORDER MSBFIRST
110 #define RFM69_SPI_DATA_MODE SPI_MODE0
113 #define RFM69_SYNCVALUE1 (0x2D)
115 #if (MY_RFM69HW==true)
117 #define RFM69_VERSION_HW
118 #define RFM69_MIN_POWER_LEVEL_DBM ((rfm69_powerlevel_t)-2)
119 #if defined(MY_RFM69_MAX_POWER_LEVEL_DBM)
120 #define RFM69_MAX_POWER_LEVEL_DBM MY_RFM69_MAX_POWER_LEVEL_DBM
122 #define RFM69_MAX_POWER_LEVEL_DBM ((rfm69_powerlevel_t)20)
126 #define RFM69_MIN_POWER_LEVEL_DBM ((rfm69_powerlevel_t)-18)
127 #if defined(MY_RFM69_MAX_POWER_LEVEL_DBM)
128 #define RFM69_MAX_POWER_LEVEL_DBM MY_RFM69_MAX_POWER_LEVEL_DBM
130 #define RFM69_MAX_POWER_LEVEL_DBM ((rfm69_powerlevel_t)13)
134 #define RFM69_FIFO_SIZE (0xFFu)
135 #define RFM69_MAX_PACKET_LEN static_cast<size_t>(0x40u)
136 #define RFM69_ATC_TARGET_RANGE_DBM (2u)
137 #define RFM69_PACKET_HEADER_VERSION (1u)
138 #define RFM69_MIN_PACKET_HEADER_VERSION (1u)
140 #define RFM69_RETRIES (5u)
141 #define RFM69_RETRY_TIMEOUT_MS (200ul)
142 #define RFM69_MODE_READY_TIMEOUT_MS (50ul)
144 #define RFM69_ACK_REQUESTED (7u)
145 #define RFM69_ACK_RECEIVED (6u)
146 #define RFM69_ACK_RSSI_REPORT (5u)
148 #define RFM69_BROADCAST_ADDRESS (255u)
149 #define RFM69_TARGET_RSSI_DBM (-75)
150 #define RFM69_HIGH_POWER_DBM (18u)
152 #if !defined(MY_RFM69_TX_TIMEOUT_MS)
153 #define MY_RFM69_TX_TIMEOUT_MS (2*1000ul)
157 #if !defined(MY_RFM69_CSMA_LIMIT_DBM)
158 #define MY_RFM69_CSMA_LIMIT_DBM (-95)
160 #if !defined(MY_RFM69_CSMA_TIMEOUT_MS)
161 #define MY_RFM69_CSMA_TIMEOUT_MS (500ul)
164 #define RFM69_POWERUP_DELAY_MS (100ul)
167 #define RFM69_315MHZ (315000000ul)
168 #define RFM69_433MHZ (433920000ul)
169 #define RFM69_865MHZ (865500000ul)
170 #define RFM69_868MHZ (868000000ul)
171 #define RFM69_915MHZ (915000000ul)
173 #define RFM69_COURSE_TEMP_COEF (-90)
174 #define RFM69_FXOSC (32*1000000ul)
175 #define RFM69_FSTEP (RFM69_FXOSC / 524288.0f)
178 #define RFM69_getACKRequested(__value) ((bool)bitRead(__value,RFM69_ACK_REQUESTED))
179 #define RFM69_setACKRequested(__value, __flag) bitWrite(__value,RFM69_ACK_REQUESTED,__flag)
180 #define RFM69_getACKReceived(__value) ((bool)bitRead(__value,RFM69_ACK_RECEIVED))
181 #define RFM69_setACKReceived(__value, __flag) bitWrite(__value,RFM69_ACK_RECEIVED,__flag)
182 #define RFM69_setACKRSSIReport(__value, __flag) bitWrite(__value,RFM69_ACK_RSSI_REPORT,__flag)
183 #define RFM69_getACKRSSIReport(__value) ((bool)bitRead(__value,RFM69_ACK_RSSI_REPORT))
186 #define RFM69_READ_REGISTER (0x7Fu)
187 #define RFM69_WRITE_REGISTER (0x80u)
190 #define RFM69_CONFIG_FSK (RFM69_DATAMODUL_DATAMODE_PACKET | RFM69_DATAMODUL_MODULATIONTYPE_FSK | RFM69_DATAMODUL_MODULATIONSHAPING_00)
191 #define RFM69_CONFIG_GFSK (RFM69_DATAMODUL_DATAMODE_PACKET | RFM69_DATAMODUL_MODULATIONTYPE_FSK | RFM69_DATAMODUL_MODULATIONSHAPING_10)
192 #define RFM69_CONFIG_OOK (RFM69_DATAMODUL_DATAMODE_PACKET | RFM69_DATAMODUL_MODULATIONTYPE_OOK | RFM69_DATAMODUL_MODULATIONSHAPING_00)
194 #define RFM69_CONFIG_NOWHITE (RFM69_PACKET1_FORMAT_VARIABLE | RFM69_PACKET1_DCFREE_OFF | RFM69_PACKET1_CRC_ON | RFM69_PACKET1_CRCAUTOCLEAR_ON | RFM69_PACKET1_ADRSFILTERING_NODEBROADCAST)
195 #define RFM69_CONFIG_WHITE (RFM69_PACKET1_FORMAT_VARIABLE | RFM69_PACKET1_DCFREE_WHITENING | RFM69_PACKET1_CRC_ON | RFM69_PACKET1_CRCAUTOCLEAR_ON | RFM69_PACKET1_ADRSFILTERING_NODEBROADCAST)
196 #define RFM69_CONFIG_MANCHESTER (RFM69_PACKET1_FORMAT_VARIABLE | RFM69_PACKET1_DCFREE_MANCHESTER | RFM69_PACKET1_CRC_ON | RFM69_PACKET1_CRCAUTOCLEAR_ON | RFM69_PACKET1_ADRSFILTERING_NODEBROADCAST)
198 #define RFM69_RXBW_111_24_4 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_24 | RFM69_RXBW_EXP_4)
199 #define RFM69_RXBW_111_24_3 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_24 | RFM69_RXBW_EXP_3)
200 #define RFM69_RXBW_111_24_2 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_24 | RFM69_RXBW_EXP_2)
201 #define RFM69_RXBW_111_16_2 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_16 | RFM69_RXBW_EXP_2)
202 #define RFM69_RXBW_111_16_1 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_16 | RFM69_RXBW_EXP_1)
203 #define RFM69_RXBW_111_16_0 (RFM69_RXBW_DCCFREQ_111 | RFM69_RXBW_MANT_16 | RFM69_RXBW_EXP_0)
204 #define RFM69_RXBW_010_16_2 (RFM69_RXBW_DCCFREQ_010 | RFM69_RXBW_MANT_16 | RFM69_RXBW_EXP_2)
206 #define RFM69_FSK_BR2_FD5 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_2000, RFM69_BITRATELSB_2000, RFM69_FDEVMSB_5000, RFM69_FDEVLSB_5000, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
207 #define RFM69_FSK_BR2_4_FD4_8 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_2400, RFM69_BITRATELSB_2400, RFM69_FDEVMSB_4800, RFM69_FDEVLSB_4800, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
208 #define RFM69_FSK_BR4_8_FD9_6 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_4800, RFM69_BITRATELSB_4800, RFM69_FDEVMSB_9600, RFM69_FDEVLSB_9600, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
209 #define RFM69_FSK_BR9_6_FD19_2 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_9600, RFM69_BITRATELSB_9600, RFM69_FDEVMSB_19200, RFM69_FDEVLSB_19200, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
210 #define RFM69_FSK_BR19_2_FD38_4 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_19200, RFM69_BITRATELSB_19200, RFM69_FDEVMSB_38400, RFM69_FDEVLSB_38400, RFM69_RXBW_111_24_3, RFM69_CONFIG_WHITE
211 #define RFM69_FSK_BR38_4_FD76_8 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_38400, RFM69_BITRATELSB_38400, RFM69_FDEVMSB_76800, RFM69_FDEVLSB_76800, RFM69_RXBW_111_24_2, RFM69_CONFIG_WHITE
212 #define RFM69_FSK_BR55_5_FD50 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_55555, RFM69_BITRATELSB_55555, RFM69_FDEVMSB_50000, RFM69_FDEVLSB_50000, RFM69_RXBW_111_16_2, RFM69_CONFIG_WHITE
213 #define RFM69_FSK_BR57_6_FD120 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_57600, RFM69_BITRATELSB_57600, RFM69_FDEVMSB_120000, RFM69_FDEVLSB_120000, RFM69_RXBW_111_16_1, RFM69_CONFIG_WHITE
214 #define RFM69_FSK_BR125_FD125 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_125000, RFM69_BITRATELSB_125000, RFM69_FDEVMSB_125000, RFM69_FDEVLSB_125000, RFM69_RXBW_010_16_2, RFM69_CONFIG_WHITE
215 #define RFM69_FSK_BR250_FD250 RFM69_CONFIG_FSK, RFM69_BITRATEMSB_250000, RFM69_BITRATELSB_250000, RFM69_FDEVMSB_250000, RFM69_FDEVLSB_250000, RFM69_RXBW_111_16_0, RFM69_CONFIG_WHITE
217 #define RFM69_GFSK_BR2_FD5 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_2000, RFM69_BITRATELSB_2000, RFM69_FDEVMSB_5000, RFM69_FDEVLSB_5000, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
218 #define RFM69_GFSK_BR2_4_FD4_8 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_2400, RFM69_BITRATELSB_2400, RFM69_FDEVMSB_4800, RFM69_FDEVLSB_4800, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
219 #define RFM69_GFSK_BR4_8_FD9_6 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_4800, RFM69_BITRATELSB_4800, RFM69_FDEVMSB_9600, RFM69_FDEVLSB_9600, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
220 #define RFM69_GFSK_BR9_6_FD19_2 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_9600, RFM69_BITRATELSB_9600, RFM69_FDEVMSB_19200, RFM69_FDEVLSB_19200, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
221 #define RFM69_GFSK_BR19_2_FD38_4 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_19200, RFM69_BITRATELSB_19200, RFM69_FDEVMSB_38400, RFM69_FDEVLSB_38400, RFM69_RXBW_111_24_3, RFM69_CONFIG_WHITE
222 #define RFM69_GFSK_BR38_4_FD76_8 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_38400, RFM69_BITRATELSB_38400, RFM69_FDEVMSB_76800, RFM69_FDEVLSB_76800, RFM69_RXBW_111_24_2, RFM69_CONFIG_WHITE
223 #define RFM69_GFSK_BR55_5_FD50 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_55555, RFM69_BITRATELSB_55555, RFM69_FDEVMSB_50000, RFM69_FDEVLSB_50000, RFM69_RXBW_111_16_2, RFM69_CONFIG_WHITE
224 #define RFM69_GFSK_BR57_6_FD120 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_57600, RFM69_BITRATELSB_57600, RFM69_FDEVMSB_120000, RFM69_FDEVLSB_120000, RFM69_RXBW_111_16_1, RFM69_CONFIG_WHITE
225 #define RFM69_GFSK_BR125_FD125 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_125000, RFM69_BITRATELSB_125000, RFM69_FDEVMSB_125000, RFM69_FDEVLSB_125000, RFM69_RXBW_010_16_2, RFM69_CONFIG_WHITE
226 #define RFM69_GFSK_BR250_FD250 RFM69_CONFIG_GFSK, RFM69_BITRATEMSB_250000, RFM69_BITRATELSB_250000, RFM69_FDEVMSB_250000, RFM69_FDEVLSB_250000, RFM69_RXBW_111_16_0, RFM69_CONFIG_WHITE
228 #define RFM69_OOK_BR2_FD5 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_2000, RFM69_BITRATELSB_2000, RFM69_FDEVMSB_5000, RFM69_FDEVLSB_5000, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
229 #define RFM69_OOK_BR2_4_FD4_8 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_2400, RFM69_BITRATELSB_2400, RFM69_FDEVMSB_4800, RFM69_FDEVLSB_4800, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
230 #define RFM69_OOK_BR4_8_FD9_6 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_4800, RFM69_BITRATELSB_4800, RFM69_FDEVMSB_9600, RFM69_FDEVLSB_9600, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
231 #define RFM69_OOK_BR9_6_FD19_2 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_9600, RFM69_BITRATELSB_9600, RFM69_FDEVMSB_19200, RFM69_FDEVLSB_19200, RFM69_RXBW_111_24_4, RFM69_CONFIG_WHITE
232 #define RFM69_OOK_BR19_2_FD38_4 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_19200, RFM69_BITRATELSB_19200, RFM69_FDEVMSB_38400, RFM69_FDEVLSB_38400, RFM69_RXBW_111_24_3, RFM69_CONFIG_WHITE
233 #define RFM69_OOK_BR38_4_FD76_8 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_38400, RFM69_BITRATELSB_38400, RFM69_FDEVMSB_76800, RFM69_FDEVLSB_76800, RFM69_RXBW_111_24_2, RFM69_CONFIG_WHITE
234 #define RFM69_OOK_BR55_5_FD50 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_55555, RFM69_BITRATELSB_55555, RFM69_FDEVMSB_50000, RFM69_FDEVLSB_50000, RFM69_RXBW_111_16_2, RFM69_CONFIG_WHITE
235 #define RFM69_OOK_BR57_6_FD120 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_57600, RFM69_BITRATELSB_57600, RFM69_FDEVMSB_120000, RFM69_FDEVLSB_120000, RFM69_RXBW_111_16_1, RFM69_CONFIG_WHITE
236 #define RFM69_OOK_BR125_FD125 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_125000, RFM69_BITRATELSB_125000, RFM69_FDEVMSB_125000, RFM69_FDEVLSB_125000, RFM69_RXBW_010_16_2, RFM69_CONFIG_WHITE
237 #define RFM69_OOK_BR250_FD250 RFM69_CONFIG_OOK, RFM69_BITRATEMSB_250000, RFM69_BITRATELSB_250000, RFM69_FDEVMSB_250000, RFM69_FDEVLSB_250000, RFM69_RXBW_111_16_0, RFM69_CONFIG_WHITE
239 #if !defined(MY_RFM69_MODEM_CONFIGURATION)
240 #define MY_RFM69_MODEM_CONFIGURATION RFM69_FSK_BR55_5_FD50
298 #define RFM69_HEADER_LEN sizeof(rfm69_header_t)
299 #define RFM69_MAX_PAYLOAD_LEN (RFM69_MAX_PACKET_LEN - RFM69_HEADER_LEN)
478 const uint8_t bufferSize,
char data[MAX_PAYLOAD_SIZE+1]
Buffer for raw payload data.
LOCAL bool RFM69_setTxPowerLevel(rfm69_powerlevel_t newPowerLevel)
Sets the transmitter power output level, and configures the transmitter pin.
rfm69_sequenceNumber_t txSequenceNumber
RFM69_txSequenceNumber.
LOCAL bool RFM69_sleep(void)
Sets the radio into low-power sleep mode.
@ RFM69_RADIO_MODE_SLEEP
SLEEP mode.
LOCAL void RFM69_readAllRegs(void)
RFM69_readAllRegs Read and display all RFM69 register contents.
@ RFM69_RADIO_MODE_STDBY
STDBY mode.
LOCAL uint8_t RFM69_getTxPowerPercent(void)
Reports the transmitter power output level in percents.
LOCAL int16_t RFM69_getSendingRSSI(void)
RFM69_getSendingRSSI.
LOCAL bool RFM69_available(void)
Tests whether a new message is available.
LOCAL void RFM69_ATCmode(const bool onOff, const int16_t targetRSSI=RFM69_TARGET_RSSI_DBM)
RFM69_ATCmode.
uint8_t packetLen
packet length
LOCAL void RFM69_sendACK(const uint8_t recipient, const rfm69_sequenceNumber_t sequenceNumber, const rfm69_RSSI_t RSSI)
RFM69_sendACK.
LOCAL bool RFM69_standBy(void)
Sets the radio to standby mode.
LOCAL void RFM69_encrypt(const char *key)
RFM69_encrypt Set encryption mode.
LOCAL bool RFM69_sanityCheck(void)
RFM69_sanityCheck detect HW defect, configuration errors or interrupted SPI line.
uint8_t rfm69_sequenceNumber_t
Sequence number data type.
#define RFM69_MAX_PAYLOAD_LEN
Max payload length.
@ RFM69_RADIO_MODE_TX
TX mode.
rfm69_radio_mode_t radioMode
current transceiver state
uint8_t ATCtargetRSSI
ATC: target RSSI.
int8_t rfm69_SNR_t
SNR data type.
rfm69_sequenceNumber_t sequenceNumber
packet sequence number, used for ACK
LOCAL void RFM69_setAddress(const uint8_t addr)
Set the driver/node address.
@ RFM69_RADIO_MODE_CAD
CAD mode.
LOCAL void RFM69_setFrequency(const uint32_t frequencyHz)
Sets the transmitter and receiver center frequency.
uint8_t version
header version (20180128tk: >=3.0.0 fused with controlFlags)
bool dataReceived
data received
LOCAL void RFM69_setHighPowerRegs(const bool onOff)
RFM69_setHighPowerRegs.
uint8_t recipient
payload recipient
LOCAL void RFM69_setConfiguration(void)
RFM69_setConfiguration Set general radio register configuration TODO temp use setmodemregisters.
uint8_t address
Node address.
#define RFM69_MAX_PACKET_LEN
This is the maximum number of bytes that can be carried.
uint8_t payloadLen
Length of payload (excluding header)
LOCAL bool RFM69_sendFrame(rfm69_packet_t *packet, const bool increaseSequenceCounter=true)
RFM69_sendFrame.
struct @4::@5 __attribute__
Doxygen will complain without this comment.
LOCAL void RFM69_clearFIFO(void)
Clear flags and FIFO.
LOCAL void RFM69_interruptHandler(void)
Low level interrupt handler.
LOCAL uint8_t RFM69_getAddress(void)
Get driver/node address.
uint8_t rfm69_RSSI_t
RSSI data type.
uint8_t reserved
Reserved.
@ RFM69_RADIO_MODE_RX
RX mode.
uint8_t sender
payload sender
LOCAL bool RFM69_sendWithRetry(const uint8_t recipient, const void *buffer, const uint8_t bufferSize, const bool noACK)
RFM69_sendWithRetry.
LOCAL void RFM69_powerUp(void)
Power up radio (HW)
LOCAL rfm69_RSSI_t RFM69_readRSSI(const bool forceTrigger=false)
RFM69_readRSSI.
rfm69_controlFlags_t controlFlags
control flags, used for ACK
LOCAL int16_t RFM69_getReceivingRSSI(void)
RFM69_getReceivingRSSI.
LOCAL void RFM69_handler(void)
RFM69_handler.
LOCAL bool RFM69_channelFree(void)
Check for channel activity.
LOCAL bool RFM69_initialise(const uint32_t frequencyHz)
Initialise the driver transport hardware and software.
uint8_t rfm69_controlFlags_t
Control flag data type.
#define RFM69_TARGET_RSSI_DBM
RSSI target.
LOCAL rfm69_powerlevel_t RFM69_getTxPowerLevel(void)
Reports the transmitter power output level in dBm.
LOCAL bool RFM69_setRadioMode(const rfm69_radio_mode_t newRadioMode)
RFM69_setRadioMode.
LOCAL bool RFM69_isModeReady(void)
RFM69_isModeReady.
rfm69_header_t header
Packet header.
bool ackReceived
ACK received.
RFM69 internal variables.
rfm69_powerlevel_t powerLevel
TX power level dBm.
LOCAL bool RFM69_executeATC(const rfm69_RSSI_t currentRSSI, const rfm69_RSSI_t targetRSSI)
RFM69_executeATC.
LOCAL bool RFM69_send(const uint8_t recipient, uint8_t *data, const uint8_t len, const rfm69_controlFlags_t flags, const bool increaseSequenceCounter=true)
RFM69_send.
LOCAL void RFM69_interruptHandling(void)
RFM69_interruptHandling.
LOCAL uint8_t RFM69_receive(uint8_t *buf, const uint8_t maxBufSize)
If a valid message is received, copy it to buf and return length. 0 byte messages are permitted.
@ RFM69_RADIO_MODE_SYNTH
SYNTH mode.
@ RFM69_RADIO_MODE_LISTEN
LISTEN mode.
int8_t rfm69_powerlevel_t
Power level in dBm.
rfm69_radio_mode_t
Radio modes.
rfm69_ack_t ACK
Union: ACK payload (internal)
rfm69_packet_t currentPacket
Buffer for current packet.
bool ATCenabled
ATC enabled.
LOCAL void RFM69_powerDown(void)
Power down radio (HW)