@@ -68,50 +68,37 @@ void WipperSnapper_LittleFS::parseSecrets() {
68
68
error.c_str ());
69
69
}
70
70
71
- if (doc.containsKey (" network_type_wifi" )) {
72
- if (doc[" network_type_wifi" ].is <JsonObject>()) {
71
+ if (doc.containsKey (" network_type_wifi" )) {
72
+ // set default network config
73
+ convertFromJson (doc[" network_type_wifi" ], WS._config .network );
74
+
75
+ if (!doc[" network_type_wifi" ].containsKey (" alternate_networks" )) {
73
76
WS_DEBUG_PRINTLN (" Found single wifi network in secrets.json" );
74
- // Parse network credentials from secrets
75
- convertFromJson (doc[" network_type_wifi" ], WS._config .network );
76
- } else if (doc[" network_type_wifi" ].is <JsonArray>()) {
77
+
78
+ } else if (doc[" network_type_wifi" ][" alternative_networks" ].is <JsonArray>()) {
77
79
WS_DEBUG_PRINTLN (" Found multiple wifi networks in secrets.json" );
78
- // Parse network credentials from secrets
79
- int8_t networkCount = doc[" network_type_wifi" ].size ();
80
+ // Parse network credentials from array in secrets
81
+ JsonArray networks = doc[" network_type_wifi" ][" alternative_networks" ];
82
+ int8_t networkCount = networks.size ();
80
83
WS_DEBUG_PRINT (" Network count: " );
81
84
WS_DEBUG_PRINTLN (networkCount);
82
85
if (networkCount == 0 ) {
83
86
fsHalt (" ERROR: No networks found in network_type_wifi in secrets.json!" );
84
- } else
87
+ }
85
88
// check if over 5, warn user and take first five
86
89
for (int i = 0 ; i < networkCount; i++) {
87
- if (i > 4 ) {
88
- WS_DEBUG_PRINT (" WARNING: More than 5 networks in secrets.json, "
89
- " only the first 5 will be used. Not using " );
90
- WS_DEBUG_PRINTLN (doc[ " network_type_wifi " ] [i][" ssid" ].as <const char *>());
90
+ if (i >= 3 ) {
91
+ WS_DEBUG_PRINT (" WARNING: More than 3 networks in secrets.json, "
92
+ " only the first 3 will be used. Not using " );
93
+ WS_DEBUG_PRINTLN (networks [i][" ssid" ].as <const char *>());
91
94
break ;
92
95
}
93
- convertFromJson (doc[ " network_type_wifi " ] [i], WS._multiNetworks [i]);
96
+ convertFromJson (networks [i], WS._multiNetworks [i]);
94
97
WS_DEBUG_PRINT (" Added SSID: " );
95
98
WS_DEBUG_PRINTLN (WS._multiNetworks [i].ssid );
96
99
WS_DEBUG_PRINT (" PASS: " );
97
100
WS_DEBUG_PRINTLN (WS._multiNetworks [i].pass );
98
101
}
99
-
100
- WS_DEBUG_PRINTLN (" Parsing last network in array" );
101
- convertFromJson (doc[" network_type_wifi" ][networkCount - 1 ],
102
- WS._config .network );
103
- WS_DEBUG_PRINTLN (" Parsed last network in array" );
104
- WS_DEBUG_PRINT (" SSID: " );
105
- WS_DEBUG_PRINTLN (WS._config .network .ssid );
106
- WS_DEBUG_PRINT (" PASS: " );
107
- WS_DEBUG_PRINTLN (WS._config .network .pass );
108
- WS_DEBUG_PRINTLN (" removing network_type_wifi" );
109
- doc.remove (" network_type_wifi" );
110
- WS_DEBUG_PRINTLN (" removed network_type_wifi, creating new flat object" );
111
- doc[" network_type_wifi" ].to <JsonObject>();
112
- WS_DEBUG_PRINTLN (" created new object, setting network" );
113
- doc[" network_type_wifi" ].set (WS._config .network );
114
-
115
102
} else {
116
103
fsHalt (" ERROR: Unrecognised value type for network_type_wifi in "
117
104
" secrets.json!" );
0 commit comments