/**
******************************************************************************
* @file regular_conversion_manager.h
* @author Motor Control SDK Team, ST Microelectronics
* @brief This file contains all definitions and functions prototypes for the
* regular_conversion_manager component of the Motor Control SDK.
******************************************************************************
* @attention
*
*
© Copyright (c) 2019 STMicroelectronics.
* All rights reserved.
*
* This software component is licensed by ST under Ultimate Liberty license
* SLA0044, the "License"; You may not use this file except in compliance with
* the License. You may obtain a copy of the License at:
* www.st.com/SLA0044
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __regular_conversion_manager_h
#define __regular_conversion_manager_h
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Includes ------------------------------------------------------------------*/
#include "stdint.h"
#include "stdbool.h"
#include "mc_stm_types.h"
/** @addtogroup MCSDK
* @{
*/
/** @addtogroup RCM
* @{
*/
/* Exported types ------------------------------------------------------------*/
/**
* @brief RegConv_t contains all the parameters required to execute a regular conversion
*
* it is used by all regular_conversion_manager's client
*
*/
typedef struct
{
ADC_TypeDef * regADC;
uint8_t channel;
uint32_t samplingTime;
} RegConv_t;
typedef enum
{
RCM_USERCONV_IDLE,
RCM_USERCONV_REQUESTED,
RCM_USERCONV_EOC
}RCM_UserConvState_t;
typedef void (*RCM_exec_cb_t)(uint8_t handle, uint16_t data, void *UserData);
/* Exported functions ------------------------------------------------------- */
/* Function used to register a regular conversion */
uint8_t RCM_RegisterRegConv(RegConv_t * regConv);
/* Function used to register a regular conversion with a callback attached*/
uint8_t RCM_RegisterRegConv_WithCB (RegConv_t * regConv, RCM_exec_cb_t fctCB, void *data);
/* Function used to execute an already registered regular conversion */
uint16_t RCM_ExecRegularConv (uint8_t handle);
/* select the handle conversion to be executed during the next call to RCM_ExecUserConv */
bool RCM_RequestUserConv(uint8_t handle);
/* return the latest user conversion value*/
uint16_t RCM_GetUserConv(void);
/* Must be called by MC_TASK only to grantee proper scheduling*/
void RCM_ExecUserConv (void);
/* return the state of the user conversion state machine*/
RCM_UserConvState_t RCM_GetUserConvState(void);
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif /* __cpluplus */
#endif /* __regular_conversion_manager_h */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/