Add missing assert.
[bertos.git] / app / demo / demo.c
index d737f22d834f7c098b76caf3775b7943f2e57229..9c2169ccef7e1236b2c464016341906a902468de 100644 (file)
  * invalidate any other reasons why the executable file might be covered by
  * the GNU General Public License.
  *
- * Copyright 2006 Develer S.r.l. (http://www.develer.com/)
- *
+ * Copyright 2006, 2008 Develer S.r.l. (http://www.develer.com/)
  * -->
  *
- * \version $Id: demo.c 18242 2007-10-08 17:35:23Z marco $
+ * \brief Multifunction system test for BeRTOS modules.
  *
+ * \version $Id: demo.c 18242 2007-10-08 17:35:23Z marco $
  * \author Bernie Innocenti <bernie@codewiz.org>
- *
- * \brief Windowing system test.
  */
 
 #include <cfg/macros.h>
 
 #include <emul/emul.h>
 
+#include <kern/irq.h>
 #include <kern/proc.h>
+#include <kern/monitor.h>
 #include <kern/msg.h>
 
 #include <drv/timer.h>
@@ -59,6 +59,9 @@
 
 /**
  * Draw a pentacle in the provided bitmap.
+ *
+ * This is invoked by the keyboard polling routine, as a poor man's surrogate
+ * of true task switching.
  */
 void schedule(void)
 {
@@ -223,8 +226,13 @@ void win_demo(Bitmap *bm)
 
 void proc_demo(void)
 {
-       extern void proc_test(void);
-       proc_test();
+       proc_testRun();
+}
+
+void timer_demo(void)
+{
+       timer_testRun();
+       timer_testTearDown();
 }
 
 
@@ -277,6 +285,7 @@ static struct MenuItem main_items[] =
        { (const_iptr_t)"Bounce!",     0, (MenuHook)bouncing_logo,(iptr_t)&lcd_bitmap    },
        { (const_iptr_t)"Hello World", 0, (MenuHook)hello_world,  (iptr_t)&lcd_bitmap    },
        { (const_iptr_t)"Scheduling",  0, (MenuHook)proc_demo,    (iptr_t)&lcd_bitmap    },
+       { (const_iptr_t)"Timer Test",  0, (MenuHook)timer_demo,   (iptr_t)&lcd_bitmap    },
        { (const_iptr_t)"Menu MX",     0, (MenuHook)menu_handle,  (iptr_t)&mx_menu       },
        { (const_iptr_t)"Display",     0, (MenuHook)menu_handle,  (iptr_t)&display_menu  },
        { (const_iptr_t)"Settings",    0, (MenuHook)menu_handle,  (iptr_t)&settings_menu },
@@ -285,17 +294,22 @@ static struct MenuItem main_items[] =
 static struct Menu main_menu = { main_items, "Main Menu", MF_STICKY, &lcd_bitmap, 0 };
 
 
+static cpu_stack_t monitor_stack[CONFIG_KERN_MINSTACKSIZE / sizeof(cpu_stack_t)];
+
 int main(int argc, char *argv[])
 {
        emul_init(&argc, argv);
+       irq_init();
        timer_init();
        buz_init();
        kbd_init();
        lcd_init();
        proc_init();
+       monitor_start(sizeof(monitor_stack), monitor_stack);
 
        menu_handle(&main_menu);
 
+       timer_cleanup();
        emul_cleanup();
        return 0;
 }