nl:: Weave::TLV

使用以 Weave TLV 格式编码的数据的定义。

摘要

Weave 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,是一个配置文件专用标记。
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

提供统一的读取器/写入器接口,用于修改/添加/删除 TLV 编码中的元素。

nl::Weave::TLV::TLVWriter

提供用于节省内存的编码器,用于以 Weave TLV 格式写入数据。

nl::Weave::TLV::WeaveCircularTLVBuffer

WeaveCircularTLVBuffer 可为 nl::Weave::TLV::TLVWriter 和 nl::Weave::TLVTLVReader 提供圆形存储空间。

命名空间

nl::Weave::TLV::调试

此命名空间包含用于调试和记录 Weave TLV 的类型和接口。

nl::Weave::TLV::实用工具

此命名空间包含用于管理和处理 Weave TLV 的类型和实用程序接口。

枚举

@71

 @71

@73

 @73

@74

 @74
属性
AnonymousTag

表示不含标记(例如 TLV)的

(匿名元素)。

@75

 @75

TLV 通用配置文件

 TLVCommonProfiles
属性
kProfileIdNotSpecified

用于指示变量或成员中缺少个人资料 ID。

这与 WeaveProfiles.h 中定义的 kWeaveProfile_NotSpecified 基本相同

TLVElementType

 TLVElementType

TLVFieldSize

 TLVFieldSize

TLVTagControl

 TLVTagControl

TLVTagField

 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
由已配置的 GetNewBuffer() 或 FinalizeBuffer() 函数或与读取器对象关联的 GetNextBuffer() 函数返回的其他 Weave 或平台错误。

sTagSize

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
)

IsContextTag

bool IsContextTag(
  uint64_t tag
)

如果提供的标记是上下文相关标记,则返回 true。

IsProfileTag

bool IsProfileTag(
  uint64_t tag
)

提供的标记返回 true,是一个配置文件专用标记。

特殊标签

bool IsSpecialTag(
  uint64_t tag
)

IsValidTLV 类型

bool IsValidTLVType(
  uint8_t type
)

如果指定的 TLV 类型有效,则返回 true。

详细信息
返回值
如果指定的 TLV 类型有效,则返回 true;否则为 false

配置文件 ID 标记

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 表示形式。
返回值
关联的个人资料编号。

配置文件标记

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
)

TLV 类型长度

bool TLVTypeHasLength(
  uint8_t type
)

如果指定的 TLV 类型暗示存在关联的长度字段,则返回 true。

详细信息
返回值
如果指定的 TLV 类型表示存在关联的长度字段,则返回 true;否则为 false

TLVTypeHasValue

bool TLVTypeHasValue(
  uint8_t type
)

如果指定的 TLV 类型暗示存在关联的值字段,则返回 true。

详细信息
返回值
如果指定的 TLV 类型表示存在关联的值字段,则返回 true;否则为 false

容器类型容器

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()

供应商 ID 代码

uint16_t VendorIdFromTag(
  uint64_t tag
)

TLV 标记返回供应商 ID。

详细信息
参数
[in] tag
特定于配置文件的 TLV 标记的 API 表示形式。
返回值
关联的供应商 ID。