W801_SDK_dev_env/demo/wm_ntp_demo.c
2023-03-08 08:23:45 +01:00

95 lines
2.1 KiB
C

/**
* @file wm_ntp_demo.c
*
* @brief ntp demo function
*
* @author dave
*
* Copyright (c) 2015 Winner Microelectronics Co., Ltd.
*/
#include "wm_include.h"
#include <string.h>
#include <time.h>
#include "wm_rtc.h"
#include "wm_ntp.h"
#include "wm_demo.h"
#if DEMO_NTP
extern const char DEMO_SET_NTP_S[];
static int isNetworkOk(void)
{
struct tls_ethif *etherIf = tls_netif_get_ethif();
return etherIf->status;
}
static void setAutoConnectMode(void)
{
u8 auto_reconnect = 0xff;
tls_wifi_auto_connect_flag(WIFI_AUTO_CNT_FLAG_GET, &auto_reconnect);
if(auto_reconnect != WIFI_AUTO_CNT_ON)
{
auto_reconnect = WIFI_AUTO_CNT_ON;
tls_wifi_auto_connect_flag(WIFI_AUTO_CNT_FLAG_SET, &auto_reconnect);
}
}
//You should config ssid and pwd first before run ntp_demo.
int ntp_demo(void)
{
unsigned int t; //used to save time relative to 1970
struct tm *tblock;
setAutoConnectMode();
while(1 != isNetworkOk())
{
tls_os_time_delay(HZ);
printf("waiting for wifi connected......\n");
}
t = tls_ntp_client();
printf("now Time : %s\n", ctime((const time_t *)&t));
tblock = localtime((const time_t *)&t); //switch to local time
//printf(" sec=%d,min=%d,hour=%d,mon=%d,year=%d\n",tblock->tm_sec,tblock->tm_min,tblock->tm_hour,tblock->tm_mon,tblock->tm_year);
tls_set_rtc(tblock);
return WM_SUCCESS;
}
int ntp_set_server_demo(char *ipaddr1, char *ipaddr2, char *ipaddr3)
{
int server_no = 0;
printf("\n ipaddr1=%x,2=%x,3=%x\n", (u32)ipaddr1, (u32)ipaddr2, (u32)ipaddr3);
if (ipaddr1)
{
tls_ntp_set_server(ipaddr1, server_no++);
printf("ntp server %d:%s\n", server_no, ipaddr1);
}
if (ipaddr2)
{
tls_ntp_set_server(ipaddr2, server_no ++);
printf("ntp server %d:%s\n", server_no, ipaddr2);
}
if (ipaddr3)
{
tls_ntp_set_server(ipaddr3, server_no ++);
printf("ntp server %d:%s\n", server_no, ipaddr3);
}
return WM_SUCCESS;
}
int ntp_query_cfg(void)
{
tls_ntp_query_sntpcfg();
return WM_SUCCESS;
}
#endif