diff options
| author | Keith Packard <keithp@keithp.com> | 2012-08-28 18:03:52 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-08-28 23:00:22 -0700 | 
| commit | 31b42b99edbb976534ac432c07e218f13d1f5f9b (patch) | |
| tree | 738feb9a042a1dad0c04e36b610a0e1099050c40 /src | |
| parent | ac5d053e6d766d243b7a425ae19779810c350125 (diff) | |
altos: Fix ao_delay function and move from per-chip code to ao_task.c
ao_delay hasn't been chip-specific for a long time, and it had a bug
in not calling ao_clear_alarm.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/avr/ao_timer.c | 9 | ||||
| -rw-r--r-- | src/cc1111/ao_timer.c | 10 | ||||
| -rw-r--r-- | src/core/ao_task.c | 11 | ||||
| -rw-r--r-- | src/stm/ao_timer.c | 9 | 
4 files changed, 11 insertions, 28 deletions
| diff --git a/src/avr/ao_timer.c b/src/avr/ao_timer.c index cd81b163..d2ea2be7 100644 --- a/src/avr/ao_timer.c +++ b/src/avr/ao_timer.c @@ -28,15 +28,6 @@ uint16_t ao_time(void)  	return v;  } -static __xdata uint8_t ao_forever; - -void -ao_delay(uint16_t ticks) -{ -	ao_alarm(ticks); -	ao_sleep(&ao_forever); -} -  #define T1_CLOCK_DIVISOR	8	/* 24e6/8 = 3e6 */  #define T1_SAMPLE_TIME		30000	/* 3e6/30000 = 100 */ diff --git a/src/cc1111/ao_timer.c b/src/cc1111/ao_timer.c index 602f98c8..a64b5aba 100644 --- a/src/cc1111/ao_timer.c +++ b/src/cc1111/ao_timer.c @@ -24,16 +24,6 @@ uint16_t ao_time(void) __critical  	return ao_tick_count;  } -static __xdata uint8_t ao_forever; - -void -ao_delay(uint16_t ticks) -{ -	ao_alarm(ticks); -	ao_sleep(&ao_forever); -	ao_clear_alarm(); -} -  #define T1_CLOCK_DIVISOR	8	/* 24e6/8 = 3e6 */  #define T1_SAMPLE_TIME		30000	/* 3e6/30000 = 100 */ diff --git a/src/core/ao_task.c b/src/core/ao_task.c index 4593bd79..65654731 100644 --- a/src/core/ao_task.c +++ b/src/core/ao_task.c @@ -125,6 +125,7 @@ ao_sleep(__xdata void *wchan)  	ao_yield();  	if (ao_cur_task->wchan) {  		ao_cur_task->wchan = NULL; +		ao_cur_task->alarm = 0;  		return 1;  	}  	return 0; @@ -157,6 +158,16 @@ ao_clear_alarm(void)  	ao_cur_task->alarm = 0;  } +static __xdata uint8_t ao_forever; + +void +ao_delay(uint16_t ticks) +{ +	ao_alarm(ticks); +	ao_sleep(&ao_forever); +	ao_clear_alarm(); +} +  void  ao_exit(void)  { diff --git a/src/stm/ao_timer.c b/src/stm/ao_timer.c index 78228e65..f561e6b5 100644 --- a/src/stm/ao_timer.c +++ b/src/stm/ao_timer.c @@ -28,15 +28,6 @@ uint16_t ao_time(void)  	return v;  } -static __xdata uint8_t ao_forever; - -void -ao_delay(uint16_t ticks) -{ -	ao_alarm(ticks); -	ao_sleep(&ao_forever); -} -  #if AO_DATA_ALL  volatile __data uint8_t	ao_data_interval = 1;  volatile __data uint8_t	ao_data_count; | 
