]> rtime.felk.cvut.cz Git - arc.git/blob - boards/ti_tms570ls/examples/tms570_hdk_can/Tasks.c
Added example of CAN communication for the TMS570LS31x HDK
[arc.git] / boards / ti_tms570ls / examples / tms570_hdk_can / Tasks.c
1 /*\r
2 * Configuration of module: Os (Tasks.c)\r
3 *\r
4 * Created by:              \r
5 * Copyright:               \r
6 *\r
7 * Configured for (MCU):    TMS570\r
8 *\r
9 * Module vendor:           ArcCore\r
10 * Generator version:       2.0.34\r
11 *\r
12 * Generated by Arctic Studio (http://arccore.com) \r
13 *           on Tue Jul 05 15:02:10 CEST 2011\r
14 */\r
15 \r
16 #include "Os.h"\r
17 #include "EcuM.h"\r
18 #include "Com.h"\r
19 #include "CanIf.h"\r
20 #include "Dio.h"\r
21 \r
22 // #define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
23 #include "debug.h"\r
24 \r
25 // Tasks\r
26 void OsIdle( void ) {\r
27         while(1);\r
28 }\r
29 \r
30 void StartupTask( void ) {\r
31 \r
32         EcuM_StartupTwo();\r
33 \r
34         CanIf_InitController(CANIF_Channel_1, CANIF_Channel_1_CONFIG_0);\r
35         CanIf_SetControllerMode(CANIF_Channel_1, CANIF_CS_STARTED);\r
36         CanIf_InitController(CANIF_Channel_2, CANIF_Channel_2_CONFIG_0);\r
37         CanIf_SetControllerMode(CANIF_Channel_2, CANIF_CS_STARTED);\r
38         //Com_IpduGroupStart(CanDbImportedPdus, 1);\r
39         Com_IpduGroupStart(ComPduGroup, 0);\r
40 \r
41         SetEvent(TASK_ID_StepTask, EVENT_MASK_StepEvent);\r
42 \r
43         TerminateTask();\r
44 }\r
45 \r
46 void MainTask( void ) {\r
47         Com_MainFunctionTx();   // Com_MainFunctionRx();\r
48         Com_MainFunctionRx();   // Com_MainFunctionTx();\r
49         TerminateTask();\r
50 }\r
51 \r
52 // Task that toggles the LED\r
53 Dio_LevelType level = 1;\r
54 void BlinkerTask( void ) {\r
55         level = !level;\r
56         Dio_WriteChannel(DIO_CHANNEL_NAME_LED_CHANNEL, level);\r
57         TerminateTask();\r
58 }\r
59 \r
60 // Hooks\r
61 #define ERROR_LOG_SIZE 20\r
62 \r
63 struct LogBad_s {\r
64         uint32_t param1;\r
65         uint32_t param2;\r
66         uint32_t param3;\r
67         TaskType taskId;\r
68         OsServiceIdType serviceId;\r
69         StatusType error;\r
70 };\r
71 \r
72 void ErrorHook ( StatusType Error ) {\r
73 \r
74         TaskType task;\r
75         static struct LogBad_s LogBad[ERROR_LOG_SIZE];\r
76         static uint8_t ErrorCount = 0;\r
77         GetTaskID(&task);\r
78         OsServiceIdType service = OSErrorGetServiceId();\r
79         \r
80         LDEBUG_PRINTF("## ErrorHook err=%d\n",Error);\r
81 \r
82         /* Log the errors in a buffer for later review */\r
83         LogBad[ErrorCount].param1 = os_error.param1;\r
84         LogBad[ErrorCount].param2 = os_error.param2;\r
85         LogBad[ErrorCount].param3 = os_error.param3;\r
86         LogBad[ErrorCount].serviceId = service;\r
87         LogBad[ErrorCount].taskId = task;\r
88         LogBad[ErrorCount].error = Error;\r
89 \r
90         ErrorCount++;\r
91 \r
92         // Stall if buffer is full.\r
93         while(ErrorCount >= ERROR_LOG_SIZE);\r
94 \r
95 }\r
96 \r
97 void PostTaskHook ( void ) {\r
98         TaskType task;\r
99         GetTaskID(&task);\r
100         LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
101 }\r
102 \r
103 void PreTaskHook ( void ) {\r
104         TaskType task;\r
105         GetTaskID(&task);\r
106         LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
107 }\r
108 \r
109 void ShutdownHook ( StatusType Error ) {\r
110         LDEBUG_PRINTF("## ShutdownHook\n");\r
111         while(1);\r
112 }\r
113 \r
114 void StartupHook ( void ) {\r
115         LDEBUG_PRINTF("## StartupHook\n");\r
116 }\r