nl::編織::TLV

適用於使用 Weave TLV 格式編碼的資料定義。

總結

簡易的結構化資料 (TLV) 是適用於一般結構化資料的通用編碼方法。它能使用多種常用的 JSON 序列化格式共用許多屬性,同時對線的壓縮效果更大。

列舉

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

變數

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,系統會傳回 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::編織::TLV::TLVreader

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

nl::編織::TLV::TLVUpdater

提供統一的讀取/寫入介面,可用於編輯/新增 TLV 編碼中的元素。

nl::編織::TLV::TLVWriter

提供記憶體節流的編碼器,適合以 Weave TLV 格式寫入資料。

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer 提供 nl::Weave::TLV::TLVWriter 和 nl::Weave::TLVTLVreader 的圓形儲存空間。

命名空間

nl::Weave::TLV::偵錯

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

nl::編織::TLV::公用程式

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

列舉

@71

 @71

@73

 @73

@74

 @74
屬性
AnonymousTag

這個值代表不含代碼的 TLV 元素 (例如

匿名元素)。

@75

 @75

TLVCommonProfile

 TLVCommonProfiles
屬性
kProfileIdNotSpecified

用於指出變數或成員中沒有設定檔 ID。

這與 WeaveProfiles.h 中定義的 kWeaveProfile_NotSpecified 相同。

TLVElementType (TLVElementType)

 TLVElementType

TLVFieldSize

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagFields

 TLVTagFields

TLV 類型

 TLVType

可識別 TLV 元素的類型列舉。

變數

KWeaveTLVCopyChunkSize

const size_t kWeaveTLVCopyChunkSize = 16

TLV 元素從讀取器物件複製到寫入器中。

CopyElement() 方法對新的 TLV 元素進行編碼,其類型和值取自 TLVreader 物件。呼叫這個方法時,所提供的讀取器物件應位於來源 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
由已設定的 NewNewBuffer() 或 FinalizeBuffer() 函式或與閱讀器物件相關聯的 GetNextBuffer() 函式傳回的其他 Weave 或平台特定錯誤。

sTagSizes

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

函式

通用廣告代碼

uint64_t CommonTag(
  uint32_t tagNum
)

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

詳細資料
參數
[in] tagNum
指派給標記的一般設定檔標記號碼。
傳回
64 位元整數,代表代碼。

內容標記

uint64_t ContextTag(
  uint8_t tagNum
)

產生內容相關 TLV 標記的 API 表示法。

詳細資料
參數
[in] tagNum
指派給代碼的內容比對專屬編號。
傳回
64 位元整數,代表代碼。

GetTLVFieldSize

TLVFieldSize GetTLVFieldSize(
  uint8_t type
)

背景資訊標記

bool IsContextTag(
  uint64_t tag
)

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

是設定檔標記

bool IsProfileTag(
  uint64_t tag
)

如果提供的代碼為 true,系統會傳回 true,也就是設定檔專屬的代碼。

特殊標記

bool IsSpecialTag(
  uint64_t tag
)

是有效的 LV 類型

bool IsValidTLVType(
  uint8_t type
)

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

詳細資料
傳回
如果指定的 TLV 類型有效,則傳回 true。否則為 false

設定檔編號來源標記

uint32_t ProfileIdFromTag(
  uint64_t tag
)

傳回 TLV 標記中的設定檔 ID。

詳細資料
參數
[in] tag
設定檔特定 TLV 標記的 API 表示法。
傳回
設定檔 ID。

設定檔編號標籤

uint16_t ProfileNumFromTag(
  uint64_t tag
)

傳回 TLV 標記中的設定檔編號。

詳細資料
參數
[in] tag
設定檔特定 TLV 標記的 API 表示法。
傳回
相關的設定檔編號。

設定檔標記

uint64_t ProfileTag(
  uint32_t profileId,
  uint32_t tagNum
)

從設定檔 ID 和標記編號產生特定設定檔 TLV 標記的 API 表示法。

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

設定檔標記

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

代碼編號來源

uint32_t TagNumFromTag(
  uint64_t tag
)

傳回 TLV 代碼中的代碼編號。

詳細資料
參數
[in] tag
設定檔特定內容或以特定內容適用的 TLV 標記的 API 表示法。
傳回
相關聯的標記編號。
另請參閱:
IsProfileTag()IsContextTag()

供應商 ID 代碼

uint16_t VendorIdFromTag(
  uint64_t tag
)

傳回 TLV 代碼中的供應商 ID。

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