43,9 → 43,10 |
*/ |
|
#include <kernel/kern.h> |
#include <drivers/keyb.h> |
#include <drivers/glib.h> |
|
#include <drivers/shark_keyb26.h> |
#include <drivers/shark_fb26.h> |
|
#include <drivers/pci6025e/timer.h> |
#include <drivers/pci6025e/dio_ppi.h> |
|
78,7 → 79,7 |
KEY_EVT k; |
SOFT_TASK_MODEL show_per_mod, show_aper_mod; |
PID show_per_pid; |
int result, modenum; |
int result; |
DWORD init_val_c0, init_val_c1; |
|
if(argc >= 3){ |
97,19 → 98,19 |
init_val_c1 = 0x00000000; |
} |
|
sys_atrunlevel(close_event, NULL, RUNLEVEL_BEFORE_EXIT); |
|
k.flag = CNTL_BIT; |
k.scan = KEY_X; |
k.ascii = 'x'; |
keyb_hook(k, endfun); |
k.status = KEY_PRESSED; |
keyb_hook(k, endfun, FALSE); |
|
k.flag = CNTR_BIT; |
keyb_hook(k, endfun); |
k.status = KEY_PRESSED; |
keyb_hook(k, endfun, FALSE); |
|
soft_task_default_model(show_aper_mod); |
soft_task_def_aperiodic(show_aper_mod); |
soft_task_def_level(show_aper_mod, 1); |
soft_task_def_level(show_aper_mod, 2); |
soft_task_def_period(show_aper_mod, 250000); |
soft_task_def_met(show_aper_mod, 30000); |
soft_task_def_wcet(show_aper_mod, 60000); |
121,19 → 122,22 |
k.flag = 0; |
k.scan = KEY_S; |
k.ascii = 's'; |
keyb_hook(k, show_evt); |
k.status = KEY_PRESSED; |
keyb_hook(k, show_evt, FALSE); |
|
k.flag = 0; |
k.scan = KEY_G; |
k.ascii = 'g'; |
keyb_hook(k, gate_change); |
k.status = KEY_PRESSED; |
keyb_hook(k, gate_change, FALSE); |
|
k.scan = KEY_H; |
k.ascii = 'h'; |
keyb_hook(k, gate_change); |
k.status = KEY_PRESSED; |
keyb_hook(k, gate_change, FALSE); |
|
soft_task_default_model(show_per_mod); |
soft_task_def_level(show_per_mod, 1); |
soft_task_def_level(show_per_mod, 2); |
soft_task_def_met(show_per_mod, 1000); |
soft_task_def_period(show_per_mod, 10000); |
if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){ |
141,28 → 145,11 |
sys_end(); |
} |
|
if(pci_init()==-1){ |
sys = 20; |
sys_end(); |
} |
|
if(!reMap()){ |
sys = 21; |
sys_end(); |
} |
|
if(grx_init()==-1){ |
sys = 30; |
sys_end(); |
} |
|
if( (modenum = grx_getmode(800, 600, 16)) == -1){ |
sys = 31; |
sys_end(); |
} |
|
grx_setmode(modenum); |
|
drawInterface(); |
|
//Init DIO lines used to manage counters gates |
314,6 → 301,8 |
|
void endfun(KEY_EVT *k) |
{ |
close_event(NULL); |
|
sys_end(); |
} |
|
348,19 → 337,17 |
void close_event(void *arg) |
{ |
TIM_disarm(2); //Disable both two counters |
grx_close(); |
handler_remove(INT_NO); |
|
|
switch(sys){ |
case 0: cprintf("OK\n"); break; |
case 10: cprintf("Task <show aperiodic> down\n"); break; |
case 11: cprintf("Task <show periodic> down\n"); break; |
case 20: cprintf("No PCI bus\n"); break; |
case 21: cprintf("No National board on PCI bus\n"); break; |
case 30: cprintf("No graphic can be initialized\n"); break; |
case 31: cprintf("This graphic mode cannot be supported\n"); break; |
default: cprintf("???????????\n"); break; |
case 0: sys_shutdown_message("OK\n"); break; |
case 10: sys_shutdown_message("Task <show aperiodic> down\n"); break; |
case 11: sys_shutdown_message("Task <show periodic> down\n"); break; |
case 20: sys_shutdown_message("No PCI bus\n"); break; |
case 21: sys_shutdown_message("No National board on PCI bus\n"); break; |
case 30: sys_shutdown_message("No graphic can be initialized\n"); break; |
case 31: sys_shutdown_message("This graphic mode cannot be supported\n"); break; |
default: sys_shutdown_message("???????????\n"); break; |
} |
} |
|