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::重試 Param

聯集

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

公開類型

動作類型

 ActionType

有可用的軟體更新時,應用程式可以在 SoftwareUpdateAvailable API 事件回呼中,選擇下列其中一個動作。

預設動作將設為 kAction_Now。

屬性
kAction_ApplicationManaged

允許應用程式管理軟體更新的其他階段,例如下載、圖片完整性驗證和安裝。

軟體更新管理員狀態電腦會移至 ApplicationManaged 狀態。排定的軟體更新檢查 (如果已啟用) 將會暫停,直到應用程式呼叫 Abort 或 ImageInstallComplete API 為止。

kAction_DownloadLater

開始下載時暫停下載。

排定的軟體更新檢查 (如已啟用) 將會暫停。狀態機器會維持在「下載」狀態。準備就緒後,應用程式即可呼叫繼續下載 API 以繼續下載作業,或是呼叫 Abort 取消。

kAction_DownloadNow

立即開始下載。

不久之後,系統就會產生 kEvent_FetchpartImageInfo API 事件回呼。

kAction_Ignore

完全忽略下載內容。

選取這個選項後,系統會產生 kEvent_Finished API 事件回呼,並顯示 WEAVE_DEVICE_ERROR_SOFTWARE_UPDATE_CANCELLED 錯誤,且不會叫用重試邏輯。

事件回呼

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

EventType

 EventType

SoftwareUpdateManager 物件產生的 API 事件。

屬性
kEvent_ComputeImageIntegrity

計算圖片完整性檢查值。

要求應用程式針對下載的圖片計算完整性檢查值。下載完成後會產生。

kEvent_DefaultCheck

查看預設的事件處理行為。

用於驗證應用程式中正確的預設事件處理方式。

應用程式「不得」處理此事件。

kEvent_FetchPartialImageInfo

針對部分下載的圖片擷取持續狀態資訊。

讓應用程式揭露先前下載的部分圖片資訊,讓該程式從上次停止時開始繼續下載。可用軟體更新的 URI 會以輸入參數的形式提供,讓應用程式用來比較下載的圖片與部分圖片是否相同。

應用程式預期會在 PARTImageLenInBytes 輸出參數中傳回部分圖片的長度。應用程式可以將 部分 ImageLenInBytes 的值設為 0,表示沒有任何部分圖片,或部分圖片的 URI 不符。

應用程式可能選擇忽略此事件,方法是將其傳送至預設的事件處理常式。完成以上步驟後,系統一律會下載所有可用的韌體映像檔。

kEvent_Finished

軟體更新程序已完成。

於軟體更新檢查完成或沒有發生錯誤時產生。如果事件嘗試失敗,此事件內含的參數可提供失敗的原因。

kEvent_PrepareImageStorage

準備儲存新圖片。

要求應用程式執行必要的步驟,為本機儲存空間下載新韌體映像檔做好準備。例如,應用程式可以透過這項功能清除 Flash 網頁。

只有當使用者下載新的韌體映像檔時,才會產生 PrepareImageStorage 事件。繼續之前中斷的下載作業時,不會產生 PrepareImageStorage。

應用程式必須呼叫 PrepareImageStorageComplete() 方法,告知準備作業已完成。方法是在事件回呼本身或稍後進行。如果呼叫方式不是透過 Weave 工作,則呼叫者必須按住 Weave 堆疊鎖定。

應用程式可以選擇將 PrepareImageStorage 事件傳送至預設事件處理常式,以忽略該事件。完成此步驟後,系統會自動繼續進行圖片下載狀態。

為了支援繼續下載作業,應用程式應保留圖片 URI (以事件參數形式提供),並在處理後續的 FetchpartImageInfo 事件時使用。

kEvent_PrepareQuery

準備 ImageQuery 訊息。

系統會在觸發軟體更新檢查時產生。讓應用程式有機會將產品相關資訊提供給 SofwareUpdate:ImageQuery 訊息。

kEvent_PrepareQuery_Metadata

準備 ImageQuery 要求的中繼資料。

讓應用程式視需要在 SofwareUpdate:ImageQuery 訊息中附加額外的中繼資料。在實作準備從應用程式取得中繼資料資料時產生。

kEvent_QueryPrepareFailed

準備 ImageQuery 要求時發生錯誤。

於實作作業發生錯誤,準備傳送軟體更新查詢時會產生。

kEvent_QuerySent

已傳送 ImageQuery 要求。

發出資訊,指出 SofwareUpdate:ImageQuery 訊息已傳送。

kEvent_ReadyToInstall

現在可以安裝圖片了。

這個資訊事件代表圖片已可安裝。在圖片通過完整性檢查後產生。

kEvent_ResetPartialImageInfo

重設已下載部分圖片的狀態。

要求應用程式清除與下載圖片相關聯的持續狀態。每當下載的圖片無法通過完整性檢查時,就會產生 resetpartImageInfo 事件。完成部分 重設部分圖片資訊事件後,後續的 Fetch 部分圖片資訊事件應該會指出沒有可用的部分圖片。

請注意,在處理 resetPartialImageInfo 事件時,應用程式「不必」清除圖片資料本身,只清除與圖片相關的狀態資訊 (即 URI 和部分圖片長度)。

如果應用程式不支援恢復映像檔下載作業,可以透過將事件傳送至預設事件處理常式,藉此忽略這個事件。

kEvent_SoftwareUpdateAvailable

有可用的軟體更新。

收到包含 SofwareUpdate:ImageQueryResponse 的回應時,就會產生包含可用更新資訊的查詢。

kEvent_StartImageDownload

已開始下載圖片。

用來告知圖片下載交易開始的資訊。

kEvent_StartInstallImage

開始安裝映像檔。

要求讓應用程式接受安裝的韌體映像檔。

kEvent_StoreImageBlock

儲存圖片區塊區塊。

從檔案下載伺服器收到資料區塊時產生。此事件包含的參數提供資料和資料的長度。

為了支援繼續下載作業,應用程式必須持續保留儲存的圖片位元組總數,並在處理後續的 FetchpartImageInfo 事件時使用這個值。

重試政策呼叫

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

狀態

 State

好友課程

內部::一般平台管理員

friend class Internal::GenericPlatformManagerImpl

公開函式

取消

WEAVE_ERROR Abort(
  void
)

立即檢查

WEAVE_ERROR CheckNow(
  void
)

GetState

State GetState(
  void
)

映像檔安裝完成

WEAVE_ERROR ImageInstallComplete(
  WEAVE_ERROR aError
)

進行中

bool IsInProgress(
  void
)

準備圖片儲存完成

WEAVE_ERROR PrepareImageStorageComplete(
  WEAVE_ERROR aError
)

設定事件回呼

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

SetQueryIntervalWindow

WEAVE_ERROR SetQueryIntervalWindow(
  uint32_t aMinWaitTimeMs,
  uint32_t aMaxWaitTimeMs
)

設定重試政策呼叫

void SetRetryPolicyCallback(
  const RetryPolicyCallback aRetryPolicyCallback
)

公開的靜態函式

預設事件處理常式

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

受保護的函式

軟體更新管理員

 SoftwareUpdateManager()=default

軟體更新管理員

 SoftwareUpdateManager(
  const SoftwareUpdateManager &
)=delete

軟體更新管理員

 SoftwareUpdateManager(
  const SoftwareUpdateManager &&
)=delete

運算子=

SoftwareUpdateManager & operator=(
  const SoftwareUpdateManager &
)=delete

~SoftwareUpdateManager

 ~SoftwareUpdateManager()=default