RadioLibSmol/src/TypeDef.h
2019-12-27 13:15:33 +01:00

531 lines
13 KiB
C

#ifndef _RADIOLIB_TYPES_H
#define _RADIOLIB_TYPES_H
#if ARDUINO >= 100
#include "Arduino.h"
#else
#error "Unsupported Arduino version (< 1.0.0)"
#endif
/*
* Uncomment to enable static-only memory management: no dynamic allocation will be performed.
* Warning: Large static arrays will be created in some methods. It is not advised to send large packets in this mode.
*/
//#define RADIOLIB_STATIC_ONLY
// set the size of static arrays to use
#define RADIOLIB_STATIC_ARRAY_SIZE 256
/*
* Uncomment to enable debug output.
* Warning: Debug output will slow down the whole system significantly.
* Also, it will result in larger compiled binary.
* Levels: debug - only main info
* verbose - full transcript of all SPI/UART communication
*/
//#define RADIOLIB_DEBUG
//#define RADIOLIB_VERBOSE
// set which Serial port should be used for debug output
#define RADIOLIB_DEBUG_PORT Serial
#ifdef RADIOLIB_DEBUG
#define RADIOLIB_DEBUG_PRINT(...) { RADIOLIB_DEBUG_PORT.print(__VA_ARGS__); }
#define RADIOLIB_DEBUG_PRINTLN(...) { RADIOLIB_DEBUG_PORT.println(__VA_ARGS__); }
#else
#define RADIOLIB_DEBUG_PRINT(...) {}
#define RADIOLIB_DEBUG_PRINTLN(...) {}
#endif
#ifdef RADIOLIB_VERBOSE
#define RADIOLIB_VERBOSE_PRINT(...) { RADIOLIB_DEBUG_PORT.print(__VA_ARGS__); }
#define RADIOLIB_VERBOSE_PRINTLN(...) { RADIOLIB_DEBUG_PORT.println(__VA_ARGS__); }
#else
#define RADIOLIB_VERBOSE_PRINT(...) {}
#define RADIOLIB_VERBOSE_PRINTLN(...) {}
#endif
/*
* Uncomment to enable god mode - all methods and member variables in all classes will be made public, thus making them accessible from Arduino code.
* Warning: Come on, it's called GOD mode - obviously only use this if you know what you're doing.
* Failure to heed the above warning may result in bricked module.
*/
//#define RADIOLIB_GODMODE
/*
* Uncomment to enable pre-defined modules when using RadioShield.
*/
//#define RADIOLIB_RADIOSHIELD
/*
* The following platforms do not support SoftwareSerial library.
*/
#if defined(ESP32) || defined(SAMD_SERIES) || defined(ARDUINO_ARCH_STM32) || defined(__SAM3X8E__) || defined(AM_PART_APOLLO3)
#define RADIOLIB_SOFTWARE_SERIAL_UNSUPPORTED
#endif
/*!
\brief Alias for unused pin.
*/
#define RADIOLIB_PIN_UNUSED (-1)
/*!
\defgroup shield_config Shield Configuration
\{
*/
/*!
\brief Use SPI interface.
*/
#define RADIOLIB_USE_SPI 0x00
/*!
\brief Use UART interface.
*/
#define RADIOLIB_USE_UART 0x01
/*!
\brief Use I2C interface.
*/
#define RADIOLIB_USE_I2C 0x02
/*!
\}
*/
/*!
\defgroup uart_config UART Configuration
\{
*/
/*!
\brief Use 1 bit stop.
*/
#define RADIOLIB_UART_STOPBIT_1 0x01
/*!
\brief Use 1.5 bit stop.
*/
#define RADIOLIB_UART_STOPBIT_1_5 0x02
/*!
\brief Use 2 bit stop.
*/
#define RADIOLIB_UART_STOPBIT_2 0x03
/*!
\brief No parity.
*/
#define RADIOLIB_UART_PARITY_NONE 0x00
/*!
\brief Odd parity.
*/
#define RADIOLIB_UART_PARITY_ODD 0x01
/*!
\brief Even parity.
*/
#define RADIOLIB_UART_PARITY_EVEN 0x02
/*!
\brief No flow control.
*/
#define RADIOLIB_UART_FLOW_NONE 0x00
/*!
\brief RTS only.
*/
#define RADIOLIB_UART_FLOW_RTS 0x01
/*!
\brief CTS only.
*/
#define RADIOLIB_UART_FLOW_CTS 0x02
/*!
\brief Both RTS and CTS.
*/
#define RADIOLIB_UART_FLOW_BOTH 0x03
/*!
\}
*/
/*!
\defgroup status_codes Status Codes
\{
*/
// common status codes
/*!
\brief No error, method executed successfully.
*/
#define ERR_NONE 0
/*!
\brief There was an unexpected, unknown error. If you see this, something went incredibly wrong.
Your Arduino may be possessed, contact your local exorcist to resolve this error.
*/
#define ERR_UNKNOWN -1
// SX127x/RFM9x status codes
/*!
\brief Radio chip was not found during initialization. This can be caused by specifying wrong chip type in the constructor
(i.e. calling SX1272 constructor for SX1278 chip) or by a fault in your wiring (incorrect slave select pin).
*/
#define ERR_CHIP_NOT_FOUND -2
/*!
\brief Failed to allocate memory for temporary buffer. This can be cause by not enough RAM or by passing invalid pointer.
*/
#define ERR_MEMORY_ALLOCATION_FAILED -3
/*!
\brief Packet supplied to transmission method was longer than limit.
*/
#define ERR_PACKET_TOO_LONG -4
/*!
\brief Timed out waiting for transmission finish.
*/
#define ERR_TX_TIMEOUT -5
/*!
\brief Timed out waiting for incoming transmission.
*/
#define ERR_RX_TIMEOUT -6
/*!
\brief The calculated and expected CRCs of received packet do not match.
This means that the packet was damaged during transmission and should be sent again.
*/
#define ERR_CRC_MISMATCH -7
/*!
\brief The supplied bandwidth value is invalid for this module.
*/
#define ERR_INVALID_BANDWIDTH -8
/*!
\brief The supplied spreading factor value is invalid for this module.
*/
#define ERR_INVALID_SPREADING_FACTOR -9
/*!
\brief The supplied coding rate value is invalid for this module.
*/
#define ERR_INVALID_CODING_RATE -10
/*!
\brief Internal only.
*/
#define ERR_INVALID_BIT_RANGE -11
/*!
\brief The supplied frequency value is invalid for this module.
*/
#define ERR_INVALID_FREQUENCY -12
/*!
\brief The supplied output power value is invalid for this module.
*/
#define ERR_INVALID_OUTPUT_POWER -13
/*!
\brief LoRa preamble was detected during channel activity detection.
This means that there is some LoRa device currently transmitting in your channel.
*/
#define PREAMBLE_DETECTED -14
/*!
\brief No LoRa preambles were detected during channel activity detection. Your channel is free.
*/
#define CHANNEL_FREE -15
/*!
\brief Real value in SPI register does not match the expected one. This can be caused by faulty SPI wiring.
*/
#define ERR_SPI_WRITE_FAILED -16
/*!
\brief The supplied current limit value is invalid.
*/
#define ERR_INVALID_CURRENT_LIMIT -17
/*!
\brief The supplied preamble length is invalid.
*/
#define ERR_INVALID_PREAMBLE_LENGTH -18
/*!
\brief The supplied gain value is invalid.
*/
#define ERR_INVALID_GAIN -19
/*!
\brief User tried to execute modem-exclusive method on a wrong modem.
For example, this can happen when you try to change LoRa configuration when FSK modem is active.
*/
#define ERR_WRONG_MODEM -20
/*!
\brief The supplied number of RSSI samples is invalid.
*/
#define ERR_INVALID_NUM_SAMPLES -21
/*!
\brief The supplied RSSI offset is invalid.
*/
#define ERR_INVALID_RSSI_OFFSET -22
/*!
\brief The supplied encoding is invalid.
*/
#define ERR_INVALID_ENCODING -23
// RF69-specific status codes
/*!
\brief The supplied bit rate value is invalid.
*/
#define ERR_INVALID_BIT_RATE -101
/*!
\brief The supplied frequency deviation value is invalid.
*/
#define ERR_INVALID_FREQUENCY_DEVIATION -102
/*!
\brief The supplied bit rate to bandwidth ratio is invalid. See the module datasheet for more information.
*/
#define ERR_INVALID_BIT_RATE_BW_RATIO -103
/*!
\brief The supplied receiver bandwidth value is invalid.
*/
#define ERR_INVALID_RX_BANDWIDTH -104
/*!
\brief The supplied FSK sync word is invalid.
*/
#define ERR_INVALID_SYNC_WORD -105
/*!
\brief The supplied FSK data shaping option is invalid.
*/
#define ERR_INVALID_DATA_SHAPING -106
/*!
\brief The current modulation is invalid for the requested operation.
*/
#define ERR_INVALID_MODULATION -107
// ESP8266 status codes
/*!
\brief AT command failed to execute, or timed out.
*/
#define ERR_AT_FAILED -201
/*!
\brief Supplied URL is malformed or invalid.
*/
#define ERR_URL_MALFORMED -202
/*!
\brief AT command response was malformed.
*/
#define ERR_RESPONSE_MALFORMED_AT -203
/*!
\brief Data response was malformed.
*/
#define ERR_RESPONSE_MALFORMED -204
/*!
\brief MQTT broker rejected connection due to version mismatch.
*/
#define ERR_MQTT_CONN_VERSION_REJECTED -205
/*!
\brief MQTT broker rejected connection due to unknown ID.
*/
#define ERR_MQTT_CONN_ID_REJECTED -206
/*!
\brief Failed to establish connection with MQTT broker.
*/
#define ERR_MQTT_CONN_SERVER_UNAVAILABLE -207
/*!
\brief Supplied username/password combination is incorrect.
*/
#define ERR_MQTT_CONN_BAD_USERNAME_PASSWORD -208
/*!
\brief Unauthorized connection to MQTT broker.
*/
#define ERR_MQTT_CONN_NOT_AUTHORIZED -208
/*!
\brief Received packet ID does not match the expected ID.
*/
#define ERR_MQTT_UNEXPECTED_PACKET_ID -209
/*!
\brief No new packet was received since the last check.
*/
#define ERR_MQTT_NO_NEW_PACKET_AVAILABLE -210
/*!
\brief Successfully subscribed to MQTT topic with QoS 0.
*/
#define MQTT_SUBS_SUCCESS_QOS_0 0x00
/*!
\brief Successfully subscribed to MQTT topic with QoS 1.
*/
#define MQTT_SUBS_SUCCESS_QOS_1 0x01
/*!
\brief Successfully subscribed to MQTT topic with QoS 2.
*/
#define MQTT_SUBS_SUCCESS_QOS_2 0x02
/*!
\brief Failed to subscribe to MQTT topic.
*/
#define ERR_MQTT_SUBS_FAILED 0x80
// XBee status codes
/*!
\brief Failed to enter command mode.
*/
#define ERR_CMD_MODE_FAILED -301
/*!
\brief Received ZigBee frame is malformed.
*/
#define ERR_FRAME_MALFORMED -302
/*!
\brief Received ZigBee frame checksum does not match the calculated.
*/
#define ERR_FRAME_INCORRECT_CHECKSUM -303
/*!
\brief Received ZigBee frame with unexpected ID.
*/
#define ERR_FRAME_UNEXPECTED_ID -304
/*!
\brief Timed out waiting for response to ZigBee frame.
*/
#define ERR_FRAME_NO_RESPONSE -305
// RTTY status codes
/*!
\brief Supplied RTTY frequency shift is invalid for this module.
*/
#define ERR_INVALID_RTTY_SHIFT -401
/*!
\brief Supplied RTTY encoding is invalid.
*/
#define ERR_UNSUPPORTED_ENCODING -402
// nRF24-specific status codes
/*!
\brief Supplied data rate is invalid.
*/
#define ERR_INVALID_DATA_RATE -501
/*!
\brief Supplied address width is invalid.
*/
#define ERR_INVALID_ADDRESS_WIDTH -502
/*!
\brief Supplied data pipe number is invalid.
*/
#define ERR_INVALID_PIPE_NUMBER -503
/*!
\brief ACK packet from destination module was not received within 15 retries.
*/
#define ERR_ACK_NOT_RECEIVED -504
// CC1101-specific status codes
/*!
\brief Supplied number of broadcast addresses is invalid.
*/
#define ERR_INVALID_NUM_BROAD_ADDRS -601
// SX126x-specific status codes
/*!
\brief Supplied CRC configuration is invalid.
*/
#define ERR_INVALID_CRC_CONFIGURATION -701
/*!
\brief Detected LoRa transmission while scanning channel.
*/
#define LORA_DETECTED -702
/*!
\brief Supplied TCXO reference voltage is invalid.
*/
#define ERR_INVALID_TCXO_VOLTAGE -703
/*!
\brief Bit rate / bandwidth / frequency deviation ratio is invalid. See SX126x datasheet for details.
*/
#define ERR_INVALID_MODULATION_PARAMETERS -704
/*!
\brief SX126x timed out while waiting for complete SPI command.
*/
#define ERR_SPI_CMD_TIMEOUT -705
/*!
\brief SX126x received invalid SPI command.
*/
#define ERR_SPI_CMD_INVALID -706
/*!
\brief SX126x failed to execute SPI command.
*/
#define ERR_SPI_CMD_FAILED -707
/*!
\brief The supplied sleep period is invalid.
The specified sleep period is shorter than the time necessary to sleep and wake the hardware
including TCXO delay, or longer than the maximum possible
*/
#define ERR_INVALID_SLEEP_PERIOD -708
/*!
\brief The supplied Rx period is invalid.
The specified Rx period is shorter or longer than the hardware can handle.
*/
#define ERR_INVALID_RX_PERIOD -709
/*!
\}
*/
#endif