mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Fix ESP8266 core has a broken settimeofday implementation (#1231)
This commit is contained in:
		| @@ -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]; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user