nl::Weave::Profiles::DataManagement_Legacy

此命名空间包含 Weave 中即将弃用的 Weave 数据管理 (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 传输选项。

类型定义符

TopicIdentifier typedef
uint64_t
主题标识符。

函数

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

此旧版状态代码表示取消订阅或通知中提供的主题标识符与接收节点上的任何现有订阅都不匹配。

此状态代码表示取消订阅或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

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

在需要配置文件实例规范的调用中,表示“none”。

通常,这表示相关实体上仅出现一个个人资料实例。

kResponseTimeoutNotSpecified

在请求事务的方法中,表示调用方已拒绝指定超时。

通常,这意味着应使用默认值。

kTransactionIdNotSpecified

在采用事务 ID 的方法和数据结构中,用于表示“none”或通配符值。

kVersionNotSpecified

在要求指定数据版本的调用中,表示“无特定版本”。

kWeaveTLVControlByteLen

TLV 控制字节的长度,在对 TLV 中的 WDM 结构进行编码的支持方法中使用。

kWeaveTLVTagLen

完全限定的 TLV 标记的标准长度(以字节为单位),用于对 TLV 中的 WDM 结构进行编码的支持方法。

@169

 @169

WDM 专用的状态代码。

属性
kStatus_CancelSuccess

此旧版状态代码表示订阅已成功取消。

此状态代码表示订阅已成功取消。

kStatus_IllegalReadRequest

此旧版状态代码表示,发出读取特定数据项的请求的节点无权执行此操作。

此状态代码表示,请求读取特定数据项的节点无权执行该操作。

kStatus_IllegalWriteRequest

此旧版状态代码表示,发出写入特定数据项的请求的节点无权执行此操作。

此状态代码表示,请求写入特定数据项的节点无权执行此操作。

kStatus_InvalidPath

此旧版状态代码表示视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

此状态代码表示视图或更新请求帧的路径列表中的路径与响应程序的节点驻留架构不匹配。

kStatus_InvalidVersion

此旧版状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

此状态代码表示,更新请求中所含数据的版本与发布商上的最新版本不匹配,因此无法应用更新。

kStatus_UnknownTopic

此旧版状态代码表示取消订阅或通知中提供的主题标识符与接收节点上的任何现有订阅都不匹配。

此状态代码表示取消订阅或通知中提供的主题标识符与接收节点上现有的任何订阅都不匹配。

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

path 元素与架构中的一个数组对应,其中包含的整数元素将用作该数组的索引。

标记类型:特定于配置文件的元素类型:整数 处置:可选

kTag_WDMPathArrayValueSelector

路径元素与架构中的一个数组对应,封装的元素将用作记录选择器。

标记类型:特定于配置文件的元素类型:结构处置:可选

kTag_WDMPathList

该元素是 TLV 路径列表。

标记类型:配置文件专属元素类型:数组处置:顶级

kTag_WDMPathProfile

元素是一个用于开始路径的结构,其中包含配置文件信息(用于解释路径中的标记)。

标记类型:特定于配置文件的元素类型:结构处置:必填

kTag_WDMPathProfileId

该元素是路径配置文件元素中的配置文件 ID 组件,用于开始 TLV 路径。

标记类型:特定于上下文的元素类型:整数 处置:必填

kTag_WDMPathProfileId_Deprecated

已弃用。

代码类型:特定于配置文件的元素类型:整数 处置:必填

kTag_WDMPathProfileInstance

该元素是一个配置文件实例,可能跟在 TLV 路径中的配置文件 ID 后面。

请注意,一个节点不一定包含某个特定配置文件的多个实例,如果只有一个实例,则可以省略此元素。

标记类型:特定于上下文的元素类型:任何处置:可选

kTag_WDMPathProfileInstance_Deprecated

已弃用。

标记类型:特定于配置文件的元素类型:任何处置:可选

@171

 @171

区分主题 ID。

感兴趣的主题有 3 个区分开来,所有 3 个 ID 均采用“发布商专用”格式。

属性
kAnyTopicId

这已预留为通配符主题 ID。

kTopicIdNotSpecified

这是一个特殊值,用于表示无效或通配符的主题 ID。

kTopicIdPublisherSpecificMask

它可用作创建或分解 Topci ID 的掩码。

WeaveTransportOption

 WeaveTransportOption

WDM 传输选项。

这些是 WDM 的互斥传输选项。

属性
kTransport_TCP

底层传输是 TCP。

可以使用服务管理器或直接使用消息层完成绑定。

kTransport_UDP

底层传输仅使用 UDP。

kTransport_WRMP

底层传输仅使用 UDP,但具有“应用支持层”可靠性增强。

类型定义符

TopicIdentifier

uint64_t TopicIdentifier

主题标识符。

主题标识符是 64 位数字,具有两种相关用途/语义。首先,它们可以用作一组知名路径(例如“ Nest 烟雾检测器”。以这种方式使用的主题 ID 应与配置文件标识符一样,包含一个供应商代码,以防止不同供应商自主选择的主题 ID 发生冲突,如下所示:

位 48 - 63 位 0 - 47
供应商 ID 主题编号
主题标识符的第二种用途/语义出现在 WDM 客户端和发布商之间的动态订阅的情况下。在这种情况下,发布者应始终提供代表特定订阅的唯一主题 ID,并且无论订阅是使用众所周知的主题 ID 还是任意路径列表进行请求,发布者都应提供此 ID。这种形式的主题标识符以供应商代码 0xFFFF 加以区分。

另请参阅
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 专用标记。

对照 TLV 读取器头部的实际标签,检查 WDM 专用标签的编号(来自 .../data-management/DMConstants.h)。

详细信息
参数
[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
一个 TLV 读取器,位于 WDM 数据列表元素中。
返回值
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 之前的版本中,请使用该服务接受的已弃用标记集对路径进行编码。此版本的方法采用数字形式的实例标识符。 此方法会使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfile) 启动容器,然后使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileId_Incorrect) 插入配置文件 ID。然后,使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Incorrect) 插入实例 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_Incorrect) 插入配置文件 ID。然后,使用 ProfileTag(kWeaveProfile_WDM, kTag_WDMPathProfileInstance_Incorrect) 插入实例 ID。这是用于对路径进行编码的已弃用版本之一,新设计应避免使用此格式。

详细信息
参数
[in] aWriter
对用于写出路径的 TLV 写入者的引用。
[in] aTag
对应用于此路径的完全限定的 TLV 标记的引用。
[in] aProfileId
要在其下解释路径元素的配置文件 ID。
[in] aInstanceId
用作配置文件实例标识符的可选字符串。如果未指定实例 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,则此参数的值应为 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,此参数可为 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,此参数可以为 NULL。
[in] aPathLen
初始配置文件说明符之后路径元素列表的长度(可能为 0)。
[in] ...
可变长度的其他路径标记列表(可选)。
返回值
WEAVE_NO_ERROR,表示成功时。否则,会返回 WEAVE_ERROR,表示无法设置指定路径的格式。

EndDataListElement

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

完成数据列表元素的写入。

为 WDM 数据列表元素的末尾编写 TLV。请注意,这会自动将 kTLVType_Array 类型的 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
)

完成路径列表或数据列表的编写。

TLV 写入 WDM 路径或数据列表的末尾。另外,敲定作者。

详细信息
参数
[in,out] aWriter
TLV 作者的引用,用来编写列表末尾。
返回值
WEAVE_NO_ERROR,表示成功时。否则,会返回 WEAVE_ERROR,表明无法结束容器。

EndList

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

完成路径列表或数据列表的编写。

TLV 写入 WDM 路径或数据列表的末尾。另外,敲定作者。在这种情况下,系统会传入并修改正在写入 TLVReferencedTLVData 对象,以反映写入的数据量。

详细信息
参数
[in,out] aList
对列出列表的 ReferenceTLVData 对象的引用。
[in] aWriter
TLV 作者的引用,用来编写列表末尾。
返回值
WEAVE_NO_ERROR,表示成功时。否则,会返回 WEAVE_ERROR,表明无法结束容器。

IsPublisherSpecific

bool IsPublisherSpecific(
  const TopicIdentifier & aTopicId
)

检查主题 ID 是否特定于发布商。

详细信息
参数
[in] aTopicId
主题标识符 ot 检查
返回值
如果主题 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。

详细信息
返回值
新的主题标识符。

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
)

开始编写路径列表。

TLV 写入 WDM 路径列表的开头,例如用作 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