Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit06441a1

Browse files
committed
* Changed Serializer::Deserialize to a non-static method.
* Fixed default config initialization.* Added Firething call to delete stored config.
1 parenta3f2dd6 commit06441a1

File tree

5 files changed

+52
-29
lines changed

5 files changed

+52
-29
lines changed

‎src/thing/Config.cpp

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespacething {
66

77
ConfigJsonSerializer::ConfigJsonSerializer(const Config& config) {
8-
JsonObject& root =json_.createObject();
8+
JsonObject& root =buffer_.createObject();
99
root_ = &root;
1010
root["host"] = config.host.c_str();
1111
root["auth"] = config.auth.c_str();
@@ -23,6 +23,10 @@ ConfigJsonSerializer::ConfigJsonSerializer(const Config& config) {
2323
pins_root["config_mode_button"] = config.pins.config_mode_button;
2424
}
2525

26+
ConfigJsonSerializer::ConfigJsonSerializer(char* serialized_config) {
27+
root_ = &(buffer_.parseObject(serialized_config));
28+
}
29+
2630
intConfigJsonSerializer::content_length()const {
2731
return root_->measureLength();
2832
}
@@ -35,26 +39,20 @@ void ConfigJsonSerializer::SerializeTo(Stream* output) {
3539
output->print(buffer);
3640
}
3741

38-
ConfigConfigJsonSerializer::Deserialize(char* string) {
39-
Config config;
40-
41-
DynamicJsonBuffer jsonBuffer;
42-
JsonObject& root = jsonBuffer.parseObject(string);
43-
config.host = root["host"].asString();
44-
config.auth = root["auth"].asString();
45-
config.path = root["path"].asString();
46-
config.wifi_ssid = root["wifi_ssid"].asString();
47-
config.wifi_key = root["wifi_key"].asString();
48-
config.analog_activation_threshold = root["activation_threshold"];
49-
config.wifi_connect_attempts = root["wifi_connect_attempts"];
50-
51-
config.pins.digital_in = root["pins"]["digital_in"];
52-
config.pins.digital_out = root["pins"]["digital_out"];
53-
config.pins.analog_in = root["pins"]["analog_in"];
54-
config.pins.analog_out = root["pins"]["analog_out"];
55-
config.pins.config_mode_button = root["pins"]["config_mode_button"];
56-
57-
return config;
42+
voidConfigJsonSerializer::DeserializeTo(Config* config) {
43+
config->host =root()["host"].asString();
44+
config->auth =root()["auth"].asString();
45+
config->path =root()["path"].asString();
46+
config->wifi_ssid =root()["wifi_ssid"].asString();
47+
config->wifi_key =root()["wifi_key"].asString();
48+
config->analog_activation_threshold =root()["activation_threshold"];
49+
config->wifi_connect_attempts =root()["wifi_connect_attempts"];
50+
51+
config->pins.digital_in =root()["pins"]["digital_in"];
52+
config->pins.digital_out =root()["pins"]["digital_out"];
53+
config->pins.analog_in =root()["pins"]["analog_in"];
54+
config->pins.analog_out =root()["pins"]["analog_out"];
55+
config->pins.config_mode_button =root()["pins"]["config_mode_button"];
5856
}
5957

6058
};

‎src/thing/Config.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,18 @@ struct Config {
3535
classConfigJsonSerializer {
3636
public:
3737
ConfigJsonSerializer(const Config& config);
38+
39+
// We need a mutable char array here, otherwise a copy will be made.
40+
ConfigJsonSerializer(char* config);
41+
3842
intcontent_length()const;
3943
voidSerializeTo(Stream* output);
44+
voidDeserializeTo(Config* config);
4045

41-
// We need a mutable char array here, otherwise a copy will be made.
42-
static ConfigDeserialize(char* string);
4346
private:
44-
DynamicJsonBuffer json_;
47+
JsonObject&root() {return *root_;}
48+
49+
DynamicJsonBuffer buffer_;
4550
JsonObject* root_;
4651
};
4752

‎src/thing/FireThing.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ Config kDefaultConfig = {
1212
"",// wifi ssid
1313
"",// wifi key
1414
0.1,// analog activation threshold
15+
2,// wifi connect attempts
16+
{
1517
D1,// digital in
1618
BUILTIN_LED,// digital out
1719
A0,// analog in
1820
D1,// analog out
1921
D0,// config mode button
22+
}
2023
};
2124

2225
constcharkStorageFilename[] ="fthing.cfg";
@@ -32,8 +35,7 @@ bool FireThing::Setup() {
3235
returnfalse;
3336
}
3437
SetPinModes(config);
35-
36-
if (digitalRead(config.pins.config_mode_button) || !ConnectToWiFi(config)) {
38+
if (digitalRead(config.pins.config_mode_button) == HIGH || !ConnectToWiFi(config)) {
3739
wifi_.StartAP();
3840
}
3941

@@ -54,9 +56,20 @@ void FireThing::Loop() {
5456
transcriber_.Loop();
5557
}
5658

59+
boolFireThing::DeleteStoredConfig() {
60+
if (!SPIFFS.begin()) {
61+
debug_("Failed to mount FS.");
62+
returnfalse;
63+
}
64+
bool success = SPIFFS.remove(kStorageFilename);
65+
SPIFFS.end();
66+
return success;
67+
}
68+
5769
boolFireThing::ConnectToWiFi(const Config& config) {
5870
debug_("Connecting to wifi:");
5971
debug_(config.wifi_ssid.c_str());
72+
// TODO we should probably not print the key to serial.
6073
debug_(config.wifi_key.c_str());
6174
if (wifi_.Connect(config.wifi_ssid, config.wifi_key)) {
6275
debug_("Connected");
@@ -93,7 +106,8 @@ bool FireThing::ReadConfigFromStorage(Config* config) {
93106
}
94107
char buffer[cfg.size()];
95108
cfg.readBytes(buffer, cfg.size());
96-
*config =ConfigJsonSerializer::Deserialize(buffer);
109+
ConfigJsonSerializerserializer(buffer);
110+
serializer.DeserializeTo(config);
97111
debug_("Config read from disk.");
98112
}
99113

‎src/thing/FireThing.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class FireThing {
1919

2020
voidSetDebugHandler(std::function<void(constchar* message)> debug);
2121

22+
// Called to delete the currently stored config from the filesystem.
23+
boolDeleteStoredConfig();
24+
2225
private:
2326
boolReadConfigFromStorage(Config* config);
2427
boolWriteConfigToStorage(const Config& config);

‎src/thing/Portal.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,11 @@ void Portal::Start(const Config& config) {
132132
buffer = (char*)malloc(config.length()+1);
133133
memcpy(buffer, config.c_str(), config.length()+1);
134134
}
135-
config_ =ConfigJsonSerializer::Deserialize(buffer);
136-
free(buffer);
135+
{// Scoped because serializer is invalid after free().
136+
ConfigJsonSerializerserializer(buffer);
137+
serializer.DeserializeTo(&config_);
138+
free(buffer);
139+
}
137140

138141
callback_(config_);
139142
server_.send(200,"text/plain","");

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp