?? navigator.c
字號:
#include "navigator.h"
EXPORT ID main_tid = -1; /* main task ID */
EXPORT ID mbf_id; /* message buffer ID */
/*
* handling while maintask is starting
*/
LOCAL void start_proc()
{
union {
T_CTSK ctsk; /* create task information */
T_CMBF cmbf; /* message buffer create information */
} s;
/* create message buffer */
s.cmbf.exinf = NULL; /* extend information */
s.cmbf.mbfatr = TA_TFIFO; /* message buffer attribute */
s.cmbf.bufsz = 128; /* size of message buffer */
s.cmbf.maxmsz = sizeof(int); /* maximum length of message */
mbf_id = tk_cre_mbf( &(s.cmbf) ); /* create message buffer */
/* create key input task */
s.ctsk.exinf = NULL; /* extend information */
s.ctsk.tskatr = TA_HLNG | TA_RNG0; /* task attribute */
s.ctsk.task = input_task; /* task start address */
s.ctsk.itskpri = 90; /* task start priority */
s.ctsk.stksz = 1024 * 4; /* stack size */
input_tid = tk_cre_tsk( &(s.ctsk) ); /* create task */
tk_sta_tsk( input_tid, 0 ); /* start task */
/* create gps task */
s.ctsk.exinf = NULL; /* extend information */
s.ctsk.tskatr = TA_HLNG | TA_RNG0; /* task attribute */
s.ctsk.task = gps_task;; /* task start address */
s.ctsk.itskpri = PRI2; /* task start priority */
s.ctsk.stksz = 1024 * 4; /* stack size */
gps_tid = tk_cre_tsk( &(s.ctsk) ); /* create task */
tk_sta_tsk( gps_tid, 0 ); /* start task */
/* create draw map task */
s.ctsk.exinf = NULL; /* extend information */
s.ctsk.tskatr = TA_HLNG | TA_RNG0; /* task attribute */
s.ctsk.task = draw_map_task;; /* task start address */
s.ctsk.itskpri = PRI3; /* task start priority */
s.ctsk.stksz = 1024 * 4; /* stack size */
draw_map_tid = tk_cre_tsk( &(s.ctsk) ); /* create task */
tk_sta_tsk( draw_map_tid, 0 ); /* start task */
}
/*
* handling when maintask is terminated
*/
LOCAL void end_proc()
{
/* break count up task */
tk_rel_wai( draw_map_tid );
/* abort gps task */
tk_rel_wai( gps_tid );
/* abort key input task */
tk_rel_wai( input_tid );
/* delete message buffer */
tk_del_mbf( mbf_id );
}
/*
* main task handling body
*/
LOCAL void main_proc()
{
int m=0; /* message */
for(;;){
tk_rcv_mbf( mbf_id, &m, TMO_FEVR ); /* receive message */
if (m == MSG_EXIT){
exitpro();
break;
}
switch(m){
case MSG_ZOOM_IN :
zoom(0.9);
break;
case MSG_ZOOM_OUT:
zoom(1.1);
break;
}
}
}
/*
* main task
*/
EXPORT void main_task( INT stacd, VP exinf )
{
/* handling while maintask is starting */
start_proc();
/* main task handling body */
main_proc();
/* handling when maintask is terminated */
end_proc();
/* terminate and delete main task */
tk_exd_tsk();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -