* 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>
*/
-/*#*
- *#* $Log$
- *#* Revision 1.10 2007/09/29 16:30:37 bernie
- *#* RASTER_SIZE(): Remove obsolete macro.
- *#*
- *#* Revision 1.9 2006/09/20 14:29:34 marco
- *#* Add proc demo (not yet working).
- *#*
- *#* Revision 1.8 2006/06/02 12:27:36 bernie
- *#* Tweak apparence; enable assertions.
- *#*
- *#* Revision 1.7 2006/05/27 22:31:18 bernie
- *#* Clean it up a bit more.
- *#*
- *#* Revision 1.6 2006/05/27 17:16:38 bernie
- *#* Make demos a bit more interesting.
- *#*
- *#* Revision 1.5 2006/05/15 07:25:29 bernie
- *#* Move menu to gui/.
- *#*
- *#* Revision 1.4 2006/04/27 05:43:07 bernie
- *#* Fix naming conventions.
- *#*
- *#* Revision 1.3 2006/04/11 00:07:32 bernie
- *#* Implemenent MF_SAVESEL flag.
- *#*
- *#* Revision 1.2 2006/03/27 04:49:50 bernie
- *#* Add bouncing logo demo.
- *#*
- *#* Revision 1.1 2006/03/22 09:52:13 bernie
- *#* Add demo application.
- *#*
- *#* Revision 1.1 2006/01/23 23:14:29 bernie
- *#* Implement simple, but impressive windowing system.
- *#*
- *#*/
+#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)
{
const long SPEED_SCALE = 1000;
const long GRAVITY_ACCEL = 10;
const long BOUNCE_ELASTICITY = 2;
- long h = (long)(-project_grl_logo.height) * SPEED_SCALE;
+ long h = (long)(-bertos_logo.height) * SPEED_SCALE;
long speed = 1000;
/* Repeat until logo stands still on the bottom edge */
/* Update graphics */
gfx_bitmapClear(bm);
gfx_blitImage(bm,
- (bm->width - project_grl_logo.width) / 2,
+ (bm->width - bertos_logo.width) / 2,
h / SPEED_SCALE,
- &project_grl_logo);
+ &bertos_logo);
lcd_blitBitmap(bm);
timer_delay(10);
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();
}
{ (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 },
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;
}