ClusterDuck Protocol
|
Implements all common low-level SPI/UART/I2C methods to control the wireless module. Every module class contains one private instance of this class. More...
#include <Module.h>
Public Member Functions | |
Module (int16_t tx, int16_t rx, HardwareSerial *serial=&Serial1, int16_t rst=NC) | |
UART-based module constructor. More... | |
Module (int16_t tx, int16_t rx, HardwareSerial *serial=nullptr, int16_t rst=NC) | |
Module (int16_t cs, int16_t irq, int16_t rst) | |
SPI-based module constructor. Will use the default SPI interface automatically initialize it. More... | |
Module (int16_t cs, int16_t irq, int16_t rst, int16_t gpio) | |
Extended SPI-based module constructor. Will use the default SPI interface automatically initialize it. More... | |
Module (int16_t cs, int16_t irq, int16_t rst, SPIClass &spi, SPISettings spiSettings) | |
SPI-based module constructor. More... | |
Module (int16_t cs, int16_t irq, int16_t rst, int16_t gpio, SPIClass &spi, SPISettings spiSettings) | |
Extended SPI-based module constructor. More... | |
Module (int16_t cs, int16_t irq, int16_t rst, int16_t rx, int16_t tx, SPIClass &spi=SPI, SPISettings spiSettings=SPISettings(2000000, MSBFIRST, SPI_MODE0), HardwareSerial *serial=&Serial1) | |
Generic module constructor. More... | |
Module (int16_t cs, int16_t irq, int16_t rst, int16_t rx, int16_t tx, SPIClass &spi=SPI, SPISettings spiSettings=SPISettings(2000000, MSBFIRST, SPI_MODE0), HardwareSerial *serial=nullptr) | |
void | init (uint8_t interface) |
Initialize low-level module control. More... | |
void | term () |
Terminate low-level module control. | |
void | ATemptyBuffer () |
Empty internal AT buffer. | |
bool | ATgetResponse () |
Get response after sending AT command. More... | |
bool | ATsendCommand (const char *cmd) |
Send AT command. Will also call ATgetResponse. More... | |
bool | ATsendData (uint8_t *data, uint32_t len) |
Send raw AT data. Will also call ATgetResponse. More... | |
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) |
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... | |
int16_t | getCs () const |
Access method to get the pin number of SPI chip select. More... | |
int16_t | getIrq () const |
Access method to get the pin number of interrupt/GPIO. More... | |
int16_t | getRst () const |
Access method to get the pin number of hardware reset pin. More... | |
int16_t | getGpio () const |
Access method to get the pin number of second interrupt/GPIO. More... | |
int16_t | getRx () const |
Access method to get the pin number of UART Rx. More... | |
int16_t | getTx () const |
Access method to get the pin number of UART Rx. More... | |
SPIClass * | getSpi () const |
Access method to get the SPI interface. More... | |
SPISettings | getSpiSettings () const |
Access method to get the SPI interface settings. More... | |
Static Public Member Functions | |
static void | pinMode (int16_t pin, uint8_t mode) |
Arduino core pinMode override that checks -1 as alias for unused pin. More... | |
static void | digitalWrite (int16_t pin, uint8_t value) |
Arduino core digitalWrite override that checks -1 as alias for unused pin. More... | |
Public Attributes | |
HardwareSerial * | ModuleSerial |
Internal SoftwareSerial instance. | |
SoftwareSerial * | ModuleSerial |
uint32_t | baudrate = 9600 |
Baud rate of SoftwareSerial UART communication. Defaults to 9600 baud. | |
const char * | AtLineFeed = "\r\n" |
Line feed to be used when sending AT commands. Defaults to CR+LF. | |
uint8_t | SPIreadCommand = 0b00000000 |
Basic SPI read command. Defaults to 0x00. | |
uint8_t | SPIwriteCommand = 0b10000000 |
Basic SPI write command. Defaults to 0x80. | |
Implements all common low-level SPI/UART/I2C methods to control the wireless module. Every module class contains one private instance of this class.
Module::Module | ( | int16_t | tx, |
int16_t | rx, | ||
HardwareSerial * | serial = &Serial1 , |
||
int16_t | rst = NC |
||
) |
UART-based module constructor.
tx | Arduino pin to be used as Tx pin for SoftwareSerial communication. |
rx | Arduino pin to be used as Rx pin for SoftwareSerial communication. |
serial | HardwareSerial to be used on platforms that do not support SoftwareSerial. Defaults to Serial1. |
rst | Arduino pin to be used as hardware reset for the module. Defaults to NC (unused). |
Module::Module | ( | int16_t | cs, |
int16_t | irq, | ||
int16_t | rst | ||
) |
SPI-based module constructor. Will use the default SPI interface automatically initialize it.
cs | Arduino pin to be used as chip select. |
irq | Arduino pin to be used as interrupt/GPIO. |
rst | Arduino pin to be used as hardware reset for the module. |
Module::Module | ( | int16_t | cs, |
int16_t | irq, | ||
int16_t | rst, | ||
int16_t | gpio | ||
) |
Extended SPI-based module constructor. Will use the default SPI interface automatically initialize it.
cs | Arduino pin to be used as chip select. |
irq | Arduino pin to be used as interrupt/GPIO. |
rst | Arduino pin to be used as hardware reset for the module. |
gpio | Arduino pin to be used as additional interrupt/GPIO. |
Module::Module | ( | int16_t | cs, |
int16_t | irq, | ||
int16_t | rst, | ||
SPIClass & | spi, | ||
SPISettings | spiSettings | ||
) |
SPI-based module constructor.
cs | Arduino pin to be used as chip select. |
irq | Arduino pin to be used as interrupt/GPIO. |
rst | Arduino pin to be used as hardware reset for the module. |
spi | SPI interface to be used, can also use software SPI implementations. |
spiSettings | SPI interface settings. |
Module::Module | ( | int16_t | cs, |
int16_t | irq, | ||
int16_t | rst, | ||
int16_t | gpio, | ||
SPIClass & | spi, | ||
SPISettings | spiSettings | ||
) |
Extended SPI-based module constructor.
cs | Arduino pin to be used as chip select. |
irq | Arduino pin to be used as interrupt/GPIO. |
rst | Arduino pin to be used as hardware reset for the module. |
gpio | Arduino pin to be used as additional interrupt/GPIO. |
spi | SPI interface to be used, can also use software SPI implementations. |
spiSettings | SPI interface settings. |
Module::Module | ( | int16_t | cs, |
int16_t | irq, | ||
int16_t | rst, | ||
int16_t | rx, | ||
int16_t | tx, | ||
SPIClass & | spi = SPI , |
||
SPISettings | spiSettings = SPISettings(2000000, MSBFIRST, SPI_MODE0) , |
||
HardwareSerial * | serial = &Serial1 |
||
) |
Generic module constructor.
cs | Arduino pin to be used as chip select. |
irq | Arduino pin to be used as interrupt/GPIO. |
rst | Arduino pin to be used as hardware reset for the module. |
tx | Arduino pin to be used as Tx pin for SoftwareSerial communication. |
rx | Arduino pin to be used as Rx pin for SoftwareSerial communication. |
spi | SPI interface to be used. Defaults to Arduino hardware SPI interface, can also use software SPI implementations. |
spiSettings | SPI interface settings. Defaults to 2 MHz clock, MSB first, mode 0. |
serial | HardwareSerial to be used on ESP32 and SAMD. Defaults to 1 |
bool Module::ATgetResponse | ( | ) |
Get response after sending AT command.
bool Module::ATsendCommand | ( | const char * | cmd | ) |
Send AT command. Will also call ATgetResponse.
cmd | AT command to be sent. Line feed characters are added automatically. |
bool Module::ATsendData | ( | uint8_t * | data, |
uint32_t | len | ||
) |
Send raw AT data. Will also call ATgetResponse.
data | Data to be sent. |
len | Number of bytes to send. |
|
static |
Arduino core digitalWrite override that checks -1 as alias for unused pin.
pin | Pin to write to. |
value | Whether to set the pin high or low. |
|
inline |
Access method to get the pin number of SPI chip select.
|
inline |
Access method to get the pin number of second interrupt/GPIO.
|
inline |
Access method to get the pin number of interrupt/GPIO.
|
inline |
Access method to get the pin number of hardware reset pin.
|
inline |
Access method to get the pin number of UART Rx.
|
inline |
Access method to get the SPI interface.
|
inline |
Access method to get the SPI interface settings.
|
inline |
Access method to get the pin number of UART Rx.
void Module::init | ( | uint8_t | interface | ) |
Initialize low-level module control.
interface | Interface to be used on the module. See Shield Configuration for details. |
|
static |
Arduino core pinMode override that checks -1 as alias for unused pin.
pin | Pin to change the mode of. |
mode | Which mode to set. |
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.
reg | Address of SPI register to read. |
msb | Most significant bit of the register variable. Bits above this one will be masked out. |
lsb | Least significant bit of the register variable. Bits below this one will be masked out. |
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.
reg | Address of SPI register to read. |
void Module::SPIreadRegisterBurst | ( | uint8_t | reg, |
uint8_t | numBytes, | ||
uint8_t * | inBytes | ||
) |
SPI burst read method.
reg | Address of SPI register to read. |
numBytes | Number of bytes that will be read. |
inBytes | Pointer to array that will hold the read data. |
int16_t Module::SPIsetRegValue | ( | uint8_t | reg, |
uint8_t | value, | ||
uint8_t | msb = 7 , |
||
uint8_t | lsb = 0 , |
||
uint8_t | checkInterval = 2 |
||
) |
Overwrite-safe SPI write method with verification. This method is the preferred SPI write mechanism.
reg | Address of SPI register to write. |
value | Single byte value that will be written to the SPI register. |
msb | Most significant bit of the register variable. Bits above this one will not be affected by the write operation. |
lsb | Least significant bit of the register variable. Bits below this one will not be affected by the write operation. |
checkInterval | Number of milliseconds between register writing and verification reading. Some registers need up to 10ms to process the change. |
void Module::SPItransfer | ( | uint8_t | cmd, |
uint8_t | reg, | ||
uint8_t * | dataOut, | ||
uint8_t * | dataIn, | ||
uint8_t | numBytes | ||
) |
SPI single transfer method.
cmd | SPI access command (read/write/burst/...). |
reg | Address of SPI register to transfer to/from. |
dataOut | Data that will be transfered from master to slave. |
dataIn | Data that was transfered from slave to master. |
numBytes | Number of bytes to transfer. |
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.
reg | Address of SPI register to write. |
data | Value that will be written to the register. |
void Module::SPIwriteRegisterBurst | ( | uint8_t | reg, |
uint8_t * | data, | ||
uint8_t | numBytes | ||
) |
SPI burst write method.
reg | Address of SPI register to write. |
data | Pointer to array that holds the data that will be written. |
numBytes | Number of bytes that will be written. |