loads more changes

This commit is contained in:
Daniël Koek 2024-01-30 19:14:44 +00:00
parent b70d44e6c2
commit 7b55449229
4 changed files with 1246 additions and 1361 deletions

View file

@ -4,15 +4,18 @@
#include <HardwareSerial.h>
#include "esphome/core/helpers.h"
#include "lora_e220.h"
#include "esphome/components/uart/uart.h"
namespace esphome {
namespace ebyte_lora_e220 {
static const char *const TAG = "ebyte_lora_e220";
// there are 3 UART ports, we are going to be using 0, which is D6 and D7
HardwareSerial LoraSerial(0);
LoRa_E220 e220ttl(&LoraSerial, D2, D0, D1); // SERIAL AUX M0 M1
class LoRaSensors : public text_sensor::TextSensor, public PollingComponent {
class LoRaSensors : public text_sensor::TextSensor, public PollingComponent, public uart::UARTDevice {
public:
LoRaSensors() : PollingComponent(4000) {}

File diff suppressed because it is too large Load diff

View file

@ -1,360 +1,290 @@
#ifndef LoRa_E220_h
#define LoRa_E220_h
#if !USE_ESP32 && !defined(__STM32F1__) && !defined(__STM32F4__)
#define ACTIVATE_SOFTWARE_SERIAL
#endif
#ifdef USE_ESP32
#define HARDWARE_SERIAL_SELECTABLE_PIN
#endif
#ifdef ACTIVATE_SOFTWARE_SERIAL
#include <SoftwareSerial.h>
#define HARDWARE_SERIAL_SELECTABLE_PIN
#endif
#include "state_naming.h"
#include "Arduino.h"
#define MAX_SIZE_TX_PACKET 200
// Uncomment to enable printing out nice debug messages.
//#define LoRa_E220_DEBUG
// #define LoRa_E220_DEBUG
// Define where debug output will be printed.
#define DEBUG_PRINTER Serial
// Setup debug printing macros.
#ifdef LoRa_E220_DEBUG
#define DEBUG_PRINT(...) { DEBUG_PRINTER.print(__VA_ARGS__); }
#define DEBUG_PRINTLN(...) { DEBUG_PRINTER.println(__VA_ARGS__); }
#else
#define DEBUG_PRINT(...) {}
#define DEBUG_PRINTLN(...) {}
#endif
static const char *const TAG = "ebyte_lora_e220";
enum MODE_TYPE {
MODE_0_NORMAL = 0,
MODE_0_TRANSMISSION = 0,
MODE_1_WOR_TRANSMITTER = 1,
MODE_1_WOR = 1,
MODE_2_WOR_RECEIVER = 2,
MODE_2_POWER_SAVING = 2,
MODE_3_CONFIGURATION = 3,
MODE_3_PROGRAM = 3,
MODE_3_SLEEP = 3,
MODE_INIT = 0xFF
MODE_0_NORMAL = 0,
MODE_0_TRANSMISSION = 0,
MODE_1_WOR_TRANSMITTER = 1,
MODE_1_WOR = 1,
MODE_2_WOR_RECEIVER = 2,
MODE_2_POWER_SAVING = 2,
MODE_3_CONFIGURATION = 3,
MODE_3_PROGRAM = 3,
MODE_3_SLEEP = 3,
MODE_INIT = 0xFF
};
enum PROGRAM_COMMAND {
WRITE_CFG_PWR_DWN_SAVE = 0xC0,
READ_CONFIGURATION = 0xC1,
WRITE_CFG_PWR_DWN_LOSE = 0xC2,
WRONG_FORMAT = 0xFF,
RETURNED_COMMAND = 0xC1,
SPECIAL_WIFI_CONF_COMMAND = 0xCF
WRITE_CFG_PWR_DWN_SAVE = 0xC0,
READ_CONFIGURATION = 0xC1,
WRITE_CFG_PWR_DWN_LOSE = 0xC2,
WRONG_FORMAT = 0xFF,
RETURNED_COMMAND = 0xC1,
SPECIAL_WIFI_CONF_COMMAND = 0xCF
};
enum REGISTER_ADDRESS {
REG_ADDRESS_CFG = 0x00,
REG_ADDRESS_SPED = 0x02,
REG_ADDRESS_TRANS_MODE = 0x03,
REG_ADDRESS_CHANNEL = 0x04,
REG_ADDRESS_OPTION = 0x05,
REG_ADDRESS_CRYPT = 0x06,
REG_ADDRESS_PID = 0x08
REG_ADDRESS_CFG = 0x00,
REG_ADDRESS_SPED = 0x02,
REG_ADDRESS_TRANS_MODE = 0x03,
REG_ADDRESS_CHANNEL = 0x04,
REG_ADDRESS_OPTION = 0x05,
REG_ADDRESS_CRYPT = 0x06,
REG_ADDRESS_PID = 0x08
};
enum PACKET_LENGHT {
PL_CONFIGURATION = 0x08,
PL_CONFIGURATION = 0x08,
PL_SPED = 0x01,
PL_OPTION = 0x01,
PL_TRANSMISSION_MODE= 0x01,
PL_CHANNEL = 0x01,
PL_CRYPT = 0x02,
PL_PID = 0x03
PL_SPED = 0x01,
PL_OPTION = 0x01,
PL_TRANSMISSION_MODE = 0x01,
PL_CHANNEL = 0x01,
PL_CRYPT = 0x02,
PL_PID = 0x03
};
#pragma pack(push, 1)
struct Speed {
uint8_t airDataRate :3; //bit 0-2
std::string getAirDataRateDescription() {
return getAirDataRateDescriptionByParams(this->airDataRate);
}
uint8_t airDataRate : 3; // bit 0-2
std::string getAirDataRateDescription() { return getAirDataRateDescriptionByParams(this->airDataRate); }
uint8_t uartParity :2; //bit 3-4
std::string getUARTParityDescription() {
return getUARTParityDescriptionByParams(this->uartParity);
}
uint8_t uartBaudRate :3; //bit 5-7
std::string getUARTBaudRateDescription() {
return getUARTBaudRateDescriptionByParams(this->uartBaudRate);
}
uint8_t uartParity : 2; // bit 3-4
std::string getUARTParityDescription() { return getUARTParityDescriptionByParams(this->uartParity); }
uint8_t uartBaudRate : 3; // bit 5-7
std::string getUARTBaudRateDescription() { return getUARTBaudRateDescriptionByParams(this->uartBaudRate); }
};
struct TransmissionMode {
byte WORPeriod :3; //bit 2,1,0
std::string getWORPeriodByParamsDescription() {
return getWORPeriodByParams(this->WORPeriod);
}
byte reserved2 :1; //bit 3
byte enableLBT :1; //bit 4
std::string getLBTEnableByteDescription() {
return getLBTEnableByteByParams(this->enableLBT);
}
byte reserved :1; //bit 5
byte WORPeriod : 3; // bit 2,1,0
std::string getWORPeriodByParamsDescription() { return getWORPeriodByParams(this->WORPeriod); }
byte reserved2 : 1; // bit 3
byte enableLBT : 1; // bit 4
std::string getLBTEnableByteDescription() { return getLBTEnableByteByParams(this->enableLBT); }
byte reserved : 1; // bit 5
byte fixedTransmission :1; //bit 6
std::string getFixedTransmissionDescription() {
return getFixedTransmissionDescriptionByParams(this->fixedTransmission);
}
byte fixedTransmission : 1; // bit 6
std::string getFixedTransmissionDescription() {
return getFixedTransmissionDescriptionByParams(this->fixedTransmission);
}
byte enableRSSI :1; //bit 7
std::string getRSSIEnableByteDescription() {
return getRSSIEnableByteByParams(this->enableRSSI);
}
byte enableRSSI : 1; // bit 7
std::string getRSSIEnableByteDescription() { return getRSSIEnableByteByParams(this->enableRSSI); }
};
struct Option {
uint8_t transmissionPower :2; //bit 0-1
std::string getTransmissionPowerDescription() {
return getTransmissionPowerDescriptionByParams(this->transmissionPower);
}
uint8_t reserved :3; //bit 2-4
uint8_t transmissionPower : 2; // bit 0-1
std::string getTransmissionPowerDescription() {
return getTransmissionPowerDescriptionByParams(this->transmissionPower);
}
uint8_t reserved : 3; // bit 2-4
uint8_t RSSIAmbientNoise :1; //bit 5
std::string getRSSIAmbientNoiseEnable() {
return getRSSIAmbientNoiseEnableByParams(this->RSSIAmbientNoise);
}
uint8_t subPacketSetting :2; //bit 6-7
std::string getSubPacketSetting() {
return getSubPacketSettingByParams(this->subPacketSetting);
}
uint8_t RSSIAmbientNoise : 1; // bit 5
std::string getRSSIAmbientNoiseEnable() { return getRSSIAmbientNoiseEnableByParams(this->RSSIAmbientNoise); }
uint8_t subPacketSetting : 2; // bit 6-7
std::string getSubPacketSetting() { return getSubPacketSettingByParams(this->subPacketSetting); }
};
struct Crypt {
byte CRYPT_H = 0;
byte CRYPT_L = 0;
byte CRYPT_H = 0;
byte CRYPT_L = 0;
};
struct Configuration {
byte COMMAND = 0;
byte STARTING_ADDRESS = 0;
byte LENGHT = 0;
byte COMMAND = 0;
byte STARTING_ADDRESS = 0;
byte LENGHT = 0;
byte ADDH = 0;
byte ADDL = 0;
byte ADDH = 0;
byte ADDL = 0;
struct Speed SPED;
struct Option OPTION;
struct Speed SPED;
struct Option OPTION;
byte CHAN = 0;
std::string getChannelDescription() {
return std::string(this->CHAN + OPERATING_FREQUENCY) + F("MHz");
}
byte CHAN = 0;
std::string getChannelDescription() { return std::string(this->CHAN + OPERATING_FREQUENCY) + F("MHz"); }
struct TransmissionMode TRANSMISSION_MODE;
struct TransmissionMode TRANSMISSION_MODE;
struct Crypt CRYPT;
struct Crypt CRYPT;
};
struct ModuleInformation {
byte COMMAND = 0;
byte STARTING_ADDRESS = 0;
byte LENGHT = 0;
byte COMMAND = 0;
byte STARTING_ADDRESS = 0;
byte LENGHT = 0;
byte model = 0;
byte version = 0;
byte features = 0;
byte model = 0;
byte version = 0;
byte features = 0;
};
struct ResponseStatus {
std::std::string code;
std::std::string getResponseDescription() {
return getResponseDescriptionByParams(this->code);
}
std::std::string code;
std::std::string getResponseDescription() { return getResponseDescriptionByParams(this->code); }
};
struct ResponseStructContainer {
void *data;
byte rssi;
ResponseStatus status;
void close() {
free(this->data);
}
void *data;
byte rssi;
ResponseStatus status;
void close() { free(this->data); }
};
struct ResponseContainer {
std::string data;
byte rssi;
ResponseStatus status;
std::string data;
byte rssi;
ResponseStatus status;
};
struct ConfigurationMessage
{
byte specialCommand1 = 0xCF;
byte specialCommand2 = 0xCF;
struct ConfigurationMessage {
byte specialCommand1 = 0xCF;
byte specialCommand2 = 0xCF;
unsigned char message[];
unsigned char message[];
};
//struct FixedStransmission {
// struct FixedStransmission {
// byte ADDL = 0;
// byte ADDH = 0;
// byte CHAN = 0;
// void *message;
//};
// };
#pragma pack(pop)
class LoRa_E220 {
public:
#ifdef ACTIVATE_SOFTWARE_SERIAL
LoRa_E220(byte txE220pin, byte rxE220pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(byte txE220pin, byte rxE220pin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(byte txE220pin, byte rxE220pin, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
public:
LoRa_E220(HardwareSerial *serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(HardwareSerial *serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(HardwareSerial *serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
#ifdef HARDWARE_SERIAL_SELECTABLE_PIN
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial *serial, UART_BPS_RATE bpsRate,
uint32_t serialConfig = SERIAL_8N1);
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial *serial, byte auxPin, UART_BPS_RATE bpsRate,
uint32_t serialConfig = SERIAL_8N1);
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial *serial, byte auxPin, byte m0Pin, byte m1Pin,
UART_BPS_RATE bpsRate, uint32_t serialConfig = SERIAL_8N1);
#endif
bool begin();
Status setMode(MODE_TYPE mode);
MODE_TYPE getMode();
LoRa_E220(HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
ResponseStructContainer getConfiguration();
ResponseStatus setConfiguration(Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation();
ResponseStatus resetModule();
ResponseStatus sendMessage(const void *message, const uint8_t size);
ResponseContainer receiveMessageUntil(char delimiter = '\0');
ResponseStructContainer receiveMessage(const uint8_t size);
ResponseStructContainer receiveMessageRSSI(const uint8_t size);
ResponseStructContainer receiveMessageComplete(const uint8_t size, bool enableRSSI);
ResponseContainer receiveMessageComplete(bool enableRSSI);
ResponseStatus sendMessage(const std::string message);
ResponseContainer receiveMessage();
ResponseContainer receiveMessageRSSI();
ResponseStatus sendFixedMessage(byte ADDH, byte ADDL, byte CHAN, const std::string message);
ResponseStatus sendFixedMessage(byte ADDH, byte ADDL, byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage(byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage(byte CHAN, const std::string message);
ResponseContainer receiveInitialMessage(const uint8_t size);
ResponseStatus sendConfigurationMessage(byte ADDH, byte ADDL, byte CHAN, Configuration *configuration,
PROGRAM_COMMAND programCommand = WRITE_CFG_PWR_DWN_SAVE);
int available();
private:
HardwareSerial *hs;
bool isSoftwareSerial = true;
int8_t txE220pin = -1;
int8_t rxE220pin = -1;
int8_t auxPin = -1;
#ifdef HARDWARE_SERIAL_SELECTABLE_PIN
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial* serial, UART_BPS_RATE bpsRate, uint32_t serialConfig = SERIAL_8N1);
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate, uint32_t serialConfig = SERIAL_8N1);
LoRa_E220(byte txE220pin, byte rxE220pin, HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate, uint32_t serialConfig = SERIAL_8N1);
uint32_t serialConfig = SERIAL_8N1;
#endif
#ifdef ACTIVATE_SOFTWARE_SERIAL
LoRa_E220(SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E220(SoftwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
#endif
int8_t m0Pin = -1;
int8_t m1Pin = -1;
// LoRa_E220(byte txE220pin, byte rxE220pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600, MODE_TYPE mode = MODE_0_NORMAL);
// LoRa_E220(HardwareSerial* serial = &Serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600, MODE_TYPE mode = MODE_0_NORMAL);
// LoRa_E220(SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600, MODE_TYPE mode = MODE_0_NORMAL);
unsigned long halfKeyloqKey = 0x06660708;
unsigned long encrypt(unsigned long data);
unsigned long decrypt(unsigned long data);
bool begin();
Status setMode(MODE_TYPE mode);
MODE_TYPE getMode();
UART_BPS_RATE bpsRate = UART_BPS_RATE_9600;
ResponseStructContainer getConfiguration();
ResponseStatus setConfiguration(Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation();
ResponseStatus resetModule();
ResponseStatus sendMessage(const void *message, const uint8_t size);
ResponseContainer receiveMessageUntil(char delimiter = '\0');
ResponseStructContainer receiveMessage(const uint8_t size);
ResponseStructContainer receiveMessageRSSI(const uint8_t size);
ResponseStructContainer receiveMessageComplete(const uint8_t size, bool enableRSSI);
ResponseContainer receiveMessageComplete(bool enableRSSI);
ResponseStatus sendMessage(const std::string message);
ResponseContainer receiveMessage();
ResponseContainer receiveMessageRSSI();
ResponseStatus sendFixedMessage(byte ADDH, byte ADDL, byte CHAN, const std::string message);
ResponseStatus sendFixedMessage(byte ADDH,byte ADDL, byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage(byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage(byte CHAN, const std::string message);
ResponseContainer receiveInitialMessage(const uint8_t size);
ResponseStatus sendConfigurationMessage( byte ADDH,byte ADDL, byte CHAN, Configuration *configuration, PROGRAM_COMMAND programCommand = WRITE_CFG_PWR_DWN_SAVE);
int available();
private:
HardwareSerial* hs;
#ifdef ACTIVATE_SOFTWARE_SERIAL
SoftwareSerial* ss;
#endif
bool isSoftwareSerial = true;
int8_t txE220pin = -1;
int8_t rxE220pin = -1;
int8_t auxPin = -1;
struct NeedsStream {
template<typename T> void begin(T &t, uint32_t baud) {
ESP_LOGD(TAG, "Begin ");
t.setTimeout(500);
t.begin(baud);
stream = &t;
}
#ifdef HARDWARE_SERIAL_SELECTABLE_PIN
uint32_t serialConfig = SERIAL_8N1;
template<typename T> void begin(T &t, uint32_t baud, uint32_t config) {
ESP_LOGD(TAG, "Begin ");
t.setTimeout(500);
t.begin(baud, config);
stream = &t;
}
template<typename T> void begin(T &t, uint32_t baud, uint32_t config, int8_t txE220pin, int8_t rxE220pin) {
ESP_LOGD(TAG, "Begin ");
t.setTimeout(500);
t.begin(baud, config, txE220pin, rxE220pin);
stream = &t;
}
#endif
int8_t m0Pin = -1;
int8_t m1Pin = -1;
void listen() {}
unsigned long halfKeyloqKey = 0x06660708;
unsigned long encrypt(unsigned long data);
unsigned long decrypt(unsigned long data);
Stream *stream;
};
NeedsStream serialDef;
UART_BPS_RATE bpsRate = UART_BPS_RATE_9600;
MODE_TYPE mode = MODE_0_NORMAL;
struct NeedsStream {
template<typename T>
void begin(T &t, uint32_t baud) {
DEBUG_PRINTLN("Begin ");
t.setTimeout(500);
t.begin(baud);
stream = &t;
}
void managedDelay(unsigned long timeout);
Status waitCompleteResponse(unsigned long timeout = 1000, unsigned int waitNoAux = 100);
void flush();
void cleanUARTBuffer();
#ifdef HARDWARE_SERIAL_SELECTABLE_PIN
// template< typename T >
// void begin( T &t, uint32_t baud, SerialConfig config ){
// DEBUG_PRINTLN("Begin ");
// t.setTimeout(500);
// t.begin(baud, config);
// stream = &t;
// }
//
template< typename T >
void begin( T &t, uint32_t baud, uint32_t config ) {
DEBUG_PRINTLN("Begin ");
t.setTimeout(500);
t.begin(baud, config);
stream = &t;
}
Status sendStruct(void *structureManaged, uint16_t size_);
Status receiveStruct(void *structureManaged, uint16_t size_);
bool writeProgramCommand(PROGRAM_COMMAND cmd, REGISTER_ADDRESS addr, PACKET_LENGHT pl);
template< typename T >
void begin( T &t, uint32_t baud, uint32_t config, int8_t txE220pin, int8_t rxE220pin ) {
DEBUG_PRINTLN("Begin ");
t.setTimeout(500);
t.begin(baud, config, txE220pin, rxE220pin);
stream = &t;
}
#endif
void listen() {}
Stream *stream;
};
NeedsStream serialDef;
MODE_TYPE mode = MODE_0_NORMAL;
void managedDelay(unsigned long timeout);
Status waitCompleteResponse(unsigned long timeout = 1000, unsigned int waitNoAux = 100);
void flush();
void cleanUARTBuffer();
Status sendStruct(void *structureManaged, uint16_t size_);
Status receiveStruct(void *structureManaged, uint16_t size_);
bool writeProgramCommand(PROGRAM_COMMAND cmd, REGISTER_ADDRESS addr, PACKET_LENGHT pl);
RESPONSE_STATUS checkUARTConfiguration(MODE_TYPE mode);
RESPONSE_STATUS checkUARTConfiguration(MODE_TYPE mode);
#ifdef LoRa_E220_DEBUG
void printParameters(struct Configuration *configuration);
void printParameters(struct Configuration *configuration);
#endif
};

View file

@ -1,19 +1,19 @@
#include "Arduino.h"
#ifdef FREQUENCY_433
#define OPERATING_FREQUENCY 410
#define OPERATING_FREQUENCY 410
#elif defined(FREQUENCY_400)
#define OPERATING_FREQUENCY 410
#define OPERATING_FREQUENCY 410
#elif defined(FREQUENCY_230)
#define OPERATING_FREQUENCY 220
#define OPERATING_FREQUENCY 220
#elif defined(FREQUENCY_868)
#define OPERATING_FREQUENCY 850
#define OPERATING_FREQUENCY 850
#elif defined(FREQUENCY_900)
#define OPERATING_FREQUENCY 850
#define OPERATING_FREQUENCY 850
#elif defined(FREQUENCY_915)
#define OPERATING_FREQUENCY 900
#define OPERATING_FREQUENCY 900
#else
#define OPERATING_FREQUENCY 410
#define OPERATING_FREQUENCY 410
#endif
#define BROADCAST_ADDRESS 255
@ -23,7 +23,7 @@ typedef enum RESPONSE_STATUS {
SUCCESS = 1,
#endif
E220_SUCCESS = 1,
ERR_E220_UNKNOWN, /* something shouldn't happened */
ERR_E220_UNKNOWN, /* something shouldn't happened */
ERR_E220_NOT_SUPPORT,
ERR_E220_NOT_IMPLEMENT,
ERR_E220_NOT_INITIAL,
@ -39,86 +39,77 @@ typedef enum RESPONSE_STATUS {
ERR_E220_PACKET_TOO_BIG
} Status;
static String getResponseDescriptionByParams(byte status){
switch (status)
{
case E220_SUCCESS:
return F("Success");
break;
case ERR_E220_UNKNOWN:
return F("Unknown");
break;
case ERR_E220_NOT_SUPPORT:
return F("Not support!");
break;
case ERR_E220_NOT_IMPLEMENT:
return F("Not implement");
break;
case ERR_E220_NOT_INITIAL:
return F("Not initial!");
break;
case ERR_E220_INVALID_PARAM:
return F("Invalid param!");
break;
case ERR_E220_DATA_SIZE_NOT_MATCH:
return F("Data size not match!");
break;
case ERR_E220_BUF_TOO_SMALL:
return F("Buff too small!");
break;
case ERR_E220_TIMEOUT:
return F("Timeout!!");
break;
case ERR_E220_HARDWARE:
return F("Hardware error!");
break;
case ERR_E220_HEAD_NOT_RECOGNIZED:
return F("Save mode returned not recognized!");
break;
case ERR_E220_NO_RESPONSE_FROM_DEVICE:
return F("No response from device! (Check wiring)");
break;
case ERR_E220_WRONG_UART_CONFIG:
return F("Wrong UART configuration! (BPS must be 9600 for configuration)");
break;
case ERR_E220_PACKET_TOO_BIG:
return F("The device support only 200byte of data transmission!");
break;
default:
return F("Invalid status!");
}
static std::string getResponseDescriptionByParams(byte status) {
switch (status) {
case E220_SUCCESS:
return "Success";
break;
case ERR_E220_UNKNOWN:
return "Unknown";
break;
case ERR_E220_NOT_SUPPORT:
return "Not support!";
break;
case ERR_E220_NOT_IMPLEMENT:
return "Not implement";
break;
case ERR_E220_NOT_INITIAL:
return "Not initial!";
break;
case ERR_E220_INVALID_PARAM:
return "Invalid param!";
break;
case ERR_E220_DATA_SIZE_NOT_MATCH:
return "Data size not match!";
break;
case ERR_E220_BUF_TOO_SMALL:
return "Buff too small!";
break;
case ERR_E220_TIMEOUT:
return "Timeout!!";
break;
case ERR_E220_HARDWARE:
return "Hardware error!";
break;
case ERR_E220_HEAD_NOT_RECOGNIZED:
return "Save mode returned not recognized!";
break;
case ERR_E220_NO_RESPONSE_FROM_DEVICE:
return "No response from device! (Check wiring)";
break;
case ERR_E220_WRONG_UART_CONFIG:
return "Wrong UART configuration! (BPS must be 9600 for configuration)";
break;
case ERR_E220_PACKET_TOO_BIG:
return "The device support only 200byte of data transmission!";
break;
default:
return "Invalid status!";
}
}
enum E220_UART_PARITY
{
MODE_00_8N1 = 0b00,
MODE_01_8O1 = 0b01,
MODE_10_8E1 = 0b10,
MODE_11_8N1 = 0b11
};
enum E220_UART_PARITY { MODE_00_8N1 = 0b00, MODE_01_8O1 = 0b01, MODE_10_8E1 = 0b10, MODE_11_8N1 = 0b11 };
static String getUARTParityDescriptionByParams(byte uartParity){
switch (uartParity)
{
case MODE_00_8N1:
return F("8N1 (Default)");
break;
case MODE_01_8O1:
return F("8O1");
break;
case MODE_10_8E1:
return F("8E1");
break;
case MODE_11_8N1:
return F("8N1 (equal to 00");
break;
default:
return F("Invalid UART Parity!");
}
static std::string getUARTParityDescriptionByParams(byte uartParity) {
switch (uartParity) {
case MODE_00_8N1:
return "8N1 (Default)";
break;
case MODE_01_8O1:
return "8O1";
break;
case MODE_10_8E1:
return "8E1";
break;
case MODE_11_8N1:
return "8N1 (equal to 00";
break;
default:
return "Invalid UART Parity!";
}
}
enum UART_BPS_TYPE
{
enum UART_BPS_TYPE {
UART_BPS_1200 = 0b000,
UART_BPS_2400 = 0b001,
UART_BPS_4800 = 0b010,
@ -129,8 +120,7 @@ enum UART_BPS_TYPE
UART_BPS_115200 = 0b111
};
enum UART_BPS_RATE
{
enum UART_BPS_RATE {
UART_BPS_RATE_1200 = 1200,
UART_BPS_RATE_2400 = 2400,
UART_BPS_RATE_4800 = 4800,
@ -141,41 +131,38 @@ enum UART_BPS_RATE
UART_BPS_RATE_115200 = 115200
};
static String getUARTBaudRateDescriptionByParams(byte uartBaudRate)
{
switch (uartBaudRate)
{
case UART_BPS_1200:
return F("1200bps");
break;
case UART_BPS_2400:
return F("2400bps");
break;
case UART_BPS_4800:
return F("4800bps");
break;
case UART_BPS_9600:
return F("9600bps (default)");
break;
case UART_BPS_19200:
return F("19200bps");
break;
case UART_BPS_38400:
return F("38400bps");
break;
case UART_BPS_57600:
return F("57600bps");
break;
case UART_BPS_115200:
return F("115200bps");
break;
default:
return F("Invalid UART Baud Rate!");
}
static std::string getUARTBaudRateDescriptionByParams(byte uartBaudRate) {
switch (uartBaudRate) {
case UART_BPS_1200:
return "1200bps";
break;
case UART_BPS_2400:
return "2400bps";
break;
case UART_BPS_4800:
return "4800bps";
break;
case UART_BPS_9600:
return "9600bps (default)";
break;
case UART_BPS_19200:
return "19200bps";
break;
case UART_BPS_38400:
return "38400bps";
break;
case UART_BPS_57600:
return "57600bps";
break;
case UART_BPS_115200:
return "115200bps";
break;
default:
return "Invalid UART Baud Rate!";
}
}
enum AIR_DATA_RATE
{
enum AIR_DATA_RATE {
AIR_DATA_RATE_000_24 = 0b000,
AIR_DATA_RATE_001_24 = 0b001,
AIR_DATA_RATE_010_24 = 0b010,
@ -186,278 +173,240 @@ enum AIR_DATA_RATE
AIR_DATA_RATE_111_625 = 0b111
};
static String getAirDataRateDescriptionByParams(byte airDataRate)
{
switch (airDataRate)
{
case AIR_DATA_RATE_000_24:
return F("2.4kbps");
break;
case AIR_DATA_RATE_001_24:
return F("2.4kbps");
break;
case AIR_DATA_RATE_010_24:
return F("2.4kbps (default)");
break;
case AIR_DATA_RATE_011_48:
return F("4.8kbps");
break;
case AIR_DATA_RATE_100_96:
return F("9.6kbps");
break;
case AIR_DATA_RATE_101_192:
return F("19.2kbps");
break;
case AIR_DATA_RATE_110_384:
return F("38.4kbps");
break;
case AIR_DATA_RATE_111_625:
return F("62.5kbps");
break;
default:
return F("Invalid Air Data Rate!");
}
static std::string getAirDataRateDescriptionByParams(byte airDataRate) {
switch (airDataRate) {
case AIR_DATA_RATE_000_24:
return "2.4kbps";
break;
case AIR_DATA_RATE_001_24:
return "2.4kbps";
break;
case AIR_DATA_RATE_010_24:
return "2.4kbps (default)";
break;
case AIR_DATA_RATE_011_48:
return "4.8kbps";
break;
case AIR_DATA_RATE_100_96:
return "9.6kbps";
break;
case AIR_DATA_RATE_101_192:
return "19.2kbps";
break;
case AIR_DATA_RATE_110_384:
return "38.4kbps";
break;
case AIR_DATA_RATE_111_625:
return "62.5kbps";
break;
default:
return "Invalid Air Data Rate!";
}
}
enum SUB_PACKET_SETTING {
SPS_200_00 = 0b00,
SPS_128_01 = 0b01,
SPS_064_10 = 0b10,
SPS_032_11 = 0b11
SPS_200_00 = 0b00,
SPS_128_01 = 0b01,
SPS_064_10 = 0b10,
SPS_032_11 = 0b11
};
static String getSubPacketSettingByParams(byte subPacketSetting)
{
switch (subPacketSetting)
{
case SPS_200_00:
return F("200bytes (default)");
break;
case SPS_128_01:
return F("128bytes");
break;
case SPS_064_10:
return F("64bytes");
break;
case SPS_032_11:
return F("32bytes");
break;
default:
return F("Invalid Sub Packet Setting!");
}
static std::string getSubPacketSettingByParams(byte subPacketSetting) {
switch (subPacketSetting) {
case SPS_200_00:
return "200bytes (default)";
break;
case SPS_128_01:
return "128bytes";
break;
case SPS_064_10:
return "64bytes";
break;
case SPS_032_11:
return "32bytes";
break;
default:
return "Invalid Sub Packet Setting!";
}
}
enum RSSI_AMBIENT_NOISE_ENABLE {
RSSI_AMBIENT_NOISE_ENABLED = 0b1,
RSSI_AMBIENT_NOISE_DISABLED = 0b0
};
static String getRSSIAmbientNoiseEnableByParams(byte rssiAmbientNoiseEnabled)
{
switch (rssiAmbientNoiseEnabled)
{
case RSSI_AMBIENT_NOISE_ENABLED:
return F("Enabled");
break;
case RSSI_AMBIENT_NOISE_DISABLED:
return F("Disabled (default)");
break;
default:
return F("Invalid RSSI Ambient Noise enabled!");
}
enum RSSI_AMBIENT_NOISE_ENABLE { RSSI_AMBIENT_NOISE_ENABLED = 0b1, RSSI_AMBIENT_NOISE_DISABLED = 0b0 };
static std::string getRSSIAmbientNoiseEnableByParams(byte rssiAmbientNoiseEnabled) {
switch (rssiAmbientNoiseEnabled) {
case RSSI_AMBIENT_NOISE_ENABLED:
return "Enabled";
break;
case RSSI_AMBIENT_NOISE_DISABLED:
return "Disabled (default)";
break;
default:
return "Invalid RSSI Ambient Noise enabled!";
}
}
enum WOR_PERIOD {
WOR_500_000 = 0b000,
WOR_1000_001 = 0b001,
WOR_1500_010 = 0b010,
WOR_2000_011 = 0b011,
WOR_2500_100 = 0b100,
WOR_3000_101 = 0b101,
WOR_3500_110 = 0b110,
WOR_4000_111 = 0b111
WOR_500_000 = 0b000,
WOR_1000_001 = 0b001,
WOR_1500_010 = 0b010,
WOR_2000_011 = 0b011,
WOR_2500_100 = 0b100,
WOR_3000_101 = 0b101,
WOR_3500_110 = 0b110,
WOR_4000_111 = 0b111
};
static String getWORPeriodByParams(byte WORPeriod)
{
switch (WORPeriod)
{
case WOR_500_000:
return F("500ms");
break;
case WOR_1000_001:
return F("1000ms");
break;
case WOR_1500_010:
return F("1500ms");
break;
case WOR_2000_011:
return F("2000ms (default)");
break;
case WOR_2500_100:
return F("2500ms");
break;
case WOR_3000_101:
return F("3000ms");
break;
case WOR_3500_110:
return F("3500ms");
break;
case WOR_4000_111:
return F("4000ms");
break;
default:
return F("Invalid WOR period!");
}
static std::string getWORPeriodByParams(byte WORPeriod) {
switch (WORPeriod) {
case WOR_500_000:
return "500ms";
break;
case WOR_1000_001:
return "1000ms";
break;
case WOR_1500_010:
return "1500ms";
break;
case WOR_2000_011:
return "2000ms (default)";
break;
case WOR_2500_100:
return "2500ms";
break;
case WOR_3000_101:
return "3000ms";
break;
case WOR_3500_110:
return "3500ms";
break;
case WOR_4000_111:
return "4000ms";
break;
default:
return "Invalid WOR period!";
}
}
enum LBT_ENABLE_BYTE {
LBT_ENABLED = 0b1,
LBT_DISABLED = 0b0
};
static String getLBTEnableByteByParams(byte LBTEnableByte)
{
switch (LBTEnableByte)
{
case LBT_ENABLED:
return F("Enabled");
break;
case LBT_DISABLED:
return F("Disabled (default)");
break;
default:
return F("Invalid LBT enable byte!");
}
enum LBT_ENABLE_BYTE { LBT_ENABLED = 0b1, LBT_DISABLED = 0b0 };
static std::string getLBTEnableByteByParams(byte LBTEnableByte) {
switch (LBTEnableByte) {
case LBT_ENABLED:
return "Enabled";
break;
case LBT_DISABLED:
return "Disabled (default)";
break;
default:
return "Invalid LBT enable byte!";
}
}
enum RSSI_ENABLE_BYTE {
RSSI_ENABLED = 0b1,
RSSI_DISABLED = 0b0
};
static String getRSSIEnableByteByParams(byte RSSIEnableByte)
{
switch (RSSIEnableByte)
{
case RSSI_ENABLED:
return F("Enabled");
break;
case RSSI_DISABLED:
return F("Disabled (default)");
break;
default:
return F("Invalid RSSI enable byte!");
}
enum RSSI_ENABLE_BYTE { RSSI_ENABLED = 0b1, RSSI_DISABLED = 0b0 };
static std::string getRSSIEnableByteByParams(byte RSSIEnableByte) {
switch (RSSIEnableByte) {
case RSSI_ENABLED:
return "Enabled";
break;
case RSSI_DISABLED:
return "Disabled (default)";
break;
default:
return "Invalid RSSI enable byte!";
}
}
enum FIDEX_TRANSMISSION
{
FT_TRANSPARENT_TRANSMISSION = 0b0,
FT_FIXED_TRANSMISSION = 0b1
};
enum FIDEX_TRANSMISSION { FT_TRANSPARENT_TRANSMISSION = 0b0, FT_FIXED_TRANSMISSION = 0b1 };
static String getFixedTransmissionDescriptionByParams(byte fixedTransmission)
{
switch (fixedTransmission)
{
case FT_TRANSPARENT_TRANSMISSION:
return F("Transparent transmission (default)");
break;
case FT_FIXED_TRANSMISSION:
return F("Fixed transmission (first three bytes can be used as high/low address and channel)");
break;
default:
return F("Invalid fixed transmission param!");
}
static std::string getFixedTransmissionDescriptionByParams(byte fixedTransmission) {
switch (fixedTransmission) {
case FT_TRANSPARENT_TRANSMISSION:
return "Transparent transmission (default)";
break;
case FT_FIXED_TRANSMISSION:
return "Fixed transmission (first three bytes can be used as high/low address and channel)";
break;
default:
return "Invalid fixed transmission param!";
}
}
#ifdef E220_22
enum TRANSMISSION_POWER
{
POWER_22 = 0b00,
POWER_17 = 0b01,
POWER_13 = 0b10,
POWER_10 = 0b11
enum TRANSMISSION_POWER {
POWER_22 = 0b00,
POWER_17 = 0b01,
POWER_13 = 0b10,
POWER_10 = 0b11
};
};
static String getTransmissionPowerDescriptionByParams(byte transmissionPower)
{
switch (transmissionPower)
{
case POWER_22:
return F("22dBm (Default)");
break;
case POWER_17:
return F("17dBm");
break;
case POWER_13:
return F("13dBm");
break;
case POWER_10:
return F("10dBm");
break;
default:
return F("Invalid transmission power param");
}
}
static std::string getTransmissionPowerDescriptionByParams(byte transmissionPower) {
switch (transmissionPower) {
case POWER_22:
return "22dBm (Default)";
break;
case POWER_17:
return "17dBm";
break;
case POWER_13:
return "13dBm";
break;
case POWER_10:
return "10dBm";
break;
default:
return "Invalid transmission power param";
}
}
#elif defined(E220_30)
enum TRANSMISSION_POWER
{
POWER_30 = 0b00,
POWER_27 = 0b01,
POWER_24 = 0b10,
POWER_21 = 0b11
enum TRANSMISSION_POWER {
POWER_30 = 0b00,
POWER_27 = 0b01,
POWER_24 = 0b10,
POWER_21 = 0b11
};
};
static String getTransmissionPowerDescriptionByParams(byte transmissionPower)
{
switch (transmissionPower)
{
case POWER_30:
return F("30dBm (Default)");
break;
case POWER_27:
return F("27dBm");
break;
case POWER_24:
return F("24dBm");
break;
case POWER_21:
return F("21dBm");
break;
default:
return F("Invalid transmission power param");
}
}
static std::string getTransmissionPowerDescriptionByParams(byte transmissionPower) {
switch (transmissionPower) {
case POWER_30:
return "30dBm (Default)";
break;
case POWER_27:
return "27dBm";
break;
case POWER_24:
return "24dBm";
break;
case POWER_21:
return "21dBm";
break;
default:
return "Invalid transmission power param";
}
}
#else
enum TRANSMISSION_POWER
{
POWER_22 = 0b00,
POWER_17 = 0b01,
POWER_13 = 0b10,
POWER_10 = 0b11
enum TRANSMISSION_POWER {
POWER_22 = 0b00,
POWER_17 = 0b01,
POWER_13 = 0b10,
POWER_10 = 0b11
};
};
static String getTransmissionPowerDescriptionByParams(byte transmissionPower)
{
switch (transmissionPower)
{
case POWER_22:
return F("22dBm (Default)");
break;
case POWER_17:
return F("17dBm");
break;
case POWER_13:
return F("13dBm");
break;
case POWER_10:
return F("10dBm");
break;
default:
return F("Invalid transmission power param");
}
}
static std::string getTransmissionPowerDescriptionByParams(byte transmissionPower) {
switch (transmissionPower) {
case POWER_22:
return "22dBm (Default)";
break;
case POWER_17:
return "17dBm";
break;
case POWER_13:
return "13dBm";
break;
case POWER_10:
return "10dBm";
break;
default:
return "Invalid transmission power param";
}
}
#endif