Configuration (Settings) file
This commit is contained in:
parent
8bc7a5242f
commit
7ad64c2e51
@ -13,6 +13,7 @@ BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
PointerAlignment: Left
|
||||
|
||||
AlwaysBreakAfterReturnType: None
|
||||
PenaltyReturnTypeOnItsOwnLine: 1000000
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
.vscode/ipch
|
||||
include/settings.h
|
27
.vscode/settings.json
vendored
27
.vscode/settings.json
vendored
@ -18,6 +18,31 @@
|
||||
"ostream": "cpp",
|
||||
"sstream": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"utility": "cpp"
|
||||
"utility": "cpp",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"list": "cpp",
|
||||
"exception": "cpp",
|
||||
"functional": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"limits": "cpp",
|
||||
"new": "cpp",
|
||||
"numeric": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp"
|
||||
}
|
||||
}
|
@ -1,13 +1,17 @@
|
||||
#include <Arduino.h>
|
||||
#include <EEPROM.h>
|
||||
|
||||
#include <array>
|
||||
|
||||
#define EEPROM_SIZE 64
|
||||
|
||||
class Config {
|
||||
public:
|
||||
typedef struct {
|
||||
char wifiSSID[16];
|
||||
char wifiPass[16];
|
||||
typedef struct Data {
|
||||
std::array<char, 16> wifiSSID;
|
||||
std::array<char, 16> wifiPass;
|
||||
|
||||
Data &operator=(const Data &);
|
||||
} Data;
|
||||
|
||||
Config(){};
|
||||
@ -24,6 +28,11 @@ public:
|
||||
|
||||
const Data &data();
|
||||
|
||||
void printConfig();
|
||||
|
||||
private:
|
||||
Data _data;
|
||||
};
|
||||
};
|
||||
|
||||
bool operator==(const Config::Data &a, const Config::Data &b);
|
||||
bool operator!=(const Config::Data &a, const Config::Data &b);
|
||||
|
12
include/settings.h
Normal file
12
include/settings.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*****************************************************
|
||||
* Configurations: *
|
||||
* *
|
||||
* Copy or renamed this file to "settings.h" *
|
||||
* and edit it to your needs *
|
||||
* *
|
||||
* The settings will be stored to the controller if *
|
||||
* different from the previous/current configuration *
|
||||
****************************************************/
|
||||
|
||||
const char* wifiSSID = "mySSID";
|
||||
const char* wifiPass = "myPass";
|
12
include/settings.h.orig
Normal file
12
include/settings.h.orig
Normal file
@ -0,0 +1,12 @@
|
||||
/*****************************************************
|
||||
* Configurations: *
|
||||
* *
|
||||
* Copy or renamed this file to "settings.h" *
|
||||
* and edit it to your needs *
|
||||
* *
|
||||
* The settings will be stored to the controller if *
|
||||
* different from the previous/current configuration *
|
||||
****************************************************/
|
||||
|
||||
const char* wifiSSID = "mySSID";
|
||||
const char* wifiPass = "myPass";
|
@ -5,11 +5,11 @@ void Config::init() {
|
||||
}
|
||||
|
||||
void Config::setSSID(String ssid) {
|
||||
strcpy(_data.wifiSSID, ssid.c_str());
|
||||
strcpy(_data.wifiSSID.data(), ssid.c_str());
|
||||
};
|
||||
|
||||
void Config::setWifiPass(String pass) {
|
||||
strcpy(_data.wifiPass, pass.c_str());
|
||||
strcpy(_data.wifiPass.data(), pass.c_str());
|
||||
};
|
||||
|
||||
void Config::load() {
|
||||
@ -36,4 +36,22 @@ void Config::save(Config::Data &data) {
|
||||
|
||||
const Config::Data &Config::data() {
|
||||
return _data;
|
||||
}
|
||||
|
||||
void Config::printConfig() {
|
||||
Serial.printf("wifiSSID: %s\n", _data.wifiSSID.data());
|
||||
Serial.printf("wifiPass: %s\n", _data.wifiPass.data());
|
||||
}
|
||||
|
||||
Config::Data &Config::Data::operator=(const Config::Data &other) {
|
||||
this->wifiSSID = other.wifiSSID;
|
||||
this->wifiPass = other.wifiPass;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool operator==(const Config::Data &a, const Config::Data &b) {
|
||||
return (a.wifiSSID == b.wifiSSID && a.wifiPass == b.wifiPass);
|
||||
}
|
||||
bool operator!=(const Config::Data &a, const Config::Data &b) {
|
||||
return !(a == b);
|
||||
}
|
30
src/main.cpp
30
src/main.cpp
@ -1,10 +1,12 @@
|
||||
#include <Arduino.h>
|
||||
#include <WiFi.h>
|
||||
|
||||
// Project includes
|
||||
#include "OSCRemote.h"
|
||||
#include "Vbat.h"
|
||||
#include "body.h"
|
||||
#include "config.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
@ -25,8 +27,8 @@ void servoTest() {
|
||||
}
|
||||
|
||||
void connectWiFi() {
|
||||
Serial.printf("Connecting to %s\n", config.data().wifiSSID);
|
||||
WiFi.begin(config.data().wifiSSID, config.data().wifiPass);
|
||||
Serial.printf("Connecting to %s\n", config.data().wifiSSID.data());
|
||||
WiFi.begin(config.data().wifiSSID.data(), config.data().wifiPass.data());
|
||||
WiFi.setHostname(hostname);
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
@ -59,6 +61,18 @@ void sweepLeg() {
|
||||
d++;
|
||||
}
|
||||
|
||||
void checkConfig() {
|
||||
Config::Data compData;
|
||||
strncpy(compData.wifiSSID.data(), wifiSSID, sizeof(compData.wifiSSID));
|
||||
strncpy(compData.wifiPass.data(), wifiPass, sizeof(compData.wifiPass));
|
||||
|
||||
if (config.data() != compData) {
|
||||
Serial.println("New configuration loaded");
|
||||
config.save(compData);
|
||||
config.printConfig();
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
@ -69,19 +83,15 @@ void setup() {
|
||||
servoTest();
|
||||
config.load();
|
||||
|
||||
Serial.printf("SSID: %s\n", config.data().wifiSSID);
|
||||
Serial.printf("pass: %s\n", config.data().wifiPass);
|
||||
Serial.println("Current Flash Config:");
|
||||
Serial.printf("- WiFi SSID: %s\n", config.data().wifiSSID.data());
|
||||
Serial.printf("- WiFi pass: %s\n", config.data().wifiPass.data());
|
||||
checkConfig();
|
||||
connectWiFi();
|
||||
remote.reset(new OSCRemote(vbat));
|
||||
remote->registerCallback(testRemoteCallback);
|
||||
// remote->init();
|
||||
|
||||
// Only to save as a test
|
||||
/*
|
||||
config.setSSID("testSSID");
|
||||
config.setWifiPass("testPass");
|
||||
config.save();
|
||||
*/
|
||||
sweepLeg();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user