diff options
Diffstat (limited to 'os/hal/src/adc.c')
-rw-r--r-- | os/hal/src/adc.c | 96 |
1 files changed, 39 insertions, 57 deletions
diff --git a/os/hal/src/adc.c b/os/hal/src/adc.c index d0e814ae2..e6d8d8075 100644 --- a/os/hal/src/adc.c +++ b/os/hal/src/adc.c @@ -26,7 +26,6 @@ * @{
*/
-#include "ch.h"
#include "hal.h"
#if HAL_USE_ADC || defined(__DOXYGEN__)
@@ -81,11 +80,7 @@ void adcObjectInit(ADCDriver *adcp) { adcp->thread = NULL;
#endif /* ADC_USE_WAIT */
#if ADC_USE_MUTUAL_EXCLUSION
-#if CH_USE_MUTEXES
- chMtxInit(&adcp->mutex);
-#else
- chSemInit(&adcp->semaphore, 1);
-#endif
+ osalMutexObjectInit(&adcp->mutex);
#endif /* ADC_USE_MUTUAL_EXCLUSION */
#if defined(ADC_DRIVER_EXT_INIT_HOOK)
ADC_DRIVER_EXT_INIT_HOOK(adcp);
@@ -103,15 +98,15 @@ void adcObjectInit(ADCDriver *adcp) { */
void adcStart(ADCDriver *adcp, const ADCConfig *config) {
- chDbgCheck(adcp != NULL, "adcStart");
+ osalDbgCheck(adcp != NULL);
- chSysLock();
- chDbgAssert((adcp->state == ADC_STOP) || (adcp->state == ADC_READY),
- "adcStart(), #1", "invalid state");
+ osalSysLock();
+ osalDbgAssert((adcp->state == ADC_STOP) || (adcp->state == ADC_READY),
+ "invalid state");
adcp->config = config;
adc_lld_start(adcp);
adcp->state = ADC_READY;
- chSysUnlock();
+ osalSysUnlock();
}
/**
@@ -123,14 +118,14 @@ void adcStart(ADCDriver *adcp, const ADCConfig *config) { */
void adcStop(ADCDriver *adcp) {
- chDbgCheck(adcp != NULL, "adcStop");
+ osalDbgCheck(adcp != NULL);
- chSysLock();
- chDbgAssert((adcp->state == ADC_STOP) || (adcp->state == ADC_READY),
- "adcStop(), #1", "invalid state");
+ osalSysLock();
+ osalDbgAssert((adcp->state == ADC_STOP) || (adcp->state == ADC_READY),
+ "invalid state");
adc_lld_stop(adcp);
adcp->state = ADC_STOP;
- chSysUnlock();
+ osalSysUnlock();
}
/**
@@ -154,9 +149,9 @@ void adcStartConversion(ADCDriver *adcp, adcsample_t *samples,
size_t depth) {
- chSysLock();
+ osalSysLock();
adcStartConversionI(adcp, grpp, samples, depth);
- chSysUnlock();
+ osalSysUnlock();
}
/**
@@ -182,14 +177,13 @@ void adcStartConversionI(ADCDriver *adcp, adcsample_t *samples,
size_t depth) {
- chDbgCheckClassI();
- chDbgCheck((adcp != NULL) && (grpp != NULL) && (samples != NULL) &&
- ((depth == 1) || ((depth & 1) == 0)),
- "adcStartConversionI");
- chDbgAssert((adcp->state == ADC_READY) ||
- (adcp->state == ADC_COMPLETE) ||
- (adcp->state == ADC_ERROR),
- "adcStartConversionI(), #1", "not ready");
+ osalDbgCheckClassI();
+ osalDbgCheck((adcp != NULL) && (grpp != NULL) && (samples != NULL) &&
+ ((depth == 1) || ((depth & 1) == 0)));
+ osalDbgAssert((adcp->state == ADC_READY) ||
+ (adcp->state == ADC_COMPLETE) ||
+ (adcp->state == ADC_ERROR),
+ "not ready");
adcp->samples = samples;
adcp->depth = depth;
@@ -210,19 +204,18 @@ void adcStartConversionI(ADCDriver *adcp, */
void adcStopConversion(ADCDriver *adcp) {
- chDbgCheck(adcp != NULL, "adcStopConversion");
+ osalDbgCheck(adcp != NULL);
- chSysLock();
- chDbgAssert((adcp->state == ADC_READY) ||
- (adcp->state == ADC_ACTIVE),
- "adcStopConversion(), #1", "invalid state");
+ osalSysLock();
+ osalDbgAssert((adcp->state == ADC_READY) || (adcp->state == ADC_ACTIVE),
+ "invalid state");
if (adcp->state != ADC_READY) {
adc_lld_stop_conversion(adcp);
adcp->grpp = NULL;
adcp->state = ADC_READY;
_adc_reset_s(adcp);
}
- chSysUnlock();
+ osalSysUnlock();
}
/**
@@ -237,12 +230,12 @@ void adcStopConversion(ADCDriver *adcp) { */
void adcStopConversionI(ADCDriver *adcp) {
- chDbgCheckClassI();
- chDbgCheck(adcp != NULL, "adcStopConversionI");
- chDbgAssert((adcp->state == ADC_READY) ||
- (adcp->state == ADC_ACTIVE) ||
- (adcp->state == ADC_COMPLETE),
- "adcStopConversionI(), #1", "invalid state");
+ osalDbgCheckClassI();
+ osalDbgCheck(adcp != NULL);
+ osalDbgAssert((adcp->state == ADC_READY) ||
+ (adcp->state == ADC_ACTIVE) ||
+ (adcp->state == ADC_COMPLETE),
+ "invalid state");
if (adcp->state != ADC_READY) {
adc_lld_stop_conversion(adcp);
@@ -282,13 +275,11 @@ msg_t adcConvert(ADCDriver *adcp, size_t depth) {
msg_t msg;
- chSysLock();
- chDbgAssert(adcp->thread == NULL, "adcConvert(), #1", "already waiting");
+ osalSysLock();
+ osalDbgAssert(adcp->thread == NULL, "already waiting");
adcStartConversionI(adcp, grpp, samples, depth);
- adcp->thread = chThdSelf();
- chSchGoSleepS(THD_STATE_SUSPENDED);
- msg = chThdSelf()->p_u.rdymsg;
- chSysUnlock();
+ msg = osalThreadSuspendS(&adcp->thread);
+ osalSysUnlock();
return msg;
}
#endif /* ADC_USE_WAIT */
@@ -307,13 +298,9 @@ msg_t adcConvert(ADCDriver *adcp, */
void adcAcquireBus(ADCDriver *adcp) {
- chDbgCheck(adcp != NULL, "adcAcquireBus");
+ osalDbgCheck(adcp != NULL);
-#if CH_USE_MUTEXES
- chMtxLock(&adcp->mutex);
-#elif CH_USE_SEMAPHORES
- chSemWait(&adcp->semaphore);
-#endif
+ osalMutexLock(&adcp->mutex);
}
/**
@@ -327,14 +314,9 @@ void adcAcquireBus(ADCDriver *adcp) { */
void adcReleaseBus(ADCDriver *adcp) {
- chDbgCheck(adcp != NULL, "adcReleaseBus");
+ osalDbgCheck(adcp != NULL);
-#if CH_USE_MUTEXES
- (void)adcp;
- chMtxUnlock();
-#elif CH_USE_SEMAPHORES
- chSemSignal(&adcp->semaphore);
-#endif
+ osalMutexUnlock(&adcp->mutex);
}
#endif /* ADC_USE_MUTUAL_EXCLUSION */
|