1 /* 2 * Copyright (c) 2024 Vogl Electronic GmbH 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @file 9 * @brief hawkBit autohandler header file 10 */ 11 12 /** 13 * @brief hawkBit autohandler API. 14 * @defgroup hawkbit_autohandler hawkBit autohandler API 15 * @ingroup hawkbit 16 * @{ 17 */ 18 19 #ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ 20 #define ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ 21 22 #include <zephyr/mgmt/hawkbit/hawkbit.h> 23 24 /** 25 * @brief Runs hawkBit probe and hawkBit update automatically 26 * 27 * @details The hawkbit_autohandler handles the whole process 28 * in pre-determined time intervals. 29 * 30 * @param auto_reschedule If true, the handler will reschedule itself 31 */ 32 void hawkbit_autohandler(bool auto_reschedule); 33 34 /** 35 * @brief Wait for the autohandler to finish. 36 * 37 * @param events Set of desired events on which to wait. Set to ::UINT32_MAX to wait for the 38 * autohandler to finish one run, or BIT() together with a value from 39 * ::hawkbit_response to wait for a specific event. 40 * @param timeout Waiting period for the desired set of events or one of the 41 * special values ::K_NO_WAIT and ::K_FOREVER. 42 * 43 * @return A value from ::hawkbit_response. 44 */ 45 enum hawkbit_response hawkbit_autohandler_wait(uint32_t events, k_timeout_t timeout); 46 47 /** 48 * @brief Cancel the run of the hawkBit autohandler. 49 * 50 * @return a value from k_work_cancel_delayable(). 51 */ 52 int hawkbit_autohandler_cancel(void); 53 54 /** 55 * @brief Set the delay for the next run of the autohandler. 56 * 57 * @details This function will only delay the next run of the autohandler. The delay will not 58 * persist after the autohandler runs. 59 * 60 * @param timeout The delay to set. 61 * @param if_bigger If true, the delay will be set only if the new delay is bigger than the current 62 * one. 63 * 64 * @retval 0 if @a if_bigger was true and the current delay was bigger than the new one. 65 * @retval otherwise, a value from k_work_reschedule(). 66 */ 67 int hawkbit_autohandler_set_delay(k_timeout_t timeout, bool if_bigger); 68 69 /** 70 * @} 71 */ 72 73 #endif /* ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ */ 74