透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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
)