/* Pointer to configuration structure. */\r
static const Adc_ConfigType *AdcConfigPtr;\r
\r
+/* VALIDATION MACROS */\r
+#if (defined(USE_DET))\r
+ #define ADC_REPORT_ERROR(apiid, errorid) \\r
+ Det_ReportError(MODULE_ID_ADC, 0, apiid, errorid)\r
+#else\r
+ #define ADC_REPORT_ERROR(apiid, errorid)\r
+#endif\r
+\r
+#if (ADC_DEV_ERROR_DETECT == STD_ON)\r
+ #define ADC_VALIDATE(_exp, _apiid, _errid, ...) \\r
+ if (!(_exp)) { \\r
+ ADC_REPORT_ERROR( _apiid, _errid); \\r
+ return __VA_ARGS__; \\r
+ }\r
+#else\r
+ #define ADC_VALIDATE(_exp, _apiid, _errid, ...)\r
+#endif\r
+\r
+#define ADC_VALIDATE_INITIALIZED(apiid, ...) \\r
+ ADC_VALIDATE( (adcState == ADC_INIT), apiid, ADC_E_UNINIT, __VA_ARGS__)\r
+#define ADC_VALIDATE_NOT_INITIALIZED(apiid, ...) \\r
+ ADC_VALIDATE( (adcState != ADC_INIT), apiid, ADC_E_ALREADY_INITIALIZED, __VA_ARGS__)\r
+\r
+/* VALIDATION MACROS */\r
+\r
\r
#if (ADC_DEINIT_API == STD_ON)\r
Std_ReturnType Adc_DeInit (const Adc_ConfigType *ConfigPtr)\r
{\r
+ ADC_VALIDATE_INITIALIZED( ADC_DEINIT_ID, E_NOT_OK );\r
+\r
DMA_DeInit(DMA1_Channel1);\r
ADC_DeInit(ADC1);\r
\r
+ adcState = ADC_UNINIT;\r
+\r
return (E_OK);\r
}\r
#endif\r
\r
Std_ReturnType Adc_Init (const Adc_ConfigType *ConfigPtr)\r
{\r
+ ADC_VALIDATE_NOT_INITIALIZED( ADC_INIT_ID, E_NOT_OK );\r
+\r
Std_ReturnType returnValue;\r
Adc_ChannelType channel;\r
Adc_ChannelType channelId;\r
Det_ReportError(MODULE_ID_ADC,0,ADC_SETUPRESULTBUFFER_ID,ADC_E_UNINIT );\r
returnValue = E_NOT_OK;\r
}\r
- else if (group < AdcConfigPtr->nbrOfGroups)\r
+ else if (group >= AdcConfigPtr->nbrOfGroups)\r
{\r
/* ADC423 */\r
Det_ReportError(MODULE_ID_ADC,0,ADC_SETUPRESULTBUFFER_ID,ADC_E_PARAM_GROUP );\r