Line data Source code
1 1 : /* 2 : * Copyright (c) 2023 Nordic Semiconductor ASA 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : /** 8 : * @file 9 : * @brief Public API for boot mode interface 10 : */ 11 : 12 : #ifndef ZEPHYR_INCLUDE_RETENTION_BOOTMODE_ 13 : #define ZEPHYR_INCLUDE_RETENTION_BOOTMODE_ 14 : 15 : #include <stdint.h> 16 : #include <stddef.h> 17 : #include <zephyr/kernel.h> 18 : #include <zephyr/device.h> 19 : #include <zephyr/types.h> 20 : 21 : #ifdef __cplusplus 22 : extern "C" { 23 : #endif 24 : 25 : /** 26 : * @brief Boot mode interface 27 : * @defgroup boot_mode_interface Boot mode interface 28 : * @ingroup retention_api 29 : * @{ 30 : */ 31 : 32 0 : enum BOOT_MODE_TYPES { 33 : /** Default (normal) boot, to user application */ 34 : BOOT_MODE_TYPE_NORMAL = 0x00, 35 : 36 : /** Bootloader boot mode (e.g. serial recovery for MCUboot) */ 37 : BOOT_MODE_TYPE_BOOTLOADER, 38 : }; 39 : 40 : /** 41 : * @brief Checks if the boot mode of the device is set to a specific value. 42 : * 43 : * @param boot_mode Expected boot mode to check. 44 : * 45 : * @retval 1 If successful and boot mode matches. 46 : * @retval 0 If boot mode does not match. 47 : * @retval -errno Error code code. 48 : */ 49 1 : int bootmode_check(uint8_t boot_mode); 50 : 51 : /** 52 : * @brief Sets boot mode of device. 53 : * 54 : * @param boot_mode Boot mode value to set. 55 : * 56 : * @retval 0 If successful. 57 : * @retval -errno Error code code. 58 : */ 59 1 : int bootmode_set(uint8_t boot_mode); 60 : 61 : /** 62 : * @brief Clear boot mode value (sets to 0) - which corresponds to 63 : * #BOOT_MODE_TYPE_NORMAL. 64 : * 65 : * @retval 0 If successful. 66 : * @retval -errno Error code code. 67 : */ 68 1 : int bootmode_clear(void); 69 : 70 : /** 71 : * @} 72 : */ 73 : 74 : #ifdef __cplusplus 75 : } 76 : #endif 77 : 78 : #endif /* ZEPHYR_INCLUDE_RETENTION_BOOTMODE_ */