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
parent
commit
12c13b06ab
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      src/MeshCore.h
  2. 5
      src/helpers/AutoDiscoverRTCClock.cpp
  3. 5
      src/helpers/AutoDiscoverRTCClock.h
  4. 7
      src/helpers/CommonCLI.cpp

2
src/MeshCore.h

@ -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) {

5
src/helpers/AutoDiscoverRTCClock.cpp

@ -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();

5
src/helpers/AutoDiscoverRTCClock.h

@ -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;

7
src/helpers/CommonCLI.cpp

@ -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);
}

Loading…
Cancel
Save