nl::Weave::Profiles::DataManagement_Legacy

Weave 資料管理 (WDM) 設定檔即將淘汰的所有 Weave 介面都屬於這個命名空間。

摘要

列舉

@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, ...)
使用字串執行個體 ID 對 WDM 路徑進行編碼。
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 控制位元組的長度,用於編碼 WDM 結構於 TLV 中的支援方法。

kWeaveTLVTagLen

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

169 號

 @169

WDM 專屬狀態碼。

屬性
kStatus_CancelSuccess

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

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

kStatus_IllegalReadRequest

此舊版狀態碼表示要求讀取特定資料項目的節點沒有執行此操作的權限。

此狀態碼表示要求讀取特定資料項目的節點沒有執行此操作的權限。

kStatus_IllegalWriteRequest

此舊版狀態碼表示要求寫入特定資料項目的節點沒有執行此操作的權限。

此狀態碼表示要求寫入特定資料項目的節點沒有執行此操作的權限。

kStatus_InvalidPath

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

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

kStatus_InvalidVersion

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

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

kStatus_UnknownTopic

這個舊有狀態碼代表在取消要求或通知中提供的主題 ID,與接收節點上的任何現有訂閱項目均不相符。

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

kStatus_UnsupportedSubscriptionMode

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

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

170 次

 @170

資料管理通訊協定標記。

資料管理通訊協定會定義要在設定檔資料 TLV 表示法中使用的多個標記。

如往常一樣,新的 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

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

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

kTag_WDMPathProfileId_Deprecated

已淘汰,

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

kTag_WDMPathProfileInstance

這個元素為設定檔執行個體,可能會追蹤 TLV 路徑中的設定檔 ID。

請注意,一個節點不一定能有多個特定設定檔的執行個體,如果只有一個執行個體,這個元素可以省略。

代碼類型:特定內容的元素類型:任何配置:選用

kTag_WDMPathProfileInstance_Deprecated

已淘汰,

代碼類型:設定檔專屬元素類型:任何配置:選用

171 次

 @171

辨別主題 ID。

目前有三個辨別主題 ID,這三個 ID 格式皆為「發布商專屬」。

屬性
kAnyTopicId

系統會將這組 ID 保留為萬用字元主題 ID。

kTopicIdNotSpecified

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

kTopicIdPublisherSpecificMask

這個 ID 可做為遮罩建立或分解拓撲 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 主題編號
在 WDM 用戶端和發布商之間的動態訂閱時,就會出現主題 ID 的第二種用法/語意。在此情況下,發布商應一律提供適用於特定訂閱項目的專屬主題 ID,且無論要求訂閱的是已知的主題 ID 或任意路徑清單,均應提供該 ID。以 0xFFFF 的廠商代碼來區別此表單的主題 ID。

另請參閱:
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 和 aType 相符,則傳回 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_已淘汰) 插入設定檔 ID。接著使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_的應用程式) 插入執行個體 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_已淘汰) 插入設定檔 ID。接著使用 ProfileTag(kWeaveProfile_WDM, 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,表示無法設定指定路徑的格式。

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,
  ...
)

使用字串執行個體 ID 對 WDM 路徑進行編碼。

注意:請針對資料管理中使用的種類編寫 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 O 檢查
傳回
如果主題 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
參照 64 位元整數的參照,設為資料清單元素版本 (如有) 或 kVersionNotSpecified。
傳回
成功時 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