Skip to content

Commit 5c91bb3

Browse files
committed
Add default models when missing or invalid.
1 parent 157be81 commit 5c91bb3

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

src/ble/hal/configsettings/configsettings.cpp

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,33 @@ std::shared_ptr<ConfigSettings> ConfigSettings::parseJson(json_t *jsonConfig)
151151
timeouts = parseTimeouts(timeoutsObj);
152152
}
153153

154+
json_t *obj_network_ble = NULL;
155+
154156
// find the vendor details array
155157
json_t *modelArray = json_object_get(jsonConfig, "models");
156158
if (!modelArray || !json_is_array(modelArray)) {
157-
XLOGD_ERROR( "missing or invalid 'models' field in config");
158-
return std::shared_ptr<ConfigSettings>();
159+
XLOGD_WARN( "missing or invalid 'models' field in config (using defaults)");
160+
161+
obj_network_ble = json_loads(DEFAULT_CONFIG::json(), JSON_DECODE_ANY, NULL);
162+
if (!obj_network_ble || !json_is_object(obj_network_ble)) {
163+
if(!obj_network_ble) {
164+
XLOGD_ERROR("invalid default config buffer");
165+
} else {
166+
XLOGD_ERROR("default config buffer is not a json object");
167+
json_decref(obj_network_ble);
168+
}
169+
return std::shared_ptr<ConfigSettings>();
170+
}
171+
172+
modelArray = json_object_get(obj_network_ble, "models");
173+
if((!modelArray || !json_is_array(modelArray))) {
174+
XLOGD_ERROR("missing or invalid 'models' field in default config");
175+
json_decref(obj_network_ble);
176+
return std::shared_ptr<ConfigSettings>();
177+
}
159178
}
160179
size_t array_size = json_array_size(modelArray);
161180

162-
163181
vector<ConfigModelSettings> models;
164182

165183
for (unsigned int i = 0; i < array_size; i++) {
@@ -174,6 +192,10 @@ std::shared_ptr<ConfigSettings> ConfigSettings::parseJson(json_t *jsonConfig)
174192
}
175193
}
176194

195+
if(obj_network_ble != NULL) {
196+
json_decref(obj_network_ble);
197+
}
198+
177199
// finally return the config
178200
return std::make_shared<ConfigSettings>(timeouts, std::move(models));
179201
}

0 commit comments

Comments
 (0)