Simple interface for Mbed Cloud Client

Dependents:  

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers update_client_hub_state_machine.h Source File

update_client_hub_state_machine.h

00001 // ----------------------------------------------------------------------------
00002 // Copyright 2016-2017 ARM Ltd.
00003 //
00004 // SPDX-License-Identifier: Apache-2.0
00005 //
00006 // Licensed under the Apache License, Version 2.0 (the "License");
00007 // you may not use this file except in compliance with the License.
00008 // You may obtain a copy of the License at
00009 //
00010 //     http://www.apache.org/licenses/LICENSE-2.0
00011 //
00012 // Unless required by applicable law or agreed to in writing, software
00013 // distributed under the License is distributed on an "AS IS" BASIS,
00014 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015 // See the License for the specific language governing permissions and
00016 // limitations under the License.
00017 // ----------------------------------------------------------------------------
00018 
00019 #ifndef ARM_UC_HUB_STATE_MACHINE_H
00020 #define ARM_UC_HUB_STATE_MACHINE_H
00021 
00022 #include <stdint.h>
00023 
00024 
00025 /**
00026  * States in the Update Hub.
00027  */
00028 typedef enum {
00029     ARM_UC_HUB_STATE_UNINITIALIZED,
00030     ARM_UC_HUB_STATE_INITIALIZED,
00031     ARM_UC_HUB_STATE_GET_ACTIVE_FIRMWARE_DETAILS,
00032     ARM_UC_HUB_STATE_REPORT_ACTIVE_HASH,
00033     ARM_UC_HUB_STATE_REPORT_ACTIVE_VERSION,
00034     ARM_UC_HUB_STATE_GET_INSTALLER_DETAILS,
00035     ARM_UC_HUB_STATE_REPORT_INSTALLER_DETAILS,
00036     ARM_UC_HUB_STATE_CHECK_OEM_MODE_RESET,
00037     ARM_UC_HUB_STATE_GET_STORED_FIRMWARE_DETAILS,
00038     ARM_UC_HUB_STATE_STORED_FIRMWARE_DETAILS_OK,
00039     ARM_UC_HUB_STATE_STORED_FIRMWARE_DETAILS_ERROR,
00040     ARM_UC_HUB_STATE_IDLE,
00041     ARM_UC_HUB_STATE_NOTIFIED,
00042     ARM_UC_HUB_STATE_CERT_STORED,
00043     ARM_UC_HUB_STATE_MANIFEST_FETCHED,
00044     ARM_UC_HUB_STATE_MANIFEST_COMPLETE,
00045     ARM_UC_HUB_STATE_CHECK_VERSION,
00046     ARM_UC_HUB_STATE_PREPARE_FIRMWARE_SETUP,
00047     ARM_UC_HUB_STATE_REQUEST_DOWNLOAD_AUTHORIZATION,
00048     ARM_UC_HUB_STATE_WAIT_FOR_DOWNLOAD_AUTHORIZATION,
00049     ARM_UC_HUB_STATE_DOWNLOAD_AUTHORIZED,
00050     ARM_UC_HUB_STATE_SETUP_FIRMWARE,
00051     ARM_UC_HUB_STATE_FETCH_FIRST_FRAGMENT,
00052     ARM_UC_HUB_STATE_STORE_AND_DOWNLOAD,
00053     ARM_UC_HUB_STATE_WAIT_FOR_STORAGE,
00054     ARM_UC_HUB_STATE_WAIT_FOR_NETWORK,
00055     ARM_UC_HUB_STATE_STORE_LAST_FRAGMENT,
00056     ARM_UC_HUB_STATE_FINALIZE_STORAGE,
00057     ARM_UC_HUB_STATE_STORAGE_FINALIZED,
00058     ARM_UC_HUB_STATE_WAIT_FOR_INSTALL_AUTHORIZATION,
00059     ARM_UC_HUB_STATE_INSTALL_AUTHORIZED,
00060     ARM_UC_HUB_STATE_ACTIVATE_FIRMWARE,
00061     ARM_UC_HUB_STATE_REBOOT,
00062     ARM_UC_HUB_STATE_ERROR_FIRMWARE_MANAGER,
00063     ARM_UC_HUB_STATE_ERROR_MANIFEST_MANAGER,
00064     ARM_UC_HUB_STATE_ERROR_SOURCE_MANAGER,
00065     ARM_UC_HUB_STATE_ERROR_CONTROL_CENTER,
00066     ARM_UC_HUB_STATE_ERROR_UNKNOWN,
00067 } arm_uc_hub_state_t;
00068 
00069 /**
00070  * @brief Read internal state.
00071  * @return State
00072  */
00073 arm_uc_hub_state_t ARM_UC_HUB_getState(void);
00074 
00075 /**
00076  * @brief Set internal state.
00077  * @details Setting the state will perform actions related to that state.
00078  *
00079  * @param state New state.
00080  */
00081 void ARM_UC_HUB_setState(arm_uc_hub_state_t state);
00082 
00083 /**
00084  * @brief Set callback function for when the Update Client is initialized.
00085  *
00086  * @param callback Function pointer.
00087  */
00088 void ARM_UC_HUB_setInitializationCallback(void (*callback)(int32_t));
00089 
00090 #endif // ARM_UC_HUB_STATE_MACHINE_H