Simulated product dispenser

Dependencies:   HTS221

Fork of mbed-cloud-workshop-connect-HTS221 by Jim Carver

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 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025 
00026 #include <stdint.h>
00027 #include "update-client-common/arm_uc_common.h"
00028 
00029 /**
00030  * States in the Update Hub.
00031  */
00032 typedef enum {
00033     ARM_UC_HUB_STATE_UNINITIALIZED,
00034     ARM_UC_HUB_STATE_INITIALIZING,
00035     ARM_UC_HUB_STATE_INITIALIZED,
00036     ARM_UC_HUB_STATE_GET_ACTIVE_FIRMWARE_DETAILS,
00037     ARM_UC_HUB_STATE_REPORT_ACTIVE_HASH,
00038     ARM_UC_HUB_STATE_REPORT_ACTIVE_VERSION,
00039     ARM_UC_HUB_STATE_GET_INSTALLER_DETAILS,
00040     ARM_UC_HUB_STATE_REPORT_INSTALLER_DETAILS,
00041     ARM_UC_HUB_STATE_IDLE,
00042     ARM_UC_HUB_STATE_NOTIFIED,
00043     ARM_UC_HUB_STATE_CERT_STORED,
00044     ARM_UC_HUB_STATE_MANIFEST_FETCHED,
00045     ARM_UC_HUB_STATE_MANIFEST_COMPLETE,
00046     ARM_UC_HUB_STATE_CHECK_VERSION,
00047     ARM_UC_HUB_STATE_PREPARE_FIRMWARE_SETUP,
00048     ARM_UC_HUB_STATE_REQUEST_DOWNLOAD_AUTHORIZATION,
00049     ARM_UC_HUB_STATE_WAIT_FOR_DOWNLOAD_AUTHORIZATION,
00050     ARM_UC_HUB_STATE_DOWNLOAD_AUTHORIZED,
00051     ARM_UC_HUB_STATE_SETUP_FIRMWARE,
00052     ARM_UC_HUB_STATE_FETCH_FIRST_FRAGMENT,
00053     ARM_UC_HUB_STATE_STORE_AND_DOWNLOAD,
00054     ARM_UC_HUB_STATE_WAIT_FOR_STORAGE,
00055     ARM_UC_HUB_STATE_WAIT_FOR_NETWORK,
00056     ARM_UC_HUB_STATE_STORE_LAST_FRAGMENT,
00057     ARM_UC_HUB_STATE_FINALIZE_STORAGE,
00058     ARM_UC_HUB_STATE_STORAGE_FINALIZED,
00059     ARM_UC_HUB_STATE_WAIT_FOR_INSTALL_AUTHORIZATION,
00060     ARM_UC_HUB_STATE_INSTALL_AUTHORIZED,
00061     ARM_UC_HUB_STATE_ACTIVATE_FIRMWARE,
00062     ARM_UC_HUB_STATE_REBOOT,
00063     ARM_UC_HUB_STATE_ERROR_FIRMWARE_MANAGER,
00064     ARM_UC_HUB_STATE_ERROR_MANIFEST_MANAGER,
00065     ARM_UC_HUB_STATE_ERROR_SOURCE_MANAGER,
00066     ARM_UC_HUB_STATE_ERROR_CONTROL_CENTER,
00067     ARM_UC_HUB_STATE_WAIT_FOR_ERROR_ACK,
00068 } arm_uc_hub_state_t;
00069 
00070 /**
00071  * @brief Read internal state.
00072  * @return State
00073  */
00074 arm_uc_hub_state_t ARM_UC_HUB_getState(void);
00075 
00076 /**
00077  * @brief Set internal state.
00078  * @details Setting the state will perform actions related to that state.
00079  *
00080  * @param state New state.
00081  */
00082 void ARM_UC_HUB_setState(arm_uc_hub_state_t state);
00083 
00084 /**
00085  * @brief Set callback function for when the Update Client is initialized.
00086  *
00087  * @param callback Function pointer.
00088  */
00089 void ARM_UC_HUB_setInitializationCallback(void (*callback)(int32_t));
00090 
00091 /**
00092  * @brief Return the active firmware details or NULL if they're not yet available.
00093  */
00094 arm_uc_firmware_details_t* ARM_UC_HUB_getActiveFirmwareDetails(void);
00095 
00096 #ifdef __cplusplus
00097 }
00098 #endif
00099 
00100 #endif // ARM_UC_HUB_STATE_MACHINE_H