You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Farm-Data-Relay-System/src/fdrs_datatypes.h

157 lines
3.2 KiB
C

// A list of all datatypes you can use within FDRS.
// If you are missing any data type, please open an issue at:
// https://github.com/timmbogner/Farm-Data-Relay-System/issues
typedef struct FDRSPeer {
uint8_t mac[6];
uint32_t last_seen = 0;
} FDRSPeer;
typedef struct __attribute__((packed)) DataReading {
float d;
uint16_t id;
uint8_t t;
} DataReading;
typedef struct __attribute__((packed)) SystemPacket {
uint8_t cmd;
uint32_t param;
} SystemPacket;
enum crcResult {
CRC_NULL,
CRC_OK,
CRC_BAD,
} returnCRC;
enum cmd_t {
cmd_clear,
cmd_ping,
cmd_add,
cmd_ack,
cmd_time
};
enum ping_t {
ping_request,
ping_reply
};
enum pingstate_t {
stReady,
stInProcess,
stCrcMismatch,
stCrcMatch,
stCompleted
};
enum
{
event_clear,
event_espnowg,
event_espnow1,
event_espnow2,
event_serial,
event_mqtt,
event_lorag,
event_lora1,
event_lora2,
event_internal
};
// Interface type that is the time source
enum TmNetIf {
TMIF_NONE,
TMIF_LORA,
TMIF_ESPNOW,
TMIF_SERIAL,
TMIF_LOCAL,
};
// Local time source that is setting the time
enum TmSource {
TMS_NONE,
TMS_NET,
TMS_RTC,
TMS_NTP,
TMS_GPS,
};
struct TimeSource {
TmNetIf tmNetIf;
uint16_t tmAddress;
TmSource tmSource;
unsigned long tmLastTimeSet;
};
struct DRRingBuffer {
DataReading *dr;
uint16_t *address;
uint startIdx;
uint endIdx;
uint size;
};
struct SPRingBuffer {
SystemPacket *sp;
uint16_t *address;
uint startIdx;
uint endIdx;
uint size;
};
struct Ping {
pingstate_t status = stReady;
unsigned long start;
uint timeout;
uint16_t address;
uint32_t response = __UINT32_MAX__;
};
#ifndef ESP32
typedef int esp_err_t;
#define ESP_FAIL 0
#define ESP_OK 1
#endif
#ifndef FDRS_DATA_TYPES
#define FDRS_DATA_TYPES
#define STATUS_T 0 // Status
#define TEMP_T 1 // Temperature
#define TEMP2_T 2 // Temperature #2
#define HUMIDITY_T 3 // Relative Humidity
#define PRESSURE_T 4 // Atmospheric Pressure
#define LIGHT_T 5 // Light (lux)
#define SOIL_T 6 // Soil Moisture
#define SOIL2_T 7 // Soil Moisture #2
#define SOILR_T 8 // Soil Resistance
#define SOILR2_T 9 // Soil Resistance #2
#define OXYGEN_T 10 // Oxygen
#define CO2_T 11 // Carbon Dioxide
#define WINDSPD_T 12 // Wind Speed
#define WINDHDG_T 13 // Wind Direction
#define RAINFALL_T 14 // Rainfall
#define MOTION_T 15 // Motion
#define VOLTAGE_T 16 // Voltage
#define VOLTAGE2_T 17 // Voltage #2
#define CURRENT_T 18 // Current
#define CURRENT2_T 19 // Current #2
#define IT_T 20 // Iterations
#define LATITUDE_T 21 // GPS Latitude
#define LONGITUDE_T 22 // GPS Longitude
#define ALTITUDE_T 23 // GPS Altitude
#define HDOP_T 24 // GPS HDOP
#define LEVEL_T 25 // Fluid Level
#define UV_T 26 // UV
#define PM1_T 27 // 1 Particles
#define PM2_5_T 28 // 2.5 Particles
#define PM10_T 29 // 10 Particles
#define POWER_T 30 // Power
#define POWER2_T 31 // Power #2
#define ENERGY_T 32 // Energy
#define ENERGY2_T 33 // Energy #2
#endif //FDRS_DATA_TYPES