1 /* 2 * Copyright (c) 2018-2023 O.S.Systems 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @brief UpdateHub Firmware Over-the-Air for Zephyr Project. 9 * @defgroup updatehub UpdateHub Firmware Over-the-Air 10 * @ingroup third_party 11 * @{ 12 */ 13 14 #ifndef ZEPHYR_INCLUDE_MGMT_UPDATEHUB_H_ 15 #define ZEPHYR_INCLUDE_MGMT_UPDATEHUB_H_ 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 /** 22 * @brief Responses messages from UpdateHub. 23 * 24 * @details These messages are used to inform the server and the 25 * user about the process status of the UpdateHub and also 26 * used to standardize the errors that may occur. 27 * 28 */ 29 enum updatehub_response { 30 UPDATEHUB_NETWORKING_ERROR = 0, 31 UPDATEHUB_INCOMPATIBLE_HARDWARE, 32 UPDATEHUB_UNCONFIRMED_IMAGE, 33 UPDATEHUB_METADATA_ERROR, 34 UPDATEHUB_DOWNLOAD_ERROR, 35 UPDATEHUB_INSTALL_ERROR, 36 UPDATEHUB_FLASH_INIT_ERROR, 37 UPDATEHUB_OK, 38 UPDATEHUB_HAS_UPDATE, 39 UPDATEHUB_NO_UPDATE, 40 }; 41 42 /** 43 * @brief Runs UpdateHub probe and UpdateHub update automatically. 44 * 45 * @details The updatehub_autohandler handles the whole process 46 * in pre-determined time intervals. 47 */ 48 __syscall void updatehub_autohandler(void); 49 50 /** 51 * @brief The UpdateHub probe verify if there is some update to be performed. 52 * 53 * @return UPDATEHUB_HAS_UPDATE has an update available. 54 * @return UPDATEHUB_NO_UPDATE no update available. 55 * @return UPDATEHUB_NETWORKING_ERROR fail to connect to the UpdateHub server. 56 * @return UPDATEHUB_INCOMPATIBLE_HARDWARE if Incompatible hardware. 57 * @return UPDATEHUB_METADATA_ERROR fail to parse or to encode the metadata. 58 */ 59 __syscall enum updatehub_response updatehub_probe(void); 60 61 /** 62 * @brief Apply the update package. 63 * 64 * @details Must be used after the UpdateHub probe, if you have updates to 65 * be made, will perform the installation of the new image and the hardware 66 * will rebooting. 67 * 68 * @return Return UPDATEHUB_OK if success 69 * @return UPDATEHUB_NETWORKING_ERROR if fail to connect to the server. 70 * @return UPDATEHUB_DOWNLOAD_ERROR fail while downloading the update package. 71 * @return UPDATEHUB_INSTALL_ERROR fail while installing the update package. 72 * @return UPDATEHUB_FLASH_INIT_ERROR fail to initialize the flash. 73 */ 74 __syscall enum updatehub_response updatehub_update(void); 75 76 /** 77 * @brief Confirm that image is running as expected. 78 * 79 * @details Must be used before the UpdateHub probe. It should be one of first 80 * actions after reboot. 81 * 82 * @return Return 0 if success otherwise a negative 'errno' value. 83 */ 84 __syscall int updatehub_confirm(void); 85 86 /** 87 * @brief Request system to reboot. 88 * 89 * @return Return 0 if success otherwise a negative 'errno' value. 90 */ 91 __syscall int updatehub_reboot(void); 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 /** 98 * @} 99 */ 100 101 #include <syscalls/updatehub.h> 102 #endif /* ZEPHYR_INCLUDE_MGMT_UPDATEHUB_H_ */ 103