diff --git a/examples/Example4_WiFiSetupViaBle/Example4_WiFiSetupViaBle.ino b/examples/Example4_WiFiSetupViaBle/Example4_WiFiSetupViaBle.ino index 8367d43..d288ebf 100644 --- a/examples/Example4_WiFiSetupViaBle/Example4_WiFiSetupViaBle.ino +++ b/examples/Example4_WiFiSetupViaBle/Example4_WiFiSetupViaBle.ino @@ -18,6 +18,7 @@ void setup() { provider.begin(); Serial.print("Sensirion GadgetBle Lib initialized with deviceId = "); Serial.println(provider.getDeviceIdString()); + wifi.loadCredentials(); } uint16_t t = 0; diff --git a/src/IWifiLibraryWrapper.h b/src/IWifiLibraryWrapper.h index 67b787f..c6b19a0 100644 --- a/src/IWifiLibraryWrapper.h +++ b/src/IWifiLibraryWrapper.h @@ -37,6 +37,7 @@ class IWifiLibraryWrapper { public: virtual void setSsid(String ssid) = 0; virtual void connect(String password) = 0; + virtual void loadCredentials() = 0; virtual bool isConnected() = 0; virtual String localIP() = 0; }; diff --git a/src/WifiMultiLibraryWrapper.cpp b/src/WifiMultiLibraryWrapper.cpp index 043e364..e48f3f1 100644 --- a/src/WifiMultiLibraryWrapper.cpp +++ b/src/WifiMultiLibraryWrapper.cpp @@ -7,6 +7,23 @@ void WifiMultiLibraryWrapper::setSsid(String ssid) { void WifiMultiLibraryWrapper::connect(String password) { wiFiMulti.addAP(_ssid.c_str(), password.c_str()); wiFiMulti.run(); + + preferences.begin("wifiCreds", false); + preferences.putString("ssid", _ssid); + preferences.putString("pass", password); + preferences.end(); +} + +void WifiMultiLibraryWrapper::loadCredentials() { + preferences.begin("wifiCreds", true); + String ssid = preferences.getString("ssid", ""); + String pass = preferences.getString("pass", ""); + preferences.end(); + + if (ssid != "") { + wiFiMulti.addAP(ssid.c_str(), pass.c_str()); + wiFiMulti.run(); + } } bool WifiMultiLibraryWrapper::isConnected() { diff --git a/src/WifiMultiLibraryWrapper.h b/src/WifiMultiLibraryWrapper.h index 8d2ef82..be39b90 100644 --- a/src/WifiMultiLibraryWrapper.h +++ b/src/WifiMultiLibraryWrapper.h @@ -33,15 +33,18 @@ #include "IWifiLibraryWrapper.h" #include "WiFiMulti.h" +#include class WifiMultiLibraryWrapper: public IWifiLibraryWrapper { public: void setSsid(String ssid) override; void connect(String password) override; + void loadCredentials() override; bool isConnected() override; String localIP() override; private: + Preferences preferences; String _ssid = ""; WiFiMulti wiFiMulti; };