nl::Weave::TLV

處理以 Weave TLV 格式編碼的資料的定義。

摘要

Weave TLV 是簡易結構化資料的通用編碼方法。它與常用的 JSON 序列化格式共用許多屬性,同時讓線路更為精簡。

列舉

@71 列舉
@73 列舉
@74{
  AnonymousTag = kSpecialTagMarker | 0x00000000FFFFFFFFULL
}
列舉
@75 列舉
TLVCommonProfiles{
  kProfileIdNotSpecified = 0xFFFFFFFF
}
列舉
TLVElementType 列舉
TLVFieldSize 列舉
TLVTagControl 列舉
TLVTagFields 列舉
TLVType 列舉
識別 TLV 元素類型的列舉。

Variables

kWeaveTLVCopyChunkSize = 16
const size_t
將讀取器物件的 TLV 元素複製到寫入者。
sTagSizes = { 0, 1, 2, 4, 2, 4, 6, 8 }[]
const uint8_t

函式

CommonTag(uint32_t tagNum)
uint64_t
產生常見設定檔 TLV 標記的 API 表示法。
ContextTag(uint8_t tagNum)
uint64_t
產生情境專屬 TLV 標記的 API 表示法。
GetTLVFieldSize(uint8_t type)
TLVFieldSize
IsContextTag(uint64_t tag)
bool
如果提供的標記是內容專屬的標記,則傳回 true。
IsProfileTag(uint64_t tag)
bool
傳回的代碼的 true 是設定檔專屬標記。
IsSpecialTag(uint64_t tag)
bool
IsValidTLVType(uint8_t type)
bool
如果指定的 TLV 類型有效,則傳回 true。
ProfileIdFromTag(uint64_t tag)
uint32_t
TLV 標記傳回個人資料 ID。
ProfileNumFromTag(uint64_t tag)
uint16_t
TLV 標記傳回設定檔編號。
ProfileTag(uint32_t profileId, uint32_t tagNum)
uint64_t
根據設定檔 ID 和標記編號產生設定檔專用 TLV 標記的 API 表示法。
ProfileTag(uint16_t vendorId, uint16_t profileNum, uint32_t tagNum)
uint64_t
根據供應商 ID、設定檔編號和代碼編號產生設定檔專用 TLV 標記的 API 表示法。
TLVFieldSizeToBytes(TLVFieldSize fieldSize)
uint8_t
TLVTypeHasLength(uint8_t type)
bool
如果指定的 TLV 類型表示有相關聯的長度欄位,則傳回 true。
TLVTypeHasValue(uint8_t type)
bool
如果指定的 TLV 類型暗示有相關聯的值欄位,則傳回 true。
TLVTypeIsContainer(uint8_t type)
bool
如果指定的 TLV 類型是容器,則傳回 true。
TLVTypeIsString(uint8_t type)
bool
如果指定的 TLV 類型為 UTF8 或位元組字串,則傳回 true。
TagNumFromTag(uint64_t tag)
uint32_t
傳回 TLV 標記中的標記編號。
VendorIdFromTag(uint64_t tag)
uint16_t
TLV 標記傳回供應商 ID。

類別

nl::Weave::TLV::CircularTLVReader
nl::Weave::TLV::CircularTLVWriter
nl::Weave::TLV::TLVReader

針對以 Weave TLV 格式編碼的資料提供記憶體效率剖析器。

nl::Weave::TLV::TLVUpdater

提供統一的 Reader/Writer 介面,方便在 TLV 編碼中編輯/新增/刪除元素。

nl::Weave::TLV::TLVWriter

提供記憶體高效編碼器,以便以 Weave TLV 格式寫入資料。

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer 可為 nl::Weave::TLV::TLVWriter 和 nl::Weave::TLVTLVReader 提供循環儲存。

命名空間

nl::Weave::TLV::Debug

這個命名空間包含用於偵錯與記錄 Weave TLV 的類型和介面。

nl::Weave::TLV::Utilities

這個命名空間包括用於管理及使用 Weave TLV 的類型和公用程式介面。

列舉

@71

 @71

@73

 @73

@74

 @74
屬性
AnonymousTag

這個值代表沒有標記的 TLV 元素 (即

匿名元素)。

75 歲

 @75

TLVCommonProfiles

 TLVCommonProfiles
屬性
kProfileIdNotSpecified

用來表示變數或成員中沒有設定檔 ID。

基本上這與 WeaveProfiles.h 中定義的 kWeaveProfile_NotSpecified 區別

TLVElementType

 TLVElementType

TLVFieldSize

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

TLVType

 TLVType

識別 TLV 元素類型的列舉。

Variables

kWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

將讀取器物件的 TLV 元素複製到寫入者。

CopyElement() 方法會將類型與值從 TLVReader 物件取得的新 TLV 元素編碼。呼叫方法時,提供的讀取器物件應置於來源 TLV 元素上。新編碼元素的類型和內容會與輸入容器相同,但標記會設為指定的引數。如果提供的元素是 TLV 容器 (結構、陣列或路徑),系統會複製容器的所有內容。

詳細說明
參數
[in] tag
要隨容器編碼的 TLV 標記;如果容器應在沒有標記的情況下編碼,則為 AnonymousTag。標記值應使用 ProfileTag()ContextTag()CommonTag() 其中一種標記定義函式建立。
[in] reader
TLVReader 物件的參照,用於識別應複製類型和值的預先編碼 TLV 元素。
傳回值
WEAVE_NO_ERROR
如果方法成功。
WEAVE_ERROR_INCORRECT_STATE
如果提供的讀取器並未定位在元素上。
WEAVE_ERROR_TLV_CONTAINER_OPEN
如果容器寫入器已開啟目前的寫入器,但尚未關閉。
WEAVE_ERROR_TLV_UNDERRUN
與提供的讀取器相關聯的基礎 TLV 編碼過早結束。
WEAVE_ERROR_INVALID_TLV_ELEMENT
如果提供的讀取器發生無效或不支援的 TLV 元素類型,
WEAVE_ERROR_INVALID_TLV_TAG
如果提供的讀取器遇到無效結構定義中的 TLV 標記,或是提供的標記無效或不正確,
WEAVE_ERROR_BUFFER_TOO_SMALL
如果寫入值會超過寫入寫入器時指定的位元組數上限。
WEAVE_ERROR_NO_MEMORY
如果因記憶體不足而嘗試配置輸出緩衝區失敗。
other
其他由設定的 GetNewBuffer() 或 FinalizeBuffer() 函式傳回的 Weave 或平台特定錯誤,或由與讀取器物件相關聯的 GetNextBuffer() 函式傳回。

sTagSizes

const uint8_t sTagSizes[] = { 0, 1, 2, 4, 2, 4, 6, 8 }

函式

CommonTag

uint64_t CommonTag(
  uint32_t tagNum
)

產生常見設定檔 TLV 標記的 API 表示法。

詳細說明
參數
[in] tagNum
指派給代碼的通用設定檔代碼編號。
傳回
代表標記的 64 位元整數。

ContextTag

uint64_t ContextTag(
  uint8_t tagNum
)

產生情境專屬 TLV 標記的 API 表示法。

詳細說明
參數
[in] tagNum
指派給廣告代碼的內容專屬標記編號。
傳回
代表標記的 64 位元整數。

GetTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

IsContextTag

bool IsContextTag(
  uint64_t tag
)

如果提供的標記是內容專屬的標記,則傳回 true。

IsProfileTag

bool IsProfileTag(
  uint64_t tag
)

傳回的代碼的 true 是設定檔專屬標記。

IsSpecialTag

bool IsSpecialTag(
  uint64_t tag
)

IsValidTLVType

bool IsValidTLVType(
  uint8_t type
)

如果指定的 TLV 類型有效,則傳回 true。

詳細說明
傳回
如果指定的 TLV 類型有效,則為 true;否則為 false

ProfileIdFromTag

uint32_t ProfileIdFromTag(
  uint64_t tag
)

TLV 標記傳回個人資料 ID。

詳細說明
參數
[in] tag
設定檔專屬 TLV 標記的 API 表示法。
傳回
個人資料 ID。

ProfileNumFromTag

uint16_t ProfileNumFromTag(
  uint64_t tag
)

TLV 標記傳回設定檔編號。

詳細說明
參數
[in] tag
設定檔專屬 TLV 標記的 API 表示法。
傳回
相關的設定檔編號。

ProfileTag

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

根據設定檔 ID 和標記編號產生設定檔專用 TLV 標記的 API 表示法。

詳細說明
參數
[in] profileId
定義代碼的設定檔 ID。
[in] tagNum
指派給代碼的設定檔專屬代碼編號。
傳回
代表標記的 64 位元整數。

ProfileTag

uint64_t ProfileTag(
  uint16_t vendorId,
  uint16_t profileNum,
  uint32_t tagNum
)

根據供應商 ID、設定檔編號和代碼編號產生設定檔專用 TLV 標記的 API 表示法。

詳細說明
參數
[in] vendorId
定義代碼的供應商 ID。
[in] profileNum
設定檔定義中的供應商指派的供應商編號。
[in] tagNum
指派給代碼的設定檔專屬代碼編號。
傳回
代表標記的 64 位元整數。

TLVFieldSizeToBytes

uint8_t TLVFieldSizeToBytes(
  TLVFieldSize fieldSize
)

TLVTypeHasLength

bool TLVTypeHasLength(
  uint8_t type
)

如果指定的 TLV 類型表示有相關聯的長度欄位,則傳回 true。

詳細說明
傳回
如果指定的 TLV 類型表示有相關聯的長度欄位,則為 true;否則為 false

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

如果指定的 TLV 類型暗示有相關聯的值欄位,則傳回 true。

詳細說明
傳回
如果指定的 TLV 類型表示有相關聯的值欄位,則傳回 true;否則為 false

TLVTypeIsContainer

bool TLVTypeIsContainer(
  uint8_t type
)

如果指定的 TLV 類型是容器,則傳回 true。

詳細說明
傳回
如果指定的 TLV 類型為容器,則為 true;否則為 false

TLVTypeIsString

bool TLVTypeIsString(
  uint8_t type
)

如果指定的 TLV 類型為 UTF8 或位元組字串,則傳回 true。

詳細說明
傳回
如果指定 TLV 類型為 UTF8 或位元組字串,則為 true;否則為 false

TagNumFromTag

uint32_t TagNumFromTag(
  uint64_t tag
)

傳回 TLV 標記中的標記編號。

詳細說明
參數
[in] tag
代表設定檔專屬或特定內容 TLV 標記的 API 表示法。
傳回
相關的代碼編號。
另請參閱:
IsProfileTag()IsContextTag()

VendorIdFromTag

uint16_t VendorIdFromTag(
  uint64_t tag
)

TLV 標記傳回供應商 ID。

詳細說明
參數
[in] tag
設定檔專屬 TLV 標記的 API 表示法。
傳回
相關供應商 ID。