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
|
Contact *
溝通情境
|
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)
|
typedefvoid(*
回呼會在我們計算回應時間修正前發生 |
OnSyncRequestReceivedHandler)(void *const aApp, const WeaveMessageInfo *aMsgInfo, const uint8_t aLikelyhood, const bool aIsTimeCoordinator)
|
typedefbool(*
用於指出我們才剛收到時間同步要求的回呼。 |
ResponseStatus
|
列舉 針對特定聯絡人的已儲存回應狀態。 |
ServerState{
|
列舉 這個時間同步伺服器的目前狀態 |
SyncFailedHandler)(void *const aApp, const WEAVE_ERROR aErrorCode)
|
typedefvoid(*
回呼會在同步處理失敗時進行,包括自動同步。 |
SyncSucceededHandler)(void *const aApp, const timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor)
|
typedefbool(*
回呼會在系統成功執行後進行,包括自動同步,但會在套用結果前執行。 |
TimeChangeNotificationHandler)(void *const aApp, const uint64_t aNodeId, const IPAddress &aNodeAddr)
|
typedefvoid(*
的回呼,用於表示我們剛剛收到了時間變更通知。 |
公開屬性 |
|
---|---|
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
|
適用於用戶端狀態的簡單 getter
|
GetNextLikelihood(void) const
|
int8_t
以及擷取永久性
|
GetServerState(void) const
|
執行伺服器狀態的簡單 getter
|
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)
|
執行同步處理。
|
受保護的函式 |
|
---|---|
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)
|
Contact *
回傳運算單元以儲存聯絡資訊
|
GetClientStateName(void) const
|
const char *const
|
GetNextIdleContact(void)
|
Contact *
取得下一個有效且閒置的聯絡人,
|
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
在特定聯絡人中登錄通訊錯誤;如果需要聯絡人可以為空值,表示我們沒有聯絡對象可以縮短自動探索期間,因此可以縮短自動探索期,因此可以縮短自動探索期
|
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
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
這個時間同步用戶端的目前狀態
ContributorFilter
void(* ContributorFilter)(void *const aApp, Contact aContact[], const int aSize)
回呼會在我們計算回應時間修正前發生
應用程式層可以覆寫 aContact[i].mResponseStatus 至 kResponseStatus_Invalid,以便在計算時忽略回應
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
OnSyncRequestReceivedHandler
bool(* OnSyncRequestReceivedHandler)(void *const aApp, const WeaveMessageInfo *aMsgInfo, const uint8_t aLikelyhood, const bool aIsTimeCoordinator)
用於指出我們才剛收到時間同步要求的回呼。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回 |
false,引擎會忽略這個請求
|
ServerState
ServerState
這個時間同步伺服器的目前狀態
屬性 | |
---|---|
kServerState_Idle
|
伺服器準備好以正常設定回應要求 |
kServerState_UnreliableAfterBoot
|
保留給伺服器以其他時間同步系統時間的時間,只有在呼叫 Init 時 aIs 一律 Fresh 為 true 時才有意義 |
SyncFailedHandler
void(* SyncFailedHandler)(void *const aApp, const WEAVE_ERROR aErrorCode)
回呼會在同步處理失敗時進行,包括自動同步。
請注意,如果呼叫 Abort 停止同步處理,則不會發生回呼
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
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,以便在計算時忽略回應
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回 |
如果此偏移值應用於調整系統時間,則為 true。如果 aNumContributor 為 0,將略過傳回值。
|
TimeChangeNotificationHandler
void(* TimeChangeNotificationHandler)(void *const aApp, const uint64_t aNodeId, const IPAddress &aNodeAddr)
的回呼,用於表示我們剛剛收到了時間變更通知。
如果自動同步模式已啟用,此回呼後不久後就會自動排定時間同步處理作業。否則,應用程式層可選擇呼叫 Sync 系列函式,直接啟動不受一般無法使用的回呼規則限制的同步處理作業。不過,必須注意此特殊回呼仍位於 Weave 交換層的回呼堆疊頂端。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
公開屬性
FilterTimeCorrectionContributor
ContributorFilter FilterTimeCorrectionContributor
OnSyncFailed
SyncFailedHandler OnSyncFailed
OnTimeChangeNotificationReceived
TimeChangeNotificationHandler OnTimeChangeNotificationReceived
mEncryptionType
uint8_t mEncryptionType
本機通訊的加密方法
mKeyId
uint16_t mKeyId
用於本機通訊的金鑰 ID
受保護的屬性
mApp
void * mApp
指向較高圖層資料的指標
mClientState
ClientState mClientState
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
不過請注意,我們必須花時間啟動睡眠時間
公用函式
取消
WEAVE_ERROR Abort( void )
強制引擎恢復閒置狀態,以及取消所有正在執行的操作。
注意:系統不會呼叫任何成功或失敗。所有 Weave Exchanges 都會關閉。不會再涉及 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 )
啟用自動同步處理功能。
只能在閒置狀態中使用。探索功能會立即進行,無法在回呼中使用。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
成功時:WEAVE_NO_ERROR
|
GetCapacityOfContactList
int GetCapacityOfContactList( void ) const
這個引擎設為儲存聯絡人數量上限的簡單 getter
GetNextLikelihood
int8_t GetNextLikelihood( void ) const
以及擷取永久性
只有在同步處理作業完成後,在 OnSyncSucceeded 和 OnSyncFailed 中,結果才會有效。否則,這可能是暫時性的,而且可能是目前可能的可能性,而非使用下一個可能性。
詳細說明 | |
---|---|
傳回 |
接收回應的可能性
|
InitClient
WEAVE_ERROR InitClient( void *const aApp, WeaveExchangeManager *aExchangeMgr, const uint8_t aEncryptionType, const uint16_t aKeyId, const int8_t 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 )
初始化這個協調器。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回 |
成功時:WEAVE_NO_ERROR
|
InitServer
WEAVE_ERROR InitServer( void *const aApp, WeaveExchangeManager *const aExchangeMgr, const bool aIsAlwaysFresh )
如果意圖是時間同步伺服器,則在建構物件後,必須呼叫伺服器角色初始化的第一個函式。
無法在回呼中使用
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
成功時:WEAVE_NO_ERROR
|
MulticastTimeChangeNotification
void MulticastTimeChangeNotification( const uint8_t aEncryptionType, const uint16_t aKeyId ) const
較高層呼叫了多點傳播時間變更通知。
無法在回呼中使用。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
RegisterCorrectionFromServerOrNtp
void RegisterCorrectionFromServerOrNtp( void )
較高層呼叫了,代表我們剛完成與任何伺服器進行循環同步,或透過一些可靠方法 (例如 NTP) 完成作業。
RegisterLocalSyncOperation
void RegisterLocalSyncOperation( const uint8_t aNumContributor )
較高層呼叫,表示我們剛剛與其他當地協調人員完成一輪同步作業。
詳細說明 | |||
---|---|---|---|
參數 |
|
關機
WEAVE_ERROR Shutdown( void )
停止服務。
必須先呼叫此函式,才能正確地收回分配的資源,然後才能再次呼叫任何 init 函式。這項功能無法在回呼中使用。
詳細說明 | |
---|---|
傳回 |
成功時:WEAVE_NO_ERROR
|
同步
WEAVE_ERROR Sync( const bool aForceDiscoverAgain )
同步處理。
如果沒有有效的聯絡人,同步處理作業可能會失敗。將 aForceDiscoverAgain 設為 true 即可強制執行探索作業。這項功能僅適用於閒置狀態。不適用於回呼。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
成功時:WEAVE_NO_ERROR
|
SyncWithNodes
WEAVE_ERROR SyncWithNodes( const int16_t aNumNode, const ServingNode aNodes[] )
指定聯絡人清單進行同步處理。
現有的聯絡人清單將遭到清除。只有在閒置狀態時才能使用。無法在回呼中使用。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
成功時:WEAVE_NO_ERROR
|
SyncWithService
WEAVE_ERROR SyncWithService( WeaveConnection *const aConnection )
執行同步處理。
同步處理完成後,呼叫端必須取得 TCP 連線的擁有權。系統不會覆寫 TCP 連線的回呼,因為系統會建立新的 Weave Exchange,並在該結構定義上方設定回呼 (僅在閒置狀態時無法使用)。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
成功時:WEAVE_NO_ERROR
|
TimeSyncNode
TimeSyncNode( void )
受保護的函式
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 successfully 設為 false 來觸發錯誤回呼
ClearState
void ClearState( void )
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
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 )
在特定聯絡人中登錄通訊錯誤;如果需要聯絡人可以為空值,表示我們沒有聯絡對象可以縮短自動探索期間,因此可以縮短自動探索期,因此可以縮短自動探索期
SendSyncRequest
WEAVE_ERROR SendSyncRequest( bool *const rIsMessageSent, Contact *const aContact )
傳送單點傳播同步要求給聯絡人。
*rIsMessageSent 將設定為表示訊息是否已送出。無法傳回通訊地址等通訊錯誤,因此呼叫端需檢查傳回代碼和 *rIsMessageSent。
SetAllCompletedContactsToIdle
int16_t SetAllCompletedContactsToIdle( void )
將所有已完成的聯絡人重設為閒置狀態,但不要碰到回應。
系統就會在兩次傳送至相同節點的
SetAllValidContactsToIdleAndInvalidateResponse
int16_t SetAllValidContactsToIdleAndInvalidateResponse( void )
將所有有效的本機聯絡人設為閒置狀態,並清除回應。
我們會先逐一聯絡對方
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。回呼中無法使用
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
成功時:WEAVE_NO_ERROR
|
_伺服器
WEAVE_ERROR _InitServer( const bool aIsAlwaysFresh )
以及為伺服器角色初始化
設計供 Init 公開函式內部使用。必須在傳回前設定 mClientState。回呼中無法使用
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
成功時: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 是否表示作業狀態的便利方法,即用戶端已完成初始化,且未處於關閉階段。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
如果狀態在初始化完成後和關閉前狀態下降,則傳回 true,否則傳回 false。
|
_OnSyncSucceed
bool _OnSyncSucceeded( void *const aApp, const nl::Weave::Profiles::Time::timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor )