OSDN Git Service

Update lejos_osek to nxtOSEK_v205b0.zip
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples_c / nxtremocon / ecrobot_main.c
1 /*****************************************************************************\r
2  * FILE: ecrobot_main.c\r
3  *\r
4  * MODEL: joystick_ctrl.mdl\r
5  *\r
6  * APP SUBSYSTEM: Joystick_app\r
7  *\r
8  * PLATFORM: LEJOS+OSEK\r
9  *\r
10  * DATE: 22-Mar-2008 00:27:20\r
11  *\r
12  * TOOL VERSION:\r
13  *   Simulink: 7.0 (R2007b) 02-Aug-2007\r
14  *   Real-Time Workshop: 7.0 (R2007b) 02-Aug-2007\r
15  *   Real-Time Workshop Embedded Coder: 5.0 (R2007b) 02-Aug-2007\r
16  *****************************************************************************/\r
17 /*============================================================================\r
18  * RTW-EC generated functions for Function-Call Subsystems:\r
19  *   Fcn1: executed at every 0.01[sec]\r
20  *   Fcn2: executed at every 0.05[sec]\r
21  *\r
22  * RTW-EC generated model initialize function:\r
23  *   Joystick_app_initialize\r
24  *===========================================================================*/\r
25 #include "kernel.h"\r
26 #include "kernel_id.h"\r
27 #include "ecrobot_interface.h"\r
28 #include "Joystick_app.h"\r
29 \r
30 /*============================================================================\r
31  * OSEK declarations\r
32  *===========================================================================*/\r
33 DeclareCounter(SysTimerCnt);\r
34 DeclareTask(OSEK_Task_ECRobotInitialize);\r
35 DeclareTask(OSEK_Task_Fcn1);\r
36 DeclareTask(OSEK_Task_Fcn2);\r
37 DeclareTask(OSEK_Task_ECRobotLCDMonitor);\r
38 \r
39 /*============================================================================\r
40  * Function: ecrobot_device_initialize\r
41  */\r
42 void ecrobot_device_initialize(void)\r
43 {\r
44   const U8 bd_addr[7] = {0x00, 0x16, 0x53, 0x04, 0x7E, 0x2D, 0x00};\r
45   /* Initialize ECRobot used devices */\r
46   ecrobot_init_accel_sensor(NXT_PORT_S1);\r
47   ecrobot_init_bt_master(bd_addr, "MATLAB");\r
48 }\r
49 \r
50 /*============================================================================\r
51  * Function: ecrobot_device_terminate\r
52  */\r
53 void ecrobot_device_terminate(void)\r
54 {\r
55   /* Terminate ECRobot used devices */\r
56   ecrobot_term_accel_sensor(NXT_PORT_S1);\r
57   ecrobot_term_bt_connection();\r
58 }\r
59 \r
60 /*============================================================================\r
61  * Function: Invoked from a category 2 ISR\r
62  */\r
63 void user_1ms_isr_type2(void)\r
64 {\r
65   StatusType ercd;\r
66 \r
67   /* Increment System Timer Count */\r
68   ercd = SignalCounter(SysTimerCnt);\r
69   if (ercd != E_OK)\r
70   {\r
71     ShutdownOS(ercd);\r
72   }\r
73 }\r
74 \r
75 /*============================================================================\r
76  * OSEK Hooks: empty functions\r
77  */\r
78 void StartupHook(void){}\r
79 \r
80 void ShutdownHook(StatusType ercd){}\r
81 \r
82 void PreTaskHook(void){}\r
83 \r
84 void PostTaskHook(void){}\r
85 \r
86 void ErrorHook(StatusType ercd){}\r
87 \r
88 /*============================================================================\r
89  * Task: OSEK_Task_Initialize\r
90  */\r
91 TASK(OSEK_Task_ECRobotInitialize)\r
92 {\r
93   /* Call Initialize Function(s) */\r
94   Joystick_app_initialize();\r
95   TerminateTask();\r
96 }\r
97 \r
98 /*============================================================================\r
99  * Task: OSEK_Task_Fcn1\r
100  */\r
101 TASK(OSEK_Task_Fcn1)\r
102 {\r
103   /* Call Fcn1 every 10[msec] */\r
104   Fcn1();\r
105 \r
106   TerminateTask();\r
107 }\r
108 \r
109 /*============================================================================\r
110  * Task: OSEK_Task_Fcn2\r
111  */\r
112 TASK(OSEK_Task_Fcn2)\r
113 {\r
114   /* Call Fcn2 every 50[msec] */\r
115   Fcn2();\r
116 \r
117   TerminateTask();\r
118 }\r
119 \r
120 /*============================================================================\r
121  * Task: OSEK_Task_ECRobotLCDMonitor\r
122  */\r
123 TASK(OSEK_Task_ECRobotLCDMonitor)\r
124 {\r
125   /* Call this function every 500[msec] */\r
126   ecrobot_status_monitor("Joystick_app");\r
127 \r
128   TerminateTask();\r
129 }\r
130 \r
131 /******************************** END OF FILE ********************************/\r