X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao.h;h=2d434134b8ea4f6f01c63a2a2179daac127e3d99;hp=4fd368c00a5d0ef7e53b5a7301f4eb23076d94c6;hb=823f4f92de0c1f8dd7a644a8e56ffe9822bee6e2;hpb=650a77e209dbb54c8d8fd9824cee430985564973 diff --git a/ao.h b/ao.h index 4fd368c0..2d434134 100644 --- a/ao.h +++ b/ao.h @@ -22,7 +22,9 @@ #include #include "cc1111.h" -#define AO_STACK_START 0x11 +#define DATA_TO_XDATA(a) ((void __xdata *) ((uint8_t) (a) | 0xff00)) + +#define AO_STACK_START 0x21 #define AO_STACK_END 0xfe #define AO_STACK_SIZE (AO_STACK_END - AO_STACK_START + 1) @@ -36,6 +38,10 @@ struct ao_task { #define AO_ERROR_NO_TASK 1 +#define ao_interrupt_disable() (EA = 0) +#define ao_interrupt_enable() (EA = 1) + +/* ao_task.c */ int ao_sleep(__xdata void *wchan); int ao_wakeup(__xdata void *wchan); void ao_add_task(__xdata struct ao_task * task, void (*start)(void)); @@ -43,4 +49,13 @@ void ao_start_scheduler(void); void ao_yield(void) _naked; void ao_panic(uint8_t reason); +/* ao_timer.c */ + +volatile __data uint16_t ao_time; + +void ao_timer_isr(void) interrupt 9; +void ao_timer_init(void); +uint16_t ao_time_atomic(void); +void ao_delay(uint16_t ticks); + #endif /* _AO_H_ */