nl::Weave::Profiles::Time::SingleSourceTimeSyncClient

摘要

公共类型

ClientState{
  kClientState_Idle,
  kClientState_Sync_1,
  kClientState_Sync_2
}
枚举
此时间同步客户端的当前状态
SyncCompletionHandler)(void *const aApp, const WEAVE_ERROR aErrorCode, const timesync_t aCorrectedSystemTime) typedef
void(*
在两次时间同步尝试都完成后进行的回调。
TimeChangeNotificationHandler)(void *const aApp, ExchangeContext *aEC) typedef
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)
使用给定的 Binding 进行同步,并使用提供的指针执行回调。

受保护的函数

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

 ClientState

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

属性
kClientState_Idle

已初始化,正在等待时间更改通知,但没有实际执行时间同步操作。

kClientState_Sync_1

正在进行首次同步尝试。

kClientState_Sync_2

正在进行第二次同步尝试。

SyncCompletionHandler

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)

用于指明我们刚刚收到时间更改通知的回调。

Init 时设置为 NULL。如果未设置此政策,系统会忽略时间变化通知。应用层可以在此回调中调用 Abort 和 Sync。

具体说明
参数
[in] aApp
指向应用层数据的指针,在 Init 中设置。
[in] aEC
这则传入邮件的交换上下文,可用于验证其真实性

受保护的类型

@324

 @324

公共属性

OnTimeChangeNotificationReceived

TimeChangeNotificationHandler OnTimeChangeNotificationReceived

受保护的属性

mApp

void * mApp

mBinding

Binding * mBinding

mClientState

ClientState mClientState

mExchangeContext

ExchangeContext * mExchangeContext

mExchangeMgr

WeaveExchangeManager * mExchangeMgr

mFlightTime_usec

int32_t mFlightTime_usec

存储单程时间。

mIsInCallback

bool mIsInCallback

mOnSyncCompleted

SyncCompletionHandler mOnSyncCompleted

mRegisterSyncResult_usec

timesync_t mRegisterSyncResult_usec

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

mRemoteTimestamp_usec

timesync_t mRemoteTimestamp_usec

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

mUnadjTimestampLastSent_usec

timesync_t mUnadjTimestampLastSent_usec

公共函数

取消

void Abort(
  void
)

中止当前的时间同步操作。

版本绑定。取消主动交换。切换回闲置状态。

GetClientState

ClientState GetClientState(
  void
) const 

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

具体说明
返回值
当前状态

Init

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

初始化此客户端。

必须先调用,然后才能使用其他函数。零/NULL 初始化所有内部数据,并注册时间变化通知。

具体说明
参数
[in] aApp
指向更高层数据的指针,用于对更高层的回调。
[in] aExchangeMgr
指向 Exchange 管理器的指针,将用于注册时间变化通知邮件处理程序
返回值
成功时返回 WEAVE_NO_ERROR

同步

WEAVE_ERROR Sync(
  Binding *const aBinding,
  SyncCompletionHandler OnSyncCompleted
)

使用给定的 Binding 进行同步,并使用提供的指针执行回调。

如果存在正在进行的时间同步操作,则该操作会被隐式取消,而不会进行任何回调。在回调 OnSyncCompleted 中不可用,但在 OnTimeChangeNotificationReceived 中允许。出现错误时,系统会在从此函数返回之前隐式调用 Abort。

具体说明
参数
[in] aBinding
绑定,用于连接时间服务器
[in] OnSyncCompleted
在时间同步操作完成后使用的回调函数
返回值
如果成功,则为 WEAVE_NO_ERROR

受保护的函数

EnterSync2

void EnterSync2(
  void
)

FinalProcessing

void FinalProcessing(
  void
)

GetClientStateName

const char * GetClientStateName(
  void
) const 

InvalidateRegisteredResult

void InvalidateRegisteredResult(
  void
)

使注册信息失效,以便进行时间更正。

IsRegisteredResultValid

bool IsRegisteredResultValid(
  void
)

检查用于时间更正的注册信息是否有效。

OnResponseTimeout

void OnResponseTimeout(
  void
)

OnSyncResponse

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

ProceedToNextState

void ProceedToNextState(
  void
)

RegisterSyncResultIfNewOrBetter

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

SendSyncRequest

WEAVE_ERROR SendSyncRequest(
  void
)

SetClientState

void SetClientState(
  const ClientState state
)

取消

void _AbortWithCallback(
  const WEAVE_ERROR aErrorCode
)

受保护的静态函数

HandleResponseTimeout

void HandleResponseTimeout(
  ExchangeContext *aEC
)

HandleSyncResponse

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

HandleTimeChangeNotification

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