nl::Weave::Profiles::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
}
枚举
Logging 设置标记。
@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 枚举
调试 trait 的配置文件定义。
@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::Profiles::DataManagement_Current::CircularEventReader

CircularEventBuffer 支持的 TLVReader。

nl::Weave::Profiles::DataManagement_Current::Command
nl::Weave::Profiles::DataManagement_Current::CommandSender
nl::Weave::Profiles::DataManagement_Current::GenericTraitCatalogImpl

Weave 提供了 TraitCatalogBase 接口的实现,用于实现引用同一资源的一系列特征数据实例。

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

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

nl::Weave::Profiles::DataManagement_Current::IDirtyPathCut
nl::Weave::Profiles::DataManagement_Current::IPathFilter
nl::Weave::Profiles::DataManagement_Current::IWeavePublisherLock

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

nl::Weave::Profiles::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::Profiles::DataManagement_Current::LoggingManagement

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

nl::Weave::Profiles::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::Profiles::DataManagement_Current::TraitCatalogBase
nl::Weave::Profiles::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::Profiles::DataManagement_Current::EventEnvelopeContext

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

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

用于复制输出中的事件列表的结构。

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

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

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

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

nl::Weave::Profiles::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::Profiles::DataManagement_Current::TraitPathStore
nl::Weave::Profiles::DataManagement_Current::VersionedTraitPath

联合体

nl::Weave::Profiles::DataManagement_Current::Timestamp

提供应用集系统或世界协调时间 (UTC) 时间戳的并集。

命名空间

nl::Weave::Profiles::DataManagement_Current::BaseMessageWithSubscribeId
nl::Weave::Profiles::DataManagement_Current::CustomCommand

WDM 自定义 Command 定义。

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

WDM 自定义命令响应定义。

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

WDM 数据元素定义。

nl::Weave::Profiles::DataManagement_Current::DataList
nl::Weave::Profiles::DataManagement_Current::Event
nl::Weave::Profiles::DataManagement_Current::EventList
nl::Weave::Profiles::DataManagement_Current::NotificationRequest
nl::Weave::Profiles::DataManagement_Current::Path

WDM 路径定义。

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

WDM 路径列表定义。

nl::Weave::Profiles::DataManagement_Current::Platform
nl::Weave::Profiles::DataManagement_Current::RejectionRecord
nl::Weave::Profiles::DataManagement_Current::RejectionRecordList
nl::Weave::Profiles::DataManagement_Current::StatusElement

WDM 状态元素定义。

nl::Weave::Profiles::DataManagement_Current::StatusList
nl::Weave::Profiles::DataManagement_Current::SubscribeCancelRequest
nl::Weave::Profiles::DataManagement_Current::SubscribeConfirmRequest
nl::Weave::Profiles::DataManagement_Current::SubscribeRequest
nl::Weave::Profiles::DataManagement_Current::SubscribeResponse
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

Logging 设置标记。

属性
kTag_CurrentImportance

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

kTag_ImportanceExpiration

当前提升的日志记录设置还原为默认值的时间(采用世界协调时间/UTC 秒数)。

kTag_LoggingDestination

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

kTag_MaximumLogUploadInterval

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

kTag_MinimumLogUploadInterval

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

kTag_TraitLoggingImportance

一个可选数组,有选择地将所选配置文件映射到更高的日志记录级别。

数组中的每个元素都采用一种形式 (profile,path,loggingimportance),以便有选择地从系统的某个子集提升日志记录。只有在日志记录优先级超过 currentImportance 并且其到期时间与当前 Importance 相同时,提升的配置文件日志记录优先级才有意义。

@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

生成事件的设备的 NodeID。

kTag_EventSystemTimestamp

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

kTag_EventTraitInstanceID

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

kTag_EventTraitProfileID

必填。32 位无符号整数,等于特征的 ProfileID。

kTag_EventType

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

kTag_EventUTCTimestamp

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

kTag_ExternalEventStructure

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

kTag_RelatedEventID

可选。

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

kTag_RelatedEventImportance

可选。

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

@98

 @98

调试 trait 的配置文件定义。

@99

 @99

Nest Debug 特征的事件类型。

属性
kNestDebug_StringLogEntryEvent

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

kNestDebug_TokenizedHeaderEntryEvent

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

kNestDebug_TokenizedLogEntryEvent

令牌化调试消息的事件。

CommandFlags

 CommandFlags
属性
kCommandFlag_ActionTimeValid

设置操作时间有效的时间。

kCommandFlag_ExpiryTimeValid

在过期时间有效时设置。

kCommandFlag_InitiationTimeValid

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

kCommandFlag_IsOneWay

当命令为单向时设置。

kCommandFlag_MustBeVersionValid

在版本字段有效时设置。

ImportanceType

 ImportanceType

日志条目的重要性。

重要性用于在事件实际发送到日志之前对其进行过滤。当事件被记录在日志中后,我们不再做出进一步规定将其从日志中清除。重要性级别用于确定事件存储的优先级。如果将一个重要性较高的事件添加到填满的缓冲区,则按照重要性(和存在时间)丢弃这些事件,以适应该事件。因此,重要性级别只有相对值。如果系统只使用一个重要性级别,则仅按存在时间顺序丢弃事件,就像环形缓冲区一样。

属性
Debug

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

调试重要性日志未计入受限设备的带宽或功耗预算;因此,它们只能在限定时间内用于生产系统。

Info

信息重要性表示可提供有关运行中系统的额外数据分析和诊断的日志条目。

信息日志记录级别可在生产系统中长期使用,也可用作现场试验中的默认日志级别。在受限设备上,必须考虑带宽和内存预算(而非功率预算)中通过信息级别记录的条目。

Production

生产重要性表示在对 Nest 生态系统进行持续监控和维护时使用的日志条目。

在受限设备上,必须考虑电源和内存预算中记录的具有生产重要性的条目,因为系统应始终记录这些条目并从设备分流。

ProductionCritical

“生产关键型”表示这些事件的损失会直接影响面向客户的功能。

应用可能会使用丢失生产关键事件来指示系统故障。在受限设备上,必须考虑电源和内存预算中记录的重要程度为“生产关键型”的条目,因为应始终记录并从设备中分流这些条目。

LoggingManagementStates

 LoggingManagementStates
属性
kLoggingManagementState_Holdoff

日志分流已完成;在暂停期到期之前,我们不会重新开始记录日志。

kLoggingManagementState_Idle

没有正在进行的日志分流,日志分流可以在没有任何限制条件的情况下开始。

kLoggingManagementState_InProgress

正在分流日志。

kLoggingManagementState_Shutdown

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

TimestampType

 TimestampType

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

类型定义符

CommandFlags

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

DataVersion

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)

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

与 FetchEventsSince,此提取函数会返回从 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

ImportanceType

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
接收者的 Weave 节点 ID

NotifyExternalEventsEvictedFunct

void(* NotifyExternalEventsEvictedFunct)(ExternalEvents *inEv)

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

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

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

PropertyDictionaryKey

uint16_t PropertyDictionaryKey

PropertyPathHandle

uint32_t PropertyPathHandle

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

它包含两个部分:

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

部分特征如下:

  • 每个特征都有自己的属性路径句柄空间。
  • 每个唯一的 WDM 子路径路径都具有类似唯一的 PropertyPathHandle。
  • PropertyPathHandle 是由 IDL 的 trait 编译器自动生成的(目前手动完成),并在相应 trait 的头文件中表示为枚举列表。
  • 使用此结构,应用逻辑永远不必直接处理 WDM 路径。而是只能通过这些标识名与 WDM 进行互动。
  • 对于具有特定含义的路径句柄,有两个预留值:
    • 0 表示“NULL”标识名
    • 1 表示指向特征实例根的句柄。

PropertySchemaHandle

uint16_t PropertySchemaHandle

SchemaVersion

uint16_t SchemaVersion

SingleResourceSinkTraitCatalog

SingleResourceTraitCatalog< TraitDataSink > SingleResourceSinkTraitCatalog

SingleResourceSourceTraitCatalog

SingleResourceTraitCatalog< TraitDataSource > SingleResourceSourceTraitCatalog

TimestampType

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

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

TraitDataHandle

uint16_t TraitDataHandle

duration_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) 时间戳的类型(以毫秒为单位)。

变量

sInstance

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
)

BdxRejectHandler

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。

LogEvent

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。

LogEvent

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 默认为通话时的当前时间,
  • “root”事件来源的“事件来源”和“特征 ID”部分;如果为 NULL,则默认为当前设备。该事件被标记为与进行调用的设备相关;
  • 将事件 ID 分组的相关事件 ID;当相关事件 ID 为 0 时,该事件将被标记为与其他任何事件均无关。
  • 紧迫性;默认为非紧急

详细信息
参数
[in] inSchema
架构,用于定义此事件的重要性、个人资料 ID 和结构类型。
[in] inData
包含事件数据作为第一个元素的 TLV 读取器。不得为 NULL
[in] inOptions
事件元数据的选项。可以为 NULL。
返回值
event_id_t:如果事件已写入日志,则为事件 ID,否则为 0。

LogEvent

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。

LogEvent

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 默认为通话时的当前时间,
  • “root”事件来源的“事件来源”和“特征 ID”部分;如果为 NULL,则默认为当前设备。该事件被标记为与进行调用的设备相关;
  • 将事件 ID 分组的相关事件 ID;当相关事件 ID 为 0 时,该事件将被标记为与其他任何事件均无关。
  • 紧迫性;默认为非紧急

详细信息
参数
[in] inSchema
架构,用于定义此事件的重要性、个人资料 ID 和结构类型。
[in] inEventWriter
为实际序列化事件数据而调用的回调
[in] inAppData
回调的应用上下文。
[in] inOptions
事件元数据的选项。可以为 NULL。
返回值
event_id_t:如果事件已写入日志,则为事件 ID,否则为 0。

LogFreeform

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

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

该字符串将封装在调试事件结构中,在结构上与其他记录的字符串相同。事件配置文件 ID 将是 Nest 调试事件的配置文件 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
)

PlainTextWriter

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

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

调试事件是一个包含日志区域和自由格式文本的结构。

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

PlainTextWriter

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

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

调试事件是一个包含日志区域和自由格式文本的结构。

详细信息
参数
[in,out] ioWriter
用于撰写活动的作者
[in] inDataTag
要发出的代码
[in] appData
指向 DebugLogContext 的指针,DebugLogContext 是一个包含字符串格式、参数和日志区域的结构
返回值
WEAVE_NO_ERROR
成功时。
other
可能从 ioWriter 返回的其他错误。

operator!=

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

运算符==

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