NorthStar-Endurance-TestBench/EnduranceTestBench/nms_hal/map_hal.h

138 lines
4.4 KiB
C

/**
* @file map_hal.c
*
* @copyright Nehemis SARL reserves all rights even in the event of industrial
* property rights. We reserve all rights of disposal such as
* copying and passing on to third parties.
*
* @brief Mapping of the hardware interfaces.
*
*/
#ifndef MAP_HAL_H_
#define MAP_HAL_H_
/******************************************************************************
* Include Header Files
******************************************************************************/
#include "nms_types.h"
/* CubeMX */
#include "gpio.h"
#include "tim.h"
#include "adc.h"
#include "fdcan.h"
#include "i2c.h"
/******************************************************************************
* Global define
******************************************************************************/
#define MOTOR_PWM_CHANNEL TIM_CHANNEL_1
/******************************************************************************
* Type declarations
******************************************************************************/
typedef enum
{
MAP_HAL_PMP_ENABLE,
MAP_HAL_GPIO_NUMBER
} MapHalGpioPin_en;
typedef enum
{
MAP_HAL_TIMER_RTOS,
MAP_HAL_TIMER_FILTER,
MAP_HAL_TIMER_NUMBER
} MapHalTimerModule_en;
typedef enum
{
MAP_HAL_ADC_1,
MAP_HAL_ADC_NUMBER
}MapHalAdcModule_en;
typedef enum
{
MAP_HAL_GRUNDFOS_PMP_I2C_HANDLE,
MAP_HAL_I2C_NUMBER
}MapHalI2cModule_en;
/******************************************************************************
* Extern Function Declarations
******************************************************************************/
/**
* @brief Maps a HAL GPIO pin to the corresponding STM32 port and pin.
*
* @param pin_en HAL GPIO pin to be mapped.
* @param targetPort_ppst Pointer to the corresponding STM32 port.
* @param targetPin_pu16 Pointer to the corresponding STM32 pin.
*
* @return Error code: 0 if successful, nonzero otherwise.
*/
uint32 MapHalGpio(MapHalGpioPin_en pin_en, uint16* targetPin_pu16, GPIO_TypeDef** targetPort_ppst);
/**
* @brief Maps a specific pin callback to the corresponding STM32 pin.
*
* @param targetPin_u16 STM32 pin.
* @param pin_pen Pointer to the enumerator representing the HAL pin.
*
* @return Error code: 0 if successful, nonzero otherwise.
*/
uint32 MapHalGpioCallback(uint16 targetPin_u16, MapHalGpioPin_en* pin_pen);
/**
* @brief Maps a HAL timer module to its corresponding STM32 timer module.
*
* @param[in] halModule_en HAL timer module (e.g., HAL_TIMER_1).
* @param[out] targetModule_ppst Pointer to the corresponding STM32 timer module (e.g., htim1).
*
* @return Error code:
* - HAL_TIM_LOG_LOCATION_4_ERROR_INVALID_ARGUMENT if the mapping fails.
* - LOG_ERROR_NONE if successful.
*/
uint32 MapHalTimerModule(MapHalTimerModule_en timer_en, TIM_HandleTypeDef** targetModule_ppst);
/**
* @brief Retrieves the HAL timer module associated with a given STM32 timer module.
*
* @param[in] targetModule_ppst Pointer to the STM32 timer module (e.g., htim1).
* @param[out] timerModule_pen Pointer to store the corresponding HAL module (e.g., HAL_TIMER_1).
*
* @return Error code:
* - HAL_TIM_LOG_LOCATION_4_ERROR_INVALID_ARGUMENT if the mapping fails.
* - LOG_ERROR_NONE if successful.
*/
uint32 MapHalTimerCallback(TIM_HandleTypeDef** targetModule_ppst, MapHalTimerModule_en* timer_pen);
/**
* @brief Maps a HAL ADC pin to the corresponding STM32 port and pin.
*
* @param pin_en HAL GPIO pin to be mapped.
* @param targetModule_ppst Pointer to the corresponding STM32 ADC module.
*
* @return Error code: 0 if successful, nonzero otherwise.
*/
uint32 MapHalAdcModule(MapHalAdcModule_en pin_en, ADC_HandleTypeDef** targetModule_ppst);
/**
* @brief Maps a specific pin callback to the corresponding STM32 pin.
*
* @param targetModule_pst STM32 pin.
* @param adcModule_en Pointer to the enumerator representing the HAL pin.
*
* @return Error code: 0 if successful, nonzero otherwise.
*/
uint32 MapHalAdcCallback(ADC_HandleTypeDef *targetModule_pst, MapHalAdcModule_en *adcModule_en);
/**
* @brief Maps a HAL I2C pin to the corresponding STM32 port and pin.
*
* @param pin_en HAL GPIO pin to be mapped.
* @param targetModule_ppst Pointer to the corresponding STM32 ADC module.
*
* @return Error code: 0 if successful, nonzero otherwise.
*/
uint32 MapHalI2cModule(MapHalI2cModule_en module_en, I2C_HandleTypeDef ** targetModule_ppst);
#endif /* MAP_HAL_H_ */