nl::Weave::Profiles::DataManagement_Legacy

這個命名空間包含 Weave 中即將淘汰的 Weave Data Management (WDM) 設定檔介面。

摘要

列舉

@103{
  kStatus_CancelSuccess = 0x0001,
  kStatus_InvalidPath = 0x0013,
  kStatus_UnknownTopic = 0x0014,
  kStatus_IllegalReadRequest = 0x0015,
  kStatus_IllegalWriteRequest = 0x0016,
  kStatus_InvalidVersion = 0x0017,
  kStatus_UnsupportedSubscriptionMode = 0x0018
}
列舉
@166{
  kViewPoolSize = WEAVE_CONFIG_WDM_VIEW_POOL_SIZE,
  kSubscribePoolSize = WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE,
  kCancelSubscriptionPoolSize = WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE,
  kUpdatePoolSize = WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE,
  kNotifyPoolSize = WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE,
  kTransactionTableSize = WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE,
  kBindingTableSize = WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE,
  kNotifierTableSize = WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE,
  kSubscriptionMgrTableSize = WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE
}
列舉
WDM 集區和資料表大小。
@167{
  kMsgType_ViewRequest = 0x10,
  kMsgType_ViewResponse = 0x11,
  kMsgType_SubscribeRequest = 0x12,
  kMsgType_SubscribeResponse = 0x13,
  kMsgType_CancelSubscriptionRequest = 0x14,
  kMsgType_UpdateRequest = 0x15,
  kMsgType_NotifyRequest = 0x16,
  kMsgType_ViewRequest_Deprecated = 0x00,
  kMsgType_ViewResponse_Deprecated = 0x01,
  kMsgType_SubscribeRequest_Deprecated = 0x02,
  kMsgType_SubscribeResponse_Deprecated = 0x03,
  kMsgType_CancelSubscriptionRequest_Deprecated = 0x04,
  kMsgType_UpdateRequest_Deprecated = 0x05,
  kMsgType_NotifyRequest_Deprecated = 0x06
}
列舉
WDM 設定檔訊息類型。
@168{
  kTransactionIdNotSpecified = 0,
  kResponseTimeoutNotSpecified = 0,
  kVersionNotSpecified = 0xFFFFFFFFFFFFFFFFULL,
  kInstanceIdNotSpecified = 0,
  kDefaultBindingTableIndex = 0,
  kWeaveTLVTagLen = 8,
  kWeaveTLVControlByteLen = 1
}
列舉
其他 WDM 專屬常數。
@169{
  kStatus_CancelSuccess = 0x0001,
  kStatus_InvalidPath = 0x0013,
  kStatus_UnknownTopic = 0x0014,
  kStatus_IllegalReadRequest = 0x0015,
  kStatus_IllegalWriteRequest = 0x0016,
  kStatus_InvalidVersion = 0x0017,
  kStatus_UnsupportedSubscriptionMode = 0x0018
}
列舉
WDM 專屬狀態碼。
@170{
  kTag_WDMPathList = 100,
  kTag_WDMPathProfile = 101,
  kTag_WDMPathProfileId = 1,
  kTag_WDMPathProfileInstance = 2,
  kTag_WDMPathProfileId_Deprecated = 102,
  kTag_WDMPathProfileInstance_Deprecated = 103,
  kTag_WDMPathArrayIndexSelector = 104,
  kTag_WDMPathArrayValueSelector = 105,
  kTag_WDMDataList = 200,
  kTag_WDMDataListElementPath = 3,
  kTag_WDMDataListElementVersion = 4,
  kTag_WDMDataListElementData = 5,
  kTag_WDMDataListElementPath_Deprecated = 201,
  kTag_WDMDataListElementVersion_Deprecated = 202,
  kTag_WDMDataListElementData_Deprecated = 203
}
列舉
資料管理通訊協定標記。
@171{
  kTopicIdPublisherSpecificMask = 0xFFFF000000000000ULL,
  kTopicIdNotSpecified = 0x0000000000000000ULL,
  kAnyTopicId = 0xFFFFFFFFFFFFFFFFULL
}
列舉
不同的主題 ID。
WeaveTransportOption{
  kTransport_TCP = 1,
  kTransport_WRMP = 2,
  kTransport_UDP = 3
}
列舉
WDM 傳輸選項。

Typedefs

TopicIdentifier typedef
uint64_t
主題 ID。

函式

CheckTLVType(nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
bool
確認正在讀取的 TLV 元素具有預期的 TLV 類型。
CheckWDMTag(uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
bool
檢查 WDM 專屬代碼。
CloseDataListElement(nl::Weave::TLV::TLVReader & aReader)
停止讀取 WDM 資料清單元素。
CloseList(nl::Weave::TLV::TLVReader & aReader)
停止讀取 WDM 路徑或資料清單。
EncodeDeprecatedPath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
使用已淘汰的標記和整數執行個體 ID 來編碼 WDM 路徑。
EncodeDeprecatedPath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
使用已淘汰的標記和字串執行個體 ID 對 WDM 路徑編碼。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint64_t & aInstanceId, uint32_t aPathLen, ...)
以整數設定檔執行個體 ID 編碼 WDM 路徑。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const uint32_t aInstanceIdLen, const uint8_t *aInstanceId, uint32_t aPathLen, ...)
使用位元組陣列執行個體 ID 編碼 WDM 路徑。
EncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, const char *aInstanceId, uint32_t aPathLen, ...)
將 WDM 路徑編碼為字串執行個體 ID。
EndDataListElement(nl::Weave::TLV::TLVWriter & aWriter)
完成資料清單元素寫入作業。
EndEncodePath(TLVWriter & aWriter, TLVType & mOuterContainer, WEAVE_ERROR mError)
EndList(nl::Weave::TLV::TLVWriter & aWriter)
完成路徑清單或資料清單的寫入作業。
EndList(ReferencedTLVData & aList, nl::Weave::TLV::TLVWriter & aWriter)
完成路徑清單或資料清單的寫入作業。
IsPublisherSpecific(const TopicIdentifier & aTopicId)
bool
檢查主題 ID 是否專屬於發布商。
OpenDataList(ReferencedTLVData & aDataList, nl::Weave::TLV::TLVReader & aReader)
開始讀取資料清單。
OpenDataListElement(nl::Weave::TLV::TLVReader & aReader, nl::Weave::TLV::TLVReader & aPathReader, uint64_t & aVersion)
開始讀取資料清單元素。
OpenPathList(ReferencedTLVData & aPathList, nl::Weave::TLV::TLVReader & aReader)
開始讀取路徑清單。
PublisherSpecificTopicId(void)
從頭開始產生發布者專屬主題 ID。
SendStatusReport(ExchangeContext *aExchangeCtx, StatusReport & aStatus)
StartDataList(nl::Weave::TLV::TLVWriter & aWriter)
開始寫入資料清單。
StartDataList(ReferencedTLVData & aDataList, nl::Weave::TLV::TLVWriter & aWriter)
開始將資料清單寫入指定的 ReferencedTLVData 物件。
StartDataListElement(nl::Weave::TLV::TLVWriter & aWriter)
開始寫入資料清單元素。
StartEncodePath(TLVWriter & aWriter, const uint64_t & aTag, uint32_t aProfileId, TLVType & mOuterContainer, TLVType & mPath)
StartPathList(nl::Weave::TLV::TLVWriter & aWriter)
開始編寫路徑清單。
TxnResponseHandler(ExchangeContext *anExchangeCtx, const IPPacketInfo *anAddrInfo, const WeaveMessageInfo *aMsgInfo, uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
TxnTimeoutHandler(ExchangeContext *anExchangeCtx)
void
ValidateTLVType(nl::Weave::TLV::TLVType aType, nl::Weave::TLV::TLVReader & aReader)
確認正在讀取的 TLV 元素具有預期的 TLV 類型。
ValidateWDMTag(uint32_t aTagNum, nl::Weave::TLV::TLVReader & aReader)
確認正在讀取的 TLV 元素具有預期的 WDM 標記。

類別

nl::Weave::Profiles::DataManagement_Legacy::Binding

Binding 類別可代表使用 Weave 管理應用程式實體的通訊狀態。

nl::Weave::Profiles::DataManagement_Legacy::ClientDataManager

抽象類別,內含 WDM 用戶端所需的確認和指示方法定義。

nl::Weave::Profiles::DataManagement_Legacy::ClientNotifier

使用者希望透過 WDM 用戶端取得訂閱和通知支援時,會採用的輔助類別。

nl::Weave::Profiles::DataManagement_Legacy::DMClient

應用程式專屬 WDM 用戶端的抽象基本類別。

nl::Weave::Profiles::DataManagement_Legacy::DMPublisher

應用程式專屬 WDM 發布商的抽象基本類別。

nl::Weave::Profiles::DataManagement_Legacy::ProfileDatabase

抽象的 ProfileDatabase 輔助類別。

nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine

WDM 通訊協定引擎類別。

nl::Weave::Profiles::DataManagement_Legacy::PublisherDataManager

抽象類別,其中包含 WDM 發布者所需的確認和通知方法定義。

列舉

@103

 @103
屬性
kStatus_CancelSuccess

出現這個舊版狀態碼表示訂閱項目已成功取消。

這個狀態碼表示訂閱項目已成功取消。

kStatus_IllegalReadRequest

此舊版狀態碼表示,發出要求讀取特定資料項目的節點沒有相關權限。

此狀態碼表示發出要求讀取特定資料項目的節點不具備相關權限。

kStatus_IllegalWriteRequest

此舊版狀態碼表示,發出寫入特定資料項目的要求的節點沒有相關權限。

此狀態碼表示提出寫入特定資料項目的要求的節點沒有相關權限。

kStatus_InvalidPath

這個舊版狀態碼表示,檢視畫面或更新要求頁框的路徑清單與回應者的節點常駐結構定義不符。

這個狀態碼表示,檢視畫面或更新要求頁框的路徑清單中的路徑與回應者的節點常駐結構定義不符。

kStatus_InvalidVersion

這個舊版狀態碼表示更新要求所包含的資料版本與發布者的最新版本不符,因此無法套用更新。

這個狀態碼表示更新要求中包含的資料版本與發布者的最新版本不符,因此無法套用更新。

kStatus_UnknownTopic

這個舊版狀態碼表示取消要求或通知中指定的主題 ID,與接收節點上的任何訂閱項目資源不符。

這個狀態碼代表取消要求或通知中指定的主題 ID,與接收節點上的任何訂閱項目資源不符。

kStatus_UnsupportedSubscriptionMode

這個舊版狀態碼表示接收端的裝置不支援要求的訂閱模式。

這個狀態碼表示接收端裝置不支援您要求的訂閱模式。

@166

 @166

WDM 集區和資料表大小。

WDM 定義運作所需的各種集區和資料表,如下所示。

用戶端交易集區:

  • kViewPoolSize
  • kSubscribePoolSize
  • kCancelSubscriptionPoolSize
  • kUpdatePoolSize

發布商交易集區:

  • kNotifyPoolSize

通訊協定引擎資料表:

  • kTransactionTableSize
  • kBindingTableSize

訂閱相關資料表:

  • kNotifierTableSize (僅限用戶端)
  • kSubscriptionMgrTableSize (僅限發布商)

請注意,這是可設定的數量,且個別平台的值會顯示在相關聯的 WeaveConfig.h 中。

屬性
kBindingTableSize

這是 WDM 通訊協定引擎中繫結資料表的預設大小。

您可以透過 WEAVE_CONFIG_WDM_BINDING_TABLE_SIZE 設定這個值。

kCancelSubscriptionPoolSize

這是 WDM 用戶端取消訂閱要求交易集區的預設大小。

您可以透過 WEAVE_CONFIG_WDM_CANCEL_SUBSCRIPTION_POOL_SIZE 設定這個值。

kNotifierTableSize

這是 WDM 用戶端的通知表格預設大小。

您可以透過 WEAVE_CONFIG_WDM_NOTIFIER_TABLE_SIZE 設定這個值。

kNotifyPoolSize

這是 WDM 發布商通知要求交易集區的預設大小。

您可以透過 WEAVE_CONFIG_WDM_NOTIFY_POOL_SIZE 設定這個值。

kSubscribePoolSize

這是 WDM 用戶端訂閱要求交易集區的預設大小。

您可以透過 WEAVE_CONFIG_WDM_SUBSCRIBE_POOL_SIZE 設定這個值。

kSubscriptionMgrTableSize

這是 WDM 發布商訂閱表格的預設大小。

您可以透過 WEAVE_CONFIG_WDM_SUBSCRIPTION_MGR_TABLE_SIZE 設定這個值。

kTransactionTableSize

這是 WDM 通訊協定引擎中交易資料表的預設大小。

您可以透過 WEAVE_CONFIG_WDM_TRANSACTION_TABLE_SIZE 設定這個值。

kUpdatePoolSize

這是 WDM 用戶端更新要求交易集區的預設大小。

您可以透過 WEAVE_CONFIG_WDM_UPDATE_POOL_SIZE 設定這個值。

kViewPoolSize

這是 WDM 用戶端的檢視要求交易集區預設大小。

您可以透過 WEAVE_CONFIG_WDM_VIEW_POOL_SIZE 設定這個值。

@167

 @167

WDM 設定檔訊息類型。

這些值會在資料管理規格中說明。

注意!自 2015 年第 1 季起,舊版 WDM 中使用的訊息類型已淘汰,並定義了新的訊息類型。這可充分反映過去封裝和剖析詳細資料中的變動,以證明乾淨的休息時間。

屬性
kMsgType_CancelSubscriptionRequest

取消訂閱要求訊息。

kMsgType_CancelSubscriptionRequest_Deprecated

已淘汰

kMsgType_NotifyRequest

通知要求訊息。

kMsgType_NotifyRequest_Deprecated

已淘汰

kMsgType_SubscribeRequest

訂閱要求訊息。

kMsgType_SubscribeRequest_Deprecated

已淘汰

kMsgType_SubscribeResponse

訂閱回應訊息。

kMsgType_SubscribeResponse_Deprecated

已淘汰

kMsgType_UpdateRequest

更新要求訊息。

kMsgType_UpdateRequest_Deprecated

已淘汰

kMsgType_ViewRequest

查看要求訊息。

kMsgType_ViewRequest_Deprecated

已淘汰

kMsgType_ViewResponse

查看回應訊息。

kMsgType_ViewResponse_Deprecated

已淘汰

@168

 @168

其他 WDM 專屬常數。

屬性
kDefaultBindingTableIndex

通訊協定引擎繫結資料表中,預設繫結的索引含有多個項目。

kInstanceIdNotSpecified

在需要設定檔執行個體規格的呼叫中,指出「無」。

在大多數情況下,這通常代表相關實體中只有一個個人資料。

kResponseTimeoutNotSpecified

在要求交易的方法中,表示呼叫端已拒絕指定逾時。

一般來說,您應使用預設值

kTransactionIdNotSpecified

在採用交易 ID 的方法和資料結構中,「無」或萬用字元值。

kVersionNotSpecified

在需要資料版本規格的呼叫中,指出「沒有特定版本」。

kWeaveTLVControlByteLen

TLV 控制位元組的長度,用於支援對 TLV 進行 WDM 結構編碼的方法。

kWeaveTLVTagLen

完整 TLV 標記的標準長度 (以位元組為單位),用於對 TLV 中的 WDM 結構進行編碼的方法。

@169

 @169

WDM 專屬狀態碼。

屬性
kStatus_CancelSuccess

出現這個舊版狀態碼表示訂閱項目已成功取消。

這個狀態碼表示訂閱項目已成功取消。

kStatus_IllegalReadRequest

此舊版狀態碼表示,發出要求讀取特定資料項目的節點沒有相關權限。

此狀態碼表示發出要求讀取特定資料項目的節點不具備相關權限。

kStatus_IllegalWriteRequest

此舊版狀態碼表示,發出寫入特定資料項目的要求的節點沒有相關權限。

此狀態碼表示提出寫入特定資料項目的要求的節點沒有相關權限。

kStatus_InvalidPath

這個舊版狀態碼表示,檢視畫面或更新要求頁框的路徑清單與回應者的節點常駐結構定義不符。

這個狀態碼表示,檢視畫面或更新要求頁框的路徑清單中的路徑與回應者的節點常駐結構定義不符。

kStatus_InvalidVersion

這個舊版狀態碼表示更新要求所包含的資料版本與發布者的最新版本不符,因此無法套用更新。

這個狀態碼表示更新要求中包含的資料版本與發布者的最新版本不符,因此無法套用更新。

kStatus_UnknownTopic

這個舊版狀態碼表示取消要求或通知中指定的主題 ID,與接收節點上的任何訂閱項目資源不符。

這個狀態碼代表取消要求或通知中指定的主題 ID,與接收節點上的任何訂閱項目資源不符。

kStatus_UnsupportedSubscriptionMode

這個舊版狀態碼表示接收端的裝置不支援要求的訂閱模式。

這個狀態碼表示接收端裝置不支援您要求的訂閱模式。

@170

 @170

資料管理通訊協定標記。

資料管理通訊協定定義了要在設定檔資料呈現 TLV 中使用的標記。

一般而言,新的 WDM 和舊版 WDM 之間存在相容性問題,所有這些標記都是以設定檔特定的形式使用,這會造成浪費。現在我們盡可能使用內容標記,但需要視情況保留舊的 WDM 路徑,並妥善安排。

先前版本中沒有使用 kTag_WDMDataListElementData 標記,而程式碼完全予以忽略,因此無須提供已淘汰的版本。

屬性
kTag_WDMDataList

元素是結構清單,內含路徑、選用版本和資料元素。

代碼類型:設定檔專屬元素類型:陣列處理:頂層

kTag_WDMDataListElementData

元素代表指向特定路徑且擁有特定版本的資料。

代碼類型:內容專屬元素類型:任何處理:必要

kTag_WDMDataListElementData_Deprecated

已淘汰,

代碼類型:內容專屬元素類型:任何處理:必要

kTag_WDMDataListElementPath

元素是資料清單元素的路徑元件。

代碼類型:內容專屬元素類型:路徑處理:必要

kTag_WDMDataListElementPath_Deprecated

已淘汰,

代碼類型:設定檔專屬元素類型:路徑處理:必要

kTag_WDMDataListElementVersion

元素是資料清單元素的版本元件。

代碼類型:內容專屬元素類型:整數處理:必要

kTag_WDMDataListElementVersion_Deprecated

已淘汰,

代碼類型:設定檔專屬元素類型:整數處理:必要

kTag_WDMPathArrayIndexSelector

路徑元素會與結構定義中的陣列對應,而內含的整數元素將用來當做該陣列的索引。

代碼類型:設定檔專屬元素類型:整數處理:選填

kTag_WDMPathArrayValueSelector

路徑元素會對應至結構定義中的陣列,而封裝的元素會做為記錄選取器使用。

代碼類型:設定檔專屬元素類型:結構處理:選用

kTag_WDMPathList

這個元素是 TLV 路徑清單。

代碼類型:設定檔專屬元素類型:陣列處理:頂層

kTag_WDMPathProfile

元素是一個用於開始路徑的結構,其中包含設定檔資訊,可讓系統解讀路徑中的標記。

代碼類型:設定檔專屬元素類型:結構處理:必填

kTag_WDMPathProfileId

這個元素是路徑設定檔元素中,起始 TLV 路徑的設定檔 ID 元件。

代碼類型:內容專屬元素類型:整數處理:必要

kTag_WDMPathProfileId_Deprecated

已淘汰,

代碼類型:設定檔專屬元素類型:整數處理:必要

kTag_WDMPathProfileInstance

元素是設定檔例項,可能會接在 TLV 路徑中的設定檔 ID。

請注意,一個節點不一定會有多個特定設定檔例項,如果只有一個節點,系統可能會省略這個元素。

代碼類型:內容專屬元素類型:任何處理:選用

kTag_WDMPathProfileInstance_Deprecated

已淘汰,

代碼類型:設定檔專屬元素類型:任何處理:選填

@171

 @171

不同的主題 ID。

感興趣的三個區分主題 ID 皆採用「特定發布商專屬」的格式。

屬性
kAnyTopicId

這個名稱會當做萬用字元主題 ID。

kTopicIdNotSpecified

這是保留的特殊值,用於表示無效或萬用字元主題 ID。

kTopicIdPublisherSpecificMask

此屬性可用做建立或分解頂層 ID 的遮罩。

WeaveTransportOption

 WeaveTransportOption

WDM 傳輸選項。

這些是 WDM 的互斥交通方式。

屬性
kTransport_TCP

基礎傳輸是 TCP。

您可以透過服務管理員或直接使用訊息層完成繫結。

kTransport_UDP

基礎傳輸僅是 UDP。

kTransport_WRMP

基礎傳輸僅是 UDP,但已增強「應用程式支援層」的可靠性。

Typedefs

TopicIdentifier

uint64_t TopicIdentifier

主題 ID。

主題 ID 為 64 位元數量,搭配兩種相關用途/語意。首先,這些路徑可用來當做一組已知路徑 (例如「Nest 煙霧偵測器」) 的傳統簡寫。這種方式使用的主題 ID 與設定檔 ID 一樣,會包含廠商程式碼,防止不同廠商自動選擇主題 ID,如下所示:

位元 48 - 63 位元 0 - 47
供應商 ID 主題編號
主題 ID 的第二用途/語意發生在 WDM 用戶端與發布者之間啟用動態訂閱時。在這種情況下,發布商應一律提供專屬主題 ID,代表該訂閱項目,且無論使用時是否使用已知的主題 ID 或任意路徑清單來要求訂閱,都必須提供 0xFF 數量。

另請參閱:
WeaveVendorIdentifiers.hpp

函式

CheckTLVType

bool CheckTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

確認正在讀取的 TLV 元素具有預期的 TLV 類型。

根據 TLV 讀取器頂端的元素類型檢查指定的 TLV 類型。

詳細說明
參數
[in] aType
要針對特定元素檢查的 TLVType
[in] aReader
對要檢查的元素位置的 TLV 讀取器參照
傳回
如果元素的 TLVType 相符,則傳回 true。
另請參閱:
WeaveTLVTypes.h

CheckWDMTag

bool CheckWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

檢查 WDM 專屬代碼。

檢查 WDM 專用代碼的數量,來源為 .../data-management/DMConstants.h,並與 TLV 讀取器頂端的實際標記進行比較。

詳細說明
參數
[in] aTagNum
要針對特定 TLV 元素檢查的標記編號。
[in] aReader
TLV 讀取器的參照,指向要檢查的元素。
傳回
如果 aReader.GetTag() 產生的標記與特定標籤編號的預期標記形式相符,則為 true。

CloseDataListElement

WEAVE_ERROR CloseDataListElement(
  nl::Weave::TLV::TLVReader & aReader
)

停止讀取 WDM 資料清單元素。

這個方法假設有問題的元素是 WDM 資料清單的一部分,因此會將 kTLVType_Array 傳遞至 ExitContainer()。

詳細說明
參數
[in,out] aReader
位於 WDM 資料清單元素中的 TLV 讀取器。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法離開容器。

CloseList

WEAVE_ERROR CloseList(
  nl::Weave::TLV::TLVReader & aReader
)

停止讀取 WDM 路徑或資料清單。

這個方法假設有問題的清單是最頂層 TLV 元素,因此會將 kTLVType_Sructure 傳遞至 ExitContainer()。

詳細說明
參數
[in,out] aReader
位於 WDM 路徑或資料清單中的 TLV 讀取器。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法離開容器。

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

使用已淘汰的標記和整數執行個體 ID 來編碼 WDM 路徑。

注意:在 Weave 2.0 版之前,請使用服務接受的已淘汰標記組合來編碼路徑。這個版本的方法會使用數字執行個體 ID。這個方法會以 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile) 啟動容器,然後使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated) 插入設定檔 ID。接著使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated) 插入執行個體 ID。這是編碼路徑的已淘汰版本之一,而新版設計應避免使用此格式。

詳細說明
參數
[in] aWriter
用於寫出路徑的 TLV 寫入者參照。
[in] aTag
適用於這個路徑的完整 TLV 標記參照。
[in] aProfileId
要解讀路徑元素的設定檔 ID。
[in] aInstanceId
選用設定檔的執行個體 ID 參照。
[in] aPathLen
除了初始設定檔指定碼之外的路徑元素清單長度 (可能為 0 個)。
[in] ...
其他路徑標記的選用變數長度清單。
傳回
WEAVE_NO_ERROR:成功後。否則會傳回 WEAVE_ERROR,反映無法格式化指定路徑。

EncodeDeprecatedPath

WEAVE_ERROR EncodeDeprecatedPath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

使用已淘汰的標記和字串執行個體 ID 對 WDM 路徑編碼。

注意:使用已淘汰的代碼集來編碼路徑 (請參閱 DMConstants.h)。這個版本的方法會使用執行個體 ID 字串。這個方法會以 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile) 啟動容器,然後使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Deprecated) 插入設定檔 ID。接著使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Deprecated) 插入執行個體 ID。這是編碼路徑的已淘汰版本之一,而新版設計應避免使用此格式。

詳細說明
參數
[in] aWriter
用於寫出路徑的 TLV 寫入者參照。
[in] aTag
適用於這個路徑的完整 TLV 標記參照。
[in] aProfileId
要解讀路徑元素的設定檔 ID。
[in] aInstanceId
做為設定檔執行個體 ID 的選用字串。如果沒有指定執行個體 ID,這個引數可能會是 NULL。
[in] aPathLen
除了初始設定檔指定碼之外的路徑元素清單長度 (可能為 0 個)。
[in] ...
其他路徑標記的可變數長度清單。
傳回
WEAVE_NO_ERROR:成功後。否則會傳回 WEAVE_ERROR,反映無法格式化指定路徑。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint64_t & aInstanceId,
  uint32_t aPathLen,
  ...
)

以整數設定檔執行個體 ID 編碼 WDM 路徑。

注意:撰寫資料管理中所用種類的 TLV 路徑,特別是在開頭放置設定檔指定,以便解譯後續路徑元素。 這個版本的方法採用整數設定檔執行個體 ID。

這個方法會使用 ContextTag(kTag_WDMPathProfileInstance) 插入執行個體 ID,這是將路徑編碼的最新版本。

詳細說明
參數
[in] aWriter
用於寫出路徑的 TLV 寫入者參照。
[in] aTag
適用於這個路徑的完整 TLV 標記參照。
[in] aProfileId
要解讀路徑元素的設定檔 ID。
[in] aInstanceId
選用設定檔的執行個體 ID 參照。如果沒有使用執行個體 ID,則此參數的值應為 kInstanceIdNotSpecified。
[in] aPathLen
除了初始設定檔指定碼之外的路徑元素清單長度 (可能為 0 個)。
[in] ...
其他路徑標記的選用變數長度清單。
傳回
WEAVE_NO_ERROR:成功後。否則會傳回 WEAVE_ERROR,反映無法格式化指定路徑。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const uint32_t aInstanceIdLen,
  const uint8_t *aInstanceId,
  uint32_t aPathLen,
  ...
)

使用位元組陣列執行個體 ID 編碼 WDM 路徑。

注意:撰寫資料管理中所用種類的 TLV 路徑,特別是在開頭放置設定檔指定,以便解譯後續路徑元素。 這個版本的方法使用位元組陣列設定檔執行個體 ID 及長度。

這個方法會使用 ContextTag(kTag_WDMPathProfileInstance) 插入執行個體 ID,這是將路徑編碼的最新版本。

詳細說明
參數
[in] aWriter
用於寫出路徑的 TLV 寫入者參照。
[in] aTag
適用於這個路徑的完整 TLV 標記參照。
[in] aProfileId
要解讀路徑元素的設定檔 ID。
[in] aInstanceIdLen
構成執行個體 ID 的位元組陣列長度。如果沒有 ID,則這個參數的值應為 0。
[in] aInstanceId
做為設定檔執行個體 ID 的選用位元組陣列。在未指定執行個體 ID 的情況下,這個引數可能會是 NULL。
[in] aPathLen
除了初始設定檔指定碼之外的路徑元素清單長度 (可能為 0 個)。
[in] ...
其他路徑標記的可變數長度清單。
傳回
WEAVE_NO_ERROR:成功後。否則會傳回 WEAVE_ERROR,反映無法格式化指定路徑。

EncodePath

WEAVE_ERROR EncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  const char *aInstanceId,
  uint32_t aPathLen,
  ...
)

將 WDM 路徑編碼為字串執行個體 ID。

注意:撰寫資料管理中所用種類的 TLV 路徑,特別是在開頭放置設定檔指定,以便解譯後續路徑元素。 這個版本的方法採用字串設定檔執行個體 ID。

這個方法會使用 ContextTag(kTag_WDMPathProfileInstance) 插入執行個體 ID,這是將路徑編碼的最新版本。

詳細說明
參數
[in] aWriter
用於寫出路徑的 TLV 寫入者參照。
[in] aTag
適用於這個路徑的完整 TLV 標記參照。
[in] aProfileId
要解讀路徑元素的設定檔 ID。
[in] aInstanceId
做為設定檔執行個體 ID 的選用字串。如果沒有指定執行個體 ID,這個引數可能會是 NULL。
[in] aPathLen
除了初始設定檔指定碼之外的路徑元素清單長度 (可能為 0 個)。
[in] ...
其他路徑標記的可變數長度清單。
傳回
WEAVE_NO_ERROR:成功後。否則會傳回 WEAVE_ERROR,反映無法格式化指定路徑。

EndDataListElement

WEAVE_ERROR EndDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

完成資料清單元素寫入作業。

編寫 WDM 資料清單元素結尾的 TLV。請注意,假設我們一律會關閉清單項目,這會將類型的 kTLVType_Array 自動傳遞至 EndContainer() 呼叫。

詳細說明
參數
[in] aWriter
用於寫入項目結尾的 TLV 寫入者參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法結束容器。

EndEncodePath

WEAVE_ERROR EndEncodePath(
  TLVWriter & aWriter,
  TLVType & mOuterContainer,
  WEAVE_ERROR mError
)

EndList

WEAVE_ERROR EndList(
  nl::Weave::TLV::TLVWriter & aWriter
)

完成路徑清單或資料清單的寫入作業。

編寫 WDM 路徑或資料清單結尾的 TLV。此外,請最終編寫寫入者。

詳細說明
參數
[in,out] aWriter
TLV 寫入者寫入清單結尾的參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法結束容器。

EndList

WEAVE_ERROR EndList(
  ReferencedTLVData & aList,
  nl::Weave::TLV::TLVWriter & aWriter
)

完成路徑清單或資料清單的寫入作業。

編寫 WDM 路徑或資料清單結尾的 TLV。此外,請最終編寫寫入者。在此情況下,系統會傳入並修改要寫入 TLVReferencedTLVData 物件,並進行修改,以反映寫入的資料量。

詳細說明
參數
[in,out] aList
對所寫入清單的 ReferenceTLVData 物件參照。
[in] aWriter
TLV 寫入者寫入清單結尾的參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法結束容器。

IsPublisherSpecific

bool IsPublisherSpecific(
  const TopicIdentifier & aTopicId
)

檢查主題 ID 是否專屬於發布商。

詳細說明
參數
[in] aTopicId
主題 ID 未通過檢查
傳回
如果發布商專屬的主題 ID 為「true」,否則傳回「false」

OpenDataList

WEAVE_ERROR OpenDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVReader & aReader
)

開始讀取資料清單。

以全新的讀者和資料清單為依據,開始閱讀清單,並驗證最初在過程中遇到的標記和類型。如果一切順利,讀者在輸入清單容器後就會停止。

詳細說明
參數
[in] aDataList
做為 ReferencedTLVData 物件的參照資料清單。一般的使用案例是,清單在收到後仍位於緩衝區中。
[out] aReader
用來讀取資料清單的 TLV 讀取器參照。此閱讀器將指向清單中第一個項目之前。
傳回
WEAVE_NO_ERROR:成功後。否則,請傳回 WEAVE_ERROR,表示開啟資料清單失敗和/或驗證相關標記和類型。

OpenDataListElement

WEAVE_ERROR OpenDataListElement(
  nl::Weave::TLV::TLVReader & aReader,
  nl::Weave::TLV::TLVReader & aPathReader,
  uint64_t & aVersion
)

開始讀取資料清單元素。

假設讀者已定位在資料清單元素,請開始讀取元素,並驗證過程中一開始遇到的標記和類型。如果一切順利,讀卡機最後位於資料元素資料上,進入/輸出路徑讀取器則位於對應的路徑。

詳細說明
參數
[in] aReader
對資料清單元素位置的 TLV 讀取器參照。
[out] aPathReader
指向資料清單元素路徑元件的 TLV 讀取器參照。
[out] aVersion
要設定為資料清單元素版本 (如有) 或 kVersionNotSpecified 的 64 位元整數參照。
傳回
WEAVE_NO_ERROR,或其他與開啟及讀取資料清單元素相關聯的 WEAVE_ERROR

OpenPathList

WEAVE_ERROR OpenPathList(
  ReferencedTLVData & aPathList,
  nl::Weave::TLV::TLVReader & aReader
)

開始讀取路徑清單。

以全新的讀取器和路徑清單為基礎,開始讀取清單,並驗證最初在過程中遇到的標記和類型。如果一切順利,讀者在輸入清單容器後就會停止。

詳細說明
參數
[in] aPathList
做為 ReferencedTLVData 物件的參照路徑清單。一般的使用案例是,清單在收到後仍位於緩衝區中。
[out] aReader
TLV 讀取器的參照,用於讀取路徑清單。這個閱讀器會指向清單中第一個路徑之前。
傳回
成功時傳回 WEAVE_NO_ERROR,否則代表 WEAVE_ERROR 表示無法開啟路徑清單和/或驗證相關標記和類型。

PublisherSpecificTopicId

TopicIdentifier PublisherSpecificTopicId(
  void
)

從頭開始產生發布者專屬主題 ID。

詳細說明
傳回
新的主題 ID

SendStatusReport

WEAVE_ERROR SendStatusReport(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)

StartDataList

WEAVE_ERROR StartDataList(
  nl::Weave::TLV::TLVWriter & aWriter
)

開始寫入資料清單。

撰寫 WDM 資料清單開頭的 TLV,例如做為 UpdateRequest() 的主要引數。

詳細說明
參數
[in] aWriter
用於開始編寫的 TLV 寫入者參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法啟動容器。

StartDataList

WEAVE_ERROR StartDataList(
  ReferencedTLVData & aDataList,
  nl::Weave::TLV::TLVWriter & aWriter
)

開始將資料清單寫入指定的 ReferencedTLVData 物件。

撰寫 WDM 資料清單開頭的 TLV。在這個案例中,我們假設要將資料清單寫入參照的 TLV 資料結構。系統會將寫入者假設為未初始化,或視情況初始化為指向指定的物件。

詳細說明
參數
[out] aDataList
ReferencedTLVData 物件的參照,該物件是寫入者的目標,且最終包含所需的資料。
[in] aWriter
用於開始編寫的 TLV 寫入者參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法啟動容器。

StartDataListElement

WEAVE_ERROR StartDataListElement(
  nl::Weave::TLV::TLVWriter & aWriter
)

開始寫入資料清單元素。

編寫 WDM 資料清單元素開頭的 TLV

詳細說明
參數
[in] aWriter
用於開始編寫的 TLV 寫入者參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法啟動容器。

StartEncodePath

WEAVE_ERROR StartEncodePath(
  TLVWriter & aWriter,
  const uint64_t & aTag,
  uint32_t aProfileId,
  TLVType & mOuterContainer,
  TLVType & mPath
)

StartPathList

WEAVE_ERROR StartPathList(
  nl::Weave::TLV::TLVWriter & aWriter
)

開始編寫路徑清單。

撰寫 WDM 路徑清單開頭的 TLV,例如做為 ViewRequest() 的主要引數。

詳細說明
參數
[in] aWriter
用於開始編寫的 TLV 寫入者參照。
傳回
WEAVE_NO_ERROR:成功後。否則,系統會傳回 WEAVE_ERROR,表示無法啟動容器。

TxnResponseHandler

void TxnResponseHandler(
  ExchangeContext *anExchangeCtx,
  const IPPacketInfo *anAddrInfo,
  const WeaveMessageInfo *aMsgInfo,
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

TxnTimeoutHandler

void TxnTimeoutHandler(
  ExchangeContext *anExchangeCtx
)

ValidateTLVType

WEAVE_ERROR ValidateTLVType(
  nl::Weave::TLV::TLVType aType,
  nl::Weave::TLV::TLVReader & aReader
)

確認正在讀取的 TLV 元素具有預期的 TLV 類型。

請在 TLV 讀取器的頂部檢查指定的 TLV 類型,並在沒有相符項目時傳回錯誤。

詳細說明
參數
[in] aType
要依據特定元素驗證的 TLVType。
[in] aReader
對待驗證元素位置的 TLV 讀取器參照。
傳回
如果有相符項目,則為 WEAVE_NO_ERROR;如果沒有相符項目,則傳回 WEAVE_ERROR_WRONG_TLV_TYPE
另請參閱:
WeaveTLVTypes.h

ValidateWDMTag

WEAVE_ERROR ValidateWDMTag(
  uint32_t aTagNum,
  nl::Weave::TLV::TLVReader & aReader
)

確認正在讀取的 TLV 元素具有預期的 WDM 標記。

詳細說明
參數
[in] aTagNum
預期的 WDM 標記 32 位元標記編號。
[in] aReader
位於要驗證元素的 TLV 讀取器。
傳回
WEAVE_NO_ERROR:成功後。否則,如果代碼與指定的標記編號不符,且解讀為 WDM 標記時,則傳回 WEAVE_ERROR_INVALID_TLV_TAG