nl::编织:配置文件::DataManagement_Current

此命名空间包含 Weave 中当前用于生产环境的 Weave 数据管理 (WDM) 配置文件的所有接口。

总结

枚举

@100{
  kTag_Region = 1,
  kTag_Message = 2
}
枚举
kNestDebug_StringLogEntryEvent 的代码。
@101{
  kTag_Token = 1,
  kTag_Args = 2
}
枚举
kNestDebug_TokenizedLogEntryEvent 的代码。
@102 枚举
用于保留事件的标记。
@104 枚举
WDM 配置文件消息类型。
@105 枚举
特定于 WDM 的状态代码。
@147 枚举
@95{
  kTag_CurrentImportance = 1,
  kTag_ImportanceExpiration,
  kTag_MinimumLogUploadInterval,
  kTag_MaximumLogUploadInterval,
  kTag_LoggingDestination,
  kTag_TraitLoggingImportance
}
枚举
日志记录设置标记。
@96{
  kTag_SupportedLogTransports = 1,
  kTag_SupportsStreaming = 2,
  kTag_SupportsNonVolatileStorage = 3,
  kTag_SupportsPerTraitVerbosity = 4,
  kTag_LoggingVolume = 5,
  kTag_LogBufferingCapacity = 6
}
枚举
日志记录功能的标记。
@97{
  kTag_EventSource = 1,
  kTag_EventImportance = 2,
  kTag_EventID = 3,
  kTag_RelatedEventImportance = 10,
  kTag_RelatedEventID = 11,
  kTag_EventUTCTimestamp = 12,
  kTag_EventSystemTimestamp = 13,
  kTag_EventResourceID = 14,
  kTag_EventTraitProfileID = 15,
  kTag_EventTraitInstanceID = 16,
  kTag_EventType = 17,
  kTag_EventDeltaUTCTime = 30,
  kTag_EventDeltaSystemTime = 31,
  kTag_EventData = 50,
  kTag_ExternalEventStructure = 99
}
枚举
事件元数据的标记。
@98 枚举
调试特征的配置文件定义。
@99{
  kNestDebug_StringLogEntryEvent = 1,
  kNestDebug_TokenizedLogEntryEvent = 2,
  kNestDebug_TokenizedHeaderEntryEvent = 3
}
枚举
Nest Debug 特征的事件类型。
CommandFlags{
  kCommandFlag_MustBeVersionValid = 0x0001,
  kCommandFlag_InitiationTimeValid = 0x0002,
  kCommandFlag_ActionTimeValid = 0x0004,
  kCommandFlag_ExpiryTimeValid = 0x0008,
  kCommandFlag_IsOneWay = 0x0010
}
枚举
ImportanceType{
  ProductionCritical = 1,
  Production,
  Info,
  Debug
}
枚举
日志条目的重要性。
LoggingManagementStates{
  kLoggingManagementState_Idle = 1,
  kLoggingManagementState_InProgress = 2,
  kLoggingManagementState_Holdoff = 3,
  kLoggingManagementState_Shutdown = 4
}
枚举
TimestampType 枚举
EventOptions 中包含的时间戳的有效性和类型。

类型定义符

CommandFlags typedef
DataVersion typedef
uint64_t
EventProcessor typedef
void *
EventWriterFunct)(nl::Weave::TLV::TLVWriter &ioWriter, uint8_t inDataTag, void *appData) typedef
一个用于为事件日志记录子系统提供 eventData 元素的函数。
FetchExternalEventsFunct)(EventLoadOutContext *aContext) typedef
用于获取事件数据的平台回调的函数原型。
GenericTraitSinkCatalog typedef
GenericTraitSourceCatalog typedef
ImportanceType typedef
日志条目的重要性。
IteratorCallback)(void *aTraitInstance, TraitDataHandle aHandle, void *aContext) typedef
void(*
特征句柄迭代器。
LoggingBufferHandler)(void *inAppState, PacketBuffer *inBuffer) typedef
NotifyExternalEventsDeliveredFunct)(ExternalEvents *inEv, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID) typedef
void(*
将外部事件传递给远程订阅者时调用的回调函数原型。
NotifyExternalEventsEvictedFunct)(ExternalEvents *inEv) typedef
void(*
从缓冲区中逐出外部事件时调用的回调函数原型。
PropertyDictionaryKey typedef
uint16_t
PropertyPathHandle typedef
uint32_t
PropertyPathHandle 是 WDM 路径相对于特征实例根的唯一 32 位数值哈希。
PropertySchemaHandle typedef
uint16_t
SchemaVersion typedef
uint16_t
SingleResourceSinkTraitCatalog typedef
SingleResourceSourceTraitCatalog typedef
TimestampType typedef
EventOptions 中包含的时间戳的有效性和类型。
TraitDataHandle typedef
uint16_t
duration_t nl::Weave::Profiles::DataManagement_Current::duration_t
uint32_t
用于描述时长的类型(以毫秒为单位)。
event_id_t nl::Weave::Profiles::DataManagement_Current::event_id_t
uint32_t
事件 ID 的类型。
timestamp_t nl::Weave::Profiles::DataManagement_Current::timestamp_t
uint32_t
用于描述时间戳的类型(以毫秒为单位)。
utc_timestamp_t nl::Weave::Profiles::DataManagement_Current::utc_timestamp_t
uint64_t
用于描述 UTC 时间戳的类型(以毫秒为单位)。

变量

sInstance
sLogFileName = "topazlog"[]
char

函数

BdxErrorHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer, WEAVE_ERROR aErrorCode)
void
BdxGetBlockHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aIsLastBlock)
void
BdxRejectHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer, nl::Weave::Profiles::StatusReporting::StatusReport *aReport)
void
BdxSendAcceptHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer, nl::Weave::Profiles::BulkDataTransfer::SendAccept *aSendAcceptMsg)
BdxXferDoneHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer)
void
BdxXferErrorHandler(nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer, nl::Weave::Profiles::StatusReporting::StatusReport *aXferError)
void
CreatePropertyPathHandle(PropertySchemaHandle aPropertyPathSchemaId, PropertyDictionaryKey aPropertyPathDictionaryKey)
EventWriterTLVCopy(TLVWriter & ioWriter, uint8_t inDataTag, void *appData)
辅助函数,用于将已序列化的 eventdata 元素转换为事件缓冲区。
GetPropertyDictionaryKey(PropertyPathHandle aHandle)
PropertyDictionaryKey
GetPropertySchemaHandle(PropertyPathHandle aHandle)
PropertySchemaHandle
IsNullPropertyPathHandle(PropertyPathHandle aHandle)
bool
IsRootPropertyPathHandle(PropertyPathHandle aHandle)
bool
IsVersionNewer(const DataVersion & aVersion, const DataVersion & aReference)
bool
这是算法比较的优化实现。
IsVersionNewerOrEqual(const DataVersion & aVersion, const DataVersion & aReference)
bool
Locate(TraitDataHandle aTraitDataHandle, const TraitCatalogBase< TraitDataSink > *aDataSinkCatalog)
实用函数,用于在 TraitDataSink 目录中查找 TraitUpdatableDataSink
LogEvent(const EventSchema & inSchema, nl::Weave::TLV::TLVReader & inData)
通过预序列化表单记录事件。
LogEvent(const EventSchema & inSchema, nl::Weave::TLV::TLVReader & inData, const EventOptions *inOptions)
通过其他选项记录预序列化表单的事件。
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData)
通过回调记录事件。
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
通过回调记录事件,并提供选项。
LogFreeform(ImportanceType inImportance, const char *inFormat, ...)
LogFreeform 会向默认事件流发出一个自由格式的字符串。
LookForElementWithTag(const nl::Weave::TLV::TLVReader & aSrcReader, const uint64_t aTagInApiForm, nl::Weave::TLV::TLVReader *apDstReader)
PlainTextWriter(TLVWriter & ioWriter, uint8_t inDataTag, void *appData)
一个用于发出自由格式的文本作为调试事件的辅助函数。
PlainTextWriter(::nl::Weave::TLV::TLVWriter & ioWriter, uint8_t inDataTag, void *appData)
一个用于发出自由格式的文本作为调试事件的辅助函数。
operator!=(const ResourceIdentifier & lhs, const ResourceIdentifier & rhs)
bool
operator==(const ResourceIdentifier & lhs, const ResourceIdentifier & rhs)
bool

nl::Weave::Profiles::DataManagement_Current::AlwaysAcceptDataElementAccessControlDelegate
nl::Weave::Profiles::DataManagement_Current::BuilderBase

WDM 消息编码器的基类。

nl:: Weave:: 个人资料:: DataManagement_Current::CircularEventReader

CircularEventBuffer 支持的 TLVReader。

nl::Weave::Profiles::DataManagement_Current::命令
nl::Weave::Profiles::DataManagement_Current::CommandSender
nl::Weave::Profiles::DataManagement_Current::GenericTraitCatalogImpl

Weave 为一组都引用同一资源的特征数据实例提供了 TraitCatalogBase 接口的实现。

nl::Weave::Profiles::DataManagement_Current::IDataElementAccessControlDelegate

由 NotifyRequest 中数据元素处理器实现的接口。

nl::Weave::Profiles::DataManagement_Current::IDirtyPathCut
nl::Weave::配置文件::DataManagement_Current::IPathFilter
nl::Weave::个人资料::DataManagement_Current::IWeavePublisherLock

将由应用实现的接口,用于序列化对主要 WDM 数据结构的访问。

nl::Weave::配置文件::DataManagement_Current::IWeaveWDMMutex

互斥对象的接口。

nl::Weave::Profiles::DataManagement_Current::ListBuilderBase

WDM 消息编码器的基类,专门用于数据列表和版本列表等 TLV 数组元素。

nl::Weave::Profiles::DataManagement_Current::ListParserBase

WDM 消息解析器的基类,专门用于数据列表和版本列表等 TLV 数组元素。

nl::Weave::Profiles::DataManagement_Current::LogBDXUpload
nl::Weave::Profiles::DataManagement_Current::LoggingConfiguration

LoggingConfiguration 封装 Weave Event Logging 子系统的可配置组件。

nl:: Weave:: 个人资料:: DataManagement_Current:: LoggingManagement

用于管理内存事件日志的类。

nl::Weave::配置文件::DataManagement_Current::NotificationEngine
nl::Weave::Profiles::DataManagement_Current::ParserBase

WDM 消息解析器的基类。

nl::Weave::Profiles::DataManagement_Current::ResourceIdentifier

用于封装资源 ID 的结构。

nl::Weave::Profiles::DataManagement_Current::SingleResourceTraitCatalog
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient
nl::Weave::Profiles::DataManagement_Current::SubscriptionEngine

这是一个单例模式,用于托管客户端和发布者端的所有 WDM Next 订阅。

nl::Weave::Profiles::DataManagement_Current::SubscriptionHandler
nl:: Weave:: 个人资料:: DataManagement_Current::TraitCatalogBase
nl::Weave::配置文件::DataManagement_Current::TraitDataSink
nl::Weave::Profiles::DataManagement_Current::TraitDataSource
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine

架构引擎接受与特定特征相关联的架构信息,并提供相应功能来解析这些信息,并将其转换成可供 WDM 机制使用的形式。

nl::Weave::Profiles::DataManagement_Current::TraitUpdatableDataSink
nl::Weave::Profiles::DataManagement_Current::UpdateClient
nl::Weave::Profiles::DataManagement_Current::UpdateDictionaryDirtyPathCut

在处理包含字典子项的属性路径时将字典重新置于待处理队列的实用程序类。

nl::Weave::Profiles::DataManagement_Current::UpdateDirtyPathFilter

处理通知时过滤路径的实用程序类。

nl::Weave::Profiles::DataManagement_Current::UpdateEncoder

此对象会对 WDM UpdateRequest 和 PartialUpdateRequest 载荷进行编码。

nl::Weave::Profiles::DataManagement_Current::ViewClient

结构体

nl::Weave::Profiles::DataManagement_Current::CircularEventBuffer

内部事件缓冲区,围绕 nl::Weave::TLV::WeaveCircularTLVBuffer 构建。

nl::Weave::Profiles::DataManagement_Current::ConstSchemaVersionRange
nl::Weave::Profiles::DataManagement_Current::CopyAndAdjustDeltaTimeContext

遍历事件列表的内部结构。

nl::Weave::Profiles::DataManagement_Current::DebugLogContext
nl::Weave::Profiles::DataManagement_Current::DetailedRootSection

提供特征实例的完整分辨率的结构。

nl:: Weave:: 个人资料:: DataManagement_Current::EventEnvelopeContext

用于遍历事件的内部结构。

nl::Weave::Profiles::DataManagement_Current::EventLoadOutContext

在输出时复制事件列表的结构。

nl::Weave::Profiles::DataManagement_Current::EventOptions

为不同事件字段提供选项的结构。

nl::Weave::Profiles::DataManagement_Current::EventSchema

定义事件元数据架构的结构。

nl:: Weave:: 个人资料:: DataManagement_Current::ExternalEvents

用于跟踪平台存储事件的结构。

nl::Weave::Profiles::DataManagement_Current::LogStorageResources

用于初始化日志记录管理的辅助类。

nl::Weave::Profiles::DataManagement_Current::ReclaimEventCtx
nl::Weave::Profiles::DataManagement_Current::SchemaVersionRange
nl::Weave::Profiles::DataManagement_Current::TraitPath
nl:: Weave:: 个人资料:: DataManagement_Current::TraitPathStore
nl::Weave::Profiles::DataManagement_Current::VersionedTraitPath

联合体

nl:: Weave:: 个人资料::DataManagement_Current::时间戳

提供应用集系统或 UTC 时间戳的并集。

命名空间

nl:: Weave:: 个人资料:: DataManagement_Current::BaseMessageWithSubscriptionId
nl::Weave::Profiles::DataManagement_Current::CustomCommand

WDM 自定义 Command 定义。

nl::Weave::Profiles::DataManagement_Current::CustomCommandResponse

WDM 自定义 Command 响应定义。

nl::Weave::Profiles::DataManagement_Current::DataElement

WDM 数据元素定义。

nl::Weave::Profiles::DataManagement_Current::DataList
nl:: Weave:: 个人资料:: DataManagement_Current:: 事件
nl::Weave::Profiles::DataManagement_Current::EventList
nl::Weave::Profiles::DataManagement_Current::NotificationRequest
nl::Weave::Profiles::DataManagement_Current::路径

WDM 路径定义。

nl::Weave::Profiles::DataManagement_Current::PathList

WDM 路径列表定义。

nl::Weave::Profiles::DataManagement_Current::平台
nl:: Weave:: 个人资料:: DataManagement_Current:: 拒绝记录
nl:: Weave:: 个人资料:: DataManagement_Current::拒绝记录列表
nl::Weave::Profiles::DataManagement_Current::StatusElement

WDM 状态元素定义。

nl::Weave::配置文件::DataManagement_Current::StatusList
nl:: Weave:: 个人资料:: DataManagement_Current::订阅取消请求
nl::Weave::Profiles::DataManagement_Current::SubscriptionConfirmRequest
nl:: Weave:: 个人资料:: DataManagement_Current::订阅请求
nl::Weave::Profiles::DataManagement_Current::SubscriptionResponse
nl::Weave::Profiles::DataManagement_Current::UpdateRequest

WDM 更新请求请求定义。

nl::Weave::Profiles::DataManagement_Current::UpdateResponse
nl::Weave::Profiles::DataManagement_Current::VersionList
nl::Weave::Profiles::DataManagement_Current::ViewRequest
nl::Weave::Profiles::DataManagement_Current::ViewResponse

枚举

@100

 @100

kNestDebug_StringLogEntryEvent 的代码。

属性
kTag_Message

包含实际调试消息的字符串。

kTag_Region

一个 32 位无符号符号,表示日志区域,即日志消息所属的模块。

@101

 @101

kNestDebug_TokenizedLogEntryEvent 的代码。

属性
kTag_Args

与令牌消息一起发送的参数数组。

kTag_Token

与令牌对应的 32 位未签名值。

@102

 @102

用于保留事件的标记。

@104

 @104

WDM 配置文件消息类型。

这些值会在数据管理规范中调出。

@105

 @105

特定于 WDM 的状态代码。

@147

 @147

@95

 @95

日志记录设置标记。

属性
kTag_CurrentImportance

当前日志记录重要性,其值为 ImportanceType 类型。

kTag_ImportanceExpiration

当前提升的日志记录设置还原为默认值的时间(以世界协调时间 (UTC) 为单位)。

kTag_LoggingDestination

指示日志上传目标位置的网址。

kTag_MaximumLogUploadInterval

自动触发日志上传尝试之间的最大时长(以秒为单位)。

kTag_MinimumLogUploadInterval

自动触发日志上传尝试之间的最短持续时间(以秒为单位)。

kTag_TraitLoggingImportance

(可选)数组,用于将所选配置文件映射到较高的日志记录级别。

数组中的每个元素都采用一种形式(配置文件、路径、日志记录导入),以选择性地从系统的子集提升日志记录。仅当日志记录优先级高于 currentImportance 优先级时,该配置文件才具有较高的配置文件日志记录优先级,并且该优先级的到期时间与 currentImportance 的到期时间相同。

@96

 @96

日志记录功能的标记。

属性
kTag_LogBufferingCapacity

描述日志缓冲容量的 32 位无符号整数(以 kB 为单位)。

kTag_LoggingVolume

描述预期日志记录量的 32 位无符号整数(以 kB/天为单位)。

kTag_SupportedLogTransports

受支持的日志传输机制数组。

kTag_SupportsNonVolatileStorage

指示设备是否支持非易失性日志存储的布尔值。

kTag_SupportsPerTraitVerbosity

指示设备是否支持每种特征的详细程度的布尔值。

kTag_SupportsStreaming

指示设备是否支持流式传输日志的布尔值。

@97

 @97

事件元数据的标记。

如需了解标记值的完整语义,请参阅“事件设计规范”。

属性
kTag_EventData

(可选)事件数据本身。如果为空,则默认为空结构。

kTag_EventDeltaSystemTime

WDM 内部代码,与编码中的前一个事件的时间差。

kTag_EventDeltaUTCTime

WDM 内部代码,与编码中的前一个事件的时间差。

kTag_EventID

事件的序列号,表示为 64 位无符号数。

必须是依序播放,序列中的跳转表示事件间隙。

kTag_EventImportance

事件的重要性。

kTag_EventResourceID

(可选)

该值是与事件相关的资源的 ID。如果省略,则值与 kTag_EventSource 的值相同

kTag_EventSource

生成事件的设备的 ID。

kTag_EventSystemTimestamp

(可选)事件的系统时间戳(以毫秒为单位)。

kTag_EventTraitInstanceID

(可选)生成事件的特征的实例。

kTag_EventTraitProfileID

必需。等于特征的配置文件 ID 的 32 位无符号整数。

kTag_EventType

必需。等于此类事件的 wdl.event.id 的 16 位无符号整数。

kTag_EventUTCTimestamp

(可选)事件的 UTC 时间戳(以毫秒为单位)。

kTag_ExternalEventStructure

外部事件的内部代码。切勿通过网络传输,切勿在 Weave 库之外使用。

kTag_RelatedEventID

(可选)

与此事件相关的事件的 ID。如果省略,则值等于 kTag_EventID 的值。

kTag_RelatedEventImportance

(可选)

相关事件的重要性。如果省略,则值等于 kTag_EventImportance 的值。

@98

 @98

调试特征的配置文件定义。

@99

 @99

Nest Debug 特征的事件类型。

属性
kNestDebug_StringLogEntryEvent

自由格式字符串调试消息的事件。

kNestDebug_TokenizedHeaderEntryEvent

用于传递标记化标头信息的事件。

kNestDebug_TokenizedLogEntryEvent

标记化调试消息的事件。

CommandFlag

 CommandFlags
属性
kCommandFlag_ActionTimeValid

设置操作时间何时有效。

kCommandFlag_ExpiryTimeValid

设置过期时间何时有效。

kCommandFlag_InitiationTimeValid

设置初始化时间何时有效。

kCommandFlag_IsOneWay

命令是单向的。

kCommandFlag_MustBeVersionValid

在版本字段有效时设置。

导入类型

 ImportanceType

日志条目的重要性。

重要性用于在事件实际发送到日志之前对其进行过滤。相关事件记录在日志中后,我们不会再做出其他规定,将其从日志中清除。重要性级别用于确定事件存储的优先级。如果某个重要性事件被添加到完整缓冲区中,系统会按重要性(和年龄)丢弃该事件以适应该事件。因此,重要性级别只有相对价值。如果系统只使用一个重要性级别,则仅会按年龄顺序丢弃事件,例如环形缓冲区。

属性
Debug

调试重要性表示系统开发者感兴趣的日志条目,主要用于开发阶段。

调试重要性日志不会考虑受约束设备的带宽或功率预算;因此,它们只能在有限的生产时间范围内用于生产系统。

Info

信息重要性表示为运行系统提供额外数据洞见和诊断信息的各种日志条目。

信息日志记录级别可能会在生产系统中长时间使用,或者在现场试验中用作默认日志级别。在受限设备上,使用信息级别记录的条目必须在带宽和内存预算中计算,而不是在电源预算中。

Production

生产重要性表示持续监控和维护 Nest 生态系统的日志条目。

在受限设备上,生产重要性记录的条目必须计入功耗和内存预算,因为预计系统会始终从设备记录和卸载这些条目。

ProductionCritical

“生产重要性”表示事件会直接影响面向客户的功能。

应用可能会丢失生产关键事件,以指示系统故障。在受限设备上,系统会将生产关键性记录到的条目计入功耗和内存预算中,因为预计系统会始终从设备记录和分流这些条目。

LoggingManagementStates

 LoggingManagementStates
属性
kLoggingManagementState_Holdoff

日志分流已完成;我们不会在日志暂停之前重启日志。

kLoggingManagementState_Idle

没有日志分流正在进行,日志分流可以开始,没有任何约束。

kLoggingManagementState_InProgress

正在执行日志分流。

kLoggingManagementState_Shutdown

无法执行任何日志记录操作。

时间戳类型

 TimestampType

EventOptions 中包含的时间戳的有效性和类型。

类型定义符

CommandFlag

enum nl::Weave::Profiles::DataManagement_Current::CommandFlags CommandFlags

数据版本

uint64_t DataVersion

EventProcessor

void * EventProcessor

EventWriterFunct

WEAVE_ERROR(* EventWriterFunct)(nl::Weave::TLV::TLVWriter &ioWriter, uint8_t inDataTag, void *appData)

一个用于为事件日志记录子系统提供 eventData 元素的函数。

此类函数应为事件日志记录子系统提供 eventData 元素。在事件子系统生成所有必需的事件元数据后,系统就会调用此类函数。使用 nl::Weave::TLV::TLVWriter 对象调用该函数,该对象将发出一个标记有 kTag_EventData 的 TLV 元素;该元素的值必须是包含事件数据的结构。事件数据本身必须使用上下文代码进行构建。

详情
参数
[in,out] ioWriter
对要用于事件数据序列化的 nl::Weave::TLV::TLVWriter 对象的引用。
[in] inDataTag
我们正在编写的 TLV 的上下文标记。
[in] appData
指向应用特定上下文的指针。
返回值
WEAVE_NO_ERROR
成功时。
other
告知调用方无法完成序列化事件的适当错误。对 ioWriter 的调用应传播,而不会重新映射。如果该函数返回任何类型的错误,系统会取消事件生成,并且不会将事件写入日志。
另请参阅
PlainTextWriter
EventWriterTLVCopy

FetchExternalEventsFunct

WEAVE_ERROR(* FetchExternalEventsFunct)(EventLoadOutContext *aContext)

用于获取事件数据的平台回调的函数原型。

与 FetchEventsFrom 类似,此提取函数会返回从 EventLoadOutContext.mStartingEventID 到 ExternalEvents.mLastEventID 的所有事件。

上下文指针的类型为 FetchExternalEventsContext。其中包括 EventLoadOutContext,以及一些用于 TLV 格式的辅助变量。此外,它还包含一个指向注册回调时创建的 ExternalEvents 结构体的指针。用于指定回调的事件 ID 范围。

从该函数返回时,EventLoadOutContext.mCurrentEventID 应反映第一个未成功写入 TLV 缓冲区的事件 ID。平台必须使用 EventLogging 协议指定的正确格式将事件标头和数据写入 TLV 写入器。平台还必须保持事件和时间戳的唯一性。

所有 TLV 错误都应传播到更高层级。例如,缓冲区空间不足将触发已发送的消息,随后使用剩余事件 ID 再次调用回调函数。

详情
返回值
WEAVE_ERROR_NO_MEMORY
如果空间不足,无法写入事件。
WEAVE_ERROR_BUFFER_TOO_SMALL
如果空间不足,无法写入事件。
WEAVE_NO_ERROR
成功时。
WEAVE_END_OF_TLV
成功时。

GenericTraitSinkCatalog

GenericTraitCatalogImpl< TraitDataSink > GenericTraitSinkCatalog

GenericTraitSourceCatalog

GenericTraitCatalogImpl< TraitDataSource > GenericTraitSourceCatalog

导入类型

enum nl::Weave::Profiles::DataManagement_Current::ImportanceType ImportanceType

日志条目的重要性。

重要性用于在事件实际发送到日志之前对其进行过滤。相关事件记录在日志中后,我们不会再做出其他规定,将其从日志中清除。重要性级别用于确定事件存储的优先级。如果某个重要性事件被添加到完整缓冲区中,系统会按重要性(和年龄)丢弃该事件以适应该事件。因此,重要性级别只有相对价值。如果系统只使用一个重要性级别,则仅会按年龄顺序丢弃事件,例如环形缓冲区。

IteratorCallback

void(* IteratorCallback)(void *aTraitInstance, TraitDataHandle aHandle, void *aContext)

特征句柄迭代器。

LoggingBufferHandler

WEAVE_ERROR(* LoggingBufferHandler)(void *inAppState, PacketBuffer *inBuffer)

NotifyExternalEventsDeliveredFunct

void(* NotifyExternalEventsDeliveredFunct)(ExternalEvents *inEv, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID)

将外部事件传递给远程订阅者时调用的回调函数原型。

当外部事件传送给远程订阅者时,引擎会通知外部事件提供程序。该回调函数包含最后传送的 ID 的事件以及收到事件的订阅者的 ID。

详情
参数
[in] inEv
与已传送事件对应的外部事件对象
[in] inLastDeliveredEventID
传送给订阅者的最后一个事件 ID。
[in] inRecipientNodeID
为收件人编织节点 ID

NotifyExternalEventsEvictedFunct

void(* NotifyExternalEventsEvictedFunct)(ExternalEvents *inEv)

从缓冲区中逐出外部事件时调用的回调函数原型。

从出站消息缓冲区中逐出外部事件对象时,引擎会通知外部事件提供程序。该回调包含要逐出的外部事件。

详情
参数
[in] inEv
要逐出的外部事件对象

属性字典键

uint16_t PropertyDictionaryKey

属性路径句柄

uint32_t PropertyPathHandle

PropertyPathHandle 是 WDM 路径相对于特征实例根的唯一 32 位数值哈希。

其中包含两个部分:

  • 映射到架构静态部分的较低 16 位编号。
  • 如果低 16 位引用字典元素中的路径,则存在高 16 位的数字,表示与该元素关联的字典键。如果低 16 位引用非字典元素,则高 16 位应为 0。

一些特征:

  • 每个特征都有自己的属性路径句柄空间。
  • 每个唯一 WDM 子路径路径都有一个类似且独一无二的 PropertyPathHandle。
  • PropertyPathHandles 由特征编译器从 IDL 自动生成(现在手动完成),并在相应特征的头文件中表示为枚举列表。
  • 借助这种构造,应用逻辑从不需要直接处理 WDM 路径。而是通过 WDM 处理。
  • 路径句柄有两个具有特定含义的保留值:
    • 0 表示 'NULL' 句柄
    • 1 表示指向特征实例根部的句柄。

PropertySchemaHandle

uint16_t PropertySchemaHandle

SchemaVersion

uint16_t SchemaVersion

SingleResourceSinkTraitCatalog

SingleResourceTraitCatalog< TraitDataSink > SingleResourceSinkTraitCatalog

SingleResourceSourceTraitCatalog

SingleResourceTraitCatalog< TraitDataSource > SingleResourceSourceTraitCatalog

时间戳类型

enum nl::Weave::Profiles::DataManagement_Current::TimestampType TimestampType

EventOptions 中包含的时间戳的有效性和类型。

特征数据句柄

uint16_t TraitDataHandle

持续时间_t

uint32_t duration_t

用于描述时长的类型(以毫秒为单位)。

event_id_t

uint32_t event_id_t

事件 ID 的类型。

timestamp_t

uint32_t timestamp_t

用于描述时间戳的类型(以毫秒为单位)。

utc_timestamp_t

uint64_t utc_timestamp_t

用于描述 UTC 时间戳的类型(以毫秒为单位)。

变量

实例

LoggingManagement sInstance

sLogFileName

char sLogFileName[] = "topazlog"

函数

BdxErrorHandler 类的构造函数

void BdxErrorHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer,
  WEAVE_ERROR aErrorCode
)

BdxGetBlockHandler

void BdxGetBlockHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer,
  uint64_t *aLength,
  uint8_t **aDataBlock,
  bool *aIsLastBlock
)

Bdx 拒绝处理程序

void BdxRejectHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer,
  nl::Weave::Profiles::StatusReporting::StatusReport *aReport
)

BdxSendAcceptHandler

WEAVE_ERROR BdxSendAcceptHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer,
  nl::Weave::Profiles::BulkDataTransfer::SendAccept *aSendAcceptMsg
)

BdxXferDoneHandler

void BdxXferDoneHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer
)

BdxXferErrorHandler

void BdxXferErrorHandler(
  nl::Weave::Profiles::BulkDataTransfer::BDXTransfer *aXfer,
  nl::Weave::Profiles::StatusReporting::StatusReport *aXferError
)

CreatePropertyPathHandle

PropertyPathHandle CreatePropertyPathHandle(
  PropertySchemaHandle aPropertyPathSchemaId,
  PropertyDictionaryKey aPropertyPathDictionaryKey
)

EventWriterTLVCopy

WEAVE_ERROR EventWriterTLVCopy(
  TLVWriter & ioWriter,
  uint8_t inDataTag,
  void *appData
)

辅助函数,用于将已序列化的 eventdata 元素转换为事件缓冲区。

详情
参数
[in,out] ioWriter
用于撰写活动的作者
[in] inDataTag
我们要复制的 TLV 的上下文标记。此处未使用,但 EventWriterFunct 的 typedef 需要使用此参数。
[in] appData
指向存放序列化事件数据的 TLVReader 的指针。
返回值
WEAVE_NO_ERROR
成功时。
other
从 ioWriter 返回的其他错误。

GetPropertyDictionaryKey

PropertyDictionaryKey GetPropertyDictionaryKey(
  PropertyPathHandle aHandle
)

GetPropertySchemaHandle

PropertySchemaHandle GetPropertySchemaHandle(
  PropertyPathHandle aHandle
)

IsNullPropertyPathHandle

bool IsNullPropertyPathHandle(
  PropertyPathHandle aHandle
)

IsRootPropertyPathHandle

bool IsRootPropertyPathHandle(
  PropertyPathHandle aHandle
)

IsVersionNewer

bool IsVersionNewer(
  const DataVersion & aVersion,
  const DataVersion & aReference
)

这是算法比较的优化实现。

在客户端,从服务接收的版本始终是最新版本。

IsVersionNewerOrEqual 类

bool IsVersionNewerOrEqual(
  const DataVersion & aVersion,
  const DataVersion & aReference
)

定位

TraitUpdatableDataSink * Locate(
  TraitDataHandle aTraitDataHandle,
  const TraitCatalogBase< TraitDataSink > *aDataSinkCatalog
)

实用函数,用于在 TraitDataSink 目录中查找 TraitUpdatableDataSink

详情
参数
[in] aTraitDataHandle
要查询的接收器的句柄。
[in] aDataSinkCatalog
要搜索的目录。
退货
指向 TraitUpdatableDataSink 的指针;如果句柄不存在或指向不可更新的 TraitDataSink,则返回 NULL。

日志事件

event_id_t LogEvent(
  const EventSchema & inSchema,
  nl::Weave::TLV::TLVReader & inData
)

通过预序列化表单记录事件。

相应函数会记录一个表示为 nl::Weave::TLV::TLVReader 的事件。这意味着事件数据表示法已在 nl::Weave::TLV::TLVReader 底层的存储中进行了序列化。nl::Weave::TLV::TLVReader 中至少要包含一个数据元素,该元素必须是一个结构。从读取器中读取的第一个元素会被视为事件数据,并存储在事件日志中。事件数据必须包含在由 inProfileID 和 inEventType 标识的架构中进行解读的上下文标记。第一个元素的标记将被忽略;事件日志记录系统将将其替换为 eventData 标记。

如果 inImportance 超过 LoggingConfiguration 中指定的日志记录阈值,则会记录该事件。如果事件的重要性未达到当前阈值,则会被丢弃,并且该函数将返回 0 作为生成的事件 ID。

此调用变体会隐式指定所有默认事件选项:

  • 该事件在调用点添加了当前时间的时间戳,
  • 该事件会被标记为与拨打电话的设备相关
  • 该活动是独立的,与其他任何活动无关;
  • 该事件被标记为非紧急

详情
参数
[in] inSchema
架构:定义此事件的重要程度、配置文件 ID 和结构类型。
[in] inData
包含事件数据作为第一个元素的 TLV 读取器。
退货
event_id_t:如果事件已写入日志,则为事件 ID;否则为 0。

日志事件

event_id_t LogEvent(
  const EventSchema & inSchema,
  nl::Weave::TLV::TLVReader & inData,
  const EventOptions *inOptions
)

通过其他选项记录预序列化表单的事件。

相应函数会记录一个表示为 nl::Weave::TLV::TLVReader 的事件。这意味着事件数据表示法已在 nl::Weave::TLV::TLVReader 底层的存储中进行了序列化。nl::Weave::TLV::TLVReader 中至少要包含一个数据元素,该元素必须是一个结构。从读取器中读取的第一个元素会被视为事件数据,并存储在事件日志中。事件数据必须包含在由 inProfileID 和 inEventType 标识的架构中进行解读的上下文标记。第一个元素的标记将被忽略;事件日志记录系统将将其替换为 eventData 标记。

如果 inImportance 超过 LoggingConfiguration 中指定的日志记录阈值,则会记录该事件。如果事件的重要性未达到当前阈值,则会被丢弃,并且该函数将返回 0 作为生成的事件 ID。

此调用变体允许调用方设置 EventOptions 的任意组合:

  • 时间戳,当 0 默认为调用点的当前时间时;
  • “source”部分(事件来源和特征 ID);如果为 NULL,则默认使用当前设备;该事件会被标记为与发出调用的设备相关。
  • 用于对事件 ID 进行分组的相关事件 ID;当相关事件 ID 为 0 时,相应事件会被标记为与任何其他事件都无关;
  • 紧迫性;默认情况下不紧急。

详情
参数
[in] inSchema
架构:定义此事件的重要程度、配置文件 ID 和结构类型。
[in] inData
包含事件数据作为第一个元素的 TLV 读取器。不得为 NULL
[in] inOptions
事件元数据的选项。可以为 NULL。
退货
event_id_t:如果事件已写入日志,则为事件 ID;否则为 0。

日志事件

event_id_t LogEvent(
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData
)

通过回调记录事件。

此函数会记录一个表示为 EventWriterFunct 的事件以及应用专用的 appData 上下文。函数会写入事件元数据,并使用 nl::Weave::TLV::TLVWriter 引用和 inAppData 上下文调用 inEventWriter,以便用户代码可以直接将事件数据发送到事件日志。这种形式的事件日志记录可最大限度地减少内存消耗,因为事件数据会直接序列化到目标缓冲区。事件数据必须包含要在由 inProfileIDinEventType 标识的架构中进行解读的上下文标记。第一个元素的标记将被忽略;事件日志记录系统将将其替换为 eventData 标记。

如果 inImportance 超过 LoggingConfiguration 中指定的日志记录阈值,则会记录该事件。如果事件的重要性未达到当前阈值,则会被丢弃,并且该函数将返回 0 作为生成的事件 ID。

此调用变体会隐式指定所有默认事件选项:

  • 该事件在调用点添加了当前时间的时间戳,
  • 该事件会被标记为与拨打电话的设备相关
  • 该活动是独立的,与其他任何活动无关;
  • 该事件被标记为非紧急

详情
参数
[in] inSchema
架构:定义此事件的重要程度、配置文件 ID 和结构类型。
[in] inEventWriter
实际调用以序列化事件数据的回调
[in] inAppData
回调的应用上下文。
退货
event_id_t:如果事件已写入日志,则为事件 ID;否则为 0。

日志事件

event_id_t LogEvent(
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData,
  const EventOptions *inOptions
)

通过回调记录事件,并提供选项。

此函数会记录一个表示为 EventWriterFunct 的事件以及应用专用的 appData 上下文。函数会写入事件元数据,并使用 nl::Weave::TLV::TLVWriter 引用和 inAppData 上下文调用 inEventWriter,以便用户代码可以直接将事件数据发送到事件日志。这种形式的事件日志记录可最大限度地减少内存消耗,因为事件数据会直接序列化到目标缓冲区。事件数据必须包含要在由 inProfileIDinEventType 标识的架构中进行解读的上下文标记。第一个元素的标记将被忽略;事件日志记录系统将将其替换为 eventData 标记。

如果 inImportance 超过 LoggingConfiguration 中指定的日志记录阈值,则会记录该事件。如果事件的重要性未达到当前阈值,则会被丢弃,并且该函数将返回 0 作为生成的事件 ID。

此调用变体允许调用方设置 EventOptions 的任意组合:

  • 时间戳,当 0 默认为调用点的当前时间时;
  • “source”部分(事件来源和特征 ID);如果为 NULL,则默认使用当前设备;该事件会被标记为与发出调用的设备相关。
  • 用于对事件 ID 进行分组的相关事件 ID;当相关事件 ID 为 0 时,相应事件会被标记为与任何其他事件都无关;
  • 紧迫性;默认情况下不紧急。

详情
参数
[in] inSchema
架构:定义此事件的重要程度、配置文件 ID 和结构类型。
[in] inEventWriter
实际调用以序列化事件数据的回调
[in] inAppData
回调的应用上下文。
[in] inOptions
事件元数据的选项。可以为 NULL。
退货
event_id_t:如果事件已写入日志,则为事件 ID;否则为 0。

自由形式

event_id_t LogFreeform(
  ImportanceType inImportance,
  const char *inFormat,
  ...
)

LogFreeform 会向默认事件流发出一个自由格式的字符串。

该字符串将封装在调试事件结构中,其结构与其他记录的字符串完全相同。事件配置文件 ID 将为 Nest Debug 事件 ID,事件类型将为 kNestDebug_StringLogEntryEvent

详情
参数
[in] inImportance
日志条目的重要性;如果重要性低于当前重要性,则系统不会实际记录事件
[in] inFormat
符合 printf 的格式字符串,后跟要格式化的参数
退货
event_id_t:如果事件已写入日志,则为事件 ID;否则为 0。

LookForElementWithTag

WEAVE_ERROR LookForElementWithTag(
  const nl::Weave::TLV::TLVReader & aSrcReader,
  const uint64_t aTagInApiForm,
  nl::Weave::TLV::TLVReader *apDstReader
)

明文作者

WEAVE_ERROR PlainTextWriter(
  TLVWriter & ioWriter,
  uint8_t inDataTag,
  void *appData
)

一个用于发出自由格式的文本作为调试事件的辅助函数。

调试事件是具有日志区域和自由格式文本的结构。

详情
参数
[in,out] ioWriter
用于撰写活动的作者
[in] appData
指向 DebugLogContext 的指针,用于保存字符串格式、参数和日志区域
[in] inDataTag
我们正在编写的 TLV 的上下文标记。此处未使用,但 EventWriterFunct 的 typedef 需要使用此参数。
返回值
WEAVE_NO_ERROR
成功时。
other
从 ioWriter 返回的其他错误。

明文作者

WEAVE_ERROR PlainTextWriter(
  ::nl::Weave::TLV::TLVWriter & ioWriter,
  uint8_t inDataTag,
  void *appData
)

一个用于发出自由格式的文本作为调试事件的辅助函数。

调试事件是具有日志区域和自由格式文本的结构。

详情
参数
[in,out] ioWriter
用于撰写活动的作者
[in] inDataTag
发出代码
[in] appData
指向 DebugLogContext 的指针,用于保存字符串格式、参数和日志区域
返回值
WEAVE_NO_ERROR
成功时。
other
ioWriter 可能返回的其他错误。

运算符!=

bool operator!=(
  const ResourceIdentifier & lhs,
  const ResourceIdentifier & rhs
)

运算符==

bool operator==(
  const ResourceIdentifier & lhs,
  const ResourceIdentifier & rhs
)