61,8 → 61,33 |
|
|
|
/* 10% */ |
struct timespec decoderPeriod = {0,30000000}; |
struct timespec decoderBudget = {0,3000000}; |
|
/* 10% */ |
struct timespec readTaskPeriod = {0,30000000}; |
struct timespec readTaskBudget = {0,3000000}; |
|
/* 45% */ |
struct timespec displayPeriod = {0,40000000}; |
struct timespec displayBudget = {0,18000000}; |
|
// 5 % |
struct timespec overloadPeriod = {0,10000000}; |
struct timespec overloadBudget = {0,500000}; |
|
fsf_server_id_t decoderServer; |
fsf_server_id_t readTaskServer; |
fsf_server_id_t displayServer; |
fsf_server_id_t overloadServer; |
|
fsf_contract_parameters_t overloadContract; |
fsf_contract_parameters_t decoderContract; |
fsf_contract_parameters_t readTaskContract; |
fsf_contract_parameters_t displayContract; |
|
|
void program_end() |
{ |
|
116,8 → 141,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
displayTask,NULL); |
if (err) { |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
164,8 → 189,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
readTask,NULL); |
if (err) { |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
212,8 → 237,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
mpeg2decoder,NULL); |
if (err) { |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
261,8 → 286,8 |
err = fsf_create_local_thread(server,(fsf_sched_params_t *)(&pr), &j,NULL, |
overLoadTask,NULL); |
if (err) { |
grx_close(); |
grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
//grx_close(); |
//grx_text("failed to create displayTask",0,0,rgb16(255,255,255),0); |
exit(err); |
} |
task_activate(j); |
285,46 → 310,22 |
int i = 1; |
char tmp[100]; |
struct timespec simtime; |
//KEY_EVT k; |
KEY_EVT k; |
union sigval no_sigval = {0}; |
|
PI_mutexattr_t a; |
KEY_EVT ev; |
|
/* 10% */ |
struct timespec decoderPeriod = {0,30000000}; |
struct timespec decoderBudget = {0,3000000}; |
|
/* 10% */ |
struct timespec readTaskPeriod = {0,30000000}; |
struct timespec readTaskBudget = {0,3000000}; |
|
/* 45% */ |
struct timespec displayPeriod = {0,40000000}; |
struct timespec displayBudget = {0,18000000}; |
|
// 5 % |
struct timespec overloadPeriod = {0,10000000}; |
struct timespec overloadBudget = {0,500000}; |
|
fsf_server_id_t decoderServer; |
fsf_server_id_t readTaskServer; |
fsf_server_id_t displayServer; |
fsf_server_id_t overloadServer; |
|
fsf_contract_parameters_t overloadContract; |
fsf_contract_parameters_t decoderContract; |
fsf_contract_parameters_t readTaskContract; |
fsf_contract_parameters_t displayContract; |
|
union sigval sval; |
|
|
//ev.ascii = 'c'; |
//ev.scan = KEY_C; |
//ev.status = KEY_PRESSED; |
//ev.flag = CNTR_BIT; |
//keyb_hook(ev, ending_system, FALSE); |
ev.ascii = 'c'; |
ev.scan = KEY_C; |
ev.status = KEY_PRESSED; |
ev.flag = CNTR_BIT; |
keyb_hook(ev, ending_system, FALSE); |
|
PI_mutexattr_default(a); |
fsf_init(); |
403,26 → 404,28 |
exit(err); |
} |
|
print_server_list(); |
|
|
// Create and bind different ports to communication links (This ports a declared in global.h) |
if((readTaskPort = port_create(readFilePortName, sizeof(struct readDecodeMessage), NUMBER_OF_MESSAGE, STREAM, WRITE)) == -1) |
{ |
grx_text("failed to create readTask Port",0,0,rgb16(255,255,255),0); |
//grx_text("failed to create readTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((decoderTaskPort->displayTaskPort = port_create(displayPortName, sizeof(struct decodeDisplayMessage), NUMBER_OF_MESSAGE, STREAM, WRITE)) == -1) |
{ |
grx_text("failed to create displayTask Port",0,0,rgb16(255,255,255),0); |
//grx_text("failed to create displayTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((decoderTaskPort->readTaskPort = port_connect(readFilePortName, sizeof(struct readDecodeMessage), STREAM, READ)) == -1) |
{ |
grx_text("failed to connect to readTask Port",0,0,rgb16(255,255,255),0); |
//grx_text("failed to connect to readTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
if((displayTaskPort = port_connect(displayPortName, sizeof(struct decodeDisplayMessage), STREAM, READ)) == -1) |
{ |
grx_text("failed to connect to displayTask Port",0,0,rgb16(255,255,255),0); |
//grx_text("failed to connect to displayTask Port",0,0,rgb16(255,255,255),0); |
exit(-1); |
} |
|
436,6 → 439,7 |
exit(-1); |
} |
|
/* |
kern_gettime(&simtime); |
for (i=1; i<10;i++) { |
simtime.tv_sec+=1; |
444,22 → 448,23 |
|
simtime.tv_sec+=10; |
kern_event_post(&simtime,(void *)((void *)(ending_system)), NULL); |
/*ch = keyb_getch(BLOCK); |
|
*/ |
ch = keyb_getch(BLOCK); |
kern_printf("Main %d\n", ch); |
while(ch != ESC) { |
|
switch (ch) |
{ |
|
case '1': */ |
case '1': |
addReadTaskToServer(readTaskServer); |
addDecoderThreadToServer(decoderServer); |
addDisplayTaskToServer(displayServer); |
/* |
|
break; |
case '2': |
sprintf(tmp,"Number of dummy task: %d", i); |
grx_text(tmp,0,0,rgb16(255,255,255),0); |
//grx_text(tmp,0,0,rgb16(255,255,255),0); |
i++; |
addOverLoadTaskToServer(overloadServer); |
break; |
471,10 → 476,10 |
ch = keyb_getch(BLOCK); |
|
} |
*/ |
//ending_system(NULL); |
while(1); |
|
ending_system(NULL); |
// while(1); |
|
return 0; |
|
} |