diff --git a/examples/Settings/MultiWiFi/MultiWiFi.ino b/examples/Settings/MultiWiFi/MultiWiFi.ino index f9e3e34..0601483 100644 --- a/examples/Settings/MultiWiFi/MultiWiFi.ino +++ b/examples/Settings/MultiWiFi/MultiWiFi.ino @@ -28,12 +28,11 @@ #include #endif -#include "FS.h" -#include "LittleFS.h" -#include "ArduinoJson.h" +#include +#include -#include "SinricPro.h" -#include "SinricProSwitch.h" +#include +#include #include "SinricProWiFiSettings.h" #define APP_KEY "" // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx" @@ -52,7 +51,7 @@ const char* primaryPassword = ""; // Set to your primary wifi's password const char* secondarySSID = ""; // Set to your secondary wifi's ssid const char* secondaryPassword = ""; // Set to your secondary wifi's password -SinricProWiFiSettings spws(primarySSID, primaryPassword, secondarySSID, secondaryPassword, "/wificonfig.dat"); +SinricProWiFiSettings spws(LittleFS, primarySSID, primaryPassword, secondarySSID, secondaryPassword, "/wificonfig.dat"); bool onSetModuleSetting(const String& id, const String& value) { // Handle module settings. diff --git a/examples/Settings/MultiWiFi/SinricProWiFiSettings.cpp b/examples/Settings/MultiWiFi/SinricProWiFiSettings.cpp index 8896ff3..c4e946c 100644 --- a/examples/Settings/MultiWiFi/SinricProWiFiSettings.cpp +++ b/examples/Settings/MultiWiFi/SinricProWiFiSettings.cpp @@ -1,9 +1,11 @@ #include "SinricProWiFiSettings.h" -SinricProWiFiSettings::SinricProWiFiSettings(const char* defaultPrimarySSID, const char* defaultPrimaryPassword, +SinricProWiFiSettings::SinricProWiFiSettings(fs::FS& fs, + const char* defaultPrimarySSID, const char* defaultPrimaryPassword, const char* defaultSecondarySSID, const char* defaultSecondaryPassword, const char* configFileName) - : defaultPrimarySSID(defaultPrimarySSID), defaultPrimaryPassword(defaultPrimaryPassword), + : fs(fs) + , defaultPrimarySSID(defaultPrimarySSID), defaultPrimaryPassword(defaultPrimaryPassword), defaultSecondarySSID(defaultSecondarySSID), defaultSecondaryPassword(defaultSecondaryPassword), configFileName(configFileName) { memset(&wifiSettings, 0, sizeof(wifiSettings)); @@ -18,8 +20,8 @@ void SinricProWiFiSettings::begin() { void SinricProWiFiSettings::updatePrimarySettings(const char* newSSID, const char* newPassword) { if (isValidSetting(newSSID, newPassword)) { - strncpy(wifiSettings.primarySSID, newSSID, sizeof(wifiSettings.primarySSID)); - strncpy(wifiSettings.primaryPassword, newPassword, sizeof(wifiSettings.primaryPassword)); + strlcpy(wifiSettings.primarySSID, newSSID, sizeof(wifiSettings.primarySSID)); + strlcpy(wifiSettings.primaryPassword, newPassword, sizeof(wifiSettings.primaryPassword)); saveToFile(); } else { Serial.println("Invalid Primary SSID or Password"); @@ -28,8 +30,8 @@ void SinricProWiFiSettings::updatePrimarySettings(const char* newSSID, const cha void SinricProWiFiSettings::updateSecondarySettings(const char* newSSID, const char* newPassword) { if (isValidSetting(newSSID, newPassword)) { - strncpy(wifiSettings.secondarySSID, newSSID, sizeof(wifiSettings.secondarySSID)); - strncpy(wifiSettings.secondaryPassword, newPassword, sizeof(wifiSettings.secondaryPassword)); + strlcpy(wifiSettings.secondarySSID, newSSID, sizeof(wifiSettings.secondarySSID)); + strlcpy(wifiSettings.secondaryPassword, newPassword, sizeof(wifiSettings.secondaryPassword)); saveToFile(); } else { Serial.println("Invalid Secondary SSID or Password"); @@ -44,12 +46,7 @@ void SinricProWiFiSettings::printSettings() const { } void SinricProWiFiSettings::saveToFile() { - - #if defined(ESP8266) - File file = LittleFS.open(configFileName, "w"); - #elif defined(ESP32) - File file = LittleFS.open(configFileName, FILE_WRITE); - #endif + File file = fs.open(configFileName, "w"); if (file) { file.write(reinterpret_cast(&wifiSettings), sizeof(wifiSettings)); @@ -58,11 +55,7 @@ void SinricProWiFiSettings::saveToFile() { } bool SinricProWiFiSettings::loadFromFile() { - #if defined(ESP8266) - File file = LittleFS.open(configFileName, "r"); - #elif defined(ESP32) - File file = LittleFS.open(configFileName, FILE_READ); - #endif + File file = fs.open(configFileName, "r"); if (file && file.size() == sizeof(wifiSettings)) { file.read(reinterpret_cast(&wifiSettings), sizeof(wifiSettings)); @@ -75,18 +68,18 @@ bool SinricProWiFiSettings::loadFromFile() { void SinricProWiFiSettings::saveDefaultSettings() { Serial.println("Saving default WiFi login!"); - strncpy(wifiSettings.primarySSID, defaultPrimarySSID, sizeof(wifiSettings.primarySSID)); - strncpy(wifiSettings.primaryPassword, defaultPrimaryPassword, sizeof(wifiSettings.primaryPassword)); - strncpy(wifiSettings.secondarySSID, defaultSecondarySSID, sizeof(wifiSettings.secondarySSID)); - strncpy(wifiSettings.secondaryPassword, defaultSecondaryPassword, sizeof(wifiSettings.secondaryPassword)); + strlcpy(wifiSettings.primarySSID, defaultPrimarySSID, sizeof(wifiSettings.primarySSID)); + strlcpy(wifiSettings.primaryPassword, defaultPrimaryPassword, sizeof(wifiSettings.primaryPassword)); + strlcpy(wifiSettings.secondarySSID, defaultSecondarySSID, sizeof(wifiSettings.secondarySSID)); + strlcpy(wifiSettings.secondaryPassword, defaultSecondaryPassword, sizeof(wifiSettings.secondaryPassword)); saveToFile(); } void SinricProWiFiSettings::deleteAllSettings() { memset(&wifiSettings, 0, sizeof(wifiSettings)); - if (LittleFS.exists(configFileName)) { - LittleFS.remove(configFileName); + if (fs.exists(configFileName)) { + fs.remove(configFileName); } Serial.println("All WiFi settings have been deleted."); } diff --git a/examples/Settings/MultiWiFi/SinricProWiFiSettings.h b/examples/Settings/MultiWiFi/SinricProWiFiSettings.h index b3352db..9724b50 100644 --- a/examples/Settings/MultiWiFi/SinricProWiFiSettings.h +++ b/examples/Settings/MultiWiFi/SinricProWiFiSettings.h @@ -1,8 +1,7 @@ #pragma once #include -#include "FS.h" -#include "LittleFS.h" +#include /** @@ -11,10 +10,10 @@ class SinricProWiFiSettings { public: struct wifi_settings_t { - char primarySSID[32]; ///< Primary SSID of the WiFi network. - char primaryPassword[64]; ///< Primary password of the WiFi network. - char secondarySSID[32]; ///< Secondary SSID of the WiFi network. - char secondaryPassword[64]; ///< Secondary password of the WiFi network. + char primarySSID[32+1]; ///< Primary SSID of the WiFi network. + char primaryPassword[64+1]; ///< Primary password of the WiFi network. + char secondarySSID[32+1]; ///< Secondary SSID of the WiFi network. + char secondaryPassword[64+1]; ///< Secondary password of the WiFi network. }; /** @@ -26,7 +25,8 @@ class SinricProWiFiSettings { * @param defaultSecondaryPassword Default secondary password. * @param configFileName File name for storing WiFi settings. */ - SinricProWiFiSettings(const char* defaultPrimarySSID, const char* defaultPrimaryPassword, + SinricProWiFiSettings(fs::FS& fs, + const char* defaultPrimarySSID, const char* defaultPrimaryPassword, const char* defaultSecondarySSID, const char* defaultSecondaryPassword, const char* configFileName); @@ -71,6 +71,7 @@ class SinricProWiFiSettings { const wifi_settings_t& getWiFiSettings() const; private: + fs::FS& fs; // filesystem to be used const char* defaultPrimarySSID; ///< Default primary SSID. const char* defaultPrimaryPassword; ///< Default primary password. const char* defaultSecondarySSID; ///< Default secondary SSID.