14
14
15
15
#include "esp32-hal.h"
16
16
#include "lwip/apps/sntp.h"
17
+ #include "lwip/priv/tcpip_priv.h"
18
+ #include "lwip/err.h"
17
19
#include "tcpip_adapter.h"
18
20
19
21
static void setTimeZone (long offset , int daylight )
@@ -40,21 +42,39 @@ static void setTimeZone(long offset, int daylight)
40
42
tzset ();
41
43
}
42
44
45
+ typedef struct {
46
+ struct tcpip_api_call_data call ;
47
+ u8_t mode ;
48
+ const char * server1 ;
49
+ const char * server2 ;
50
+ const char * server3 ;
51
+ } tcpip_config_time_t ;
52
+
53
+ static s8_t do_configTime (struct tcpip_api_call_data * msg ) {
54
+ tcpip_config_time_t * params = (tcpip_config_time_t * )msg ;
55
+ if (sntp_enabled ()){
56
+ sntp_stop ();
57
+ }
58
+ sntp_setoperatingmode (params -> mode );
59
+ sntp_setservername (0 , params -> server1 );
60
+ sntp_setservername (1 , params -> server2 );
61
+ sntp_setservername (2 , params -> server3 );
62
+ sntp_init ();
63
+ return ERR_OK ;
64
+ }
65
+
43
66
/*
44
67
* configTime
45
68
* Source: https://github.com/esp8266/Arduino/blob/master/cores/esp8266/time.c
46
69
* */
47
70
void configTime (long gmtOffset_sec , int daylightOffset_sec , const char * server1 , const char * server2 , const char * server3 )
48
71
{
49
- tcpip_adapter_init (); // Should not hurt anything if already inited
50
- if (sntp_enabled ()){
51
- sntp_stop ();
52
- }
53
- sntp_setoperatingmode (SNTP_OPMODE_POLL );
54
- sntp_setservername (0 , (char * )server1 );
55
- sntp_setservername (1 , (char * )server2 );
56
- sntp_setservername (2 , (char * )server3 );
57
- sntp_init ();
72
+ tcpip_config_time_t msg ;
73
+ msg .mode = SNTP_OPMODE_POLL ;
74
+ msg .server1 = server1 ;
75
+ msg .server2 = server2 ;
76
+ msg .server3 = server3 ;
77
+ tcpip_api_call (do_configTime , (struct tcpip_api_call_data * )& msg );
58
78
setTimeZone (- gmtOffset_sec , daylightOffset_sec );
59
79
}
60
80
@@ -64,15 +84,12 @@ void configTime(long gmtOffset_sec, int daylightOffset_sec, const char* server1,
64
84
* */
65
85
void configTzTime (const char * tz , const char * server1 , const char * server2 , const char * server3 )
66
86
{
67
- tcpip_adapter_init (); // Should not hurt anything if already inited
68
- if (sntp_enabled ()){
69
- sntp_stop ();
70
- }
71
- sntp_setoperatingmode (SNTP_OPMODE_POLL );
72
- sntp_setservername (0 , (char * )server1 );
73
- sntp_setservername (1 , (char * )server2 );
74
- sntp_setservername (2 , (char * )server3 );
75
- sntp_init ();
87
+ tcpip_config_time_t msg ;
88
+ msg .mode = SNTP_OPMODE_POLL ;
89
+ msg .server1 = server1 ;
90
+ msg .server2 = server2 ;
91
+ msg .server3 = server3 ;
92
+ tcpip_api_call (do_configTime , (struct tcpip_api_call_data * )& msg );
76
93
setenv ("TZ" , tz , 1 );
77
94
tzset ();
78
95
}
0 commit comments