zephyr/include/zephyr/retention/bootmode.h

79 lines
1.5 KiB
C

/*
* Copyright (c) 2023 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Public API for boot mode interface
*/
#ifndef ZEPHYR_INCLUDE_RETENTION_BOOTMODE_
#define ZEPHYR_INCLUDE_RETENTION_BOOTMODE_
#include <stdint.h>
#include <stddef.h>
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/types.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Boot mode interface
* @defgroup boot_mode_interface Boot mode interface
* @ingroup retention_api
* @{
*/
enum BOOT_MODE_TYPES {
/** Default (normal) boot, to user application */
BOOT_MODE_TYPE_NORMAL = 0x00,
/** Bootloader boot mode (e.g. serial recovery for MCUboot) */
BOOT_MODE_TYPE_BOOTLOADER,
};
/**
* @brief Checks if the boot mode of the device is set to a specific value.
*
* @param boot_mode Expected boot mode to check.
*
* @retval 1 If successful and boot mode matches.
* @retval 0 If boot mode does not match.
* @retval -errno Error code code.
*/
int bootmode_check(uint8_t boot_mode);
/**
* @brief Sets boot mode of device.
*
* @param boot_mode Boot mode value to set.
*
* @retval 0 If successful.
* @retval -errno Error code code.
*/
int bootmode_set(uint8_t boot_mode);
/**
* @brief Clear boot mode value (sets to 0) - which corresponds to
* #BOOT_MODE_TYPE_NORMAL.
*
* @retval 0 If successful.
* @retval -errno Error code code.
*/
int bootmode_clear(void);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_RETENTION_BOOTMODE_ */