Browse Source
Merge pull request #2 from polipl/feature/rtc-cli-status
Feature/rtc cli status
pull/2718/head
Paweł Małecki
1 week ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with
18 additions and
1 deletions
-
src/MeshCore.h
-
src/helpers/AutoDiscoverRTCClock.cpp
-
src/helpers/AutoDiscoverRTCClock.h
-
src/helpers/CommonCLI.cpp
|
|
|
@ -92,6 +92,8 @@ public: |
|
|
|
*/ |
|
|
|
virtual void tick() { /* no op */} |
|
|
|
|
|
|
|
virtual const char* getSourceName() const { return "internal"; } |
|
|
|
|
|
|
|
uint32_t getCurrentTimeUnique() { |
|
|
|
uint32_t t = getCurrentTime(); |
|
|
|
if (t <= last_unique) { |
|
|
|
|
|
|
|
@ -61,6 +61,11 @@ void AutoDiscoverRTCClock::begin(TwoWire& wire) { |
|
|
|
MESH_DEBUG_PRINTLN("RX8130CE: Initialized"); |
|
|
|
} |
|
|
|
|
|
|
|
if (ds3231_success) _source_name = "DS3231"; |
|
|
|
else if (rv3028_success) _source_name = "RV3028"; |
|
|
|
else if (rtc_8563_success) _source_name = "PCF8563"; |
|
|
|
else if (rtc_8130_success) _source_name = "RX8130CE"; |
|
|
|
|
|
|
|
_has_hw_rtc = ds3231_success || rv3028_success || rtc_8563_success || rtc_8130_success; |
|
|
|
if (_has_hw_rtc) { |
|
|
|
syncSystemClock(); |
|
|
|
|
|
|
|
@ -12,12 +12,15 @@ class AutoDiscoverRTCClock : public mesh::RTCClock { |
|
|
|
mesh::RTCClock* _fallback; |
|
|
|
bool _has_hw_rtc; |
|
|
|
unsigned long _last_sync_ms; |
|
|
|
const char* _source_name; |
|
|
|
|
|
|
|
bool i2c_probe(TwoWire& wire, uint8_t addr); |
|
|
|
void syncSystemClock(); |
|
|
|
public: |
|
|
|
AutoDiscoverRTCClock(mesh::RTCClock& fallback) |
|
|
|
: _fallback(&fallback), _has_hw_rtc(false), _last_sync_ms(0) { } |
|
|
|
: _fallback(&fallback), _has_hw_rtc(false), _last_sync_ms(0), _source_name("internal") { } |
|
|
|
|
|
|
|
const char* getSourceName() const override { return _source_name; } |
|
|
|
|
|
|
|
void begin(TwoWire& wire); |
|
|
|
uint32_t getCurrentTime() override; |
|
|
|
|
|
|
|
@ -886,6 +886,13 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep |
|
|
|
#else |
|
|
|
strcpy(reply, "ERROR: Power management not supported"); |
|
|
|
#endif |
|
|
|
} else if (memcmp(config, "rtcclock", 8) == 0) { |
|
|
|
uint32_t now = getRTCClock()->getCurrentTime(); |
|
|
|
DateTime dt = DateTime(now); |
|
|
|
sprintf(reply, "> %s | %04d-%02d-%02d %02d:%02d:%02d UTC", |
|
|
|
getRTCClock()->getSourceName(), |
|
|
|
dt.year(), dt.month(), dt.day(), |
|
|
|
dt.hour(), dt.minute(), dt.second()); |
|
|
|
} else { |
|
|
|
sprintf(reply, "??: %s", config); |
|
|
|
} |
|
|
|
|