Skip to content

Commit 906c9ac

Browse files
authored
Merge pull request #399 from sivar2311/master
Fixed and improved WiFiSettings example
2 parents 9098807 + 8e3d035 commit 906c9ac

File tree

3 files changed

+29
-36
lines changed

3 files changed

+29
-36
lines changed

examples/Settings/MultiWiFi/MultiWiFi.ino

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,11 @@
2828
#include <WiFi.h>
2929
#endif
3030

31-
#include "FS.h"
32-
#include "LittleFS.h"
33-
#include "ArduinoJson.h"
31+
#include <LittleFS.h>
32+
#include <ArduinoJson.h>
3433

35-
#include "SinricPro.h"
36-
#include "SinricProSwitch.h"
34+
#include <SinricPro.h>
35+
#include <SinricProSwitch.h>
3736
#include "SinricProWiFiSettings.h"
3837

3938
#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
5251
const char* secondarySSID = ""; // Set to your secondary wifi's ssid
5352
const char* secondaryPassword = ""; // Set to your secondary wifi's password
5453

55-
SinricProWiFiSettings spws(primarySSID, primaryPassword, secondarySSID, secondaryPassword, "/wificonfig.dat");
54+
SinricProWiFiSettings spws(LittleFS, primarySSID, primaryPassword, secondarySSID, secondaryPassword, "/wificonfig.dat");
5655

5756
bool onSetModuleSetting(const String& id, const String& value) {
5857
// Handle module settings.

examples/Settings/MultiWiFi/SinricProWiFiSettings.cpp

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
#include "SinricProWiFiSettings.h"
22

3-
SinricProWiFiSettings::SinricProWiFiSettings(const char* defaultPrimarySSID, const char* defaultPrimaryPassword,
3+
SinricProWiFiSettings::SinricProWiFiSettings(fs::FS& fs,
4+
const char* defaultPrimarySSID, const char* defaultPrimaryPassword,
45
const char* defaultSecondarySSID, const char* defaultSecondaryPassword,
56
const char* configFileName)
6-
: defaultPrimarySSID(defaultPrimarySSID), defaultPrimaryPassword(defaultPrimaryPassword),
7+
: fs(fs)
8+
, defaultPrimarySSID(defaultPrimarySSID), defaultPrimaryPassword(defaultPrimaryPassword),
79
defaultSecondarySSID(defaultSecondarySSID), defaultSecondaryPassword(defaultSecondaryPassword),
810
configFileName(configFileName) {
911
memset(&wifiSettings, 0, sizeof(wifiSettings));
@@ -18,8 +20,8 @@ void SinricProWiFiSettings::begin() {
1820

1921
void SinricProWiFiSettings::updatePrimarySettings(const char* newSSID, const char* newPassword) {
2022
if (isValidSetting(newSSID, newPassword)) {
21-
strncpy(wifiSettings.primarySSID, newSSID, sizeof(wifiSettings.primarySSID));
22-
strncpy(wifiSettings.primaryPassword, newPassword, sizeof(wifiSettings.primaryPassword));
23+
strlcpy(wifiSettings.primarySSID, newSSID, sizeof(wifiSettings.primarySSID));
24+
strlcpy(wifiSettings.primaryPassword, newPassword, sizeof(wifiSettings.primaryPassword));
2325
saveToFile();
2426
} else {
2527
Serial.println("Invalid Primary SSID or Password");
@@ -28,8 +30,8 @@ void SinricProWiFiSettings::updatePrimarySettings(const char* newSSID, const cha
2830

2931
void SinricProWiFiSettings::updateSecondarySettings(const char* newSSID, const char* newPassword) {
3032
if (isValidSetting(newSSID, newPassword)) {
31-
strncpy(wifiSettings.secondarySSID, newSSID, sizeof(wifiSettings.secondarySSID));
32-
strncpy(wifiSettings.secondaryPassword, newPassword, sizeof(wifiSettings.secondaryPassword));
33+
strlcpy(wifiSettings.secondarySSID, newSSID, sizeof(wifiSettings.secondarySSID));
34+
strlcpy(wifiSettings.secondaryPassword, newPassword, sizeof(wifiSettings.secondaryPassword));
3335
saveToFile();
3436
} else {
3537
Serial.println("Invalid Secondary SSID or Password");
@@ -44,12 +46,7 @@ void SinricProWiFiSettings::printSettings() const {
4446
}
4547

4648
void SinricProWiFiSettings::saveToFile() {
47-
48-
#if defined(ESP8266)
49-
File file = LittleFS.open(configFileName, "w");
50-
#elif defined(ESP32)
51-
File file = LittleFS.open(configFileName, FILE_WRITE);
52-
#endif
49+
File file = fs.open(configFileName, "w");
5350

5451
if (file) {
5552
file.write(reinterpret_cast<const uint8_t*>(&wifiSettings), sizeof(wifiSettings));
@@ -58,11 +55,7 @@ void SinricProWiFiSettings::saveToFile() {
5855
}
5956

6057
bool SinricProWiFiSettings::loadFromFile() {
61-
#if defined(ESP8266)
62-
File file = LittleFS.open(configFileName, "r");
63-
#elif defined(ESP32)
64-
File file = LittleFS.open(configFileName, FILE_READ);
65-
#endif
58+
File file = fs.open(configFileName, "r");
6659

6760
if (file && file.size() == sizeof(wifiSettings)) {
6861
file.read(reinterpret_cast<uint8_t*>(&wifiSettings), sizeof(wifiSettings));
@@ -75,18 +68,18 @@ bool SinricProWiFiSettings::loadFromFile() {
7568
void SinricProWiFiSettings::saveDefaultSettings() {
7669
Serial.println("Saving default WiFi login!");
7770

78-
strncpy(wifiSettings.primarySSID, defaultPrimarySSID, sizeof(wifiSettings.primarySSID));
79-
strncpy(wifiSettings.primaryPassword, defaultPrimaryPassword, sizeof(wifiSettings.primaryPassword));
80-
strncpy(wifiSettings.secondarySSID, defaultSecondarySSID, sizeof(wifiSettings.secondarySSID));
81-
strncpy(wifiSettings.secondaryPassword, defaultSecondaryPassword, sizeof(wifiSettings.secondaryPassword));
71+
strlcpy(wifiSettings.primarySSID, defaultPrimarySSID, sizeof(wifiSettings.primarySSID));
72+
strlcpy(wifiSettings.primaryPassword, defaultPrimaryPassword, sizeof(wifiSettings.primaryPassword));
73+
strlcpy(wifiSettings.secondarySSID, defaultSecondarySSID, sizeof(wifiSettings.secondarySSID));
74+
strlcpy(wifiSettings.secondaryPassword, defaultSecondaryPassword, sizeof(wifiSettings.secondaryPassword));
8275

8376
saveToFile();
8477
}
8578

8679
void SinricProWiFiSettings::deleteAllSettings() {
8780
memset(&wifiSettings, 0, sizeof(wifiSettings));
88-
if (LittleFS.exists(configFileName)) {
89-
LittleFS.remove(configFileName);
81+
if (fs.exists(configFileName)) {
82+
fs.remove(configFileName);
9083
}
9184
Serial.println("All WiFi settings have been deleted.");
9285
}

examples/Settings/MultiWiFi/SinricProWiFiSettings.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#pragma once
22

33
#include <Arduino.h>
4-
#include "FS.h"
5-
#include "LittleFS.h"
4+
#include <FS.h>
65

76

87
/**
@@ -11,10 +10,10 @@
1110
class SinricProWiFiSettings {
1211
public:
1312
struct wifi_settings_t {
14-
char primarySSID[32]; ///< Primary SSID of the WiFi network.
15-
char primaryPassword[64]; ///< Primary password of the WiFi network.
16-
char secondarySSID[32]; ///< Secondary SSID of the WiFi network.
17-
char secondaryPassword[64]; ///< Secondary password of the WiFi network.
13+
char primarySSID[32+1]; ///< Primary SSID of the WiFi network.
14+
char primaryPassword[64+1]; ///< Primary password of the WiFi network.
15+
char secondarySSID[32+1]; ///< Secondary SSID of the WiFi network.
16+
char secondaryPassword[64+1]; ///< Secondary password of the WiFi network.
1817
};
1918

2019
/**
@@ -26,7 +25,8 @@ class SinricProWiFiSettings {
2625
* @param defaultSecondaryPassword Default secondary password.
2726
* @param configFileName File name for storing WiFi settings.
2827
*/
29-
SinricProWiFiSettings(const char* defaultPrimarySSID, const char* defaultPrimaryPassword,
28+
SinricProWiFiSettings(fs::FS& fs,
29+
const char* defaultPrimarySSID, const char* defaultPrimaryPassword,
3030
const char* defaultSecondarySSID, const char* defaultSecondaryPassword,
3131
const char* configFileName);
3232

@@ -71,6 +71,7 @@ class SinricProWiFiSettings {
7171
const wifi_settings_t& getWiFiSettings() const;
7272

7373
private:
74+
fs::FS& fs; // filesystem to be used
7475
const char* defaultPrimarySSID; ///< Default primary SSID.
7576
const char* defaultPrimaryPassword; ///< Default primary password.
7677
const char* defaultSecondarySSID; ///< Default secondary SSID.

0 commit comments

Comments
 (0)