有时候,会出现如图中的本地时间同步错误的问题。请问该怎么主动再次获取网络时间
请问zigbee os开发,如何主动同步网络时间
Re: 请问zigbee os开发,如何主动同步网络时间
1.看log,你这个是分包的日志;和时间同步没有关系
2.如果你确实需要时间同步,你可以自己组包发送时间请求,如下列函数所示
Code: Select all
VOID_T user_time_sync_request_send(VOID_T)
{
TAL_ZG_SEND_DATA_T data;
tkl_system_memset(&data, 0, sizeof(TAL_ZG_SEND_DATA_T));
data.addr.mode = SEND_MODE_DEV;
data.addr.type.dev.dst_ep = TUYA_PRIMARY_ENDPOINT;
data.addr.type.dev.src_ep = TUYA_PRIMARY_ENDPOINT;
data.addr.type.dev.dst_addr = TUYA_GATEWAY_ADDRESS;
data.addr.type.dev.cluster_id = CLUSTER_TIME_CLUSTER_ID;
data.zcl_id = 0xF0;
data.qos = QOS_1;
data.frame_type = ZG_ZCL_FRAME_TYPE_GLOBAL;
data.direction = ZG_ZCL_DATA_CLIENT_TO_SERVER;
data.command_id = CMD_READ_ATTRIBUTES_COMMAND_ID;
data.data.zg.attr_sum = 1;
data.data.zg.attr[0].attr_id = ATTR_LOCAL_TIME_ATTRIBUTE_ID;
tal_time_sync_debug("gateway time sync.\r\n");
tal_zg_send_data(&data, NULL, 1000);
}
Re: 请问zigbee os开发,如何主动同步网络时间
同时再获取到网关时间后会有回调函数给到应用,你需要重新定义该虚函数
Code: Select all
VOID_T tal_time_sync_complete_callback(BOOL_T status, UINT_T time_sec)
{
if(status && time_sec) {
return;
}
}
Re: 请问zigbee os开发,如何主动同步网络时间
获取到时间后,如何写入系统呢
Re: 请问zigbee os开发,如何主动同步网络时间
1.收到网关的回复后,sdk会自动同步网络时间;
2.后续你可以通过tal_current_time_get函数获取当前时间,这个时间需要加上 946656000 后为utc时间。