hostsim: rework to have a more precise interrupt emulation
[aversive.git] / modules / base / scheduler / test / main.c
index 43aff0f..1e2ae75 100644 (file)
@@ -23,6 +23,8 @@
 #include <aversive/wait.h>\r
 #include <stdio.h>\r
 #include <uart.h>\r
+//#include <timer.h>\r
+#include <hostsim.h>\r
 \r
 uint8_t event_id;\r
 \r
@@ -45,40 +47,40 @@ void f3(void * nothing)
 \r
 void supp(void * nothing)\r
 {\r
-  scheduler_del_event(event_id);\r
+       scheduler_del_event(event_id);\r
 }\r
 \r
 int main(void)\r
 {\r
-#ifndef HOST_VERSION\r
+#ifdef HOST_VERSION\r
+       hostsim_uart_init();\r
+       hostsim_ittimer_add(scheduler_interrupt, 1 * 1000 * 1000); /* 1ms period */\r
+       hostsim_ittimer_enable(100); /* 100 us */\r
+#else\r
        uart_init();\r
        fdevopen(uart0_dev_send, uart0_dev_recv);\r
-       sei();\r
-#else\r
-       int i;\r
-#endif\r
-       printf("init\n");\r
 \r
 #ifdef CONFIG_MODULE_TIMER\r
        timer_init();\r
 #endif\r
+#endif\r
+\r
        scheduler_init();\r
        printf("init2\n");\r
        wait_ms(2000);\r
        printf("init3\n");\r
 \r
-       event_id = scheduler_add_periodical_event_priority(f1, NULL, 500000l/SCHEDULER_UNIT, 200);\r
-       scheduler_add_periodical_event_priority(f2, NULL, 500000l/SCHEDULER_UNIT, 100);\r
+       sei();\r
+\r
+       event_id = scheduler_add_periodical_event_priority(f1, NULL,\r
+               500000l/SCHEDULER_UNIT, 200);\r
+       scheduler_add_periodical_event_priority(f2, NULL,\r
+               500000l/SCHEDULER_UNIT, 100);\r
        scheduler_add_periodical_event(f3, NULL, 1000000l/SCHEDULER_UNIT);\r
-       \r
-       //  scheduler_add_single_event(supp,65);\r
-       \r
 \r
-#ifdef HOST_VERSION\r
-       for (i=0 ; i<50000 ; i++)\r
-               scheduler_interrupt();\r
-#endif\r
-       return 0;\r
-}\r
+       scheduler_add_single_event(supp, NULL, 5000000l/SCHEDULER_UNIT);\r
 \r
+       while (1);\r
 \r
+       return 0;\r
+}\r