nl::Weave::DeviceLayer::SoftwareUpdateManager

摘要

继承

直接已知的子类:
  nl::Weave::DeviceLayer::SoftwareUpdateManagerImpl
  nl::Weave::DeviceLayer::SoftwareUpdateManagerImpl
  nl::Weave::DeviceLayer::SoftwareUpdateManagerImpl

公共类型

ActionType{
  kAction_Ignore,
  kAction_DownloadNow,
  kAction_DownloadLater,
  kAction_ApplicationManaged
}
枚举
当软件更新可用时,应用程序可以选择以下某个操作作为 SoftwareUpdateAvailable API 事件回调的一部分。
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
EventType{
  kEvent_PrepareQuery,
  kEvent_PrepareQuery_Metadata,
  kEvent_QueryPrepareFailed,
  kEvent_QuerySent,
  kEvent_SoftwareUpdateAvailable,
  kEvent_FetchPartialImageInfo,
  kEvent_PrepareImageStorage,
  kEvent_StartImageDownload,
  kEvent_StoreImageBlock,
  kEvent_ComputeImageIntegrity,
  kEvent_ResetPartialImageInfo,
  kEvent_ReadyToInstall,
  kEvent_StartInstallImage,
  kEvent_Finished,
  kEvent_DefaultCheck = 100
}
枚举
SoftwareUpdateManager 对象生成的 API 事件。
RetryPolicyCallback)(void *aAppState, RetryParam &aRetryParam, uint32_t &aOutIntervalMsec) typedef
void(*
State 枚举

好友课程

Internal::GenericPlatformManagerImpl
friend class

公共函数

Abort(void)
CheckNow(void)
GetState(void)
State
ImageInstallComplete(WEAVE_ERROR aError)
IsInProgress(void)
bool
PrepareImageStorageComplete(WEAVE_ERROR aError)
SetEventCallback(void *const aAppState, const EventCallback aEventCallback)
SetQueryIntervalWindow(uint32_t aMinWaitTimeMs, uint32_t aMaxWaitTimeMs)
SetRetryPolicyCallback(const RetryPolicyCallback aRetryPolicyCallback)
void

公共静态函数

DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void

受保护的函数

SoftwareUpdateManager()=default
SoftwareUpdateManager(const SoftwareUpdateManager &)=delete
SoftwareUpdateManager(const SoftwareUpdateManager &&)=delete
operator=(const SoftwareUpdateManager &)=delete
~SoftwareUpdateManager()=default

结构体

nl::Weave::DeviceLayer::SoftwareUpdateManager::RetryParam

联合体

nl::Weave::DeviceLayer::SoftwareUpdateManager::InEventParam
nl::Weave::DeviceLayer::SoftwareUpdateManager::OutEventParam

公共类型

ActionType

 ActionType

当软件更新可用时,应用程序可以选择以下某个操作作为 SoftwareUpdateAvailable API 事件回调的一部分。

默认操作将设置为 kAction_Now。

属性
kAction_ApplicationManaged

允许应用管理剩余的软件更新阶段,如下载、映像完整性验证和安装。

软件更新管理器状态机将变为 ApplicationManaged 状态。在应用调用 Abort 或 ImageInstallComplete API 之前,预定的软件更新检查(如果已启用)将被暂停。

kAction_DownloadLater

启动时暂停下载。

已排定的软件更新检查(如果已启用)将暂停。状态机将保持“下载”状态。准备就绪后,应用可以调用恢复下载 API 以继续下载,或调用 Abort 以取消操作。

kAction_DownloadNow

立即开始下载。

随后将立即生成 kEvent_FetchPartialImageInfo API 事件回调。

kAction_Ignore

完全忽略下载。

如果选择此选项,并且不会调用重试逻辑,系统将生成 kEvent_Finished API 事件回调,并显示错误 WEAVE_DEVICE_ERROR_SOFTWARE_UPDATE_CANCELLED。

EventCallback

void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

EventType

 EventType

SoftwareUpdateManager 对象生成的 API 事件。

属性
kEvent_ComputeImageIntegrity

计算映像完整性校验值。

请求应用对下载的映像计算完整性检查值。下载完成后会生成。

kEvent_DefaultCheck

检查默认事件处理行为。

用于验证应用中的默认事件处理是否正确无误。

应用不得处理此事件。

kEvent_FetchPartialImageInfo

提取部分下载的图片的保留状态信息。

让应用有机会披露之前下载的部分图片的信息,以便可以从上次停止的位置继续下载。可用软件更新的 URI 作为输入参数提供,应用可以使用该参数来比较下载的图片是否与部分图片相同。

应用应返回 PartialImageLenInBytes 输出参数中部分图像的长度。应用可将 PartialImageLenInBytes 的值设置为 0,以表明不存在部分图像或该部分图像的 URI 不匹配。

应用可选择忽略此事件,只需将它传递给默认事件处理程序即可。如果这样做,系统将始终下载可用固件映像的完整版本。

kEvent_Finished

软件更新过程已完成。

在软件更新检查完成(无论是否有错误)时生成。如果尝试因失败而完成,此事件中包含的参数会提供失败原因。

kEvent_PrepareImageStorage

准备存储新映像。

请求应用执行为下载新固件映像准备本地存储空间所需的所有步骤。例如,应用程序可以使用该数据来清除 Flash 页面。

只有在下载新的固件映像时,系统才会生成 PrepareImageStorage 事件。恢复先前中断的下载时,系统不会生成 PrepareImageStorage。

应用必须通过调用 PrepareImageStorageComplete() 方法来发出准备操作已完成信号。它可以在事件回调本身中执行此操作,也可以稍后执行此操作。如果从 Weave 任务以外的任务调用,调用方必须持有 Weave 堆栈锁。

应用程序可以选择忽略 PrepareImageStorage 事件,只需将该事件传递给默认事件处理程序即可。如果下载完毕,系统会自动进入映像下载状态。

为了支持恢复中断的下载,应用应保留图片 URI(作为事件参数提供),并在处理后续 FetchPartialImageInfo 事件时使用它。

kEvent_PrepareQuery

准备 ImageQuery 消息。

在触发软件更新检查时生成。让应用程序有机会向 SofwareUpdate:ImageQuery 消息提供产品相关信息。

kEvent_PrepareQuery_Metadata

为 ImageQuery 请求准备元数据。

可让应用程序根据需要将其他元数据附加到 SofwareUpdate:ImageQuery 消息。在实现准备从应用中获取元数据时生成。

kEvent_QueryPrepareFailed

准备 ImageQuery 请求时出错。

当实现在准备发送软件更新查询时遇到错误时生成。

kEvent_QuerySent

ImageQuery 请求已发送。

用于指示已发送 SofwareUpdate:ImageQuery 消息的信息性事件。

kEvent_ReadyToInstall

映像已可安装。

用于指示映像可以安装的信息性事件。在图片通过完整性检查后生成。

kEvent_ResetPartialImageInfo

重置部分下载的图片的状态。

请求应用忘记与下载的图片相关联的持久状态。每当下载的图片未通过完整性检查时,系统都会生成 ResetPartialImageInfo 事件。ResetPartialImageInfo 事件处理完毕后,后续 FetchPartialImageInfo 事件应指明没有部分可用图像。

请注意,处理 ResetPartialImageInfo 事件时,应用不需要清除图片数据本身,只需清除与图片相关的状态信息(即 URI 和部分图片长度)。

如果应用不支持图像下载恢复功能,则可忽略此事件,方法是将其传递给默认事件处理程序。

kEvent_SoftwareUpdateAvailable

有软件更新。

在收到 SofwareUpdate:ImageQueryResponse 以响应包含可用更新信息的查询时,将生成该链接。

kEvent_StartImageDownload

已开始下载图片。

用于发送图片下载交易开始信号的信息事件。

kEvent_StartInstallImage

开始安装映像。

向应用请求安装已下载固件映像的过程。

kEvent_StoreImageBlock

存储图片数据块。

每当从文件下载服务器收到数据块时生成。此事件中包含的参数会提供数据和数据长度。

要支持恢复中断的下载,应用应持续计算所存储的图片字节总数,并在处理后续 FetchPartialImageInfo 事件时使用此值。

RetryPolicyCallback

void(* RetryPolicyCallback)(void *aAppState, RetryParam &aRetryParam, uint32_t &aOutIntervalMsec)

 State

好友课程

内部::GenericPlatformManagerImpl

friend class Internal::GenericPlatformManagerImpl

公共函数

中止

WEAVE_ERROR Abort(
  void
)

CheckNow

WEAVE_ERROR CheckNow(
  void
)

GetState

State GetState(
  void
)

ImageInstallComplete

WEAVE_ERROR ImageInstallComplete(
  WEAVE_ERROR aError
)

IsInProgress

bool IsInProgress(
  void
)

PrepareImageStorageComplete

WEAVE_ERROR PrepareImageStorageComplete(
  WEAVE_ERROR aError
)

SetEventCallback

WEAVE_ERROR SetEventCallback(
  void *const aAppState,
  const EventCallback aEventCallback
)

SetQueryIntervalWindow

WEAVE_ERROR SetQueryIntervalWindow(
  uint32_t aMinWaitTimeMs,
  uint32_t aMaxWaitTimeMs
)

SetRetryPolicyCallback

void SetRetryPolicyCallback(
  const RetryPolicyCallback aRetryPolicyCallback
)

公共静态函数

DefaultEventHandler

void DefaultEventHandler(
  void *apAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

受保护的函数

SoftwareUpdateManager

 SoftwareUpdateManager()=default

SoftwareUpdateManager

 SoftwareUpdateManager(
  const SoftwareUpdateManager &
)=delete

SoftwareUpdateManager

 SoftwareUpdateManager(
  const SoftwareUpdateManager &&
)=delete

operator=

SoftwareUpdateManager & operator=(
  const SoftwareUpdateManager &
)=delete

~SoftwareUpdateManager

 ~SoftwareUpdateManager()=default