Skip to content

Commit c6f18a1

Browse files
authored
Merge pull request #36 from groundlight/esp-form-uiupdate
Added auto-configuration feature for the local setup web page
2 parents d520038 + 257c216 commit c6f18a1

File tree

4 files changed

+187
-142
lines changed

4 files changed

+187
-142
lines changed

lib/groundlight/src/groundlight.cpp

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -367,20 +367,26 @@ String get_query_id(const String &jsonResults) {
367367

368368
StaticJsonDocument<DET_DOC_SIZE> groundlight_json_doc;
369369

370-
// Parses the detectors from the Groundlight API.
371370
detector_list get_detector_list(const char *endpoint, const char *apiToken) {
372371
deserializeJson(groundlight_json_doc, get_detectors(endpoint, apiToken));
373372
JsonArray detectors = groundlight_json_doc["results"];
374373
detector *_detector_list = new detector[detectors.size()];
375374
for (int i = 0; i < detectors.size(); i++)
376375
{
377376
_detector_list[i].confidence_threshold = detectors[i]["confidence_threshold"];
378-
strcpy(_detector_list[i].id, detectors[i]["id"]);
379-
strcpy(_detector_list[i].type, detectors[i]["type"]);
380-
strcpy(_detector_list[i].created_at, detectors[i]["created_at"]);
381-
strcpy(_detector_list[i].name, detectors[i]["name"]);
382-
strcpy(_detector_list[i].query, detectors[i]["query"]);
383-
strcpy(_detector_list[i].group_name, detectors[i]["group_name"]);
377+
strlcpy(_detector_list[i].id, detectors[i]["id"], sizeof(_detector_list[i].id));
378+
strlcpy(_detector_list[i].type, detectors[i]["type"], sizeof(_detector_list[i].type));
379+
strlcpy(_detector_list[i].created_at, detectors[i]["created_at"], sizeof((_detector_list[i].created_at)));
380+
strlcpy(_detector_list[i].name, detectors[i]["name"], sizeof(_detector_list[i].name));
381+
strlcpy(_detector_list[i].query, detectors[i]["query"], sizeof(_detector_list[i].query));
382+
strlcpy(_detector_list[i].group_name, detectors[i]["group_name"], sizeof(_detector_list[i].group_name));
383+
if (!detectors[i]["metadata"].isNull()) {
384+
String metadataStr;
385+
serializeJson(detectors[i]["metadata"], metadataStr);
386+
strlcpy(_detector_list[i].metadata, metadataStr.c_str(), sizeof(_detector_list[i].metadata));
387+
} else {
388+
_detector_list[i].metadata[0] = '\0';
389+
}
384390
}
385391
detector_list res = { _detector_list, detectors.size() };
386392
return res;
@@ -401,16 +407,38 @@ String detector_to_string(detector d) {
401407
res += d.group_name;
402408
res += "\n\tConfidence threshold: ";
403409
res += d.confidence_threshold;
410+
res += "\n\tMetadata: ";
411+
res += d.metadata;
404412
return res;
405413
}
406414

407415
detector get_detector_by_id(const char *endpoint, const char *detectorId, const char *apiToken) {
408416
detector_list detectors = get_detector_list(endpoint, apiToken);
417+
detector det = { "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", 0.0, "None" };
409418
for (int i = 0; i < detectors.size; i++) {
410419
if (String(detectors.detectors[i].id) == String(detectorId)) {
411-
return detectors.detectors[i];
420+
det = detectors.detectors[i];
421+
break;
422+
}
423+
}
424+
if (0<detectors.size){
425+
delete[] detectors.detectors;
426+
}
427+
return det;
428+
}
429+
430+
detector get_detector_by_name(const char *endpoint, const char *detectorName, const char *apiToken) {
431+
detector_list detectors = get_detector_list(endpoint, apiToken);
432+
detector det = { "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", 0.0, "None" };
433+
for (int i = 0; i < detectors.size; i++) {
434+
if (String(detectors.detectors[i].name) == String(detectorName)) {
435+
det = detectors.detectors[i];
412436
}
413437
}
414-
return detector { "NONE", "NONE", "NONE", "NONE", "NONE", "NONE", 0.0 };
438+
if (0<detectors.size){
439+
delete[] detectors.detectors;
440+
}
441+
442+
return det;
415443
}
416444
#endif

lib/groundlight/src/groundlight.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ struct detector
3535
char query[200];
3636
char group_name[40];
3737
float confidence_threshold;
38-
};
38+
char metadata[1024];
39+
};
3940

4041
struct detector_list
4142
{
@@ -46,6 +47,7 @@ struct detector_list
4647
detector_list get_detector_list(const char *endpoint, const char *apiToken);
4748
String detector_to_string(detector d);
4849
detector get_detector_by_id(const char *endpoint, const char *detectorId, const char *apiToken);
50+
detector get_detector_by_name(const char *endpoint, const char *detectorName, const char *apiToken);
4951
float get_query_confidence(const String &jsonResults);
5052
String get_query_id(const String &jsonResults);
5153
#endif

platformio.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ build_flags =
5353
'-D CAMERA_MODEL_M5STACK_PSRAM'
5454
'-D NAME="GROUNDLIGHT_DEMO_UNIT"'
5555
'-D ENABLE_AP'
56+
# '-D ENABLE_STACKLIGHT'
5657
lib_deps =
5758
${env.lib_deps}
5859
https://github.com/me-no-dev/ESPAsyncWebServer.git#master

0 commit comments

Comments
 (0)