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

概要

パブリック タイプ

ClientState{
  kClientState_Idle,
  kClientState_Sync_1,
  kClientState_Sync_2
}
enum
この時刻同期クライアントの現在の状態
SyncCompletionHandler)(void *const aApp, const WEAVE_ERROR aErrorCode, const timesync_t aCorrectedSystemTime) typedef
void(*
両方の時刻の同期の試行が完了した後のコールバック。
TimeChangeNotificationHandler)(void *const aApp, ExchangeContext *aEC) typedef
void(*
時刻変更通知を受信したことを示すコールバック。

保護されているタイプ

@324 enum

パブリック属性

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

2 回目の同期を試行しています。

SyncCompletionHandler

void(* SyncCompletionHandler)(void *const aApp, const WEAVE_ERROR aErrorCode, const timesync_t aCorrectedSystemTime)

両方の時刻の同期の試行が完了した後のコールバック。

aErrorCode が WEAVE_NO_ERROR の場合、少なくとも 1 回の試行が成功しています。それ以外の場合、どちらも aErrorCode で失敗した場合は、最新のエラーを示します。

詳細
パラメータ
[in] aApp
アプリレイヤ データへのポインタ。Init で設定します。
[in] aErrorCode
WEAVE_NO_ERROR(少なくとも 1 つの時刻同期オペレーションが成功した場合)
[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
)

現在の時刻同期オペレーションを中止。

リリース Binding有効な交換を中止します。アイドル状態に戻ります。

GetClientState

ClientState GetClientState(
  void
) const 

このクライアントの現在の状態を取得します。

詳細
戻り値
現状

init

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
)

指定された 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
)