]> rtime.felk.cvut.cz Git - arc.git/blobdiff - 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
diff --git a/boards/ti_tms570ls/examples/tms570_hdk_can/Tasks.c b/boards/ti_tms570ls/examples/tms570_hdk_can/Tasks.c
new file mode 100644 (file)
index 0000000..ac4638a
--- /dev/null
@@ -0,0 +1,116 @@
+/*\r
+* Configuration of module: Os (Tasks.c)\r
+*\r
+* Created by:              \r
+* Copyright:               \r
+*\r
+* Configured for (MCU):    TMS570\r
+*\r
+* Module vendor:           ArcCore\r
+* Generator version:       2.0.34\r
+*\r
+* Generated by Arctic Studio (http://arccore.com) \r
+*           on Tue Jul 05 15:02:10 CEST 2011\r
+*/\r
+\r
+#include "Os.h"\r
+#include "EcuM.h"\r
+#include "Com.h"\r
+#include "CanIf.h"\r
+#include "Dio.h"\r
+\r
+// #define USE_LDEBUG_PRINTF // Uncomment this to turn debug statements on.\r
+#include "debug.h"\r
+\r
+// Tasks\r
+void OsIdle( void ) {\r
+       while(1);\r
+}\r
+\r
+void StartupTask( void ) {\r
+\r
+       EcuM_StartupTwo();\r
+\r
+       CanIf_InitController(CANIF_Channel_1, CANIF_Channel_1_CONFIG_0);\r
+       CanIf_SetControllerMode(CANIF_Channel_1, CANIF_CS_STARTED);\r
+       CanIf_InitController(CANIF_Channel_2, CANIF_Channel_2_CONFIG_0);\r
+       CanIf_SetControllerMode(CANIF_Channel_2, CANIF_CS_STARTED);\r
+       //Com_IpduGroupStart(CanDbImportedPdus, 1);\r
+       Com_IpduGroupStart(ComPduGroup, 0);\r
+\r
+       SetEvent(TASK_ID_StepTask, EVENT_MASK_StepEvent);\r
+\r
+       TerminateTask();\r
+}\r
+\r
+void MainTask( void ) {\r
+       Com_MainFunctionTx();   // Com_MainFunctionRx();\r
+       Com_MainFunctionRx();   // Com_MainFunctionTx();\r
+       TerminateTask();\r
+}\r
+\r
+// Task that toggles the LED\r
+Dio_LevelType level = 1;\r
+void BlinkerTask( void ) {\r
+       level = !level;\r
+       Dio_WriteChannel(DIO_CHANNEL_NAME_LED_CHANNEL, level);\r
+       TerminateTask();\r
+}\r
+\r
+// Hooks\r
+#define ERROR_LOG_SIZE 20\r
+\r
+struct LogBad_s {\r
+       uint32_t param1;\r
+       uint32_t param2;\r
+       uint32_t param3;\r
+       TaskType taskId;\r
+       OsServiceIdType serviceId;\r
+       StatusType error;\r
+};\r
+\r
+void ErrorHook ( StatusType Error ) {\r
+\r
+       TaskType task;\r
+       static struct LogBad_s LogBad[ERROR_LOG_SIZE];\r
+       static uint8_t ErrorCount = 0;\r
+       GetTaskID(&task);\r
+       OsServiceIdType service = OSErrorGetServiceId();\r
+       \r
+       LDEBUG_PRINTF("## ErrorHook err=%d\n",Error);\r
+\r
+       /* Log the errors in a buffer for later review */\r
+       LogBad[ErrorCount].param1 = os_error.param1;\r
+       LogBad[ErrorCount].param2 = os_error.param2;\r
+       LogBad[ErrorCount].param3 = os_error.param3;\r
+       LogBad[ErrorCount].serviceId = service;\r
+       LogBad[ErrorCount].taskId = task;\r
+       LogBad[ErrorCount].error = Error;\r
+\r
+       ErrorCount++;\r
+\r
+       // Stall if buffer is full.\r
+       while(ErrorCount >= ERROR_LOG_SIZE);\r
+\r
+}\r
+\r
+void PostTaskHook ( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+       LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
+}\r
+\r
+void PreTaskHook ( void ) {\r
+       TaskType task;\r
+       GetTaskID(&task);\r
+       LDEBUG_PRINTF("## PreTaskHook, taskid=%d\n",task);\r
+}\r
+\r
+void ShutdownHook ( StatusType Error ) {\r
+       LDEBUG_PRINTF("## ShutdownHook\n");\r
+       while(1);\r
+}\r
+\r
+void StartupHook ( void ) {\r
+       LDEBUG_PRINTF("## StartupHook\n");\r
+}\r