integrate esp32 sntp
This commit is contained in:
		
							parent
							
								
									0b0542f091
								
							
						
					
					
						commit
						529059edf4
					
				| @ -3,6 +3,7 @@ | ||||
| 
 | ||||
| #include "globals.h" | ||||
| #include "timekeeper.h" | ||||
| #include "esp_sntp.h" | ||||
| 
 | ||||
| #define IF482_FRAME_SIZE (17) | ||||
| #define IF482_SYNC_FIXUP (10) // calibration to fixup processing time [milliseconds]
 | ||||
|  | ||||
| @ -10,6 +10,7 @@ | ||||
| #include "sensor.h" | ||||
| #include "cyclic.h" | ||||
| #include "timekeeper.h" | ||||
| #include "esp_sntp.h" | ||||
| #include "timesync.h" | ||||
| #include "power.h" | ||||
| #include "antenna.h" | ||||
|  | ||||
| @ -8,6 +8,7 @@ | ||||
| #include "gpsread.h" | ||||
| #include "if482.h" | ||||
| #include "dcf77.h" | ||||
| #include "esp_sntp.h" | ||||
| 
 | ||||
| #define SECS_YR_2000  (946684800UL) // the time at the start of y2k
 | ||||
| #define GPS_UTC_DIFF 315964800UL // seconds diff between gps and utc epoch
 | ||||
|  | ||||
| @ -88,24 +88,16 @@ String IF482_Frame(time_t t) { | ||||
| 
 | ||||
|   char mon, out[IF482_FRAME_SIZE + 1]; | ||||
| 
 | ||||
|   switch (sntp_get_sync_status()) { // indicates if time has been set and recently synced
 | ||||
|   case SNTP_SYNC_STATUS_COMPLETED:           // time is set and is synced
 | ||||
|     mon = 'A'; | ||||
|     break; | ||||
|   case SNTP_SYNC_STATUS_IN_PROGRESS: // time had been set but sync attempt did not succeed
 | ||||
|   case SNTP_SYNC_STATUS_RESET: | ||||
|     mon = 'M'; | ||||
|     break; | ||||
|   default: // unknown time status (should never be reached)
 | ||||
|     mon = '?'; | ||||
|     break; | ||||
|   } // switch
 | ||||
|   if (sntp_get_sync_status() == SNTP_SYNC_STATUS_IN_PROGRESS) | ||||
|     mon = 'M'; // time had been set but sync not completed
 | ||||
|   else | ||||
|     mon = 'A'; // time has been set and was recently synced
 | ||||
| 
 | ||||
|   // generate IF482 telegram
 | ||||
|   // snprintf(out, sizeof(out), "O%cL%s\r", mon, myTZ.dateTime(t, UTC_TIME,
 | ||||
|   // "ymdwHis").c_str());
 | ||||
| 
 | ||||
|   //ESP_LOGD(TAG, "[%s] IF482 date/time: %s", ctime(time(NULL), out);
 | ||||
|   // ESP_LOGD(TAG, "[%s] IF482 date/time: %s", ctime(time(NULL), out);
 | ||||
| 
 | ||||
|   return out; | ||||
| } | ||||
|  | ||||
| @ -103,7 +103,7 @@ void IRAM_ATTR setMyTime(uint32_t t_sec, uint16_t t_msec, | ||||
| 
 | ||||
|     tv.tv_sec = time_to_set; | ||||
|     tv.tv_usec = 0; | ||||
|     settimeofday(&tv, NULL); | ||||
|     sntp_sync_time(&tv); | ||||
| 
 | ||||
|     ESP_LOGI(TAG, "[%0.3f] UTC time: %d.000 sec", _seconds(), time_to_set); | ||||
| 
 | ||||
| @ -122,7 +122,6 @@ void IRAM_ATTR setMyTime(uint32_t t_sec, uint16_t t_msec, | ||||
| #endif | ||||
| 
 | ||||
|     timeSource = mytimesource; // set global variable
 | ||||
|     sntp_set_sync_status(SNTP_SYNC_STATUS_COMPLETED); | ||||
| 
 | ||||
|     timesyncer.attach(TIME_SYNC_INTERVAL * 60, setTimeSyncIRQ); | ||||
|     ESP_LOGD(TAG, "[%0.3f] Timesync finished, time was set | timesource=%d", | ||||
| @ -140,6 +139,10 @@ void IRAM_ATTR setMyTime(uint32_t t_sec, uint16_t t_msec, | ||||
| // helper function to setup a pulse per second for time synchronisation
 | ||||
| uint8_t timepulse_init() { | ||||
| 
 | ||||
|   // set esp-idf API sntp sync mode
 | ||||
|   //sntp_init();
 | ||||
|   sntp_set_sync_mode(SNTP_SYNC_MODE_IMMED); | ||||
| 
 | ||||
| // use time pulse from GPS as time base with fixed 1Hz frequency
 | ||||
| #ifdef GPS_INT | ||||
| 
 | ||||
| @ -273,15 +276,8 @@ void clock_loop(void *taskparameter) { // ClockTask | ||||
|     // wait for timepulse and store UTC time
 | ||||
|     xTaskNotifyWait(0x00, ULONG_MAX, ¤t_time, portMAX_DELAY); | ||||
| 
 | ||||
|     /*
 | ||||
|         // no confident or no recent time -> suppress clock output
 | ||||
|         if ((sntp_get_sync_status() != SNTP_SYNC_STATUS_COMPLETED) || | ||||
|             !(timeIsValid(current_time)) || (current_time == previous_time)) | ||||
|           continue; | ||||
|     */ | ||||
| 
 | ||||
|     // no confident or no recent time -> suppress clock output
 | ||||
|     if (!(timeIsValid(current_time)) || (current_time == previous_time)) | ||||
|     if ((sntp_get_sync_status() == SNTP_SYNC_STATUS_IN_PROGRESS) || | ||||
|         !(timeIsValid(current_time)) || (current_time == previous_time)) | ||||
|       continue; | ||||
| 
 | ||||
|     // set calendar time for next second of clock output
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user