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
此传入邮件使用的 Exchange 上下文,可用于验证其真实性

受保护的类型

@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
)

_AbortWithCallback

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
)