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

NL::編織::簡介::時間::時間同步節點

概括

遺產

:從繼承NL ::紡織品::概況::時間:: _ 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枚舉
此時間同步客戶端的當前狀態
CommState枚舉
與某個聯繫人的通信狀態。
ContributorFilter )(void *const aApp, Contact aContact[], const int aSize)類型定義
void(*
回調發生在我們根據響應計算時間校正之前。
OnSyncRequestReceivedHandler )(void *const aApp, const WeaveMessageInfo *aMsgInfo, const uint8_t aLikelyhood, const bool aIsTimeCoordinator)類型定義
bool(*
回調指示我們剛剛收到一個時間同步請求。
ResponseStatus枚舉
存儲對某個聯繫人的響應的狀態。
ServerState {
kServerState_UnreliableAfterBoot ,
kServerState_Idle
}
枚舉
此時間同步服務器的當前狀態
SyncFailedHandler )(void *const aApp, const WEAVE_ERROR aErrorCode)類型定義
void(*
當認為同步失敗時會發生回調,包括自動同步。
SyncSucceededHandler )(void *const aApp, const timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor)類型定義
bool(*
回調發生在同步被認為成功之後,包括自動同步,但在應用結果之前。
TimeChangeNotificationHandler )(void *const aApp, const uint64_t aNodeId, const IPAddress &aNodeAddr)類型定義
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
此引擎配置為存儲的最大聯繫人數量的簡單 getter
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)
使用給定的 TCP 連接和關聯的加密和密鑰 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
關閉編織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
在某個聯繫人上註冊通信錯誤,並在需要時縮短自動發現週期 aContact 可以為 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)
為 Client 角色初始化。
_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
當我們通過不可靠的引導屏障後從編織計時器回調
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

啟用自動同步

bool mIsAutoSyncEnabled

用於自動同步功能的狀態。

緊急發現待定

bool mIsUrgentDiscoveryPending

mNominalDiscoveryPeriod_msec

int32_t mNominalDiscoveryPeriod_msec

mShortestDiscoveryPeriod_msec

int32_t mShortestDiscoveryPeriod_msec

mSyncPeriod_msec

int32_t mSyncPeriod_msec

主動聯繫

Contact * mActiveContact

通信上下文。

交換上下文

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

此時間同步客戶端的當前狀態

通訊狀態

 CommState

與某個聯繫人的通信狀態。

這是公眾,因為公共

貢獻者過濾器

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

存儲對某個聯繫人的響應的狀態。

這是公眾,因為公共

服務器狀態

 ServerState

此時間同步服務器的當前狀態

特性
kServerState_Idle

服務器已準備好以正常設置響應請求

kServerState_UnreliableAfterBoot

為服務器保留的通過其他方式同步其係統時間的時間,僅當調用 Init 時 aIsAlwaysFresh 為真時才有意義

同步失敗處理程序

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

當認為同步失敗時會發生回調,包括自動同步。

請注意,如果調用 Abort 停止同步,則不會發生回調

細節
參數
[in] aApp
指向應用層數據的指針,在 Init 中設置。
[in] aErrorCode
失敗的原因

同步成功處理程序

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
使用修正量c
[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

同步失敗

SyncFailedHandler OnSyncFailed

接收到同步請求

OnSyncRequestReceivedHandler OnSyncRequestReceived

如果未設置,則默認實現始終返回 true

同步成功

SyncSucceededHandler OnSyncSucceeded

如果未設置,則默認行為將獲取所有結果,除了非常小的服務器更正

OnTimeChangeNotificationReceived

TimeChangeNotificationHandler OnTimeChangeNotificationReceived

加密類型

uint8_t mEncryptionType

本地通信的加密方法

密鑰標識

uint16_t mKeyId

用於本地通信的密鑰 ID

受保護的屬性

移動應用

void * mApp

指向更高層數據的指針

客戶端狀態

ClientState mClientState

連接到服務

WeaveConnection * mConnectionToService

用於與服務通信的 TCP 連接。

聯繫人

Contact mContacts[WEAVE_CONFIG_TIME_CLIENT_MAX_NUM_CONTACTS]

聯繫各地發現信息學。

永遠新鮮

bool mIsAlwaysFresh

回調函數

bool mIsInCallback

如果我們在回調到更高層,則為 true

已發送的最後可能性

int8_t mLastLikelihoodSent

mNumContributorInLastLocalSync

uint8_t mNumContributorInLastLocalSync

角色

TimeSyncRole mRole

此節點的實際角色。

服務器狀態

ServerState mServerState

移動服務聯繫人

Contact mServiceContact

mTimestampLastCorrectionFromServerOrNtp_usec

timesync_t mTimestampLastCorrectionFromServerOrNtp_usec

注意它必須是啟動時間,因為我們需要對睡眠時間進行補償

mTimestampLastLocalSync_usec

timesync_t mTimestampLastLocalSync_usec

注意它必須是啟動時間,因為我們需要對睡眠時間進行補償

公共職能

中止

WEAVE_ERROR Abort(
  void
)

強制引擎返回空閒狀態,中止正在執行的任何操作。

注意不會調用同步成功或失敗。所有 Weave Exchange 都將關閉。 TCP 連接不會被進一步觸及。如果我們已經處於空閒狀態,則沒有操作。在回調中不可用。

細節
退貨
WEAVE_NO_ERROR 成功

禁用自動同步

void DisableAutoSync(
  void
)

禁用自動同步。

僅在空閒狀態下可用。在回調中不可用。

啟用自動同步

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 

此引擎配置為存儲的最大聯繫人數量的簡單 getter

獲取客戶端狀態

ClientState GetClientState(
  void
) const 

客戶端狀態的簡單吸氣劑

獲取下一個可能性

int8_t GetNextLikelihood(
  void
) const 

提取持久性的可能性。

結果只有在同步操作完成後,在 OnSyncSucceeded 和 OnSyncFailed 的回調中才有效。否則它是暫時的,可能是當前的可能性而不是下一個要使用的可能性。

細節
退貨
在下一個請求中使用響應的可能性

獲取服務器狀態

ServerState GetServerState(
  void
) const 

服務器狀態的簡單吸氣劑

初始化客戶端

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 成功

初始化協調器

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 成功

初始化服務器

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

如果打算成為時間同步服務器,則必須在對象構造後調用 Server 角色的 initialize 作為第一個函數。

在回調中不可用

細節
參數
[in] aApp
指向更高層數據的指針,用於對更高層的回調。
[in] aExchangeMgr
指向系統範圍 Weave Exchange Manager 對象的指針
[in] aIsAlwaysFresh
可以設置為 true 以指示服務器始終同步,但初始不可靠時間除外。 Coordinator 應設置為 false。
退貨
WEAVE_NO_ERROR 成功

多播時間更改通知

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

由高層調用以多播時間更改通知。

在回調中不可用。

細節
參數
[in] aEncryptionType
用於此通知的加密類型
[in] aKeyId
用於此通知的密鑰 ID

RegisterCorrectionFromServerOrNtp

void RegisterCorrectionFromServerOrNtp(
  void
)

由更高層調用以指示我們剛剛完成了與任何服務器或通過某些可靠方式(如 NTP)的時間同步。

註冊本地同步操作

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 成功

與節點同步

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

使用給定的聯繫人列表進行同步。

現有的聯繫人列表將被刷新。僅在空閒狀態下可用。在回調中不可用。

細節
參數
[in] aNumNode
數組 aNodes 中的聯繫人數量
[in] aNodes
聯繫人記錄數組
退貨
WEAVE_NO_ERROR 成功

與服務同步

WEAVE_ERROR SyncWithService(
  WeaveConnection *const aConnection
)

使用給定的 TCP 連接和關聯的加密和密鑰 ID 進行同步。

同步完成後,調用者必須擁有 TCP 連接的所有權。 TCP 連接不會覆蓋回調,因為將創建一個新的 Weave Exchange,並且在該上下文之上設置的回調僅在空閒狀態下可用。在回調中不可用。

細節
參數
[in] aConnection
指向 Weave 連接的指針
退貨
WEAVE_NO_ERROR 成功

時間同步節點

 TimeSyncNode(
  void
)

受保護的功能

中止錯誤

void AbortOnError(
  const WEAVE_ERROR aCode
)

如果 aCode 不是 WEAVE_NO_ERROR,則內部中止

立即自動同步

void AutoSyncNow(
  void
)

啟動自動同步會話的內部函數

同步完成回調

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
)

誘導回調到應用層。

將 aIsSuccessful 設置為 false 以引發錯誤回調

清除狀態

void ClearState(
  void
)

銷毀通信上下文

bool DestroyCommContext(
  void
)

關閉編織ExchangeContext

EndLocalSyncAndTryCalculateTimeFix

void EndLocalSyncAndTryCalculateTimeFix(
  void
)

EndServiceSyncAndTryCalculateTimeFix

void EndServiceSyncAndTryCalculateTimeFix(
  void
)

查找可替換聯繫人

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

返回一個槽來存儲聯繫信息

獲取客戶端狀態名稱

const char *const GetClientStateName(
  void
) const 

獲取下一個空閒聯繫人

Contact * GetNextIdleContact(
  void
)

獲取下一個有效且空閒的聯繫人以與之交談

GetNumNotYetCompletedContacts

int16_t GetNumNotYetCompletedContacts(
  void
)

獲取有效聯繫人的數量,但我們還沒有與他們交談。

GetNumReliableResponses

int16_t GetNumReliableResponses(
  void
)

獲取到目前為止收集的“可靠”響應的數量。

調用以確定我們是否收集了足夠數量的響應

初始化狀態

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

使所有聯繫人無效

void InvalidateAllContacts(
  void
)

使所有本地聯繫人無效

無效的服務聯繫

void InvalidateServiceContact(
  void
)

使與服務的聯繫無效

註冊通訊錯誤

void RegisterCommError(
  Contact *const aContact
)

在某個聯繫人上註冊通信錯誤,並在需要時縮短自動發現時間 aContact 可以為 NULL 表示我們沒有人可以交談,因此只需縮短自動發現時間

發送同步請求

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

向聯繫人發送單播同步請求。

*rIsMessageSent 將設置為指示消息是否已發出。不返回地址不可達等通信錯誤,因此調用者應檢查返回碼和*rIsMessageSent。

將所有已完成的聯繫人設置為空閒

int16_t SetAllCompletedContactsToIdle(
  void
)

再次將所有完成的聯繫人重置為空閒狀態,但不要觸摸響應。

這在與同一節點的兩輪通信之間調用

SetAllValidContactsToIdleAndInvalidateResponse

int16_t SetAllValidContactsToIdleAndInvalidateResponse(
  void
)

將所有有效的本地聯繫人設置為空閒狀態並清除響應。

這是在我們開始一一聯繫他們之前調用的

設置客戶端狀態

void SetClientState(
  const ClientState state
)

設置單播通信上下文

WEAVE_ERROR SetupUnicastCommContext(
  Contact *const aContact
)

為單播通信創建新的 Weave Exchange

商店通知聯繫人

void 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
)

處理從單播請求返回的響應

_InitClient

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

為 Client 角色初始化。

旨在由 Init 系列公共函數在內部使用。必須在返回前設置 mClientState。在回調中不可用

細節
參數
[in] aEncryptionType
用於請求和響應的加密類型
[in] aKeyId
用於請求和響應的密鑰 ID
[in] aInitialLikelyhood
用於發現階段的初始可能性
退貨
WEAVE_NO_ERROR 成功

_初始化服務器

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 成功

_關閉服務器

WEAVE_ERROR _ShutdownServer(
  void
)

停止在回調中不可用的服務器。

細節
退貨
WEAVE_NO_ERROR 成功

受保護的靜態函數

處理自動發現超時

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
)

當時間同步請求到達時,來自 Weave Exchange 的回調

處理時間變更通知

void 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
)

HandleUnreliableAfterBootTimer

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

當我們通過不可靠的引導屏障後從編織計時器回調

操作狀態

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
)