准备驱动移植适配Rust

This commit is contained in:
冯佳
2026-01-29 15:08:30 +08:00
parent e879b18602
commit 1bdeca55ea
68 changed files with 4371 additions and 4392 deletions

View File

@ -2,7 +2,7 @@
/**
******************************************************************************
* @file : bsp_config.c
* @brief : Board support package configuration file source
* @brief : 板级支持包配置文件源文件
******************************************************************************
*/
/* USER CODE END Header */
@ -14,7 +14,7 @@
#include <ctype.h>
/**
* @brief Configuration storage entry
* @brief 配置存储条目
*/
typedef struct bsp_config_storage_entry {
char section[BSP_CONFIG_MAX_SECTION_NAME_LENGTH];
@ -24,7 +24,7 @@ typedef struct bsp_config_storage_entry {
} bsp_config_storage_entry_t;
/**
* @brief Configuration storage
* @brief 配置存储
*/
typedef struct {
bsp_config_storage_entry_t* entries;
@ -33,7 +33,7 @@ typedef struct {
} bsp_config_storage_t;
/**
* @brief Configuration storage instance
* @brief 配置存储实例
*/
static bsp_config_storage_t bsp_config_storage = {
.entries = NULL,
@ -42,9 +42,9 @@ static bsp_config_storage_t bsp_config_storage = {
};
/**
* @brief Trim whitespace from a string
* @param str: String to trim
* @return Trimmed string
* @brief 去除字符串中的空白字符
* @param str: 要处理的字符串
* @return 处理后的字符串
*/
static char* bsp_config_trim(char* str) {
char* end;
@ -71,10 +71,10 @@ static char* bsp_config_trim(char* str) {
}
/**
* @brief Open configuration file
* @param filename: Configuration file name
* @param parser: Parser context
* @retval HAL status code
* @brief 打开配置文件
* @param filename: 配置文件名称
* @param parser: 解析器上下文
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_file_open(const char* filename, bsp_config_parser_t* parser) {
if (filename == NULL || parser == NULL) {
@ -95,9 +95,9 @@ static hal_ret_t bsp_config_file_open(const char* filename, bsp_config_parser_t*
}
/**
* @brief Close configuration file
* @param parser: Parser context
* @retval HAL status code
* @brief 关闭配置文件
* @param parser: 解析器上下文
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_file_close(bsp_config_parser_t* parser) {
if (parser == NULL || !parser->initialized) {
@ -115,10 +115,10 @@ static hal_ret_t bsp_config_file_close(bsp_config_parser_t* parser) {
}
/**
* @brief Read a configuration entry from file
* @param parser: Parser context
* @param entry: Configuration entry
* @retval HAL status code
* @brief 从文件读取配置条目
* @param parser: 解析器上下文
* @param entry: 配置条目
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_file_read_entry(bsp_config_parser_t* parser, bsp_config_entry_t* entry) {
if (parser == NULL || entry == NULL || !parser->initialized) {
@ -169,10 +169,10 @@ static hal_ret_t bsp_config_file_read_entry(bsp_config_parser_t* parser, bsp_con
}
/**
* @brief Parse integer value
* @param value: String value to parse
* @param result: Pointer to store result
* @retval HAL status code
* @brief 解析整数值
* @param value: 要解析的字符串值
* @param result: 存储结果的指针
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_parse_int(const char* value, int* result) {
if (value == NULL || result == NULL) {
@ -192,10 +192,10 @@ static hal_ret_t bsp_config_parse_int(const char* value, int* result) {
}
/**
* @brief Parse unsigned integer value
* @param value: String value to parse
* @param result: Pointer to store result
* @retval HAL status code
* @brief 解析无符号整数值
* @param value: 要解析的字符串值
* @param result: 存储结果的指针
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_parse_uint(const char* value, uint32_t* result) {
if (value == NULL || result == NULL) {
@ -215,10 +215,10 @@ static hal_ret_t bsp_config_parse_uint(const char* value, uint32_t* result) {
}
/**
* @brief Parse boolean value
* @param value: String value to parse
* @param result: Pointer to store result
* @retval HAL status code
* @brief 解析布尔值
* @param value: 要解析的字符串值
* @param result: 存储结果的指针
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_parse_bool(const char* value, uint8_t* result) {
if (value == NULL || result == NULL) {
@ -241,11 +241,11 @@ static hal_ret_t bsp_config_parse_bool(const char* value, uint8_t* result) {
}
/**
* @brief Parse string value
* @param value: String value to parse
* @param result: Pointer to store result
* @param max_length: Maximum length of result buffer
* @retval HAL status code
* @brief 解析字符串值
* @param value: 要解析的字符串值
* @param result: 存储结果的指针
* @param max_length: 结果缓冲区的最大长度
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_parse_string(const char* value, char* result, size_t max_length) {
if (value == NULL || result == NULL) {
@ -259,11 +259,11 @@ static hal_ret_t bsp_config_parse_string(const char* value, char* result, size_t
}
/**
* @brief Add a configuration entry to storage
* @param section: Section name
* @param key: Key name
* @param value: Value
* @retval HAL status code
* @brief 添加配置条目到存储
* @param section: 节名称
* @param key: 键名称
* @param value:
* @retval HAL 状态码
*/
static hal_ret_t bsp_config_storage_add(const char* section, const char* key, const char* value) {
// Check if entry already exists
@ -309,7 +309,7 @@ static hal_ret_t bsp_config_storage_add(const char* section, const char* key, co
}
/**
* @brief Clear configuration storage
* @brief 清空配置存储
*/
static void bsp_config_storage_clear(void) {
bsp_config_storage_entry_t* entry = bsp_config_storage.entries;
@ -324,8 +324,8 @@ static void bsp_config_storage_clear(void) {
}
/**
* @brief Initialize BSP configuration system
* @retval HAL status code
* @brief 初始化 BSP 配置系统
* @retval HAL 状态码
*/
hal_ret_t bsp_config_init(void) {
if (bsp_config_storage.initialized) {
@ -339,8 +339,8 @@ hal_ret_t bsp_config_init(void) {
}
/**
* @brief Deinitialize BSP configuration system
* @retval HAL status code
* @brief 反初始化 BSP 配置系统
* @retval HAL 状态码
*/
hal_ret_t bsp_config_deinit(void) {
if (!bsp_config_storage.initialized) {
@ -354,9 +354,9 @@ hal_ret_t bsp_config_deinit(void) {
}
/**
* @brief Load BSP configuration from file
* @param filename: Configuration file name
* @retval HAL status code
* @brief 从文件加载 BSP 配置
* @param filename: 配置文件名称
* @retval HAL 状态码
*/
hal_ret_t bsp_config_load(const char* filename) {
if (!bsp_config_storage.initialized) {
@ -395,9 +395,9 @@ hal_ret_t bsp_config_load(const char* filename) {
}
/**
* @brief Save BSP configuration to file
* @param filename: Configuration file name
* @retval HAL status code
* @brief 保存 BSP 配置到文件
* @param filename: 配置文件名称
* @retval HAL 状态码
*/
hal_ret_t bsp_config_save(const char* filename) {
if (!bsp_config_storage.initialized || bsp_config_storage.entry_count == 0) {
@ -432,12 +432,12 @@ hal_ret_t bsp_config_save(const char* filename) {
}
/**
* @brief Get configuration value
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Pointer to store value
* @param max_length: Maximum length of value buffer
* @retval HAL status code
* @brief 获取配置值
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 存储值的指针
* @param max_length: 值缓冲区的最大长度
* @retval HAL 状态码
*/
hal_ret_t bsp_config_get_value(const char* section, const char* key, char* value, size_t max_length) {
if (!bsp_config_storage.initialized || section == NULL || key == NULL || value == NULL) {
@ -458,11 +458,11 @@ hal_ret_t bsp_config_get_value(const char* section, const char* key, char* value
}
/**
* @brief Set configuration value
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Configuration value
* @retval HAL status code
* @brief 设置配置值
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 配置值
* @retval HAL 状态码
*/
hal_ret_t bsp_config_set_value(const char* section, const char* key, const char* value) {
if (!bsp_config_storage.initialized || section == NULL || key == NULL || value == NULL) {
@ -473,11 +473,11 @@ hal_ret_t bsp_config_set_value(const char* section, const char* key, const char*
}
/**
* @brief Get configuration value as integer
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Pointer to store integer value
* @retval HAL status code
* @brief 获取配置值作为整数
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 存储整数值的指针
* @retval HAL 状态码
*/
hal_ret_t bsp_config_get_int(const char* section, const char* key, int* value) {
char str_value[BSP_CONFIG_MAX_VALUE_LENGTH];
@ -490,11 +490,11 @@ hal_ret_t bsp_config_get_int(const char* section, const char* key, int* value) {
}
/**
* @brief Set configuration value as integer
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Integer value
* @retval HAL status code
* @brief 设置配置值作为整数
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 整数值
* @retval HAL 状态码
*/
hal_ret_t bsp_config_set_int(const char* section, const char* key, int value) {
char str_value[BSP_CONFIG_MAX_VALUE_LENGTH];
@ -503,11 +503,11 @@ hal_ret_t bsp_config_set_int(const char* section, const char* key, int value) {
}
/**
* @brief Get configuration value as unsigned integer
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Pointer to store unsigned integer value
* @retval HAL status code
* @brief 获取配置值作为无符号整数
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 存储无符号整数值的指针
* @retval HAL 状态码
*/
hal_ret_t bsp_config_get_uint(const char* section, const char* key, uint32_t* value) {
char str_value[BSP_CONFIG_MAX_VALUE_LENGTH];
@ -520,11 +520,11 @@ hal_ret_t bsp_config_get_uint(const char* section, const char* key, uint32_t* va
}
/**
* @brief Set configuration value as unsigned integer
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Unsigned integer value
* @retval HAL status code
* @brief 设置配置值作为无符号整数
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 无符号整数值
* @retval HAL 状态码
*/
hal_ret_t bsp_config_set_uint(const char* section, const char* key, uint32_t value) {
char str_value[BSP_CONFIG_MAX_VALUE_LENGTH];
@ -533,11 +533,11 @@ hal_ret_t bsp_config_set_uint(const char* section, const char* key, uint32_t val
}
/**
* @brief Get configuration value as boolean
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Pointer to store boolean value
* @retval HAL status code
* @brief 获取配置值作为布尔值
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 存储布尔值的指针
* @retval HAL 状态码
*/
hal_ret_t bsp_config_get_bool(const char* section, const char* key, uint8_t* value) {
char str_value[BSP_CONFIG_MAX_VALUE_LENGTH];
@ -550,20 +550,20 @@ hal_ret_t bsp_config_get_bool(const char* section, const char* key, uint8_t* val
}
/**
* @brief Set configuration value as boolean
* @param section: Configuration section name
* @param key: Configuration key name
* @param value: Boolean value
* @retval HAL status code
* @brief 设置配置值作为布尔值
* @param section: 配置节名称
* @param key: 配置键名称
* @param value: 布尔值
* @retval HAL 状态码
*/
hal_ret_t bsp_config_set_bool(const char* section, const char* key, uint8_t value) {
return bsp_config_set_value(section, key, value ? "true" : "false");
}
/**
* @brief Parse BSP modules from configuration
* @param config: Pointer to BSP board configuration structure to fill
* @retval HAL status code
* @brief 从配置解析 BSP 模块
* @param config: 指向要填充的 BSP 板卡配置结构体的指针
* @retval HAL 状态码
*/
hal_ret_t bsp_config_parse_modules(bsp_board_config_t* config) {
if (config == NULL) {
@ -578,9 +578,9 @@ hal_ret_t bsp_config_parse_modules(bsp_board_config_t* config) {
}
/**
* @brief Initialize BSP from configuration file
* @param filename: Configuration file name
* @retval HAL status code
* @brief 从配置文件初始化 BSP
* @param filename: 配置文件名称
* @retval HAL 状态码
*/
hal_ret_t bsp_init_from_config(const char* filename) {
// Load configuration file