// // Created by MightyPork on 2018/11/18. // #ifndef CSPEMU_SETTINGS_H #define CSPEMU_SETTINGS_H #include #include #include #include #include #include #define CONSOLE_TELNET_PORT CONFIG_CONSOLE_TELNET_PORT #define CONSOLE_PW_LEN CONFIG_CONSOLE_PW_LEN #define USE_CAPTIVE_PORTAL 0 extern nvs_handle g_nvs_storage; #define NTP_SRV_LEN 32 #define DEF_NTP_SRV "pool.ntp.org" #define CO2_CALIB_DEF ({0,0,0,0,0}) /* type , name , suffix , defval , generate load/save funcs * , , save fn - use 'none' if unused to avoid build errors * , , , save fn var prefix */ #define SETTINGS_XTABLE() \ X(bool , wifi_enabled , , 1 , true , bool , &) /* ssid and pass are stored in flash by SDK funcs */ \ X(bool , sta_enabled , , 1 , true , bool , &) \ X(bool , ap_enabled , , 0 , true , bool , &) \ X(bool , console_echo , , 1 , true , bool , &) /* Console modes */ \ X(bool , console_ansi , , 1 , true , bool , &) \ X(char , console_pw, [CONSOLE_PW_LEN], "" , false , none , ) \ X(bool , ntp_enable , , 1 , true , bool , &) \ X(char , ntp_srv ,[NTP_SRV_LEN], DEF_NTP_SRV , false, none , ) \ X(uint16_t , co2_calib ,[5], {}, false, none , ) \ X(uint8_t , bsec_state ,[BSEC_MAX_STATE_BLOB_SIZE], {}, false, none , ) \ X(bool , dhcp_wd_enable , , 1 , true , bool , &) \ X(bool , dhcp_enable , , 1 , true , bool , &) \ X(uint32_t , static_ip , , 0 , true , u32 , &) \ X(uint32_t , static_ip_mask , , 0x00ffffff , true , u32 , &) /* 255.255.255.0 */ \ X(uint32_t , static_ip_gw , , 0x0100a8c0 , true , u32 , &) /* 192.168.0.1 */ \ X(uint32_t , ap_ip , , 0x0100a8c0 , true , u32 , &) /* 192.168.0.1 */ \ X(uint32_t , static_dns , , 0x08080808 , true , u32 , &) /* 8.8.8.8 */ enum settings_key_enum { #undef X #define X(pre,name,post,def,gen_nvs,nvs_format,save_prefix) \ SETTINGS_##name, SETTINGS_ALL, SETTINGS_XTABLE() // unfortunately the last bit is lowercase }; /** * Init the NVS namespace */ void settings_init(void); /** * Load settings from the NVS */ void settings_load(void); /** * Save the settings object to NVS */ void settings_persist(enum settings_key_enum what); /** * Load default rtable into the settings struct * (called when the saved config is rejected by CSP) */ void settings_load_default_rtable(void); /** * Save the current CSP rtable into the settings object (can then be persisted) */ void cspemu_settings_store_rtable(void); extern struct cspemu_settings g_Settings; extern struct cspemu_globals g_State; struct cspemu_globals { bool wifi_inited; }; struct cspemu_settings { #undef X #define X(pre,name,post,def,gen_nvs,nvs_format,save_prefix) \ pre name post; SETTINGS_XTABLE() }; uint16_t app_get_bootcount(); #endif //CSPEMU_SETTINGS_H