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);
362 #if defined(RADIOLIB_BUILD_ARDUINO)
364 void SPIbeginTransaction();
366 void SPIendTransaction();
381 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_PIN_MODE);
382 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DIGITAL_WRITE);
383 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DIGITAL_READ);
384 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_TONE);
385 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_NO_TONE);
386 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_ATTACH_INTERRUPT);
387 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DETACH_INTERRUPT);
388 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_YIELD);
389 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DELAY);
390 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_DELAY_MICROSECONDS);
391 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_MILLIS);
392 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_MICROS);
394 #if defined(RADIOLIB_BUILD_ARDUINO)
395 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_BEGIN);
396 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_BEGIN_TRANSACTION);
397 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_TRANSFER);
398 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_END_TRANSACTION);
399 RADIOLIB_GENERATE_CALLBACK_SPI(RADIOLIB_CB_ARGS_SPI_END);
401 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_BEGIN);
402 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_BEGIN_TRANSACTION);
403 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_TRANSFER);
404 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_END_TRANSACTION);
405 RADIOLIB_GENERATE_CALLBACK(RADIOLIB_CB_ARGS_SPI_END);
408 #if !defined(RADIOLIB_GODMODE)
413 RADIOLIB_PIN_TYPE _cs = RADIOLIB_NC;
414 RADIOLIB_PIN_TYPE _irq = RADIOLIB_NC;
415 RADIOLIB_PIN_TYPE _rst = RADIOLIB_NC;
416 RADIOLIB_PIN_TYPE _gpio = RADIOLIB_NC;
419 #if defined(RADIOLIB_BUILD_ARDUINO)
420 SPIClass* _spi = NULL;
421 SPISettings _spiSettings = RADIOLIB_DEFAULT_SPI_SETTINGS;
422 bool _initInterface =
false;
426 bool _useRfSwitch =
false;
427 RADIOLIB_PIN_TYPE _rxEn = RADIOLIB_NC;
428 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
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:390
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
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:376
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:397
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:448
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:440
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:404
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:456
void SPIreadRegisterBurst(uint8_t reg, uint8_t numBytes, uint8_t *inBytes)
SPI burst read method.
Definition: Module.cpp:183
static uint8_t flipBits(uint8_t b)
Function to reflect bits within a byte.
Definition: Module.cpp:433
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:383
void SPIwriteRegisterBurst(uint8_t reg, uint8_t *data, uint8_t numBytes)
SPI burst write method.
Definition: Module.cpp:193