AllWize Library
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
AllWize_LoRaWAN Class Reference

#include <AllWize_LoRaWAN.h>

Inheritance diagram for AllWize_LoRaWAN:
Inheritance graph
[legend]
Collaboration diagram for AllWize_LoRaWAN:
Collaboration graph
[legend]

Public Member Functions

 AllWize_LoRaWAN (HardwareSerial *serial, uint8_t reset_gpio=GPIO_NONE, uint8_t config_gpio=GPIO_NONE)
 
 AllWize_LoRaWAN (uint8_t rx, uint8_t tx, uint8_t reset_gpio=GPIO_NONE, uint8_t config_gpio=GPIO_NONE)
 
allwize_message_t read ()
 Returns latest received message (rebuilds LoRaWan header if necessary) More...
 
bool joinABP (uint8_t *DevAddr, uint8_t *AppSKey, uint8_t *NwkSKey)
 Stores the application and network keys for ABP activation. More...
 
bool send (uint8_t *Data, uint8_t Data_Length, uint8_t Frame_Port=0x01)
 Function to assemble and send a LoRaWAN package. More...
 
uint16_t getFrameCounter ()
 
void setFrameCounter (uint16_t value)
 
- Public Member Functions inherited from AllWize
 AllWize (HardwareSerial *serial, uint8_t reset_gpio=GPIO_NONE, uint8_t config_gpio=GPIO_NONE)
 AllWize object constructor. More...
 
 AllWize (uint8_t rx, uint8_t tx, uint8_t reset_gpio=GPIO_NONE, uint8_t config_gpio=GPIO_NONE)
 AllWize object constructor. More...
 
void begin (uint8_t baudrate=MODEM_DEFAULT_BAUDRATE)
 Inits the module communications. More...
 
bool reset ()
 Resets the radio module. More...
 
void softReset ()
 Cleans the RX/TX line. More...
 
bool factoryReset ()
 Resets the module to factory settings. More...
 
void sleep ()
 Sets the radio module in sleep mode. More...
 
void wakeup ()
 Wakes up the radio from sleep mode. More...
 
bool ready ()
 Test whether the radio module is ready or not. More...
 
bool waitForReady (uint32_t timeout=DEFAULT_TIMEOUT)
 Waits for timeout millis for the module to be ready. More...
 
void dump (Stream &debug)
 Dumps the current memory configuration to the given stream. More...
 
bool ack ()
 Sends an ACK. More...
 
bool send (uint8_t *buffer, uint8_t len)
 Sends a byte array. More...
 
bool send (const char *buffer)
 Sends c-string. More...
 
bool available ()
 Returns true if a new message has been received and decoded This method has to be called in the main loop to monitor for incoming messages. More...
 
bool enableRX (bool enable)
 Enables or disables RF recever. More...
 
allwize_message_t read ()
 Returns latest received message. More...
 
void setControlInformation (uint8_t ci)
 Sets the control information byte. More...
 
uint8_t getControlInformation ()
 Gets the control information byte. More...
 
void master ()
 Sets the module in master mode. More...
 
void slave ()
 Sets the module in slave mode. More...
 
void repeater ()
 Sets the module in repeater mode. More...
 
void setChannel (uint8_t channel, bool persist=false)
 Sets the communications channel (for MBUS_MODE_R2 only) More...
 
void setPower (uint8_t power, bool persist=false)
 Sets the RF power. More...
 
void setDataRate (uint8_t dr)
 Sets the data rate. More...
 
void setMode (uint8_t mode, bool persist=false)
 Sets the module in one of the available MBus modes. More...
 
void setSleepMode (uint8_t mode)
 Sets the sleep mode. More...
 
void setAppendRSSI (bool value)
 Sets the RSSI mode value. More...
 
void setPreamble (uint8_t preamble)
 Sets the preamble length frame format. More...
 
void setTimeout (uint16_t ms)
 Sets the buffer timeout (also used for auto sleep modes) More...
 
void setNetworkRole (uint8_t role)
 Sets the network role. More...
 
void setLEDControl (uint8_t value)
 Sets the LED control. More...
 
void setDataInterface (uint8_t value)
 Sets the data interface for receiving packets. More...
 
void setControlField (uint8_t value, bool persist=false)
 Sets the control field value. More...
 
void setInstallMode (uint8_t mode, bool persist=false)
 Sets the module in one of the available operations modes. More...
 
void setEncryptFlag (uint8_t flag)
 Sets the encrypt flag setting. More...
 
void setDecryptFlag (uint8_t flag)
 Sets the decrypt flag setting. More...
 
void setKey (uint8_t reg, const uint8_t *key)
 Sets the default encryption key. More...
 
void setDefaultKey (const uint8_t *key)
 Sets the default encryption key. More...
 
void setAccessNumber (uint8_t value)
 Sets new/specific access number. More...
 
void setBaudRate (uint8_t baudrate)
 Sets the UART baud rate, requires reset to take effect. More...
 
uint8_t getChannel ()
 Gets the channel stored in non-volatile memory. More...
 
uint8_t getPower ()
 Gets the RF power stored in non-volatile memory. More...
 
uint8_t getDataRate ()
 Gets the data rate stored in non-volatile memory. More...
 
uint8_t getMode ()
 Gets the MBus mode stored in non-volatile memory. More...
 
uint8_t getSleepMode ()
 Gets the sleep mode stored in non-volatile memory. More...
 
uint8_t getPreamble ()
 Gets the preamble length frame format. More...
 
uint8_t getDataInterface ()
 Gets the data interface for receiving packets. More...
 
uint8_t getControlField ()
 Gets the control field value stored in non-volatile memory. More...
 
bool getAppendRSSI ()
 Gets the current RSSI mode value. More...
 
uint16_t getTimeout ()
 Gets the current buffer timeout (also used for auto sleep modes) More...
 
uint8_t getNetworkRole ()
 Gets the current network role. More...
 
uint8_t getLEDControl ()
 Gets the current LED control. More...
 
uint8_t getInstallMode ()
 Gets the install modevalue stored in non-volatile memory. More...
 
uint8_t getEncryptFlag ()
 Gets the encrypt flag setting. More...
 
uint8_t getDecryptFlag ()
 Gets the decrypt flag setting. More...
 
void getDefaultKey (uint8_t *key)
 Gets the default encryption key. More...
 
uint8_t getBaudRate ()
 Gets the UART baud rate. More...
 
uint32_t getBaudRateSpeed (uint8_t value)
 Gets the UART baud rate speed in bps. More...
 
float getRSSI ()
 Returns the RSSI of the last valid packet received TODO: values do not seem right and are not the same as in the packet. More...
 
uint8_t getTemperature ()
 Returns the internal temperature of the module. More...
 
uint16_t getVoltage ()
 Returns the internal voltage of the module. More...
 
String getMID ()
 Returns the Manufacturer ID. More...
 
bool setMID (uint16_t mid)
 Sets the Manufacturer ID. More...
 
String getUID ()
 Returns the Unique ID string. More...
 
bool setUID (uint32_t uid)
 Saved the UID into the module memory. More...
 
uint8_t getVersion ()
 Returns the device version from non-volatile memory. More...
 
void setVersion (uint8_t version)
 Sets the device version. More...
 
uint8_t getDevice ()
 Returns the device type from non-volatile memory. More...
 
void setDevice (uint8_t type)
 Sets the device type. More...
 
String getPartNumber ()
 Returns the module part number. More...
 
String getRequiredHardwareVersion ()
 Returns the minimum required hardware version to run the current firmware. More...
 
String getFirmwareVersion ()
 Returns the module firmware revision. More...
 
String getSerialNumber ()
 Returns the module serial number. More...
 
double getFrequency (uint8_t channel)
 Returns the frequency for the given channel. More...
 
uint16_t getDataRateSpeed (uint8_t dr)
 Returns the speed for te given datarate. More...
 
uint8_t getModuleType ()
 Returns the module type. More...
 
String getModuleTypeName ()
 Returns the module type. More...
 
bool setWizeControl (uint8_t wize_control)
 Sets the wize control field in the transpoprt layer. More...
 
void setWizeOperatorId (uint16_t wize_network_id)
 Use AllWize::setWizeNetworkId instead. More...
 
void setWizeNetworkId (uint16_t wize_network_id)
 Sets the wize network ID field in the transpoprt layer. More...
 
void setWizeApplication (uint8_t wize_application)
 Sets the wize applicaton field in the transpoprt layer. More...
 
void setCounter (uint16_t counter)
 Sets the wize couonter field in the transpoprt layer. More...
 
uint16_t getCounter ()
 Gets the current wize counter. More...
 

Protected Member Functions

void Encrypt_Payload (uint8_t *Data, uint8_t Data_Length, uint16_t Frame_Counter, uint8_t Direction)
 Function used to encrypt and decrypt the data in a LoRaWAN data packet. More...
 
void Calculate_MIC (uint8_t *Data, uint8_t *Final_MIC, uint8_t Data_Length, uint16_t Frame_Counter, uint8_t Direction)
 Function used to calculate the validity of data messages. More...
 
void Generate_Keys (uint8_t *K1, uint8_t *K2)
 Function used to generate keys for the MIC calculation. More...
 
void Shift_Left (uint8_t *Data)
 Round-shifts data to the left. More...
 
void XOR (uint8_t *New_Data, uint8_t *Old_Data)
 Function to XOR two character arrays. More...
 
void AES_Encrypt (uint8_t *Data, const uint8_t *Key)
 Function used to perform AES encryption. More...
 
void AES_Add_Round_Key (uint8_t *Round_Key, uint8_t(*State)[4])
 Function performs AES AddRoundKey step. More...
 
uint8_t AES_Sub_Byte (uint8_t Byte)
 Function performs AES SubBytes step. More...
 
void AES_Shift_Rows (uint8_t(*State)[4])
 Function performs AES ShiftRows step. More...
 
void AES_Mix_Collums (uint8_t(*State)[4])
 Function performs AES MixColumns step. More...
 
void AES_Calculate_Round_Key (uint8_t Round, uint8_t *Round_Key)
 Function performs AES Round Key Calculation. More...
 
- Protected Member Functions inherited from AllWize
void _init ()
 
uint8_t _getAddress (uint8_t slot)
 Return the physical memory address for the given slot. More...
 
bool _setConfig (bool value)
 Sets or unsets config mode. More...
 
int8_t _sendCommand (uint8_t command, uint8_t *data, uint8_t len)
 Sends a command with the given data. More...
 
int8_t _sendCommand (uint8_t command, uint8_t data)
 Sends a command with the given data. More...
 
int8_t _sendCommand (uint8_t command)
 Sends a command with no data. More...
 
bool _cacheMemory (uint8_t *buffer)
 Reads and caches the module memory. More...
 
uint8_t _getMemory (uint8_t address)
 Returns the contents of memory address. More...
 
uint8_t _getMemory (uint8_t address, uint8_t *buffer, uint8_t len)
 Returns the contents of consecutive memory addresses. More...
 
bool _setMemory (uint8_t address, uint8_t data)
 Sets non-volatile memory contents starting from given address. More...
 
bool _setMemory (uint8_t address, uint8_t *data, uint8_t len)
 Sets non-volatile memory contents starting from given address. More...
 
bool _setSlot (uint8_t slot, uint8_t data)
 Sets non-volatile memory contents starting from given address. More...
 
bool _setSlot (uint8_t slot, uint8_t *data, uint8_t len)
 Sets non-volatile memory contents starting from given address. More...
 
uint8_t _getSlot (uint8_t slot)
 Returns the contents of single-byte memory slot. More...
 
uint8_t _getSlot (uint8_t slot, uint8_t *buffer, uint8_t len)
 Returns the contents of consecutive memory addresses. More...
 
String _getSlotAsHexString (uint8_t slot, uint8_t len)
 Returns the contents of the memory from a certain address as an HEX String. More...
 
String _getSlotAsString (uint8_t slot, uint8_t len)
 Returns the contents of the memory from a certain address as a String object. More...
 
void _readModel ()
 Searches for the module model. More...
 
bool _decode ()
 Decodes the current RX buffer contents. More...
 
void _flush ()
 Flushes the serial line to the module. More...
 
void _resetSerial ()
 Resets the serial object. More...
 
uint8_t _send (uint8_t *buffer, uint8_t len)
 Sends a binary buffer to the module UART. Returns the number of bytes actually sent. More...
 
uint8_t _send (uint8_t ch)
 Sends a single byte to the module UART. Returns the number of bytes actually sent. More...
 
int8_t _receive ()
 Listens to incoming data from the module until timeout or END_OF_RESPONSE. More...
 
int8_t _sendAndReceive (uint8_t *buffer, uint8_t len)
 Sends a binary buffer and waits for response. Returns the number of bytes received and stored in the internal _buffer. More...
 
int8_t _sendAndReceive (uint8_t ch)
 Sends a byte and waits for response. Returns the number of bytes received and stored in the internal _buffer. More...
 
int _timedRead ()
 Reads a byte from the stream with a timeout. More...
 
int _readBytes (char *buffer, uint16_t len)
 Reads the stream buffer up to a number of bytes. More...
 
int _readBytesUntil (char terminator, char *buffer, uint16_t len)
 Reads the stream buffer up to a certain char or times out. More...
 
void _hex2bin (char *hex, uint8_t *bin, uint8_t len)
 Converts a hex c-string to a binary buffer. More...
 
void _bin2hex (uint8_t *bin, char *hex, uint8_t len)
 Converts a binary buffer to an hex c-string. More...
 
void _niceDelay (uint32_t ms)
 Does a non-blocking delay. More...
 

Protected Attributes

uint8_t _devaddr [4]
 
uint8_t _appskey [16]
 
uint8_t _nwkskey [16]
 
- Protected Attributes inherited from AllWize
int8_t _rx = -1
 
int8_t _tx = -1
 
Stream * _stream = NULL
 
HardwareSerial * _hw_serial = NULL
 
SoftwareSerial * _sw_serial = NULL
 
uint8_t _reset_gpio = GPIO_NONE
 
uint8_t _config_gpio = GPIO_NONE
 
bool _config = false
 
uint32_t _timeout = DEFAULT_TIMEOUT
 
uint32_t _baudrate = 19200
 
uint8_t _ci = CI_APP_RESPONSE_UP_SHORT
 
uint8_t _mbus_mode = 0xFF
 
uint8_t _data_interface = 0xFF
 
bool _append_rssi = false
 
uint8_t _access_number = 0
 
uint8_t _module = MODULE_UNKNOWN
 
bool _ready = false
 
uint8_t _memory [0x100] = {0xFF}
 
String _model
 
String _hw
 
String _fw
 
uint8_t _wize_control = 0x00
 
uint16_t _wize_network_id = 0
 
uint8_t _wize_application = 0xFE
 
uint16_t _counter = 0
 
allwize_message_t _message
 
uint8_t _buffer [RX_BUFFER_SIZE]
 
uint8_t _pointer = 0
 

Static Protected Attributes

static const uint8_t S_Table [16][16]
 

Detailed Description

Definition at line 66 of file AllWize_LoRaWAN.h.

Constructor & Destructor Documentation

◆ AllWize_LoRaWAN() [1/2]

AllWize_LoRaWAN::AllWize_LoRaWAN ( HardwareSerial *  serial,
uint8_t  reset_gpio = GPIO_NONE,
uint8_t  config_gpio = GPIO_NONE 
)
inline

Definition at line 70 of file AllWize_LoRaWAN.h.

Here is the call graph for this function:

◆ AllWize_LoRaWAN() [2/2]

AllWize_LoRaWAN::AllWize_LoRaWAN ( uint8_t  rx,
uint8_t  tx,
uint8_t  reset_gpio = GPIO_NONE,
uint8_t  config_gpio = GPIO_NONE 
)
inline

Definition at line 74 of file AllWize_LoRaWAN.h.

Here is the call graph for this function:

Member Function Documentation

◆ AES_Add_Round_Key()

void AllWize_LoRaWAN::AES_Add_Round_Key ( uint8_t *  Round_Key,
uint8_t(*)  State[4] 
)
protected

Function performs AES AddRoundKey step.

Parameters
Round_KeyPointer to the round subkey.
*StatePointer to bytes of the states-to-be-xor'd.

Definition at line 606 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

◆ AES_Calculate_Round_Key()

void AllWize_LoRaWAN::AES_Calculate_Round_Key ( uint8_t  Round,
uint8_t *  Round_Key 
)
protected

Function performs AES Round Key Calculation.

Parameters
RoundNumber of rounds to perform (depends on key size).
Round_KeyPointer to round key.

Definition at line 704 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES_Encrypt()

void AllWize_LoRaWAN::AES_Encrypt ( uint8_t *  Data,
const uint8_t *  Key 
)
protected

Function used to perform AES encryption.

Parameters
DataPointer to the data to decrypt or encrypt.
KeyPointer to AES encryption key.

Definition at line 532 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES_Mix_Collums()

void AllWize_LoRaWAN::AES_Mix_Collums ( uint8_t(*)  State[4])
protected

Function performs AES MixColumns step.

Parameters
*StatePointer to state array.

Definition at line 675 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

◆ AES_Shift_Rows()

void AllWize_LoRaWAN::AES_Shift_Rows ( uint8_t(*)  State[4])
protected

Function performs AES ShiftRows step.

Parameters
*StatePointer to state array.

Definition at line 643 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

◆ AES_Sub_Byte()

uint8_t AllWize_LoRaWAN::AES_Sub_Byte ( uint8_t  Byte)
protected

Function performs AES SubBytes step.

Parameters
ByteIndividual byte, from state array.
Returns
Byte from the S_Table table

Definition at line 624 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

◆ Calculate_MIC()

void AllWize_LoRaWAN::Calculate_MIC ( uint8_t *  Data,
uint8_t *  Final_MIC,
uint8_t  Data_Length,
uint16_t  Frame_Counter,
uint8_t  Direction 
)
protected

Function used to calculate the validity of data messages.

Parameters
DataData Pointer to the data to decrypt or encrypt.
Final_MICPointer to MIC array (4 bytes).
Data_LengthNumber of bytes to be transmitted.
Frame_CounterFrame counter of upstream frames.
DirectionDirection of message (is up?).

Definition at line 250 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Encrypt_Payload()

void AllWize_LoRaWAN::Encrypt_Payload ( uint8_t *  Data,
uint8_t  Data_Length,
uint16_t  Frame_Counter,
uint8_t  Direction 
)
protected

Function used to encrypt and decrypt the data in a LoRaWAN data packet.

Parameters
DataData Pointer to the data to decrypt or encrypt.
Data_LengthNumber of bytes to be transmitted.
Frame_CounterFrame_Counter. Counts upstream frames.
DirectionDirection of message (is up).

Definition at line 179 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Generate_Keys()

void AllWize_LoRaWAN::Generate_Keys ( uint8_t *  K1,
uint8_t *  K2 
)
protected

Function used to generate keys for the MIC calculation.

Parameters
K1Pointer to Key1.
K2Pointer to Key2.

Definition at line 407 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getFrameCounter()

uint16_t AllWize_LoRaWAN::getFrameCounter ( )
Here is the caller graph for this function:

◆ joinABP()

bool AllWize_LoRaWAN::joinABP ( uint8_t *  DevAddr,
uint8_t *  AppSKey,
uint8_t *  NwkSKey 
)

Stores the application and network keys for ABP activation.

Parameters
DevAddrDevice addres
AppSKeyApplication Session Key
NwkSKeyNetwork Session Key
Returns
Allways true since ABP joins never fail

Definition at line 40 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ read()

allwize_message_t AllWize_LoRaWAN::read ( )

Returns latest received message (rebuilds LoRaWan header if necessary)

Returns
New message

Definition at line 64 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ send()

bool AllWize_LoRaWAN::send ( uint8_t *  Data,
uint8_t  Data_Length,
uint8_t  Frame_Port = 0x01 
)

Function to assemble and send a LoRaWAN package.

Parameters
DataPointer to the array of data to be transmitted.
Data_LengthLength of data to be sent.
Frame_PortFrame Port (defaults to 0x01)
Returns
True if message was sent successfully, false otherwise

Definition at line 97 of file AllWize_LoRaWAN.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setFrameCounter()

void AllWize_LoRaWAN::setFrameCounter ( uint16_t  value)
Here is the caller graph for this function:

◆ Shift_Left()

void AllWize_LoRaWAN::Shift_Left ( uint8_t *  Data)
protected

Round-shifts data to the left.

Parameters
DataData buffer

Definition at line 458 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

◆ XOR()

void AllWize_LoRaWAN::XOR ( uint8_t *  New_Data,
uint8_t *  Old_Data 
)
protected

Function to XOR two character arrays.

Parameters
New_DataA pointer to the calculated data.
Old_DataA pointer to the data to be xor'd.

Definition at line 491 of file AllWize_LoRaWAN.cpp.

Here is the caller graph for this function:

Field Documentation

◆ _appskey

uint8_t AllWize_LoRaWAN::_appskey[16]
protected

Definition at line 85 of file AllWize_LoRaWAN.h.

◆ _devaddr

uint8_t AllWize_LoRaWAN::_devaddr[4]
protected

Definition at line 84 of file AllWize_LoRaWAN.h.

◆ _nwkskey

uint8_t AllWize_LoRaWAN::_nwkskey[16]
protected

Definition at line 86 of file AllWize_LoRaWAN.h.

◆ S_Table

const uint8_t PROGMEM AllWize_LoRaWAN::S_Table
staticprotected
Initial value:
= {
{0x63,0x7C,0x77,0x7B,0xF2,0x6B,0x6F,0xC5,0x30,0x01,0x67,0x2B,0xFE,0xD7,0xAB,0x76},
{0xCA,0x82,0xC9,0x7D,0xFA,0x59,0x47,0xF0,0xAD,0xD4,0xA2,0xAF,0x9C,0xA4,0x72,0xC0},
{0xB7,0xFD,0x93,0x26,0x36,0x3F,0xF7,0xCC,0x34,0xA5,0xE5,0xF1,0x71,0xD8,0x31,0x15},
{0x04,0xC7,0x23,0xC3,0x18,0x96,0x05,0x9A,0x07,0x12,0x80,0xE2,0xEB,0x27,0xB2,0x75},
{0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0,0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84},
{0x53,0xD1,0x00,0xED,0x20,0xFC,0xB1,0x5B,0x6A,0xCB,0xBE,0x39,0x4A,0x4C,0x58,0xCF},
{0xD0,0xEF,0xAA,0xFB,0x43,0x4D,0x33,0x85,0x45,0xF9,0x02,0x7F,0x50,0x3C,0x9F,0xA8},
{0x51,0xA3,0x40,0x8F,0x92,0x9D,0x38,0xF5,0xBC,0xB6,0xDA,0x21,0x10,0xFF,0xF3,0xD2},
{0xCD,0x0C,0x13,0xEC,0x5F,0x97,0x44,0x17,0xC4,0xA7,0x7E,0x3D,0x64,0x5D,0x19,0x73},
{0x60,0x81,0x4F,0xDC,0x22,0x2A,0x90,0x88,0x46,0xEE,0xB8,0x14,0xDE,0x5E,0x0B,0xDB},
{0xE0,0x32,0x3A,0x0A,0x49,0x06,0x24,0x5C,0xC2,0xD3,0xAC,0x62,0x91,0x95,0xE4,0x79},
{0xE7,0xC8,0x37,0x6D,0x8D,0xD5,0x4E,0xA9,0x6C,0x56,0xF4,0xEA,0x65,0x7A,0xAE,0x08},
{0xBA,0x78,0x25,0x2E,0x1C,0xA6,0xB4,0xC6,0xE8,0xDD,0x74,0x1F,0x4B,0xBD,0x8B,0x8A},
{0x70,0x3E,0xB5,0x66,0x48,0x03,0xF6,0x0E,0x61,0x35,0x57,0xB9,0x86,0xC1,0x1D,0x9E},
{0xE1,0xF8,0x98,0x11,0x69,0xD9,0x8E,0x94,0x9B,0x1E,0x87,0xE9,0xCE,0x55,0x28,0xDF},
{0x8C,0xA1,0x89,0x0D,0xBF,0xE6,0x42,0x68,0x41,0x99,0x2D,0x0F,0xB0,0x54,0xBB,0x16}
}

Definition at line 87 of file AllWize_LoRaWAN.h.


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