1 /* 2 * Copyright (c) 2020 Linumiz 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @brief Hawkbit Firmware Over-the-Air for Zephyr Project. 9 * @defgroup hawkbit Hawkbit Firmware Over-the-Air 10 * @ingroup lib 11 * @{ 12 */ 13 #ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_H_ 14 #define ZEPHYR_INCLUDE_MGMT_HAWKBIT_H_ 15 16 #define HAWKBIT_JSON_URL "/default/controller/v1" 17 18 /** 19 * @brief Response message from Hawkbit. 20 * 21 * @details These messages are used to inform the server and the 22 * user about the process status of the Hawkbit and also 23 * used to standardize the errors that may occur. 24 * 25 */ 26 enum hawkbit_response { 27 HAWKBIT_NETWORKING_ERROR, 28 HAWKBIT_UNCONFIRMED_IMAGE, 29 HAWKBIT_METADATA_ERROR, 30 HAWKBIT_DOWNLOAD_ERROR, 31 HAWKBIT_OK, 32 HAWKBIT_UPDATE_INSTALLED, 33 HAWKBIT_NO_UPDATE, 34 HAWKBIT_CANCEL_UPDATE, 35 HAWKBIT_PROBE_IN_PROGRESS, 36 }; 37 38 /** 39 * @brief Init the flash partition 40 * 41 * @return 0 on success, negative on error. 42 */ 43 int hawkbit_init(void); 44 45 /** 46 * @brief Runs Hawkbit probe and Hawkbit update automatically 47 * 48 * @details The hawkbit_autohandler handles the whole process 49 * in pre-determined time intervals. 50 */ 51 void hawkbit_autohandler(void); 52 53 /** 54 * @brief The Hawkbit probe verify if there is some update to be performed. 55 * 56 * @return HAWKBIT_UPDATE_INSTALLED has an update available. 57 * @return HAWKBIT_NO_UPDATE no update available. 58 * @return HAWKBIT_NETWORKING_ERROR fail to connect to the Hawkbit server. 59 * @return HAWKBIT_METADATA_ERROR fail to parse or to encode the metadata. 60 * @return HAWKBIT_OK if success. 61 * @return HAWKBIT_DOWNLOAD_ERROR faile while downloading the update package. 62 */ 63 enum hawkbit_response hawkbit_probe(void); 64 65 /** 66 * @} 67 */ 68 69 #endif /* _HAWKBIT_H_ */ 70