mcu_hi3321_watch/include/middleware/utils/partition.h
2025-05-26 20:15:20 +08:00

115 lines
4.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
* Description: Provides partition manage api. \n
* Author: @CompanyNameTag \n
* History: \n
* 2022-09-01, Create file. \n
*/
#ifndef PARTITION_H
#define PARTITION_H
#include <stdint.h>
#include "errcode.h"
#include "partition_resource_id.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */
/**
* @defgroup middleware_utils_partition_api Partition
* @ingroup middleware_utils
* @{
*/
/**
* @if Eng
* @brief Partition storage location type.
* @else
* @brief 分区位置类型
* @endif
*/
typedef enum partition_type {
PARTITION_BY_ADDRESS, /*!< @if Eng Partition stored on an memory address.
@else 分区存储在内存地址上 @endif */
PARTITION_BY_PATH, /*!< @if Eng Partition stored on filesystem.
@else 分区存储在文件系统上 @endif */
PARTITION_TYPE_COUNT /*!< @if Eng type count, not a valid type.
@else 类型数量,不作为类型使用 @endif */
} partition_type_t;
/**
* @if Eng
* @brief Partition information.
* @else
* @brief 分区信息结构
* @endif
*/
typedef struct partition_information {
partition_type_t type; /*!< @if Eng Partition storage location type.
@else 分区存储位置类型 @endif */
union {
struct {
uint32_t addr; /*!< @if Eng Address of partition if partition stored on an memory address.
@else 如果分区存储在内存地址上addr存储分区的起始地址 @endif */
uint32_t size; /*!< @if Eng Byte length of partition if partition stored on flash or ram.
@else 如果分区存储在内存地址上size存储分区的字节长度 @endif */
} addr_info; /*!< @if Eng The address info of the partition.
@else 分区的地址信息 @endif */
char *file_path; /*!< @if Eng File path if image partition on filesystem.
@else 如果分区存在文件系统上file_path标识存储分区所在路径 @endif */
} part_info; /*!< @if Eng the union of partition information(address or file path).
@else 保存分区信息(地址或文件路径)的共同体 @endif */
} partition_information_t;
/**
* @if Eng
* @brief Initialize the partition management module.
* @retval ERRCODE_SUCC Success.
* @retval Others ERRCODE_FAIL or other error num.
* @else
* @brief 分区模块初始化
* @retval ERRCODE_SUCC 成功返回#ERRCODE_SUCC
* @retval Others 失败返回#ERRCODE_FAIL或其他返回值
* @endif
*/
errcode_t uapi_partition_init(void);
/**
* @if Eng
* @brief Obtaining Partition Information.
* @par Description: Obtains information about a partition specified by partition_id.
* The partition information includes the start address and byte length of the partition.
* @param [in] partition_id Id of specified partition. see @ref partition_ids_t
* @param [out] info Used to save the information when obtained successfully. see @ref partition_information_t
* @retval ERRCODE_SUCC Success
* @retval Others ERRCODE_FAIL or other error num.
* @par Depends:
* @li partition_resource_id.h
* @else
* @brief 获取分区信息
* @par 说明: 获取partition_id指定的分区信息
* @param [in] partition_id 指定的分区的ID。 参考 @ref partition_ids_t
* @param [out] info 用来保存获取到的分区信息。 参考 @ref partition_information_t
* @retval ERRCODE_SUCC 成功返回#ERRCODE_SUCC
* @retval Others 失败返回#ERRCODE_FAIL或其他值
* @par 依赖:
* @li partition_resource_id.h
* @endif
*/
errcode_t uapi_partition_get_info(partition_ids_t partition_id, partition_information_t *info);
/**
* @}
*/
#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cplusplus */
#endif /* __cplusplus */
#endif