@@ -60,7 +60,28 @@ void WebSettings::read(WebSettings & settings, JsonObject & root) {
60
60
root[" board_profile" ] = settings.board_profile ;
61
61
}
62
62
63
+ // call on initialization and also when settings are updated via web or console
63
64
StateUpdateResult WebSettings::update (JsonObject & root, WebSettings & settings) {
65
+ // set or load board profile
66
+ settings.board_profile = root[" board_profile" ] | EMSESP_DEFAULT_BOARD_PROFILE;
67
+
68
+ // load default GPIO configuration based on board profile
69
+ std::vector<uint8_t > data; // led, dallas, rx, tx, button
70
+ if (!System::load_board_profile (data, settings.board_profile .c_str ())) {
71
+ // invalid board configuration, override the default in case it has been misspelled
72
+ settings.board_profile = " S32" ;
73
+ }
74
+ uint8_t default_led_gpio = data[0 ];
75
+ uint8_t default_dallas_gpio = data[1 ];
76
+ uint8_t default_rx_gpio = data[2 ];
77
+ uint8_t default_tx_gpio = data[3 ];
78
+ uint8_t default_pbutton_gpio = data[4 ];
79
+
80
+ // check to see if we have a settings file, if not it's a fresh install
81
+ if (!root.size ()) {
82
+ EMSESP::logger ().info (F (" Initializing configuration with board profile %s" ), settings.board_profile .c_str ());
83
+ }
84
+
64
85
int prev;
65
86
reset_flags ();
66
87
@@ -72,10 +93,10 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
72
93
settings.tx_delay = root[" tx_delay" ] | EMSESP_DEFAULT_TX_DELAY;
73
94
check_flag (prev, settings.tx_delay , ChangeFlags::UART);
74
95
prev = settings.rx_gpio ;
75
- settings.rx_gpio = root[" rx_gpio" ] | EMSESP_DEFAULT_RX_GPIO ;
96
+ settings.rx_gpio = root[" rx_gpio" ] | default_rx_gpio ;
76
97
check_flag (prev, settings.rx_gpio , ChangeFlags::UART);
77
98
prev = settings.tx_gpio ;
78
- settings.tx_gpio = root[" tx_gpio" ] | EMSESP_DEFAULT_TX_GPIO ;
99
+ settings.tx_gpio = root[" tx_gpio" ] | default_tx_gpio ;
79
100
check_flag (prev, settings.tx_gpio , ChangeFlags::UART);
80
101
81
102
// syslog
@@ -93,12 +114,9 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
93
114
94
115
String old_syslog_host = settings.syslog_host ;
95
116
settings.syslog_host = root[" syslog_host" ] | EMSESP_DEFAULT_SYSLOG_HOST;
96
-
97
- #ifndef EMSESP_STANDALONE
98
- if (old_syslog_host.equals (settings.syslog_host )) {
117
+ if (old_syslog_host.equals (settings.syslog_host .c_str ())) {
99
118
add_flags (ChangeFlags::SYSLOG);
100
119
}
101
- #endif
102
120
103
121
prev = settings.syslog_port ;
104
122
settings.syslog_port = root[" syslog_port" ] | EMSESP_DEFAULT_SYSLOG_PORT;
@@ -116,12 +134,12 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
116
134
117
135
// button
118
136
prev = settings.pbutton_gpio ;
119
- settings.pbutton_gpio = root[" pbutton_gpio" ] | EMSESP_DEFAULT_PBUTTON_GPIO ;
137
+ settings.pbutton_gpio = root[" pbutton_gpio" ] | default_pbutton_gpio ;
120
138
check_flag (prev, settings.pbutton_gpio , ChangeFlags::BUTTON);
121
139
122
140
// dallas
123
141
prev = settings.dallas_gpio ;
124
- settings.dallas_gpio = root[" dallas_gpio" ] | EMSESP_DEFAULT_DALLAS_GPIO ;
142
+ settings.dallas_gpio = root[" dallas_gpio" ] | default_dallas_gpio ;
125
143
check_flag (prev, settings.dallas_gpio , ChangeFlags::DALLAS);
126
144
prev = settings.dallas_parasite ;
127
145
settings.dallas_parasite = root[" dallas_parasite" ] | EMSESP_DEFAULT_DALLAS_PARASITE;
@@ -137,7 +155,7 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
137
155
138
156
// led
139
157
prev = settings.led_gpio ;
140
- settings.led_gpio = root[" led_gpio" ] | EMSESP_DEFAULT_LED_GPIO ;
158
+ settings.led_gpio = root[" led_gpio" ] | default_led_gpio ;
141
159
check_flag (prev, settings.led_gpio , ChangeFlags::LED);
142
160
prev = settings.hide_led ;
143
161
settings.hide_led = root[" hide_led" ] | EMSESP_DEFAULT_HIDE_LED;
@@ -150,9 +168,6 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings)
150
168
// doesn't need any follow-up actions
151
169
settings.api_enabled = root[" api_enabled" ] | EMSESP_DEFAULT_API_ENABLED;
152
170
153
- // board profiles
154
- settings.board_profile = root[" board_profile" ] | EMSESP_DEFAULT_BOARD_PROFILE;
155
-
156
171
return StateUpdateResult::CHANGED;
157
172
}
158
173
0 commit comments