wellhub_reloaded/main/Settings.h

131 lines
2.3 KiB
C++

/// © MiroZ 2024
#ifndef __SETTINGS_H__
#define __SETTINGS_H__
#include <stdint.h>
#pragma pack(push, 1)
struct SETTINGS_LEGACY
{
char WIFI_SSID[32];
char WIFI_PASS[32];
uint8_t ID[3];
uint16_t GROUP_ID;
uint16_t THR_UP_PRESSURE;
uint16_t THR_UP_RADAR;
uint16_t THR_UP_LIGHT;
uint16_t THR_UP_TEMPERATURE;
uint16_t THR_UP_HUMIMDITY;
uint16_t THR_UP_CO2;
uint16_t THR_UP_VOC;
uint16_t THR_DN_PRESSURE;
uint16_t THR_DN_RADAR;
uint16_t THR_DN_LIGHT;
uint16_t THR_DN_TEMPERATURE;
uint16_t THR_DN_HUMIMDITY;
uint16_t THR_DN_CO2;
uint16_t THR_DN_VOC;
uint8_t LPF_PRESSURE;
uint8_t LPF_RADAR;
uint8_t LPF_LIGHT;
uint8_t LPF_TEMPERATURE;
uint8_t LPF_HUMIMDITY;
uint8_t LPF_CO2;
uint8_t LPF_VOC;
uint8_t KLPRN_PRESSURE;
uint8_t KLPRN_RADAR;
uint8_t KLPRN_LIGHT;
uint8_t KLPRN_TEMPERATURE;
uint8_t KLPRN_HUMIMDITY;
uint8_t KLPRN_CO2;
uint8_t KLPRN_VOC;
uint8_t KLSN_PRESSURE;
uint8_t KLSN_RADAR;
uint8_t KLSN_LIGHT;
uint8_t KLSN_TEMPERATURE;
uint8_t KLSN_HUMIMDITY;
uint8_t KLSN_CO2;
uint8_t KLSN_VOC;
uint8_t KLEE_PRESSURE;
uint8_t KLEE_RADAR;
uint8_t KLEE_LIGHT;
uint8_t KLEE_TEMPERATURE;
uint8_t KLEE_HUMIMDITY;
uint8_t KLEE_CO2;
uint8_t KLEE_VOC;
uint8_t FS_RATIO;
uint8_t NC_REP_PERIOD;
uint16_t BT_SCN_EVERY;
uint8_t BT_SCN_TIME_LENGTH;
uint8_t ENC_KEY[16];
uint8_t LED_SCHEMA[10];
uint8_t MQTT_ADDR[4];
uint16_t MQTT_PORT;
uint8_t REPORTING_PERIOD;
uint8_t QUEUE[512];
char WIFI_SSID2[32];
char WIFI_PASS2[32];
uint32_t TEMP_OFFSET;
};
#define SETTINGS_VERSION 2 // cannot be 0
#define SETTINGS_NUM_WIFI_ENTRIES 8
// wifi definitions
struct WIFI_ENTRY
{
char ssid[33];
char pwd[33];
};
struct WIFI
{
uint8_t num;
uint8_t always_scan_before_connect;
struct WIFI_ENTRY entry[SETTINGS_NUM_WIFI_ENTRIES];
uint8_t selected;
};
//
struct LED
{
uint8_t brightness;
};
struct NV_DATA
{
uint32_t version;
struct LED led;
struct WIFI wifi;
};
#pragma pack(pop)
class Settings
{
protected:
const char * m_namespace = "nv_data";
const char * m_dataname = "data_01";
struct NV_DATA m_data;
void setDefaults();
private:
Settings();
public:
static Settings & getInstance();
public:
inline struct NV_DATA & data() {return m_data;};
uint32_t loadData();
uint32_t saveData();
};
#define SETTINGS Settings::getInstance().data()
#define SETTINGS_SAVE Settings::getInstance().saveData()
#endif /* __SETTINGS_H__ */