Remove stuff that came from a different app when this was derived.
Prepare to add DNSServer for captive portal.
This commit is contained in:
@@ -9,16 +9,20 @@
|
||||
#define CFG_NAMESIZE 32
|
||||
#define CFG_SSIDSIZE 32
|
||||
#define CFG_PASSSIZE 64
|
||||
#define CFG_UURLSIZE 64
|
||||
#define CFG_UPDURLSIZE 64
|
||||
#define CFG_NTPSSIZE 64
|
||||
|
||||
/// Provides a handy interface for WiFi configuration.
|
||||
/// Provides a handy interface for WiFi configuration and user NV data.
|
||||
///
|
||||
/// Because the WiFi needs to have its configuration managed through
|
||||
/// non-volatile memory.
|
||||
///
|
||||
/// @code
|
||||
/// WiFiConfiguration config;
|
||||
/// ...
|
||||
/// config.load();
|
||||
/// ssid = config.getSSID();
|
||||
/// pass = config.getPassword();
|
||||
/// String ssid = config.getSSID();
|
||||
/// String pass = config.getPassword();
|
||||
/// ...
|
||||
/// WiFi.begin(ssid.c_str(), pass.c_str());
|
||||
///
|
||||
@@ -26,29 +30,174 @@
|
||||
///
|
||||
class ConfigManager {
|
||||
public:
|
||||
ConfigManager();
|
||||
void load();
|
||||
void save();
|
||||
void factoryReset();
|
||||
String getName();
|
||||
void setName(String _name);
|
||||
String getSSID();
|
||||
void setSSID(String _ssid);
|
||||
String getPassword();
|
||||
void setPassword(String _password);
|
||||
String getURL();
|
||||
void setURL(String _url);
|
||||
uint16_t getOnRef();
|
||||
void setOnRef(uint16 onR);
|
||||
uint16_t getOffRef();
|
||||
void setOffRef(uint16 offR);
|
||||
uint16_t getAutoOff();
|
||||
void setAutoOff(uint16 autoOff);
|
||||
#if 0
|
||||
String getNTPServerName();
|
||||
void setNTPServerName(String _name);
|
||||
#endif
|
||||
|
||||
/// Data structure that is used for 'factory reset' of this node,
|
||||
/// where all setup data is erased. This reset state can include
|
||||
/// specific settings, such as the device name (as it will appear
|
||||
/// on the network, and the default software update server, and so on.
|
||||
typedef struct {
|
||||
const char * name; ///< the device name
|
||||
const char * UPDURL; ///< the URL of a SW update server
|
||||
const char * NTPURL; ///< The URL of an NTP server
|
||||
} ConfigDefaults_t;
|
||||
|
||||
/// load checks the version of the image for validity.
|
||||
///
|
||||
typedef enum {
|
||||
MATCHING, ///< The current version matches the expected version
|
||||
IS_OLDER, ///< [Newer firmware] detected an older configuration
|
||||
IS_NEWER, ///< detected a configuration that is newer than this app knows.
|
||||
IS_BROKEN, ///< format check failed, this image is bad.
|
||||
} FirmwareCheck_t;
|
||||
|
||||
/// Instantiate the WiFi Configuration Manager, which also manages
|
||||
/// user non-volatile storage.
|
||||
///
|
||||
/// This creates a RAM cache (typically 512B), where information is
|
||||
/// held. This is then saved to non-volatile (save), or overwritten
|
||||
/// from non-volatile (load).
|
||||
///
|
||||
/// Instantiation does not automatically load from non-volatile.
|
||||
///
|
||||
/// @param[in] defaults is an optional pointer to the default information.
|
||||
///
|
||||
ConfigManager(const ConfigDefaults_t * defaults = NULL);
|
||||
|
||||
/// Destructor, which is usually not used in an embedded system.
|
||||
///
|
||||
~ConfigManager();
|
||||
|
||||
/// loads the information from non-volatile storage into RAM
|
||||
///
|
||||
/// @returns status of the firmware check. @see FirmwareCheck_t
|
||||
///
|
||||
FirmwareCheck_t load();
|
||||
|
||||
/// get the current firmware version
|
||||
///
|
||||
/// specific software may be able to upgrade (or even downgrade) the
|
||||
/// non-volatile data storage format.
|
||||
///
|
||||
/// @returns the format version number (only useful if load is not broken.
|
||||
///
|
||||
uint8_t getFormatVersion();
|
||||
|
||||
|
||||
/// saves the information to non-volatile.
|
||||
///
|
||||
void save();
|
||||
|
||||
/// Resets the RAM information to factory defaults, completely wiping
|
||||
/// all data, so it cannot be extracted.
|
||||
///
|
||||
/// To complete the wipe, be sure to issue to the save command.
|
||||
///
|
||||
void factoryReset();
|
||||
|
||||
/// get the name of this device, as it will appear on the network.
|
||||
///
|
||||
/// @returns string of the name.
|
||||
///
|
||||
String getName();
|
||||
|
||||
/// set the name of this device, to a maximum length of CFG_NAMESIZE.
|
||||
///
|
||||
/// @param[in] _name is the name to assign it.
|
||||
///
|
||||
void setName(String _name);
|
||||
|
||||
/// get the ssid that this node is assigned to.
|
||||
///
|
||||
/// @returns the SSID, or a pointer to NULL if none set.
|
||||
///
|
||||
String getSSID();
|
||||
|
||||
/// set the ssid that this node is assigned to.
|
||||
///
|
||||
/// @param[in] _ssid to assign this device to, to a maximum length of CFG_SSIDSIZE
|
||||
///
|
||||
void setSSID(String _ssid);
|
||||
|
||||
/// get the passcode that this node will use with the joined ssid.
|
||||
///
|
||||
/// @returns the passcode.
|
||||
///
|
||||
String getPassword();
|
||||
|
||||
/// set the passcode that this node uses.
|
||||
///
|
||||
/// @param[in] passcode to assign this device to, to a maximum length of CFG_PASSSIZE
|
||||
///
|
||||
void setPassword(String _password);
|
||||
|
||||
/// get the URL that this node will use for software updates
|
||||
///
|
||||
/// @returns the url.
|
||||
///
|
||||
String getURL();
|
||||
|
||||
/// set the URL that this node will use for software updates
|
||||
///
|
||||
/// @param[in] _url to assign this device to, to a maximum length of CFG_UPDURLSIZE
|
||||
///
|
||||
void setURL(String _url);
|
||||
|
||||
/// get the URL of the NTP server that this node will use for setting the clock
|
||||
///
|
||||
/// @returns the url.
|
||||
///
|
||||
String getNTPServerName();
|
||||
|
||||
/// set the URL of the NTP server that this node will use for software updates
|
||||
///
|
||||
/// @param[in] _url to assign this device to, to a maximum length of CFG_NTPSSIZE
|
||||
///
|
||||
void setNTPServerName(String _url);
|
||||
|
||||
/// get a pointer to the portion of the data that will be saved to non-volatile
|
||||
///
|
||||
/// This points to the block of memory that is for user settings. The user code
|
||||
/// will typically create a structure, and overlay it on this location.
|
||||
///
|
||||
/// The size is fixed at compile time, but may be queried with getUserDataSize()
|
||||
/// to ensure that there is no buffer overrun.
|
||||
///
|
||||
/// @returns the pointer to the memory for the user to use.
|
||||
///
|
||||
uint8_t * getUserDataHandle();
|
||||
|
||||
/// get the size of the user data block that can be saved to non-volatile.
|
||||
///
|
||||
/// @returns the size (in bytes) of the user space.
|
||||
///
|
||||
int getUserDataSize();
|
||||
|
||||
private:
|
||||
|
||||
#define EEROM_SIZE 512
|
||||
|
||||
// Change this when it is required to force a reinitialization
|
||||
//
|
||||
#define EXPECTED_FMT 0x04
|
||||
|
||||
#define SYSTEMSIZE (2 + CFG_NAMESIZE + CFG_SSIDSIZE + CFG_PASSSIZE + CFG_UPDURLSIZE + CFG_NTPSSIZE)
|
||||
#define USERSIZE (EEROM_SIZE - SYSTEMSIZE)
|
||||
|
||||
typedef struct {
|
||||
uint8_t format[2]; // Format of this data structure, and ~format check
|
||||
struct info {
|
||||
char name[CFG_NAMESIZE]; // Network Discoverable Name of this node
|
||||
char ssid[CFG_SSIDSIZE]; // SSID of the saved network [max length defined by standard]
|
||||
char pass[CFG_PASSSIZE]; // PASScode of the saved network
|
||||
char UPDURL[CFG_UPDURLSIZE]; // URL of the trusted server with code updates
|
||||
char NTPURL[CFG_NTPSSIZE]; // Name or IP of the NTP Server
|
||||
} info;
|
||||
uint8_t userData[USERSIZE]; // User data here and to the EEROM_SIZE end.
|
||||
} NVConfig_04_t; // This layout matches EXPECTED_FMT == 04
|
||||
|
||||
NVConfig_04_t Configuration; // the instantiation of the Configuration
|
||||
|
||||
const ConfigDefaults_t * defaults;
|
||||
};
|
||||
|
||||
#endif // !WIFICONFIGURATION_H
|
||||
|
||||
Reference in New Issue
Block a user