mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
Fix ESP8266 core has a broken settimeofday implementation (#1231)
This commit is contained in:
parent
636c9db1e3
commit
4c3c14ec32
1 changed files with 12 additions and 1 deletions
|
@ -4,6 +4,7 @@
|
|||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
#include "sys/time.h"
|
||||
#endif
|
||||
#include "errno.h"
|
||||
|
||||
namespace esphome {
|
||||
namespace time {
|
||||
|
@ -20,8 +21,18 @@ void RealTimeClock::synchronize_epoch_(uint32_t epoch) {
|
|||
struct timeval timev {
|
||||
.tv_sec = static_cast<time_t>(epoch), .tv_usec = 0,
|
||||
};
|
||||
ESP_LOGVV(TAG, "Got epoch %u", epoch);
|
||||
timezone tz = {0, 0};
|
||||
settimeofday(&timev, &tz);
|
||||
int ret = settimeofday(&timev, &tz);
|
||||
if (ret == EINVAL) {
|
||||
// Some ESP8266 frameworks abort when timezone parameter is not NULL
|
||||
// while ESP32 expects it not to be NULL
|
||||
ret = settimeofday(&timev, nullptr);
|
||||
}
|
||||
|
||||
if (ret != 0) {
|
||||
ESP_LOGW(TAG, "setimeofday() failed with code %d", ret);
|
||||
}
|
||||
|
||||
auto time = this->now();
|
||||
char buf[128];
|
||||
|
|
Loading…
Reference in a new issue