RadioLib
Universal wireless communication library for Arduino
Module Class Reference

Implements all common low-level methods to control the wireless module. Every module class contains one private instance of this class. More...

#include <Module.h>

Public Member Functions

 Module (RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE gpio=RADIOLIB_NC)
 Default constructor. More...
 
 Module (const Module &mod)
 Copy constructor. More...
 
Moduleoperator= (const Module &mod)
 Overload for assignment operator. More...
 
void init ()
 Initialize low-level module control.
 
void term ()
 Terminate low-level module control.
 
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. More...
 
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. More...
 
void SPIreadRegisterBurst (uint8_t reg, uint8_t numBytes, uint8_t *inBytes)
 SPI burst read method. More...
 
uint8_t SPIreadRegister (uint8_t reg)
 SPI basic read method. Use of this method is reserved for special cases, SPIgetRegValue should be used instead. More...
 
void SPIwriteRegisterBurst (uint8_t reg, uint8_t *data, uint8_t numBytes)
 SPI burst write method. More...
 
void SPIwriteRegister (uint8_t reg, uint8_t data)
 SPI basic write method. Use of this method is reserved for special cases, SPIsetRegValue should be used instead. More...
 
void SPItransfer (uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes)
 SPI single transfer method. More...
 
RADIOLIB_PIN_TYPE getCs () const
 Access method to get the pin number of SPI chip select. More...
 
RADIOLIB_PIN_TYPE getIrq () const
 Access method to get the pin number of interrupt/GPIO. More...
 
RADIOLIB_PIN_TYPE getRst () const
 Access method to get the pin number of hardware reset pin. More...
 
RADIOLIB_PIN_TYPE getGpio () const
 Access method to get the pin number of second interrupt/GPIO. More...
 
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 over those two pins to automatically switch Rx and Tx state. When using automatic RF switch control, DO NOT change the pin mode of rxEn or txEn from Arduino sketch! More...
 
void setRfSwitchState (RADIOLIB_PIN_STATUS rxPinState, RADIOLIB_PIN_STATUS txPinState)
 Set RF switch state. More...
 
void waitForMicroseconds (uint32_t start, uint32_t len)
 Wait for time to elapse, either using the microsecond timer, or the TimerFlag. Note that in interrupt timing mode, it is up to the user to set up the timing interrupt! More...
 
void pinMode (RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_MODE mode)
 Arduino core pinMode override that checks RADIOLIB_NC as alias for unused pin. More...
 
void digitalWrite (RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS value)
 Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin. More...
 
RADIOLIB_PIN_STATUS digitalRead (RADIOLIB_PIN_TYPE pin)
 Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin. More...
 
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_UNSUPPORTED to make sure the platform does support tone. More...
 
void noTone (RADIOLIB_PIN_TYPE pin)
 Arduino core noTone override that checks RADIOLIB_NC as alias for unused pin and RADIOLIB_TONE_UNSUPPORTED to make sure the platform does support tone. More...
 
void attachInterrupt (RADIOLIB_PIN_TYPE interruptNum, void(*userFunc)(void), RADIOLIB_INTERRUPT_STATUS mode)
 Arduino core attachInterrupt override. More...
 
void detachInterrupt (RADIOLIB_PIN_TYPE interruptNum)
 Arduino core detachInterrupt override. More...
 
void yield ()
 Arduino core yield override.
 
void delay (uint32_t ms)
 Arduino core delay override. More...
 
void delayMicroseconds (uint32_t us)
 Arduino core delayMicroseconds override. More...
 
uint32_t millis ()
 Arduino core millis override.
 
uint32_t micros ()
 Arduino core micros override.
 
uint32_t pulseIn (RADIOLIB_PIN_TYPE pin, RADIOLIB_PIN_STATUS state, uint32_t timeout)
 Arduino core pulseIn override.
 
void begin ()
 Arduino core SPI begin override.
 
void beginTransaction ()
 Arduino core SPI beginTransaction override.
 
uint8_t transfer (uint8_t b)
 Arduino core SPI transfer override.
 
void endTransaction ()
 Arduino core SPI endTransaction override.
 
void end ()
 Arduino core SPI end override.
 
virtual void SPIbeginTransaction ()
 
virtual uint8_t SPItransfer (uint8_t b)
 
virtual void SPIendTransaction ()
 
void regdump (uint8_t start, uint8_t len)
 Function to dump device registers as hex into the debug port. More...
 

Static Public Member Functions

static uint8_t flipBits (uint8_t b)
 Function to reflect bits within a byte.
 
static uint16_t flipBits16 (uint16_t i)
 Function to reflect bits within an integer.
 
static void hexdump (uint8_t *data, size_t len)
 Function to dump data as hex into the debug port. More...
 

Public Attributes

uint8_t SPIreadCommand = 0b00000000
 Basic SPI read command. Defaults to 0x00.
 
uint8_t SPIwriteCommand = 0b10000000
 Basic SPI write command. Defaults to 0x80.
 

Detailed Description

Implements all common low-level methods to control the wireless module. Every module class contains one private instance of this class.

Constructor & Destructor Documentation

◆ Module() [1/2]

Module::Module ( RADIOLIB_PIN_TYPE  cs,
RADIOLIB_PIN_TYPE  irq,
RADIOLIB_PIN_TYPE  rst,
RADIOLIB_PIN_TYPE  gpio = RADIOLIB_NC 
)

Default constructor.

Parameters
csPin to be used as chip select.
irqPin to be used as interrupt/GPIO.
rstPin to be used as hardware reset for the module.
gpioPin to be used as additional interrupt/GPIO.

◆ Module() [2/2]

Module::Module ( const Module mod)

Copy constructor.

Parameters
modModule instance to copy.

Member Function Documentation

◆ attachInterrupt()

void Module::attachInterrupt ( RADIOLIB_PIN_TYPE  interruptNum,
void(*)(void)  userFunc,
RADIOLIB_INTERRUPT_STATUS  mode 
)

Arduino core attachInterrupt override.

Parameters
interruptNumInterrupt number.
userFuncInterrupt service routine.
modePin hcange direction.

◆ delay()

void Module::delay ( uint32_t  ms)

Arduino core delay override.

Parameters
msDelay length in milliseconds.

◆ delayMicroseconds()

void Module::delayMicroseconds ( uint32_t  us)

Arduino core delayMicroseconds override.

Parameters
usDelay length in microseconds.

◆ detachInterrupt()

void Module::detachInterrupt ( RADIOLIB_PIN_TYPE  interruptNum)

Arduino core detachInterrupt override.

Parameters
interruptNumInterrupt number.

◆ digitalRead()

RADIOLIB_PIN_STATUS Module::digitalRead ( RADIOLIB_PIN_TYPE  pin)

Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin.

Parameters
pinPin to read from.
Returns
Pin value.

◆ digitalWrite()

void Module::digitalWrite ( RADIOLIB_PIN_TYPE  pin,
RADIOLIB_PIN_STATUS  value 
)

Arduino core digitalWrite override that checks RADIOLIB_NC as alias for unused pin.

Parameters
pinPin to write to.
valueWhether to set the pin high or low.

◆ getCs()

RADIOLIB_PIN_TYPE Module::getCs ( ) const
inline

Access method to get the pin number of SPI chip select.

Returns
Pin number of SPI chip select configured in the constructor.

◆ getGpio()

RADIOLIB_PIN_TYPE Module::getGpio ( ) const
inline

Access method to get the pin number of second interrupt/GPIO.

Returns
Pin number of second interrupt/GPIO configured in the constructor.

◆ getIrq()

RADIOLIB_PIN_TYPE Module::getIrq ( ) const
inline

Access method to get the pin number of interrupt/GPIO.

Returns
Pin number of interrupt/GPIO configured in the constructor.

◆ getRst()

RADIOLIB_PIN_TYPE Module::getRst ( ) const
inline

Access method to get the pin number of hardware reset pin.

Returns
Pin number of hardware reset pin configured in the constructor.

◆ hexdump()

void Module::hexdump ( uint8_t *  data,
size_t  len 
)
static

Function to dump data as hex into the debug port.

Parameters
dataData to dump.
lenNumber of bytes to dump.

◆ noTone()

void Module::noTone ( RADIOLIB_PIN_TYPE  pin)

Arduino core noTone override that checks RADIOLIB_NC as alias for unused pin and RADIOLIB_TONE_UNSUPPORTED to make sure the platform does support tone.

Parameters
pinPin to write to.

◆ operator=()

Module & Module::operator= ( const Module mod)

Overload for assignment operator.

Parameters
framervalue Module.

◆ pinMode()

void Module::pinMode ( RADIOLIB_PIN_TYPE  pin,
RADIOLIB_PIN_MODE  mode 
)

Arduino core pinMode override that checks RADIOLIB_NC as alias for unused pin.

Parameters
pinPin to change the mode of.
modeWhich mode to set.

◆ regdump()

void Module::regdump ( uint8_t  start,
uint8_t  len 
)

Function to dump device registers as hex into the debug port.

Parameters
startFirst address to dump.
lenNumber of bytes to dump.

◆ setRfSwitchPins()

void Module::setRfSwitchPins ( RADIOLIB_PIN_TYPE  rxEn,
RADIOLIB_PIN_TYPE  txEn 
)

Some modules contain external RF switch controlled by two pins. This function gives RadioLib control over those two pins to automatically switch Rx and Tx state. When using automatic RF switch control, DO NOT change the pin mode of rxEn or txEn from Arduino sketch!

Parameters
rxEnRX enable pin.
txEnTX enable pin.

◆ setRfSwitchState()

void Module::setRfSwitchState ( RADIOLIB_PIN_STATUS  rxPinState,
RADIOLIB_PIN_STATUS  txPinState 
)

Set RF switch state.

Parameters
rxPinStatePin state to set on Tx enable pin (usually high to transmit).
txPinStatePin state to set on Rx enable pin (usually high to receive).

◆ SPIgetRegValue()

int16_t Module::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.

Parameters
regAddress of SPI register to read.
msbMost significant bit of the register variable. Bits above this one will be masked out.
lsbLeast significant bit of the register variable. Bits below this one will be masked out.
Returns
Masked register value or status code.

◆ SPIreadRegister()

uint8_t Module::SPIreadRegister ( uint8_t  reg)

SPI basic read method. Use of this method is reserved for special cases, SPIgetRegValue should be used instead.

Parameters
regAddress of SPI register to read.
Returns
Value that was read from register.

◆ SPIreadRegisterBurst()

void Module::SPIreadRegisterBurst ( uint8_t  reg,
uint8_t  numBytes,
uint8_t *  inBytes 
)

SPI burst read method.

Parameters
regAddress of SPI register to read.
numBytesNumber of bytes that will be read.
inBytesPointer to array that will hold the read data.

◆ SPIsetRegValue()

int16_t Module::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.

Parameters
regAddress of SPI register to write.
valueSingle byte value that will be written to the SPI register.
msbMost significant bit of the register variable. Bits above this one will not be affected by the write operation.
lsbLeast significant bit of the register variable. Bits below this one will not be affected by the write operation.
checkIntervalNumber of milliseconds between register writing and verification reading. Some registers need up to 10ms to process the change.
checkMaskMask of bits to check, only bits set to 1 will be verified.
Returns
Status Codes

◆ SPItransfer()

void Module::SPItransfer ( uint8_t  cmd,
uint8_t  reg,
uint8_t *  dataOut,
uint8_t *  dataIn,
uint8_t  numBytes 
)

SPI single transfer method.

Parameters
cmdSPI access command (read/write/burst/...).
regAddress of SPI register to transfer to/from.
dataOutData that will be transfered from master to slave.
dataInData that was transfered from slave to master.
numBytesNumber of bytes to transfer.

◆ SPIwriteRegister()

void Module::SPIwriteRegister ( uint8_t  reg,
uint8_t  data 
)

SPI basic write method. Use of this method is reserved for special cases, SPIsetRegValue should be used instead.

Parameters
regAddress of SPI register to write.
dataValue that will be written to the register.

◆ SPIwriteRegisterBurst()

void Module::SPIwriteRegisterBurst ( uint8_t  reg,
uint8_t *  data,
uint8_t  numBytes 
)

SPI burst write method.

Parameters
regAddress of SPI register to write.
dataPointer to array that holds the data that will be written.
numBytesNumber of bytes that will be written.

◆ tone()

void Module::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_UNSUPPORTED to make sure the platform does support tone.

Parameters
pinPin to write to.
valueFrequency to output.

◆ waitForMicroseconds()

void Module::waitForMicroseconds ( uint32_t  start,
uint32_t  len 
)

Wait for time to elapse, either using the microsecond timer, or the TimerFlag. Note that in interrupt timing mode, it is up to the user to set up the timing interrupt!

Parameters
startWaiting start timestamp, in microseconds.
lenWaiting duration, in microseconds;

The documentation for this class was generated from the following files: