/demos/trunk/jumpball/demo.h |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: demo.h,v 1.5 2004-04-17 17:16:46 giacomo Exp $ |
CVS : $Id: demo.h,v 1.4 2004-03-28 09:14:17 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.5 $ |
Last update: $Date: 2004-04-17 17:16:46 $ |
Revision: $Revision: 1.4 $ |
Last update: $Date: 2004-03-28 09:14:17 $ |
------------ |
**/ |
50,15 → 50,10 |
#include <kernel/types.h> |
#include <kernel/descr.h> |
#include <math.h> |
#include <drivers/glib.h> |
#include <drivers/keyb.h> |
#include <drivers/shark_linuxc26.h> |
#include <drivers/shark_pci26.h> |
#include <drivers/shark_input26.h> |
#include <drivers/shark_keyb26.h> |
#include <drivers/shark_fb26.h> |
#define FRAME_BUFFER_DEVICE 0 |
/* Subparts */ |
#define JET_ON |
#define BALL_ON |
71,7 → 66,7 |
400 - Pentium 2 400 MHz |
133 - Pentium 1 133 MHz |
*/ |
#define CPU 400 |
#define CPU 1300 |
/* |
* |
126,7 → 121,8 |
* |
*/ |
extern PID shutdown_task_PID; |
/* graphic mutex... */ |
extern mutex_t mutex; |
/* useful colors... */ |
extern int white; |
141,6 → 137,8 |
char *itoa(int n, char *s); |
int myrand(int x); |
/* |
* |
* JETCONTROL stuffs |
162,6 → 160,9 |
#define JET_SLIDE_WIDTH 50 |
#define JET_SLIDE_X 576 |
/* |
* |
* BALL stuffs |
/demos/trunk/jumpball/ball.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: ball.c,v 1.4 2004-04-17 17:16:46 giacomo Exp $ |
CVS : $Id: ball.c,v 1.3 2003-05-05 09:21:55 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.4 $ |
Last update: $Date: 2004-04-17 17:16:46 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2003-05-05 09:21:55 $ |
------------ |
**/ |
125,12 → 125,11 |
x = x0 + vx * tx; |
} |
task_nopreempt(); |
mutex_lock(&mutex); |
grx_disc(ox, oy, R, 0); |
task_preempt(); |
ox = x; |
oy = BALL_Y - y; |
mutex_unlock(&mutex); |
if (ballexit && i!=0xFFFF) { |
npc--; |
137,9 → 136,9 |
return 0; |
} |
task_nopreempt(); |
mutex_lock(&mutex); |
grx_disc(ox, oy, R, i); |
task_preempt(); |
mutex_unlock(&mutex); |
my_delay(); |
172,7 → 171,7 |
itoa(npc,palla_str+5); |
soft_task_default_model(mp); |
soft_task_def_level(mp,2); |
soft_task_def_level(mp,1); |
soft_task_def_ctrl_jet(mp); |
soft_task_def_arg(mp, (void *)rgb16(r,g,b)); |
soft_task_def_group(mp, BALL_GROUP); |
206,8 → 205,7 |
pid = task_create("pallaEDF", palla, &mp, NULL); |
if (pid == NIL) { |
sys_shutdown_message("Could not create task <pallaEDF>"); |
task_activate(shutdown_task_PID); |
return; |
sys_end(); |
} |
else |
task_activate(pid); |
222,6 → 220,8 |
{ |
grx_text("Noise", 0, 45 /*BALL_Y-BALL_HEIGHT-15*/, rgb16(0,0,255), black); |
grx_line(0,55,383,55,red); |
//grx_line(0,BALL_Y-BALL_HEIGHT-6,383,BALL_Y-BALL_HEIGHT-6,red); |
grx_rect(BALL_XMIN-R-1, BALL_Y-BALL_HEIGHT-R-1, |
BALL_XMAX+R+1, BALL_Y+R+1, rgb16(0,200,0)); |
} |
235,14 → 235,12 |
k.flag = 0; |
k.scan = KEY_SPC; |
k.ascii = ' '; |
k.status = KEY_PRESSED; |
keyb_hook(k,ballfun,FALSE); |
keyb_hook(k,ballfun); |
k.flag = 0; |
k.scan = KEY_BKS; |
k.ascii = ' '; |
k.status = KEY_PRESSED; |
keyb_hook(k,killball,FALSE); |
keyb_hook(k,killball); |
} |
/*--------------------------------------------------------------*/ |
/demos/trunk/jumpball/rrn.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: rrn.c,v 1.2 2004-04-17 17:16:47 giacomo Exp $ |
CVS : $Id: rrn.c,v 1.1 2003-05-01 19:43:17 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2004-04-17 17:16:47 $ |
Revision: $Revision: 1.1 $ |
Last update: $Date: 2003-05-01 19:43:17 $ |
------------ |
**/ |
54,33 → 54,35 |
#include "modules/sem.h" |
#include "modules/hartport.h" |
#include "modules/cabs.h" |
#include "modules/nop.h" |
#include "drivers/keyb.h" |
/*+ sysyem tick in us +*/ |
#define TICK 0 |
/*+ RR tick in us +*/ |
//#define RRTICK 10000 |
#define RRTICK 2000 |
/*+ Interrupt Server +*/ |
#define INTDRIVE_Q 1000 |
#define INTDRIVE_T 10000 |
#define INTDRIVE_FLAG 0 |
TIME __kernel_register_levels__(void *arg) |
{ |
struct multiboot_info *mb = (struct multiboot_info *)arg; |
INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG); |
RR_register_level(RRTICK, RR_MAIN_NO, mb); // this module remains empty!!! |
RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT); |
RR_register_level(RRTICK, RR_MAIN_YES, mb); |
dummy_register_level(); |
SEM_register_module(); |
CABS_register_module(); |
NOP_register_module(); |
return TICK; |
} |
90,7 → 92,18 |
HARTPORT_init(); |
KEYB_init(NULL); |
__call_main__(mb); |
return (void *)0; |
} |
void app_mutex_init(mutex_t *m) |
{ |
NOP_mutexattr_t attr; |
NOP_mutexattr_default(attr); |
mutex_init(m, &attr); |
} |
/demos/trunk/jumpball/rrp.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: rrp.c,v 1.2 2004-04-17 17:16:47 giacomo Exp $ |
CVS : $Id: rrp.c,v 1.1 2003-05-01 19:43:17 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2004-04-17 17:16:47 $ |
Revision: $Revision: 1.1 $ |
Last update: $Date: 2003-05-01 19:43:17 $ |
------------ |
**/ |
46,7 → 46,6 |
*/ |
#include "kernel/kern.h" |
#include "modules/intdrive.h" |
#include "modules/edf.h" |
#include "modules/rr.h" |
#include "modules/rrsoft.h" |
55,31 → 54,32 |
#include "modules/sem.h" |
#include "modules/hartport.h" |
#include "modules/cabs.h" |
#include "modules/pi.h" |
#include "drivers/keyb.h" |
/*+ sysyem tick in us +*/ |
#define TICK 0 |
/*+ RR tick in us +*/ |
//#define RRTICK 10000 |
#define RRTICK 2000 |
/*+ Interrupt Server +*/ |
#define INTDRIVE_Q 1000 |
#define INTDRIVE_T 10000 |
#define INTDRIVE_FLAG 0 |
TIME __kernel_register_levels__(void *arg) |
{ |
struct multiboot_info *mb = (struct multiboot_info *)arg; |
INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG); |
RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD); |
RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_SOFT); |
RR_register_level(RRTICK, RR_MAIN_YES, mb); |
dummy_register_level(); |
SEM_register_module(); |
CABS_register_module(); |
PI_register_module(); |
return TICK; |
} |
90,7 → 90,18 |
HARTPORT_init(); |
KEYB_init(NULL); |
__call_main__(mb); |
return (void *)0; |
} |
void app_mutex_init(mutex_t *m) |
{ |
PI_mutexattr_t attr; |
PI_mutexattr_default(attr); |
mutex_init(m, &attr); |
} |
/demos/trunk/jumpball/demo.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: demo.c,v 1.5 2004-04-17 17:16:46 giacomo Exp $ |
CVS : $Id: demo.c,v 1.4 2003-05-01 19:43:16 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.5 $ |
Last update: $Date: 2004-04-17 17:16:46 $ |
Revision: $Revision: 1.4 $ |
Last update: $Date: 2003-05-01 19:43:16 $ |
------------ |
**/ |
49,7 → 49,12 |
#include <kernel/func.h> |
#include <string.h> |
#include <stdlib.h> |
#include <drivers/keyb.h> |
#include <drivers/glib.h> |
/* graphic mutex... */ |
mutex_t mutex; |
/* useful colors... */ |
int white; |
int black; |
56,75 → 61,8 |
int red; |
int gray; |
PID shutdown_task_PID = -1; |
void app_mutex_init(mutex_t *m); |
int device_drivers_close() { |
FB26_close(FRAME_BUFFER_DEVICE); |
KEYB26_close(); |
INPUT26_close(); |
return 0; |
} |
int device_drivers_init() { |
int res; |
KEYB_PARMS kparms = BASE_KEYB; |
LINUXC26_register_module(); |
PCI26_init(); |
INPUT26_init(); |
keyb_def_ctrlC(kparms, NULL); |
KEYB26_init(&kparms); |
FB26_init(); |
res = FB26_open(FRAME_BUFFER_DEVICE); |
if (res) { |
cprintf("Error: Cannot open graphical mode\n"); |
KEYB26_close(); |
INPUT26_close(); |
sys_end(); |
} |
FB26_use_grx(FRAME_BUFFER_DEVICE); |
FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16"); |
return 0; |
} |
TASK shutdown_task_body(void *arg) { |
device_drivers_close(); |
sys_shutdown_message("-- S.Ha.R.K. Closed --\n"); |
sys_end(); |
return NULL; |
} |
void set_shutdown_task() { |
NRT_TASK_MODEL nrt; |
nrt_task_default_model(nrt); |
shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL); |
if (shutdown_task_PID == NIL) { |
sys_shutdown_message("Error: Cannot create shutdown task\n"); |
sys_end(); |
} |
} |
static void version( void ) |
{ |
cprintf( "S.Ha.R.K. Jumpball Demo 1.0\n" ); |
197,9 → 135,17 |
#endif |
} |
void my_close(void *arg) |
{ |
grx_close(); |
kern_printf("my_close\n"); |
} |
void endfun(KEY_EVT *k) |
{ |
task_activate(shutdown_task_PID); |
cprintf("Ending...\n"); |
sys_end(); |
} |
void zerofun(KEY_EVT *k) |
210,38 → 156,43 |
int main(int argc, char **argv) |
{ |
int modenum; |
KEY_EVT k; |
srand(4); |
version(); |
set_shutdown_task(); |
device_drivers_init(); |
srand(4); |
keyb_set_map(itaMap); |
k.flag = CNTR_BIT; |
k.scan = KEY_C; |
k.ascii = 'c'; |
k.status = KEY_PRESSED; |
keyb_hook(k,endfun,FALSE); |
keyb_hook(k,endfun); |
k.flag = CNTL_BIT; |
k.scan = KEY_C; |
k.ascii = 'c'; |
k.status = KEY_PRESSED; |
keyb_hook(k,endfun,FALSE); |
keyb_hook(k,endfun); |
k.flag = ALTL_BIT; |
k.scan = KEY_C; |
k.ascii = 'c'; |
k.status = KEY_PRESSED; |
keyb_hook(k,zerofun,FALSE); |
keyb_hook(k,zerofun); |
k.flag = 0; |
k.scan = KEY_ENT; |
k.ascii = 13; |
k.status = KEY_PRESSED; |
keyb_hook(k,endfun,FALSE); |
keyb_hook(k,endfun); |
sys_atrunlevel(my_close, NULL, RUNLEVEL_BEFORE_EXIT); |
grx_init(); |
modenum = grx_getmode(640, 480, 16); |
grx_setmode(modenum); |
/* init the graphic mutex */ |
app_mutex_init(&mutex); |
/* useful colors ... */ |
white = rgb16(255,255,255); |
black = rgb16(0,0,0); |
/demos/trunk/jumpball/ern.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: ern.c,v 1.2 2004-04-17 17:16:47 giacomo Exp $ |
CVS : $Id: ern.c,v 1.1 2003-05-01 19:43:16 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2004-04-17 17:16:47 $ |
Revision: $Revision: 1.1 $ |
Last update: $Date: 2003-05-01 19:43:16 $ |
------------ |
**/ |
46,7 → 46,6 |
*/ |
#include "kernel/kern.h" |
#include "modules/intdrive.h" |
#include "modules/edf.h" |
#include "modules/rr.h" |
#include "modules/rrsoft.h" |
55,32 → 54,34 |
#include "modules/sem.h" |
#include "modules/hartport.h" |
#include "modules/cabs.h" |
#include "modules/nop.h" |
#include "drivers/keyb.h" |
/*+ sysyem tick in us +*/ |
#define TICK 0 |
/*+ RR tick in us +*/ |
//#define RRTICK 10000 |
#define RRTICK 2000 |
/*+ Interrupt Server +*/ |
#define INTDRIVE_Q 1000 |
#define INTDRIVE_T 10000 |
#define INTDRIVE_FLAG 0 |
TIME __kernel_register_levels__(void *arg) |
{ |
struct multiboot_info *mb = (struct multiboot_info *)arg; |
INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG); |
EDF_register_level(EDF_ENABLE_ALL); |
RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT); |
RR_register_level(RRTICK, RR_MAIN_YES, mb); |
dummy_register_level(); |
SEM_register_module(); |
CABS_register_module(); |
NOP_register_module(); |
return TICK; |
} |
90,7 → 91,18 |
HARTPORT_init(); |
KEYB_init(NULL); |
__call_main__(mb); |
return (void *)0; |
} |
void app_mutex_init(mutex_t *m) |
{ |
NOP_mutexattr_t attr; |
NOP_mutexattr_default(attr); |
mutex_init(m, &attr); |
} |
/demos/trunk/jumpball/jetctrl.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: jetctrl.c,v 1.3 2004-04-17 17:16:47 giacomo Exp $ |
CVS : $Id: jetctrl.c,v 1.2 2003-05-01 19:43:17 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2004-04-17 17:16:47 $ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2003-05-01 19:43:17 $ |
------------ |
**/ |
75,6 → 75,7 |
TIMESPEC_ASSIGN(&last, &now); |
last_dummy = now_dummy; |
mutex_lock(&mutex); |
grx_line(JET_DUMMY_X+x,JET_DUMMY_Y, |
JET_DUMMY_X+x,JET_DUMMY_Y+height ,black); |
grx_line(JET_DUMMY_X+x,JET_DUMMY_Y+height, |
81,6 → 82,7 |
JET_DUMMY_X+x,JET_DUMMY_Y+JET_DUMMY_HEIGHT,white); |
grx_line(JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y, |
JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y+JET_DUMMY_HEIGHT,255); |
mutex_unlock(&mutex); |
x = (x+1)%JET_DUMMY_WIDTH; |
103,13 → 105,17 |
if (jet_getstat(i, &sum, &max, &n, NULL) != -1) { |
if (!n) n=1; |
sprintf(st, "%6d %6d %10s", (int)sum/n, (int)max, proc_table[i].name); |
mutex_lock(&mutex); |
grx_text(st, 384, JET_Y_NAME+16+printed*8, gray, black); |
mutex_unlock(&mutex); |
printed++; |
} |
} |
while (printed<JET_NTASK) { |
mutex_lock(&mutex); |
grx_text(" ", |
384, JET_Y_NAME+16+printed*8, gray, black); |
mutex_unlock(&mutex); |
printed++; |
} |
task_endcycle(); |
151,6 → 157,7 |
slides[i] = (int)( (((float)total[i])/max) * JET_SLIDE_WIDTH); |
// print the data |
mutex_lock(&mutex); |
for (i=0; i<JET_NTASK; i++) { |
grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8, |
JET_SLIDE_X+slides[i], JET_Y_NAME+23+i*8, gray); |
163,6 → 170,7 |
JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+20+i*8, black); |
i++; |
} |
mutex_unlock(&mutex); |
task_endcycle(); |
} |
} |
193,7 → 201,7 |
PID p3, p4, p5; |
soft_task_default_model(m3); |
soft_task_def_level(m3,2); |
soft_task_def_level(m3,1); |
soft_task_def_period(m3, PERIOD_JETCTRL); |
soft_task_def_met(m3, WCET_JETCTRL); |
soft_task_def_ctrl_jet(m3); |
202,11 → 210,11 |
if (p3 == -1) { |
sys_shutdown_message("Could not create task <jetctrl> errno=%d", |
errno); |
task_activate(shutdown_task_PID); |
sys_end(); |
} |
soft_task_default_model(m4); |
soft_task_def_level(m4,2); |
soft_task_def_level(m4,1); |
soft_task_def_period(m4, PERIOD_JETDUMMY); |
soft_task_def_met(m4, WCET_JETDUMMY); |
soft_task_def_group(m4, 1); |
216,11 → 224,11 |
if (p4 == -1) { |
sys_shutdown_message("Could not create task <jetdummy> errno=%d", |
errno); |
task_activate(shutdown_task_PID); |
sys_end(); |
} |
soft_task_default_model(m5); |
soft_task_def_level(m5,2); |
soft_task_def_level(m5,1); |
soft_task_def_period(m5, PERIOD_JETSLIDE); |
soft_task_def_met(m5, WCET_JETSLIDE); |
soft_task_def_group(m5, 1); |
230,7 → 238,7 |
if (p5 == -1) { |
sys_shutdown_message("Could not create task <jetslide> errno=%d", |
errno); |
task_activate(shutdown_task_PID); |
sys_end(); |
} |
} |
/demos/trunk/jumpball/ecp.c |
---|
18,11 → 18,11 |
/** |
------------ |
CVS : $Id: ecp.c,v 1.2 2004-04-17 17:16:46 giacomo Exp $ |
CVS : $Id: ecp.c,v 1.1 2003-05-01 19:43:16 pj Exp $ |
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2004-04-17 17:16:46 $ |
Revision: $Revision: 1.1 $ |
Last update: $Date: 2003-05-01 19:43:16 $ |
------------ |
**/ |
46,7 → 46,6 |
*/ |
#include "kernel/kern.h" |
#include "modules/intdrive.h" |
#include "modules/edf.h" |
#include "modules/cbs.h" |
#include "modules/rr.h" |
55,30 → 54,31 |
#include "modules/sem.h" |
#include "modules/hartport.h" |
#include "modules/cabs.h" |
#include "modules/pi.h" |
#include "drivers/keyb.h" |
/*+ sysyem tick in us +*/ |
#define TICK 0 |
/*+ RR tick in us +*/ |
//#define RRTICK 10000 |
#define RRTICK 2000 |
/*+ Interrupt Server +*/ |
#define INTDRIVE_Q 1000 |
#define INTDRIVE_T 10000 |
#define INTDRIVE_FLAG 0 |
TIME __kernel_register_levels__(void *arg) |
{ |
struct multiboot_info *mb = (struct multiboot_info *)arg; |
INTDRIVE_register_level(INTDRIVE_Q,INTDRIVE_T,INTDRIVE_FLAG); |
EDF_register_level(EDF_ENABLE_ALL); |
CBS_register_level(CBS_ENABLE_ALL, 1); |
CBS_register_level(CBS_ENABLE_ALL, 0); |
RR_register_level(RRTICK, RR_MAIN_YES, mb); |
dummy_register_level(); |
SEM_register_module(); |
CABS_register_module(); |
PI_register_module(); |
return TICK; |
} |
89,7 → 89,18 |
HARTPORT_init(); |
KEYB_init(NULL); |
__call_main__(mb); |
return (void *)0; |
} |
void app_mutex_init(mutex_t *m) |
{ |
PI_mutexattr_t attr; |
PI_mutexattr_default(attr); |
mutex_init(m, &attr); |
} |
/demos/trunk/jumpball/makefile |
---|
12,13 → 12,13 |
include $(BASE)/config/example.mk |
ecp: |
make -f $(SUBMAKE) APP=ecp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __NEWPCI__ __INPUT__ __FB__" |
make -f $(SUBMAKE) APP=ecp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__OLDCHAR__ __GRX__" |
ern: |
make -f $(SUBMAKE) APP=ern INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __NEWPCI__ __INPUT__ __FB__" |
make -f $(SUBMAKE) APP=ern INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__OLDCHAR__ __GRX__" |
rrp: |
make -f $(SUBMAKE) APP=rrp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __NEWPCI__ __INPUT__ __FB__" |
make -f $(SUBMAKE) APP=rrp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__OLDCHAR__ __GRX__" |
rrn: |
make -f $(SUBMAKE) APP=rrn INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __NEWPCI__ __INPUT__ __FB__" |
make -f $(SUBMAKE) APP=rrn INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__OLDCHAR__ __GRX__" |