/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : bsp_board_manager.h
  * @brief          : 板级支持包管理器头文件
  ******************************************************************************
  */
/* USER CODE END Header */

#ifndef BSP_BOARD_MANAGER_H
#define BSP_BOARD_MANAGER_H

#include <stdint.h>
#include <string.h>
#include "bsp_board.h"

/**
 * @brief 获取支持的板卡数量
 * @retval 支持的板卡数量
 */
uint8_t bsp_board_get_count(void);

/**
 * @brief 通过索引获取板卡配置
 * @param index: 板卡配置索引
 * @retval 指向板卡配置结构体的指针，无效索引返回 NULL
 */
const bsp_board_config_t* bsp_board_get_by_index(uint8_t index);

/**
 * @brief 通过名称获取板卡配置
 * @param name: 板卡名称字符串
 * @retval 指向板卡配置结构体的指针，未找到返回 NULL
 */
const bsp_board_config_t* bsp_board_get_by_name(const char* name);

/**
 * @brief 通过索引设置当前板卡配置
 * @param index: 板卡配置索引
 * @retval HAL 状态码
 */
hal_ret_t bsp_board_set_by_index(uint8_t index);

/**
 * @brief 通过名称设置当前板卡配置
 * @param name: 板卡名称字符串
 * @retval HAL 状态码
 */
hal_ret_t bsp_board_set_by_name(const char* name);

/**
 * @brief 获取当前板卡配置
 * @retval 指向当前板卡配置结构体的指针
 */
const bsp_board_config_t* bsp_board_get_config(void);

/**
 * @brief 获取当前板卡索引
 * @retval 当前板卡索引
 */
uint8_t bsp_board_get_current_index(void);

#endif /* BSP_BOARD_MANAGER_H */
