diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/kernel/ao.h | 3 | ||||
| -rw-r--r-- | src/kernel/ao_cmd.c | 6 | ||||
| -rw-r--r-- | src/kernel/ao_notask.c | 15 | ||||
| -rw-r--r-- | src/lambdakey-v1.0/ao_pins.h | 1 | 
4 files changed, 24 insertions, 1 deletions
| diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 139050cf..2bd0e367 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -218,6 +218,9 @@ ao_cmd_register(const __code struct ao_cmds *cmds);  void  ao_cmd_init(void); +void +ao_cmd(void); +  #if HAS_CMD_FILTER  /*   * Provided by an external module to filter raw command lines diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c index c1e9cef2..405fd126 100644 --- a/src/kernel/ao_cmd.c +++ b/src/kernel/ao_cmd.c @@ -423,11 +423,13 @@ ao_loader(void)  }  #endif +#if HAS_TASK  __xdata struct ao_task ao_cmd_task; +#endif  __code struct ao_cmds	ao_base_cmds[] = {  	{ help,		"?\0Help" }, -#if HAS_TASK_INFO +#if HAS_TASK_INFO && HAS_TASK  	{ ao_task_info,	"T\0Tasks" },  #endif  	{ echo,		"E <0 off, 1 on>\0Echo" }, @@ -445,5 +447,7 @@ void  ao_cmd_init(void)  {  	ao_cmd_register(&ao_base_cmds[0]); +#if HAS_TASK  	ao_add_task(&ao_cmd_task, ao_cmd, "cmd"); +#endif  } diff --git a/src/kernel/ao_notask.c b/src/kernel/ao_notask.c index 00fe1ed6..7207353a 100644 --- a/src/kernel/ao_notask.c +++ b/src/kernel/ao_notask.c @@ -39,6 +39,21 @@ ao_sleep(__xdata void *wchan)  	return 0;  } +#if HAS_AO_DELAY +void +ao_delay(uint16_t ticks) +{ +	AO_TICK_TYPE	target; + +	if (!ticks) +		ticks = 1; +	target = ao_tick_count + ticks; +	do { +		ao_sleep(&ao_time); +	} while ((int16_t) (target - ao_tick_count) > 0); +} +#endif +  void  ao_wakeup(__xdata void *wchan)  { diff --git a/src/lambdakey-v1.0/ao_pins.h b/src/lambdakey-v1.0/ao_pins.h index cb1c4aa7..48b9db16 100644 --- a/src/lambdakey-v1.0/ao_pins.h +++ b/src/lambdakey-v1.0/ao_pins.h @@ -20,6 +20,7 @@  #define _AO_PINS_H_  #define HAS_TASK	0 +#define HAS_AO_DELAY	1  #define LED_PORT_ENABLE	STM_RCC_AHBENR_IOPBEN  #define LED_PORT	(&stm_gpiob) | 
