Skip to content

Commit

Permalink
Review toJon functions
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieucarbou committed Jan 30, 2024
1 parent 18f620a commit 0c3779e
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 7 deletions.
11 changes: 10 additions & 1 deletion examples/TimezoneToJson/TimezoneToJson.ino
Expand Up @@ -13,7 +13,16 @@ void setup() {
uint32_t start = ESP.getFreeHeap();

JsonDocument doc;
Mycila::NTP.timezonesToJson(doc.to<JsonObject>());

Mycila::NTP.timezonesToJsonObject(doc.to<JsonObject>());
serializeJsonPretty(doc, Serial);
Serial.println();

Serial.print("Heap used: ");
Serial.print(start - ESP.getFreeHeap());
Serial.println(" bytes");

Mycila::NTP.timezonesToJsonArray(doc.to<JsonArray>());
serializeJsonPretty(doc, Serial);
Serial.println();

Expand Down
8 changes: 4 additions & 4 deletions platformio.ini
@@ -1,6 +1,6 @@
[env]
build_flags = -Wall -Wextra
; build_flags = -Wall -Wextra -D MYCILA_NTP_JSON_SUPPORT
; build_flags = -Wall -Wextra
build_flags = -Wall -Wextra -D MYCILA_NTP_JSON_SUPPORT
lib_deps = ArduinoJson

upload_protocol = esptool
Expand All @@ -12,8 +12,8 @@ monitor_filters = esp32_exception_decoder, log2file

[platformio]
lib_dir = .
src_dir = examples/NTP
; src_dir = examples/TimezoneToJson
; src_dir = examples/NTP
src_dir = examples/TimezoneToJson

[env:esp32]
platform = espressif32@6.5.0
Expand Down
13 changes: 12 additions & 1 deletion src/MycilaNTP.cpp
Expand Up @@ -82,7 +82,7 @@ bool Mycila::NTPClass::sync(const timeval* tv) {
}

#ifdef MYCILA_NTP_JSON_SUPPORT
void Mycila::NTPClass::timezonesToJson(const JsonObject& doc) const {
void Mycila::NTPClass::timezonesToJsonObject(const JsonObject& doc) const {
char* start = const_cast<char*>(MYCILA_NTP_SPEC);
char* token = strstr(start, "=");
while (token != nullptr) {
Expand All @@ -95,6 +95,17 @@ void Mycila::NTPClass::timezonesToJson(const JsonObject& doc) const {
doc[timezone] = spec;
}
}

void Mycila::NTPClass::timezonesToJsonArray(const JsonArray& doc) const {
char* start = const_cast<char*>(MYCILA_NTP_SPEC);
char* token = strstr(start, "=");
while (token != nullptr) {
doc.add(String(start, static_cast<size_t>(token - start)));
token = strstr(token + 1, "\n");
start = token + 1;
token = strstr(start, "=");
}
}
#endif

namespace Mycila {
Expand Down
5 changes: 4 additions & 1 deletion src/MycilaNTP.h
Expand Up @@ -40,7 +40,10 @@ namespace Mycila {
bool isSynced() const { return _synced; }

#ifdef MYCILA_NTP_JSON_SUPPORT
void timezonesToJson(const JsonObject& doc) const;
// map of timezone names and timezone info
void timezonesToJsonObject(const JsonObject& doc) const;
// list of timezone names
void timezonesToJsonArray(const JsonArray& doc) const;
#endif

private:
Expand Down

0 comments on commit 0c3779e

Please sign in to comment.