Add time command (query), update docs

This commit is contained in:
UA1ZBE
2026-07-22 11:12:54 +03:00
parent 99e684dd4f
commit c754bfb7f8
4 changed files with 29 additions and 0 deletions

View File

@@ -220,6 +220,31 @@ public:
}
} else if (strncmp(cmd, "time", 4) == 0) {
const char* rest = cmd + 4; while (*rest == ' ') rest++;
if (*rest == 0) {
uint32_t ts = rtc_clock.getCurrentTime();
if (ts < 100000) { defer_response("time not set"); return; }
uint32_t days = ts / 86400;
int h = (ts % 86400) / 3600;
int mi = (ts % 3600) / 60;
int y = 1970;
while (true) {
int leap = ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) ? 366 : 365;
if (days < (uint32_t)leap) break;
days -= leap; y++;
}
const uint8_t mdays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int m;
for (m = 1; m <= 12; m++) {
int dim = mdays[m-1];
if (m == 2 && ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)) dim = 29;
if (days < (uint32_t)dim) break;
days -= dim;
}
char r[64];
snprintf(r, sizeof(r), "time:%02d.%02d.%04d %02d:%02d", (int)(days + 1), m, y, h, mi);
defer_response(r);
return;
}
if (strncmp(rest, "s ", 2) != 0) { defer_response("time s DD.MM.YYYY HH.MM"); return; }
rest += 2;
int d, m, y, h, mi;