nl::Weave::Profiles::Time::TimeSyncNode

概要

継承

継承元: nl::Weave::Profiles::Time::_TimeSyncNodeBase

コンストラクタとデストラクタ

TimeSyncNode(void)
mBootTimeForNextAutoDiscovery_usec
timesync_t
mIsAutoSyncEnabled
bool
自動同期機能に使用される状態の数。
mIsUrgentDiscoveryPending
bool
mNominalDiscoveryPeriod_msec
int32_t
mShortestDiscoveryPeriod_msec
int32_t
mSyncPeriod_msec
int32_t
mActiveContact
やり取りできます。
mExchangeContext
mUnadjTimestampLastSent_usec
timesync_t
EnterState_Discover(void)
void
これらの状態遷移関数は内部関数であり、前の状態ではそれらを処理する方法がないため、エラーコードを返すことはできません。
EnterState_ServiceSync_1(void)
void
EnterState_ServiceSync_2(void)
void
EnterState_Sync_1(void)
void
EnterState_Sync_2(void)
void

パブリック タイプ

ClientState enum
現在のステータスが表示されます。
CommState enum
ステータスをモニタリングできます。
ContributorFilter)(void *const aApp, Contact aContact[], const int aSize) typedef
void(*
コールバックは、レスポンスから時刻修正を計算する直前に行われます。
OnSyncRequestReceivedHandler)(void *const aApp, const WeaveMessageInfo *aMsgInfo, const uint8_t aLikelyhood, const bool aIsTimeCoordinator) typedef
bool(*
コールバックを受信して、時刻同期リクエストを受信したことを示します。
ResponseStatus enum
特定の連絡先に対する保存済みの応答のステータス。
ServerState{
  kServerState_UnreliableAfterBoot,
  kServerState_Idle
}
enum
現在のステータスを指定します。
SyncFailedHandler)(void *const aApp, const WEAVE_ERROR aErrorCode) typedef
void(*
コールバックは、自動同期を含め、同期が失敗したとみなされるときに発生します。
SyncSucceededHandler)(void *const aApp, const timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor) typedef
bool(*
コールバックは、自動同期を含め、同期が正常に完了したとみなされる後、結果が適用される前に発生します。
TimeChangeNotificationHandler)(void *const aApp, const uint64_t aNodeId, const IPAddress &aNodeAddr) typedef
void(*
時間変更通知を受信したことを示します。

パブリック属性

FilterTimeCorrectionContributor
OnSyncFailed
OnSyncRequestReceived
設定されていない場合、デフォルトの実装では常に true が返されます。
OnSyncSucceeded
設定されていない場合、デフォルトの動作で、ごく小さなサーバーの修正を除くすべての結果を取得します。
OnTimeChangeNotificationReceived
mEncryptionType
uint8_t
ローカル通信の暗号化方式
mKeyId
uint16_t
ローカル通信に使用される鍵 ID

プロテクト属性

mApp
void *
上位レイヤのデータへのポインタ
mClientState
mConnectionToService
サービスとの通信に使用される TCP 接続。
mContacts[WEAVE_CONFIG_TIME_CLIENT_MAX_NUM_CONTACTS]
状況把握を通じて学習した連絡先情報。
mIsAlwaysFresh
bool
mIsInCallback
bool
上位レイヤへのコールバック中の場合は true
mLastLikelihoodSent
int8_t
mNumContributorInLastLocalSync
uint8_t
mRole
TimeSyncRole
このノードの実際のロール。
mServerState
mServiceContact
mTimestampLastCorrectionFromServerOrNtp_usec
timesync_t
スリープ時間の補正が必要なため、起動時間にする必要があります。
mTimestampLastLocalSync_usec
timesync_t
スリープ時間の補正が必要なため、起動時間にする必要があります。

パブリック関数

Abort(void)
エンジンを強制的にアイドル状態に戻し、実行中の処理を中止する。
DisableAutoSync(void)
void
自動同期を無効にする
EnableAutoSync(const int32_t aSyncPeriod_msec, const int32_t aNominalDiscoveryPeriod_msec, const int32_t aShortestDiscoveryPeriod_msec)
自動同期を有効にします。
GetCapacityOfContactList(void) const
int
このエンジンで保存するよう設定された連絡先の最大数を取得するシンプルなゲッター
GetClientState(void) const
クライアントの状態を示すシンプルなゲッター
GetNextLikelihood(void) const
int8_t
永続性の可能性が抽出されます。
GetServerState(void) const
サーバーの状態を取得するシンプルなゲッター
InitClient(void *const aApp, WeaveExchangeManager *aExchangeMgr, const uint8_t aEncryptionType, const uint16_t aKeyId, const int8_t aInitialLikelyhood)
初期化します。
InitCoordinator(nl::Weave::WeaveExchangeManager *aExchangeMgr, const uint8_t aEncryptionType, const uint16_t aKeyId, const int32_t aSyncPeriod_msec, const int32_t aNominalDiscoveryPeriod_msec, const int32_t aShortestDiscoveryPeriod_msec)
このコーディネーターを初期化します。
InitServer(void *const aApp, WeaveExchangeManager *const aExchangeMgr, const bool aIsAlwaysFresh)
時刻同期サーバーを目的としている場合は、オブジェクト構築後の最初の関数としてサーバー ロールの初期化を呼び出す必要があります。
MulticastTimeChangeNotification(const uint8_t aEncryptionType, const uint16_t aKeyId) const
void
上位レイヤからマルチキャスト時刻変更通知に対して呼び出されます。
RegisterCorrectionFromServerOrNtp(void)
void
上位レイヤから呼び出され、任意のサーバーまたは NTP などの信頼できる手段による同期のラウンドが終了したことを示す。
RegisterLocalSyncOperation(const uint8_t aNumContributor)
void
上位レイヤから呼び出され、他のローカル コーディネーターとのタイム同期が完了したことを示す。
Shutdown(void)
停止する可能性があります。
Sync(const bool aForceDiscoverAgain)
既存の連絡先を使用して同期できます。
SyncWithNodes(const int16_t aNumNode, const ServingNode aNodes[])
指定された連絡先リストを使用して同期を実行します。
SyncWithService(WeaveConnection *const aConnection)
暗号化と鍵 ID を使用して同期を実行します。

プロテクト関数

AbortOnError(const WEAVE_ERROR aCode)
void
aCode が WEAVE_NO_ERROR でない場合に内部中断
AutoSyncNow(void)
void
自動同期セッションを開始する内部関数です
CallbackForSyncCompletion(const bool aIsSuccessful, bool aShouldUpdate, const bool aIsCorrectionReliable, const bool aIsFromServer, const uint8_t aNumContributor, const timesync_t aSystemTimestamp_usec, const timesync_t aDiffTime_usec)
アプリケーション レイヤへのコールバックを誘導します。
ClearState(void)
void
DestroyCommContext(void)
bool
Weave の ExchangeContext を閉じます。
EndLocalSyncAndTryCalculateTimeFix(void)
void
EndServiceSyncAndTryCalculateTimeFix(void)
void
FindReplaceableContact(const uint64_t aNodeId, const IPAddress & aNodeAddr, bool aIsTimeChangeNotification)
連絡先情報を保存するスロットを返す
GetClientStateName(void) const
const char *const
GetNextIdleContact(void)
次の有効なアイドル状態の連絡先を取得する
GetNumNotYetCompletedContacts(void)
int16_t
有効な連絡先の数を取得しますが、まだ連絡していません。
GetNumReliableResponses(void)
int16_t
これまでに収集した「信頼できる」回答の数を確認できます。
InitState(const TimeSyncRole aRole, void *const aApp, WeaveExchangeManager *const aExchangeMgr)
InvalidateAllContacts(void)
void
ローカルの連絡先をすべて無効にする
InvalidateServiceContact(void)
void
サービスへの接続を無効にする
RegisterCommError(Contact *const aContact)
void
特定の連絡先の通信エラーを登録し、必要に応じて自動検出期間を短縮する。通話する相手がいないことを示すために Contact を NULL にして、自動検出期間を短縮するだけ
SendSyncRequest(bool *const rIsMessageSent, Contact *const aContact)
連絡先にユニキャスト同期リクエストを送信する。
SetAllCompletedContactsToIdle(void)
int16_t
完了した連絡先をすべて再びアイドル状態にリセットする。ただし、応答には触れないようにする。
SetAllValidContactsToIdleAndInvalidateResponse(void)
int16_t
すべての有効なローカル連絡先をアイドル状態に設定し、応答を消去する。
SetClientState(const ClientState state)
void
SetupUnicastCommContext(Contact *const aContact)
ユニキャスト通信用に新しい Weave Exchange を作成する
StoreNotifyingContact(const uint64_t aNodeId, const IPAddress & aNodeAddr)
void
たった今時間変更通知を送信したノードの連絡先情報を保存する
UpdateMulticastSyncResponse(const uint64_t aNodeId, const IPAddress & aNodeAddr, const TimeSyncResponse & aResponse)
void
マルチキャスト リクエストから返されたレスポンスを処理する
UpdateUnicastSyncResponse(const TimeSyncResponse & aResponse)
void
ユニキャスト リクエストから返されたレスポンスを処理する
_InitClient(const uint8_t aEncryptionType, const uint16_t aKeyId, const int8_t aInitialLikelyhood)
初期化する必要があります。
_InitServer(const bool aIsAlwaysFresh)
を初期化します。
_ShutdownClient(void)
コールバックで利用できないクライアントを停止する。
_ShutdownCoordinator(void)
コールバックでは使用できないコーディネーターを停止します。
_ShutdownServer(void)
コールバックで利用できないサーバーを停止する。

保護された静的関数

HandleAutoDiscoveryTimeout(System::Layer *aSystemLayer, void *aAppState, System::Error aError)
void
HandleAutoSyncTimeout(System::Layer *aSystemLayer, void *aAppState, System::Error aError)
void
HandleMulticastResponseTimeout(System::Layer *aSystemLayer, void *aAppState, System::Error aError)
void
HandleMulticastSyncResponse(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
HandleSyncRequest(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
時刻同期リクエストが届いたときの Weave Exchange からのコールバック
HandleTimeChangeNotification(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
HandleUnicastResponseTimeout(ExchangeContext *const ec)
void
HandleUnicastSyncResponse(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
void
HandleUnreliableAfterBootTimer(System::Layer *aSystemLayer, void *aAppState, System::Error aError)
void
信頼性の低いブート バリアを渡したときに、Weave タイマーからコールバックが
IsOperationalState(ClientState aState)
bool
指定された状態が動作可能かどうかを判断します。
_OnSyncSucceeded(void *const aApp, const nl::Weave::Profiles::Time::timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor)
bool

mBootTimeForNextAutoDiscovery_usec

timesync_t mBootTimeForNextAutoDiscovery_usec

mIsAutoSyncEnabled

bool mIsAutoSyncEnabled

自動同期機能に使用される状態の数。

mIsUrgentDiscoveryPending

bool mIsUrgentDiscoveryPending

mNominalDiscoveryPeriod_msec

int32_t mNominalDiscoveryPeriod_msec

mShortestDiscoveryPeriod_msec

int32_t mShortestDiscoveryPeriod_msec

mSyncPeriod_msec

int32_t mSyncPeriod_msec

mActiveContact

Contact * mActiveContact

やり取りできます。

mExchangeContext

ExchangeContext * mExchangeContext

mUnadjTimestampLastSent_usec

timesync_t mUnadjTimestampLastSent_usec

EnterState_Discover

void EnterState_Discover(
  void
)

これらの状態遷移関数は内部関数であり、前の状態ではそれらを処理する方法がないため、エラーコードを返すことはできません。

タイマーが失敗した場合でも、うまくハングアップしなければ、最終的に別の状態遷移(タイムアウトになることがあります)が発生します。

EnterState_ServiceSync_1

void EnterState_ServiceSync_1(
  void
)

EnterState_ServiceSync_2

void EnterState_ServiceSync_2(
  void
)

EnterState_Sync_1

void EnterState_Sync_1(
  void
)

EnterState_Sync_2

void EnterState_Sync_2(
  void
)

パブリック タイプ

ClientState

 ClientState

現在のステータスが表示されます。

CommState

 CommState

ステータスをモニタリングできます。

連絡先が一般公開されているため、一般公開されています

ContributorFilter

void(* ContributorFilter)(void *const aApp, Contact aContact[], const int aSize)

コールバックは、レスポンスから時刻修正を計算する直前に行われます。

アプリケーション レイヤが aContact[i].mResponseStatus を kResponseStatus_Invalid に上書きして、応答が計算で無視されるようにできます。

詳細
パラメータ
[in] aApp
init で設定されたアプリレイヤデータへのポインタ。
[in] aContact
連絡先とレスポンスのステータスの配列
[in] aSize
aContact 配列のレコード数

OnSyncRequestReceivedHandler

bool(* OnSyncRequestReceivedHandler)(void *const aApp, const WeaveMessageInfo *aMsgInfo, const uint8_t aLikelyhood, const bool aIsTimeCoordinator)

コールバックを受信して、時刻同期リクエストを受信したことを示します。

詳細
パラメータ
[in] aApp
init で設定されたアプリレイヤデータへのポインタ。
[in] aMsgInfo
受信した時刻同期リクエストに関する情報(送信元に関する情報を含む)を含む WeaveMessageInfo
[in] aLikelyhood
報告者から要求された応答の可能性
[in] aIsTimeCoordinator
送信元ノードが時間同期コーディネーターの場合は true
戻り値
false の場合、エンジンはこのリクエストを無視します。

ResponseStatus

 ResponseStatus

特定の連絡先に対する保存済みの応答のステータス。

連絡先が一般公開されているため、一般公開されています

ServerState

 ServerState

現在のステータスを指定します。

プロパティ
kServerState_Idle

サーバーが通常の設定でリクエストに応答できる状態になっている

kServerState_UnreliableAfterBoot

他の手段を通じてサーバーがシステム時刻を同期するために予約された時間。Init が呼び出されたときに aIsAlwaysFresh が true の場合にのみ意味がある。

SyncFailedHandler

void(* SyncFailedHandler)(void *const aApp, const WEAVE_ERROR aErrorCode)

コールバックは、自動同期を含め、同期が失敗したとみなされるときに発生します。

同期を停止するために Abort が呼び出されても、コールバックは発生しないことに注意してください

詳細
パラメータ
[in] aApp
init で設定されたアプリレイヤデータへのポインタ。
[in] aErrorCode
失敗の理由

SyncSucceededHandler

bool(* SyncSucceededHandler)(void *const aApp, const timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor)

コールバックは、自動同期を含め、同期が正常に完了したとみなされる後、結果が適用される前に発生します。

成功したからといって、該当する結果があるとは限りません。レスポンスを受信しなかった場合、aNumContributor は 0 に設定されます。アプリケーション レイヤは、計算でレスポンスを無視するように aContact[i].mResponseStatus を kResponseStatus_Invalid に上書きできます。

詳細
パラメータ
[in] aApp
init で設定されたアプリレイヤデータへのポインタ。
[in] aOffsetUsec
usec の修正量
[in] aIsReliable
組み込みのロジックで信頼性が高いと判断される
[in] aIsServer
修正はサーバーから取得されていますか
[in] aNumContributor
この修正に影響を与えたノードの数。0 は、同期オペレーションの結果がないことを意味します。
戻り値
このオフセットを使用してシステム時刻を調整する場合は true です。aNumContributor が 0 の場合、戻り値は無視されます。

TimeChangeNotificationHandler

void(* TimeChangeNotificationHandler)(void *const aApp, const uint64_t aNodeId, const IPAddress &aNodeAddr)

時間変更通知を受信したことを示します。

自動同期モードが有効になっている場合、このコールバックの直後に時間同期が自動的にスケジュールされます。それ以外の場合は、アプリケーション レイヤで Sync 関数ファミリーを呼び出して、通常の not-available-in-call-back ルールで制限されていない同期オペレーションを直接開始できます。ただし、この特別なコールバックはまだ Weave 交換レイヤのコールバック スタックの上にあります。

詳細
パラメータ
[in] aApp
init で設定されたアプリレイヤデータへのポインタ。
[in] aNodeId
リクエスト元のノード ID
[in] aNodeAddr
リクエストするノードアドレス

パブリック属性

FilterTimeCorrectionContributor

ContributorFilter FilterTimeCorrectionContributor

OnSyncFailed

SyncFailedHandler OnSyncFailed

OnSyncRequestReceived

OnSyncRequestReceivedHandler OnSyncRequestReceived

設定されていない場合、デフォルトの実装では常に true が返されます。

OnSyncSucceeded

SyncSucceededHandler OnSyncSucceeded

設定されていない場合、デフォルトの動作で、ごく小さなサーバーの修正を除くすべての結果を取得します。

OnTimeChangeNotificationReceived

TimeChangeNotificationHandler OnTimeChangeNotificationReceived

mEncryptionType

uint8_t mEncryptionType

ローカル通信の暗号化方式

mKeyId

uint16_t mKeyId

ローカル通信に使用される鍵 ID

プロテクト属性

mApp

void * mApp

上位レイヤのデータへのポインタ

mClientState

ClientState mClientState

mConnectionToService

WeaveConnection * mConnectionToService

サービスとの通信に使用される TCP 接続。

mContacts

Contact mContacts[WEAVE_CONFIG_TIME_CLIENT_MAX_NUM_CONTACTS]

状況把握を通じて学習した連絡先情報。

mIsAlwaysFresh

bool mIsAlwaysFresh

mIsInCallback

bool mIsInCallback

上位レイヤへのコールバック中の場合は true

mLastLikelihoodSent

int8_t mLastLikelihoodSent

mNumContributorInLastLocalSync

uint8_t mNumContributorInLastLocalSync

mRole

TimeSyncRole mRole

このノードの実際のロール。

mServerState

ServerState mServerState

mServiceContact

Contact mServiceContact

mTimestampLastCorrectionFromServerOrNtp_usec

timesync_t mTimestampLastCorrectionFromServerOrNtp_usec

スリープ時間の補正が必要なため、起動時間にする必要があります。

mTimestampLastLocalSync_usec

timesync_t mTimestampLastLocalSync_usec

スリープ時間の補正が必要なため、起動時間にする必要があります。

パブリック関数

中止(abort)

WEAVE_ERROR Abort(
  void
)

エンジンを強制的にアイドル状態に戻し、実行中の処理を中止する。

同期の成功や失敗は呼び出されません。すべての Weave エクスチェンジがクローズされます。これ以上 TCP 接続にはアクセスできません。すでにアイドル状態の場合は何も処理されません。コールバックでは使用できません。

詳細
戻り値
成功時 WEAVE_NO_ERROR

DisableAutoSync

void DisableAutoSync(
  void
)

自動同期を無効にする

アイドル状態でのみ利用可能。コールバックでは使用できません。

EnableAutoSync

WEAVE_ERROR EnableAutoSync(
  const int32_t aSyncPeriod_msec,
  const int32_t aNominalDiscoveryPeriod_msec,
  const int32_t aShortestDiscoveryPeriod_msec
)

自動同期を有効にします。

アイドル状態でのみ利用可能です。検出はすぐに行われます。コールバックでは使用できません。

詳細
パラメータ
[in] aSyncPeriod_msec
同期の間隔(ミリ秒)
[in] aNominalDiscoveryPeriod_msec
通信エラーが検出されない場合の、検出までの間隔(ミリ秒)
[in] aShortestDiscoveryPeriod_msec
通信エラーが確認された場合、検出までの最短時間(ミリ秒単位)
戻り値
成功時 WEAVE_NO_ERROR

GetCapacityOfContactList

int GetCapacityOfContactList(
  void
) const 

このエンジンで保存するよう設定された連絡先の最大数を取得するシンプルなゲッター

GetClientState

ClientState GetClientState(
  void
) const 

クライアントの状態を示すシンプルなゲッター

GetNextLikelihood

int8_t GetNextLikelihood(
  void
) const 

永続性の可能性が抽出されます。

結果は、同期オペレーションが完了した後、OnSyncSucceeded と OnSyncFailed のコールバック内でのみ有効です。それ以外の場合は一時的なものであり、次に使用される Likelihood ではなく、現在の Likelihood である可能性があります。

詳細
戻り値
次のリクエストでレスポンスが使用される可能性

GetServerState

ServerState GetServerState(
  void
) const 

サーバーの状態を取得するシンプルなゲッター

InitClient

WEAVE_ERROR InitClient(
  void *const aApp,
  WeaveExchangeManager *aExchangeMgr,
  const uint8_t aEncryptionType,
  const uint16_t aKeyId,
  const int8_t aInitialLikelyhood
)

初期化します。

コールバックでは利用不可

詳細
パラメータ
[in] aApp
上位レイヤへのコールバックで使用される、上位レイヤのデータへのポインタ。
[in] aExchangeMgr
システム全体の Weave Exchange Manager オブジェクトへのポインタ
[in] aRole
kTimeSyncRole_Client または kTimeSyncRole_Coordinator のいずれかです。
[in] aEncryptionType
リクエストとレスポンスで使用する暗号化タイプを
[in] aKeyId
リクエストとレスポンスに使用する鍵 ID
[in] aInitialLikelyhood
調査ステージで使用される初期の可能性
戻り値
成功時 WEAVE_NO_ERROR

InitCoordinator

WEAVE_ERROR InitCoordinator(
  nl::Weave::WeaveExchangeManager *aExchangeMgr,
  const uint8_t aEncryptionType,
  const uint16_t aKeyId,
  const int32_t aSyncPeriod_msec,
  const int32_t aNominalDiscoveryPeriod_msec,
  const int32_t aShortestDiscoveryPeriod_msec
)

このコーディネーターを初期化します。

詳細
パラメータ
[in] aExchangeMgr
システム全体の Weave Exchange Manager オブジェクトへのポインタ
[in] aEncryptionType
リクエストとレスポンスで使用する暗号化タイプを
[in] aKeyId
リクエストとレスポンスに使用する鍵 ID
[in] aSyncPeriod_msec
同期の間隔(ミリ秒)
[in] aNominalDiscoveryPeriod_msec
通信エラーが検出されない場合の検出までの最短時間(ミリ秒単位)
[in] aShortestDiscoveryPeriod_msec
通信エラーが確認された場合に、検出の間の最小ミリ秒数
戻り値
成功時 WEAVE_NO_ERROR

InitServer

WEAVE_ERROR InitServer(
  void *const aApp,
  WeaveExchangeManager *const aExchangeMgr,
  const bool aIsAlwaysFresh
)

時刻同期サーバーを目的としている場合は、オブジェクト構築後の最初の関数としてサーバー ロールの初期化を呼び出す必要があります。

コールバックでは利用不可

詳細
パラメータ
[in] aApp
上位レイヤへのコールバックで使用される、上位レイヤのデータへのポインタ。
[in] aExchangeMgr
システム全体の Weave Exchange Manager オブジェクトへのポインタ
[in] aIsAlwaysFresh
true に設定すると、最初の信頼できない時刻を除き、サーバーが常に同期されることを示します。Coordinator の場合は false に設定します。
戻り値
成功時 WEAVE_NO_ERROR

MulticastTimeChangeNotification

void MulticastTimeChangeNotification(
  const uint8_t aEncryptionType,
  const uint16_t aKeyId
) const 

上位レイヤからマルチキャスト時刻変更通知に対して呼び出されます。

では利用できません。

詳細
パラメータ
[in] aEncryptionType
この通知に使用される暗号化のタイプ
[in] aKeyId
この通知に使用する鍵 ID

RegisterCorrectionFromServerOrNtp

void RegisterCorrectionFromServerOrNtp(
  void
)

上位レイヤから呼び出され、任意のサーバーまたは NTP などの信頼できる手段による同期のラウンドが終了したことを示す。

RegisterLocalSyncOperation

void RegisterLocalSyncOperation(
  const uint8_t aNumContributor
)

上位レイヤから呼び出され、他のローカル コーディネーターとのタイム同期が完了したことを示す。

詳細
パラメータ
[in] aNumContributor
この時刻の同期に貢献したコーディネーターの数

シャットダウン

WEAVE_ERROR Shutdown(
  void
)

停止する可能性があります。

この関数は、割り当てられたリソースを適切に再利用するために呼び出す必要があります。その後、init 関数をもう一度呼び出すことができます。コールバックでは使用できません。

詳細
戻り値
成功時 WEAVE_NO_ERROR

同期

WEAVE_ERROR Sync(
  const bool aForceDiscoverAgain
)

既存の連絡先を使用して同期できます。

有効な連絡先がない場合は、同期操作が失敗する可能性があります。aForceDiscoverAgain を true に設定して、直ちに検出を強制実行してください。アイドル状態でのみ使用可能。コールバックでは使用できません。

詳細
パラメータ
[in] aForceDiscoverAgain
既存の連絡先をすべてフラッシュし、検出オペレーションを実行する場合は true
戻り値
成功時 WEAVE_NO_ERROR

SyncWithNodes

WEAVE_ERROR SyncWithNodes(
  const int16_t aNumNode,
  const ServingNode aNodes[]
)

指定された連絡先リストを使用して同期を実行します。

既存の連絡先リストはフラッシュされます。アイドル状態でのみ使用可能。コールバックでは使用できません。

詳細
パラメータ
[in] aNumNode
配列 aNodes 内の連絡先の数
[in] aNodes
連絡先レコードの配列
戻り値
成功時 WEAVE_NO_ERROR

SyncWithService

WEAVE_ERROR SyncWithService(
  WeaveConnection *const aConnection
)

暗号化と鍵 ID を使用して同期を実行します。

同期終了後、呼び出し元は TCP 接続の所有権を取得する必要があります。TCP 接続のコールバックは上書きされません。新しい Weave Exchange が作成され、そのコンテキスト上に設定されるコールバックがアイドル状態でのみ利用可能になるため、コールバックでは利用不可となります。

詳細
パラメータ
[in] aConnection
Weave 接続へのポインタ
戻り値
成功時 WEAVE_NO_ERROR

TimeSyncNode

 TimeSyncNode(
  void
)

プロテクト関数

AbortOnError

void AbortOnError(
  const WEAVE_ERROR aCode
)

aCode が WEAVE_NO_ERROR でない場合に内部中断

AutoSyncNow

void AutoSyncNow(
  void
)

自動同期セッションを開始する内部関数です

CallbackForSyncCompletion

WEAVE_ERROR CallbackForSyncCompletion(
  const bool aIsSuccessful,
  bool aShouldUpdate,
  const bool aIsCorrectionReliable,
  const bool aIsFromServer,
  const uint8_t aNumContributor,
  const timesync_t aSystemTimestamp_usec,
  const timesync_t aDiffTime_usec
)

アプリケーション レイヤへのコールバックを誘導します。

エラー コールバックを発生させるには、aIs 成功を false に設定する

ClearState

void ClearState(
  void
)

DestroyCommContext

bool DestroyCommContext(
  void
)

Weave の ExchangeContext を閉じます。

EndLocalSyncAndTryCalculateTimeFix

void EndLocalSyncAndTryCalculateTimeFix(
  void
)

EndServiceSyncAndTryCalculateTimeFix

void EndServiceSyncAndTryCalculateTimeFix(
  void
)

FindReplaceableContact

Contact * FindReplaceableContact(
  const uint64_t aNodeId,
  const IPAddress & aNodeAddr,
  bool aIsTimeChangeNotification
)

連絡先情報を保存するスロットを返す

GetClientStateName

const char *const GetClientStateName(
  void
) const 

GetNextIdleContact

Contact * GetNextIdleContact(
  void
)

次の有効なアイドル状態の連絡先を取得する

GetNumNotYetCompletedContacts

int16_t GetNumNotYetCompletedContacts(
  void
)

有効な連絡先の数を取得しますが、まだ連絡していません。

GetNumReliableResponses

int16_t GetNumReliableResponses(
  void
)

これまでに収集した「信頼できる」回答の数を確認できます。

を呼び出して、十分な回答が収集されているかどうかを判断します。

InitState

WEAVE_ERROR InitState(
  const TimeSyncRole aRole,
  void *const aApp,
  WeaveExchangeManager *const aExchangeMgr
)

InvalidateAllContacts

void InvalidateAllContacts(
  void
)

ローカルの連絡先をすべて無効にする

InvalidateServiceContact

void InvalidateServiceContact(
  void
)

サービスへの接続を無効にする

RegisterCommError

void RegisterCommError(
  Contact *const aContact
)

特定の連絡先の通信エラーを登録し、必要に応じて自動検出期間を短縮する。通話する相手がいないことを示すために Contact を NULL にして、自動検出期間を短縮するだけ

SendSyncRequest

WEAVE_ERROR SendSyncRequest(
  bool *const rIsMessageSent,
  Contact *const aContact
)

連絡先にユニキャスト同期リクエストを送信する。

メッセージが送信されたかどうかを示すために *rIsMessageSent が設定されます。アドレスにアクセスできないなどの通信エラーは返されないため、呼び出し元は戻りコードと *rIsMessageSent の両方を確認する必要があります。

SetAllCompletedContactsToIdle

int16_t SetAllCompletedContactsToIdle(
  void
)

完了した連絡先をすべて再びアイドル状態にリセットする。ただし、応答には触れないようにする。

同じノードへの 2 つの通信ラウンドの間に呼び出される

SetAllValidContactsToIdleAndInvalidateResponse

int16_t SetAllValidContactsToIdleAndInvalidateResponse(
  void
)

すべての有効なローカル連絡先をアイドル状態に設定し、応答を消去する。

1 つずつ呼び出す前に呼び出されます

SetClientState

void SetClientState(
  const ClientState state
)

SetupUnicastCommContext

WEAVE_ERROR SetupUnicastCommContext(
  Contact *const aContact
)

ユニキャスト通信用に新しい Weave Exchange を作成する

StoreNotifyingContact

void StoreNotifyingContact(
  const uint64_t aNodeId,
  const IPAddress & aNodeAddr
)

たった今時間変更通知を送信したノードの連絡先情報を保存する

UpdateMulticastSyncResponse

void UpdateMulticastSyncResponse(
  const uint64_t aNodeId,
  const IPAddress & aNodeAddr,
  const TimeSyncResponse & aResponse
)

マルチキャスト リクエストから返されたレスポンスを処理する

UpdateUnicastSyncResponse

void UpdateUnicastSyncResponse(
  const TimeSyncResponse & aResponse
)

ユニキャスト リクエストから返されたレスポンスを処理する

_initClient

WEAVE_ERROR _InitClient(
  const uint8_t aEncryptionType,
  const uint16_t aKeyId,
  const int8_t aInitialLikelyhood
)

初期化する必要があります。

パブリック関数の Init ファミリーによって内部的に使用されることを目的としています。返される前に mClientState を設定する必要があります。コールバックでは使用できません。

詳細
パラメータ
[in] aEncryptionType
リクエストとレスポンスで使用する暗号化タイプを
[in] aKeyId
リクエストとレスポンスに使用する鍵 ID
[in] aInitialLikelyhood
調査ステージで使用される初期の可能性
戻り値
成功時 WEAVE_NO_ERROR

_InitServer

WEAVE_ERROR _InitServer(
  const bool aIsAlwaysFresh
)

を初期化します。

パブリック関数の Init ファミリーによって内部的に使用されることを目的としています。返される前に mClientState を設定する必要があります。コールバックでは使用できません。

詳細
パラメータ
[in] aIsAlwaysFresh
true に設定すると、最初の信頼できない時刻を除き、サーバーが常に同期されることを示します。Coordinator の場合は false に設定します。
戻り値
成功時 WEAVE_NO_ERROR

_ShutdownClient

WEAVE_ERROR _ShutdownClient(
  void
)

コールバックで利用できないクライアントを停止する。

詳細
戻り値
成功時 WEAVE_NO_ERROR

_ShutdownCoordinator

WEAVE_ERROR _ShutdownCoordinator(
  void
)

コールバックでは使用できないコーディネーターを停止します。

詳細
戻り値
成功時 WEAVE_NO_ERROR

_ShutdownServer

WEAVE_ERROR _ShutdownServer(
  void
)

コールバックで利用できないサーバーを停止する。

詳細
戻り値
成功時 WEAVE_NO_ERROR

保護された静的関数

HandleAutoDiscoveryTimeout

void HandleAutoDiscoveryTimeout(
  System::Layer *aSystemLayer,
  void *aAppState,
  System::Error aError
)

HandleAutoSyncTimeout

void HandleAutoSyncTimeout(
  System::Layer *aSystemLayer,
  void *aAppState,
  System::Error aError
)

HandleMulticastResponseTimeout

void HandleMulticastResponseTimeout(
  System::Layer *aSystemLayer,
  void *aAppState,
  System::Error aError
)

HandleMulticastSyncResponse

void HandleMulticastSyncResponse(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

HandleSyncRequest

void HandleSyncRequest(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

時刻同期リクエストが届いたときの Weave Exchange からのコールバック

HandleTimeChangeNotification

void HandleTimeChangeNotification(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

HandleUnicastResponseTimeout

void HandleUnicastResponseTimeout(
  ExchangeContext *const ec
)

HandleUnicastSyncResponse

void HandleUnicastSyncResponse(
  ExchangeContext *ec,
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *payload
)

HandleUnreliableAfterBootTimer

void HandleUnreliableAfterBootTimer(
  System::Layer *aSystemLayer,
  void *aAppState,
  System::Error aError
)

信頼性の低いブート バリアを渡したときに、Weave タイマーからコールバックが

IsOperationalState

bool IsOperationalState(
  ClientState aState
)

指定された状態が動作可能かどうかを判断します。

ClientState が動作状態を示しているかどうか(つまり、クライアントが初期化を完了していて、シャットダウンの処理中ではない)かどうかを判断するためのコンビニエンス メソッド。

詳細
パラメータ
[in] aState
評価される
戻り値
初期化が完了してからシャットダウンが開始される前に状態になった場合は true、そうでない場合は false です。

_OnSyncSucceeded

bool _OnSyncSucceeded(
  void *const aApp,
  const nl::Weave::Profiles::Time::timesync_t aOffsetUsec,
  const bool aIsReliable,
  const bool aIsServer,
  const uint8_t aNumContributor
)