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)
|
如果要是时间同步服务器,则必须在构建对象后将针对“服务器”角色的 initialize 作为第一个函数进行调用。
|
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
请关闭 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
记录特定联系人的通信错误,并根据需要缩短自动发现期限。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)
|
为 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
当我们经过启动后不可靠标志时,从 Weave Timer 发出的回调
|
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 时 aIsAlwaysFresh 为 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 Exchange 都将被关闭。不会再接触 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 )
如果要是时间同步服务器,则必须在构建对象后将针对“服务器”角色的 initialize 作为第一个函数进行调用。
在回调中不可用
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
成功时返回 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 )
无论服务处于何种角色,都请停止该服务。
必须调用此函数以正确回收已分配的资源,然后才能再次调用任何初始化函数。在回调中不可用。
具体说明 | |
---|---|
返回值 |
成功时返回 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 连接以及关联的加密和密钥 ID 进行同步。
同步完成后,调用方必须获得 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 )
诱导回调应用层。
将 aIsSuccessful 设置为 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 )
记录特定联系人的通信错误,并根据需要缩短自动发现期限。Contact 可以为 NULL,以表明我们没有可联系的人,从而缩短自动发现期限
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 )
为 Client 角色初始化。
供公共函数 Init 系列在内部使用。必须在返回前设置 mClientState。在回调中不可用
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
成功时返回 WEAVE_NO_ERROR
|
_InitServer
WEAVE_ERROR _InitServer( const bool aIsAlwaysFresh )
为服务器角色初始化。
供公共函数 Init 系列在内部使用。必须在返回前设置 mClientState。在回调中不可用
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
成功时返回 WEAVE_NO_ERROR
|
_ShutdownCoordinator
WEAVE_ERROR _ShutdownCoordinator( 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 Timer 发出的回调
IsOperationalState
bool IsOperationalState( ClientState aState )
确定给定状态是否可正常运行。
确定 ClientState 是否表示操作状态的简便方法,即客户端已完成初始化且不在关闭过程中。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果状态在初始化完成后和关闭开始之前下降,则为 true,否则为 false。
|
_同步成功
bool _OnSyncSucceeded( void *const aApp, const nl::Weave::Profiles::Time::timesync_t aOffsetUsec, const bool aIsReliable, const bool aIsServer, const uint8_t aNumContributor )