Add missing assert.
[bertos.git] / app / demo / demo.c
index f28576ea2677305c2c30bda4c4d149cb6fa83cd2..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 $
- *
- * \author Bernardo Innocenti <bernie@develer.com>
+ * \brief Multifunction system test for BeRTOS modules.
  *
- * \brief Windowing system test.
+ * \version $Id: demo.c 18242 2007-10-08 17:35:23Z marco $
+ * \author Bernie Innocenti <bernie@codewiz.org>
  */
 
+#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>
 #include <drv/buzzer.h>
 #include <drv/lcd_gfx.h>
 #include <drv/kbd.h>
+
 #include <gfx/gfx.h>
 #include <gfx/win.h>
 #include <gfx/text.h>
 #include <gfx/font.h>
+
 #include <gui/menu.h>
 #include <icons/logo.h>
-#include <cfg/macros.h>
 
 /**
  * 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)
 {
@@ -217,9 +226,13 @@ void win_demo(Bitmap *bm)
 
 void proc_demo(void)
 {
-       extern void proc_test(void);
-// FIXME: proc_test() cause segmentation fault. 
-       proc_test();
+       proc_testRun();
+}
+
+void timer_demo(void)
+{
+       timer_testRun();
+       timer_testTearDown();
 }
 
 
@@ -272,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 },
@@ -280,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;
 }