RadioLib
Universal wireless communication library for Arduino
|
1 #if !defined(_RADIOLIB_MODULE_H)
2 #define _RADIOLIB_MODULE_H
6 #if defined(RADIOLIB_BUILD_ARDUINO)
19 #if defined(RADIOLIB_BUILD_ARDUINO)
32 Module(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE gpio = RADIOLIB_NC);
49 Module(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE gpio, SPIClass& spi, SPISettings spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS);
64 Module(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE gpio = RADIOLIB_NC);
119 int16_t
SPIgetRegValue(uint8_t reg, uint8_t msb = 7, uint8_t lsb = 0);
138 int16_t
SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb = 7, uint8_t lsb = 0, uint8_t checkInterval = 2, uint8_t checkMask = 0xFF);
193 void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes);
202 RADIOLIB_PIN_TYPE
getCs()
const {
return(_cs); }
209 RADIOLIB_PIN_TYPE
getIrq()
const {
return(_irq); }
216 RADIOLIB_PIN_TYPE
getRst()
const {
return(_rst); }
223 RADIOLIB_PIN_TYPE
getGpio()
const {
return(_gpio); }
242 void setRfSwitchState(RADIOLIB_PIN_STATUS rxPinState, RADIOLIB_PIN_STATUS txPinState);
253 void pinMode(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_MODE mode);
262 void digitalWrite(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS value);
271 RADIOLIB_PIN_STATUS
digitalRead(RADIOLIB_PIN_TYPE pin);
280 void tone(RADIOLIB_PIN_TYPE pin, uint16_t value, uint32_t duration = 0);
287 void noTone(RADIOLIB_PIN_TYPE pin);
298 void attachInterrupt(RADIOLIB_PIN_TYPE interruptNum,
void (*userFunc)(
void), RADIOLIB_INTERRUPT_STATUS mode);
317 void delay(uint32_t ms);
339 uint32_t
pulseIn(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS state, uint32_t timeout);
367 #if defined(RADIOLIB_BUILD_ARDUINO)
369 virtual void SPIbeginTransaction();
371 virtual void SPIendTransaction();
392 static void hexdump(uint8_t* data,
size_t len);
401 void regdump(uint8_t start, uint8_t len);
404 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_PIN_MODE);
405 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DIGITAL_WRITE);
406 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DIGITAL_READ);
407 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_TONE);
408 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_NO_TONE);
409 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_ATTACH_INTERRUPT);
410 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DETACH_INTERRUPT);
411 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_YIELD);
412 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DELAY);
413 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DELAY_MICROSECONDS);
414 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_MILLIS);
415 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_MICROS);
416 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_PULSE_IN);
418 #if defined(RADIOLIB_BUILD_ARDUINO)
419 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_BEGIN);
420 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_BEGIN_TRANSACTION);
421 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_TRANSFER);
422 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_END_TRANSACTION);
423 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_END);
425 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_BEGIN);
426 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_BEGIN_TRANSACTION);
427 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_TRANSFER);
428 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_END_TRANSACTION);
429 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_END);
432 #if !defined(RADIOLIB_GODMODE)
437 RADIOLIB_PIN_TYPE _cs = RADIOLIB_NC;
438 RADIOLIB_PIN_TYPE _irq = RADIOLIB_NC;
439 RADIOLIB_PIN_TYPE _rst = RADIOLIB_NC;
440 RADIOLIB_PIN_TYPE _gpio = RADIOLIB_NC;
443 #if defined(RADIOLIB_BUILD_ARDUINO)
444 SPIClass* _spi = NULL;
445 SPISettings _spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS;
446 bool _initInterface =
false;
450 bool _useRfSwitch =
false;
451 RADIOLIB_PIN_TYPE _rxEn = RADIOLIB_NC;
452 RADIOLIB_PIN_TYPE _txEn = RADIOLIB_NC;
void pinMode(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_MODE mode)
Arduino core pinMode override that checks RADIOLIB_NC as alias for unused pin.
Definition: Module.cpp:248
static void hexdump(uint8_t *data, size_t len)
Function to dump data as hex into the debug port.
Definition: Module.cpp:455
RADIOLIB_PIN_TYPE getIrq() const
Access method to get the pin number of interrupt/GPIO.
Definition: Module.h:209
RADIOLIB_PIN_STATUS digitalRead(RADIOLIB_PIN_TYPE pin)
Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin.
Definition: Module.cpp:262
void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes)
SPI single transfer method.
Definition: Module.cpp:201
uint8_t transfer(uint8_t b)
Arduino core SPI transfer override.
Definition: Module.cpp:397
void init()
Initialize low-level module control.
Definition: Module.cpp:105
int16_t SPIgetRegValue(uint8_t reg, uint8_t msb=7, uint8_t lsb=0)
SPI read method that automatically masks unused bits. This method is the preferred SPI read mechanism...
Definition: Module.cpp:124
void regdump(uint8_t start, uint8_t len)
Function to dump device registers as hex into the debug port.
Definition: Module.cpp:475
RADIOLIB_PIN_TYPE getRst() const
Access method to get the pin number of hardware reset pin.
Definition: Module.h:216
void begin()
Arduino core SPI begin override.
Definition: Module.cpp:383
uint8_t SPIwriteCommand
Basic SPI write command. Defaults to 0x80.
Definition: Module.h:92
void delay(uint32_t ms)
Arduino core delay override.
Definition: Module.cpp:348
void yield()
Arduino core yield override.
Definition: Module.cpp:339
void digitalWrite(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS value)
Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin.
Definition: Module.cpp:255
uint32_t micros()
Arduino core micros override.
Definition: Module.cpp:369
RADIOLIB_PIN_TYPE getCs() const
Access method to get the pin number of SPI chip select.
Definition: Module.h:202
int16_t SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb=7, uint8_t lsb=0, uint8_t checkInterval=2, uint8_t checkMask=0xFF)
Overwrite-safe SPI write method with verification. This method is the preferred SPI write mechanism.
Definition: Module.cpp:134
void tone(RADIOLIB_PIN_TYPE pin, uint16_t value, uint32_t duration=0)
Arduino core tone override that checks RADIOLIB_NC as alias for unused pin and RADIOLIB_TONE_UNSUPPOR...
Definition: Module.cpp:269
void SPIwriteRegister(uint8_t reg, uint8_t data)
SPI basic write method. Use of this method is reserved for special cases, SPIsetRegValue should be us...
Definition: Module.cpp:197
void noTone(RADIOLIB_PIN_TYPE pin)
Arduino core noTone override that checks RADIOLIB_NC as alias for unused pin and RADIOLIB_TONE_UNSUPP...
Definition: Module.cpp:299
void endTransaction()
Arduino core SPI endTransaction override.
Definition: Module.cpp:404
void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)
Some modules contain external RF switch controlled by two pins. This function gives RadioLib control ...
Definition: Module.cpp:488
RADIOLIB_PIN_TYPE getGpio() const
Access method to get the pin number of second interrupt/GPIO.
Definition: Module.h:223
Module(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE gpio=RADIOLIB_NC)
Default constructor.
Definition: Module.cpp:79
static uint16_t flipBits16(uint16_t i)
Function to reflect bits within an integer.
Definition: Module.cpp:447
uint8_t SPIreadRegister(uint8_t reg)
SPI basic read method. Use of this method is reserved for special cases, SPIgetRegValue should be use...
Definition: Module.cpp:187
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:16
Module & operator=(const Module &mod)
Overload for assignment operator.
Definition: Module.cpp:94
void end()
Arduino core SPI end override.
Definition: Module.cpp:411
void term()
Terminate low-level module control.
Definition: Module.cpp:113
uint8_t SPIreadCommand
Basic SPI read command. Defaults to 0x00.
Definition: Module.h:87
void detachInterrupt(RADIOLIB_PIN_TYPE interruptNum)
Arduino core detachInterrupt override.
Definition: Module.cpp:332
void setRfSwitchState(RADIOLIB_PIN_STATUS rxPinState, RADIOLIB_PIN_STATUS txPinState)
Set RF switch state.
Definition: Module.cpp:496
void SPIreadRegisterBurst(uint8_t reg, uint8_t numBytes, uint8_t *inBytes)
SPI burst read method.
Definition: Module.cpp:183
uint32_t pulseIn(RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS state, uint32_t timeout)
Arduino core pulseIn override.
Definition: Module.cpp:376
static uint8_t flipBits(uint8_t b)
Function to reflect bits within a byte.
Definition: Module.cpp:440
uint32_t millis()
Arduino core millis override.
Definition: Module.cpp:362
void delayMicroseconds(uint32_t us)
Arduino core delayMicroseconds override.
Definition: Module.cpp:355
void attachInterrupt(RADIOLIB_PIN_TYPE interruptNum, void(*userFunc)(void), RADIOLIB_INTERRUPT_STATUS mode)
Arduino core attachInterrupt override.
Definition: Module.cpp:325
void beginTransaction()
Arduino core SPI beginTransaction override.
Definition: Module.cpp:390
void SPIwriteRegisterBurst(uint8_t reg, uint8_t *data, uint8_t numBytes)
SPI burst write method.
Definition: Module.cpp:193