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,代表至少有 1 次嘗試成功。否則,sErrorCode 將同時失敗,表示最近一次失敗。

詳細說明
參數
[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
)

取消目前的時間同步作業。

版本繫結。取消 Active Exchange。移回閒置狀態。

GetClientState

ClientState GetClientState(
  void
) const 

擷取這個用戶端的目前狀態。

詳細說明
傳回
目前狀態

Init

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

初始化這個用戶端。

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

詳細說明
參數
[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
)