diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-11-19 19:03:18 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-11-19 19:03:18 +0000 |
commit | 2ab27d3c01ce51a26587e6aaafcef23b2dda4afe (patch) | |
tree | a97665aa4e865b8156164478b77551aa34d281b9 /os/io/adc.c | |
parent | a943eaecc7cd56c2a49521bf702b0524bb834aa1 (diff) | |
download | ChibiOS-2ab27d3c01ce51a26587e6aaafcef23b2dda4afe.tar.gz ChibiOS-2ab27d3c01ce51a26587e6aaafcef23b2dda4afe.tar.bz2 ChibiOS-2ab27d3c01ce51a26587e6aaafcef23b2dda4afe.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1315 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/io/adc.c')
-rw-r--r-- | os/io/adc.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/os/io/adc.c b/os/io/adc.c index ac003bc31..2fc64f561 100644 --- a/os/io/adc.c +++ b/os/io/adc.c @@ -42,9 +42,12 @@ void adcInit(void) { */
void adcObjectInit(ADCDriver *adcp) {
- adcp->ad_state = ADC_STOP;
- adcp->ad_config = NULL;
+ adcp->ad_state = ADC_STOP;
+ adcp->ad_config = NULL;
adcp->ad_callback = NULL;
+ adcp->ad_samples = NULL;
+ adcp->ad_depth = 0;
+ adcp->ad_grpp = NULL;
chSemInit(&adcp->ad_sem, 0);
}
@@ -119,7 +122,7 @@ void adcStop(ADCDriver *adcp) { */
bool_t adcStartConversion(ADCDriver *adcp,
ADCConversionGroup *grpp,
- void *samples,
+ adcsample_t *samples,
size_t depth,
adccallback_t callback) {
@@ -137,7 +140,10 @@ bool_t adcStartConversion(ADCDriver *adcp, return TRUE;
}
adcp->ad_callback = callback;
- adc_lld_start_conversion(adcp, grpp, samples, depth);
+ adcp->ad_samples = samples;
+ adcp->ad_depth = depth;
+ adcp->ad_grpp = grpp;
+ adc_lld_start_conversion(adcp);
adcp->ad_state = ADC_RUNNING;
chSysUnlock();
return FALSE;
@@ -157,8 +163,11 @@ void adcStopConversion(ADCDriver *adcp) { (adcp->ad_state == ADC_RUNNING),
"adcStopConversion(), #1",
"invalid state");
- adc_lld_stop_conversion(adcp);
- adcp->ad_state = ADC_READY;
+ if (adcp->ad_state == ADC_RUNNING) {
+ adc_lld_stop_conversion(adcp);
+ adcp->ad_grpp = NULL;
+ adcp->ad_state = ADC_READY;
+ }
chSysUnlock();
}
|