NL::编织::简介::时间::单源时间同步客户端

概括

公共类型

ClientState {
kClientState_Idle ,
kClientState_Sync_1 ,
kClientState_Sync_2
}
枚举
此时间同步客户端的当前状态
SyncCompletionHandler )(void *const aApp, const WEAVE_ERROR aErrorCode, const timesync_t aCorrectedSystemTime)类型定义
void(*
两次时间同步尝试完成后的回调。
TimeChangeNotificationHandler )(void *const aApp, ExchangeContext *aEC)类型定义
void(*
回调以表明我们刚刚收到时间更改通知。

受保护的类型

@324枚举

公共属性

OnTimeChangeNotificationReceived

受保护的属性

mApp
void *
mBinding
mClientState
mExchangeContext
mExchangeMgr
mFlightTime_usec
int32_t
用于存储单程飞行时间。
mIsInCallback
bool
mOnSyncCompleted
mRegisterSyncResult_usec
timesync_t
用于在注册结果时存储时间戳
mRemoteTimestamp_usec
timesync_t
用于存储远程节点的系统时间,即将发送响应消息的时间
mUnadjTimestampLastSent_usec
timesync_t

公共职能

Abort (void)
void
中止当前时间同步操作。
GetClientState (void) const
检索此客户端的当前状态。
Init (void *const aApp, WeaveExchangeManager *const aExchangeMgr)
初始化这个客户端。
Sync ( Binding *const aBinding, SyncCompletionHandler OnSyncCompleted)
同步使用给定的约束,使使用所提供的指针的回调。

受保护的功能

EnterSync2 (void)
void
FinalProcessing (void)
void
GetClientStateName (void) const
const char *
InvalidateRegisteredResult (void)
void
使注册信息无效以进行时间校正。
IsRegisteredResultValid (void)
bool
检查时间校正的注册信息是否有效。
OnResponseTimeout (void)
void
OnSyncResponse (uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aPayload)
void
ProceedToNextState (void)
void
RegisterSyncResultIfNewOrBetter (const timesync_t aNow_usec, const timesync_t aRemoteTimestamp_usec, const int32_t aFlightTime_usec)
void
SendSyncRequest (void)
SetClientState (const ClientState state)
void
_AbortWithCallback (const WEAVE_ERROR aErrorCode)
void

受保护的静态函数

HandleResponseTimeout ( ExchangeContext *aEC)
void
HandleSyncResponse ( ExchangeContext *aEC, const IPPacketInfo *aPktInfo, const WeaveMessageInfo *aMsgInfo, uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aPayload)
void
HandleTimeChangeNotification ( ExchangeContext *aEC, const IPPacketInfo *aPktInfo, const WeaveMessageInfo *aMsgInfo, uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aPayload)
void

公共类型

客户端状态

 ClientState

此时间同步客户端的当前状态

特性
kClientState_Idle

已初始化,等待时间更改通知,但没有发生实际的时间同步操作。

kClientState_Sync_1

处理第一次同步尝试。

kClientState_Sync_2

进行第二次同步尝试。

同步完成处理程序

void(* SyncCompletionHandler)(void *const aApp, const WEAVE_ERROR aErrorCode, const timesync_t aCorrectedSystemTime)

两次时间同步尝试完成后的回调。

如果 aErrorCode 是 WEAVE_NO_ERROR,则至少一次尝试成功。否则两者都失败了 aErrorCode 表示最近的失败。

细节
参数
[in] aApp
指向应用层数据的指针,在 Init 中设置。
[in] aErrorCode
WEAVE_NO_ERROR如果至少一个时间同步操作是成功的
[in] aCorrectedSystemTime
只有当aErrorCode有效WEAVE_NO_ERROR

TimeChangeNotificationHandler

void(* TimeChangeNotificationHandler)(void *const aApp, ExchangeContext *aEC)

回调以表明我们刚刚收到时间更改通知。

在设置为NULL 初始化。如果未设置,时间更改通知将被忽略。允许应用层在此回调中调用 Abort 和 Sync。

细节
参数
[in] aApp
指向应用层数据的指针,在 Init 中设置。
[in] aEC
用于此传入消息的 Exchange 上下文,可用于验证其真实性

受保护的类型

@324

 @324

公共属性

OnTimeChangeNotificationReceived

TimeChangeNotificationHandler OnTimeChangeNotificationReceived

受保护的属性

移动应用

void * mApp

绑定

Binding * mBinding

客户端状态

ClientState mClientState

交换上下文

ExchangeContext * mExchangeContext

交换管理器

WeaveExchangeManager * mExchangeMgr

mFlightTime_usec

int32_t mFlightTime_usec

用于存储单程飞行时间。

回调函数

bool mIsInCallback

同步完成

SyncCompletionHandler mOnSyncCompleted

mRegisterSyncResult_usec

timesync_t mRegisterSyncResult_usec

用于在注册结果时存储时间戳

mRemoteTimestamp_usec

timesync_t mRemoteTimestamp_usec

用于存储远程节点的系统时间,即将发送响应消息的时间

mUnadjTimestampLastSent_usec

timesync_t mUnadjTimestampLastSent_usec

公共职能

中止

void Abort(
  void
)

中止当前时间同步操作。

释放绑定。中止活动交换。返回空闲状态。

获取客户端状态

ClientState GetClientState(
  void
) const 

检索此客户端的当前状态。

细节
退货
当前状态

在里面

WEAVE_ERROR Init(
  void *const aApp,
  WeaveExchangeManager *const aExchangeMgr
)

初始化这个客户端。

必须在使用其他函数之前调用。零/NULL 初始化所有内部数据并注册时间更改通知。

细节
参数
[in] aApp
指向更高层数据的指针,用于对更高层的回调。
[in] aExchangeMgr
指向 Exchange Manager 的指针,将用于注册时间更改通知消息处理程序
退货
WEAVE_NO_ERROR 成功

同步

WEAVE_ERROR Sync(
  Binding *const aBinding,
  SyncCompletionHandler OnSyncCompleted
)

同步使用给定的约束,使使用所提供的指针的回调。

如果正在进行时间同步操作,它将被隐式中止而不进行回调。在回调 OnSyncCompleted 中不可用,但在 OnTimeChangeNotificationReceived 中允许。出错时,Abort 将在从此函数返回之前隐式调用。

细节
参数
[in] aBinding
结合到在时间服务器接触来使用
[in] OnSyncCompleted
时间同步操作完成后使用的回调函数
退货

受保护的功能

输入同步2

void EnterSync2(
  void
)

最终处理

void FinalProcessing(
  void
)

获取客户端状态名称

const char * GetClientStateName(
  void
) const 

无效注册结果

void InvalidateRegisteredResult(
  void
)

使注册信息无效以进行时间校正。

IsRegisteredResultValid

bool IsRegisteredResultValid(
  void
)

检查时间校正的注册信息是否有效。

响应超时

void OnResponseTimeout(
  void
)

同步响应

void OnSyncResponse(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aPayload
)

继续下一个状态

void ProceedToNextState(
  void
)

RegisterSyncResultIfNewOrBetter

void RegisterSyncResultIfNewOrBetter(
  const timesync_t aNow_usec,
  const timesync_t aRemoteTimestamp_usec,
  const int32_t aFlightTime_usec
)

发送同步请求

WEAVE_ERROR SendSyncRequest(
  void
)

设置客户端状态

void SetClientState(
  const ClientState state
)

_AbortWithCallback

void _AbortWithCallback(
  const WEAVE_ERROR aErrorCode
)

受保护的静态函数

处理响应超时

void HandleResponseTimeout(
  ExchangeContext *aEC
)

处理同步响应

void HandleSyncResponse(
  ExchangeContext *aEC,
  const IPPacketInfo *aPktInfo,
  const WeaveMessageInfo *aMsgInfo,
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aPayload
)

处理时间变更通知

void HandleTimeChangeNotification(
  ExchangeContext *aEC,
  const IPPacketInfo *aPktInfo,
  const WeaveMessageInfo *aMsgInfo,
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aPayload
)