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)
使用指定的繫結進行同步處理,並使用提供的指標發出回呼。

受保護的函式

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。如果未設定,系統會忽略時間變更通知。應用程式層可在這個回呼中呼叫「取消與同步」。

詳細資料
參數
[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
)

初始化這個用戶端。

必須先呼叫,才能使用其他函式。零/空值初始化所有內部資料,並使用時間變更通知註冊。

詳細資料
參數
[in] aApp
指向較高圖層資料的指標,用於對較高層的回呼。
[in] aExchangeMgr
指向 Exchange Manager 的指標,用於註冊時間變更通知訊息處理常式
傳回
成功時 WEAVE_NO_ERROR

同步

WEAVE_ERROR Sync(
  Binding *const aBinding,
  SyncCompletionHandler OnSyncCompleted
)

使用指定的繫結進行同步處理,並使用提供的指標發出回呼。

如果有進行時間同步處理作業,則會在沒有回呼的情況下以隱含方式取消。不適用於回呼 OnSyncCompleted,但在 OnTimeChangeNotificationReceived 中允許。發生錯誤時,系統會先以隱含方式呼叫取消函式,再傳回這個函式。

詳細資料
參數
[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
)