NTP服務(wù)
物聯(lián)網(wǎng)平臺(tái)提供NTP服務(wù),為資源受限的嵌入式設(shè)備,解決無(wú)法實(shí)時(shí)地獲取時(shí)間的問(wèn)題。您可以通過(guò)配置C Link SDK,設(shè)備端獲取UTC時(shí)間。
前提條件
背景信息
阿里云物聯(lián)網(wǎng)平臺(tái)提供NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)服務(wù),更多信息,請(qǐng)參見(jiàn)NTP服務(wù)。
使用流程
如下功能時(shí)序圖,以設(shè)備的應(yīng)用程序demos/ntp_basic_demo.c
為例,介紹NTP服務(wù)的使用流程。
步驟一:設(shè)備初始化
創(chuàng)建設(shè)備句柄,完成設(shè)備建連。
static void* demo_device_init(char *product_key, char *device_name, char *device_secret, char *host, uint16_t port) { int32_t res = STATE_SUCCESS; /* 創(chuàng)建設(shè)備 */ void *device = aiot_device_create(product_key, device_name); .... .... res = aiot_device_connect(device); .... .... return device; }
NTP模塊配置。
設(shè)置時(shí)間同步回調(diào)函數(shù)。
/* 設(shè)置時(shí)間同步回調(diào)函數(shù) */ aiot_device_ntp_set_callback(device, demo_ntp_callback, NULL);
參數(shù)說(shuō)明
參數(shù)
說(shuō)明
device
設(shè)備句柄。
demo_ntp_callback
回調(diào)函數(shù),可自定義。
NULL
回調(diào)函數(shù)的上下文參數(shù),示例為
NULL
。設(shè)置時(shí)區(qū)。
/* 這里用中國(guó)所在的東8區(qū)演示功能, 因此例程運(yùn)行時(shí)打印的是北京時(shí)間 */ aiot_device_ntp_set_zone(device, 8);
參數(shù)說(shuō)明
參數(shù)
說(shuō)明
device
設(shè)備句柄。
8
時(shí)區(qū) 。取值示例:
東8區(qū),取值為8。
西3區(qū),取值為-3。
步驟二:發(fā)起時(shí)間同步請(qǐng)求
發(fā)送時(shí)間同步請(qǐng)求。
/* 發(fā)送時(shí)間同步請(qǐng)求 */ aiot_device_ntp_request(device);
請(qǐng)求時(shí)間同步回調(diào)函數(shù)。
/* 時(shí)間同步回調(diào)函數(shù) */ static void demo_ntp_callback(void *device, const aiot_ntp_time_t *recv_time, void *userdata) { printf("ntp recv time %d-%d-%d %d:%d:%d %d\r\n", recv_time->year, recv_time->mon, recv_time->day, recv_time->hour, recv_time->min, recv_time->sec, recv_time->msec); }
參數(shù)說(shuō)明
參數(shù)
說(shuō)明
device
設(shè)備句柄。
recv_time
返回的時(shí)間,您可直接使用。
userdata
回調(diào)的上下文,示例中為
NULL
。
步驟三:設(shè)備反初始化
/* 斷開(kāi)設(shè)備連接,并回收設(shè)備資源 */
demo_device_deinit(device);