Index: App/Services/CommBuffers.c =================================================================== diff -u --- App/Services/CommBuffers.c (revision 0) +++ App/Services/CommBuffers.c (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,102 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file CommBuffers.c + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief CommBuffers service module. Provides data buffering functionality. \n + * Data coming in via CAN/UART Rx interrupts can be placed in a buffer to \n + * be processed at a later time. Data is double buffered to prevent \n + * contention between Rx interrupt and the thread that is consuming the data \n + * at a later time. \n + * Data to be transmitted via CAN/UART can be placed in a buffer to be sent \n + * when the transmitter becomes available. \n + * If a buffer becomes too full to service more data, a s/w fault is triggered. + * + **************************************************************************/ + +#include "Common.h" +#include "CommBuffers.h" + +// ********** private definitions ********** + +// ********** private data ********** + +static U32 commBufferStartPos[NUM_OF_COMM_BUFFERS][2]; // for each buffer, where is start? +static U32 commBufferEndPos[NUM_OF_COMM_BUFFERS][2]; // for each buffer, where is end? +static U32 commBufferByteCount[NUM_OF_COMM_BUFFERS][2]; // for each buffer, how many bytes? +static U32 activeDoubleBuffers[NUM_OF_COMM_BUFFERS][2]; // for each buffer, which double buffer is being fed? +static U08 commBuffers[NUM_OF_COMM_BUFFERS][2][COMM_BUFFER_LENGTH]; // each is double buffered to avoid thread contention + +/************************************************************************* + * @brief initCommBuffers + * The initCommBuffers function initializes the CommBuffers module. + * @details + * Inputs : none + * Outputs : CommBuffers module initialized. + * @param none + * @return none + *************************************************************************/ +void initCommBuffers( void ) +{ + S32 b,l,d; + + // reset and zero out all buffers + for ( b = 0; b < NUM_OF_COMM_BUFFERS; b++ ) + { + for ( d = 0; d < 2; d++ ) + { + commBufferStartPos[b][d] = 0; + commBufferEndPos[b][d] = 0; + commBufferByteCount[b][d] = 0; + activeDoubleBuffers[b][d] = 0; + for ( l = 0; l < COMM_BUFFER_LENGTH; l++ ) + { + commBuffers[b][d][l] = 0; + } + } + } +} + +/************************************************************************* + * @brief addToCommBuffer + * The addToCommBuffer function adds data of specified length to a specified \n + * communication buffer. S/W fault if buffer too full to add data. + * @details + * Inputs : none + * Outputs : commBuffers[] + * @param buffer : which comm buffer to add data to + * @param data : pointer to byte array containing data to add + * @param len : length of data (in bytes) + * @return TRUE if data added to buffer successfully, FALSE if not + *************************************************************************/ +BOOL addToCommBuffer( COMM_BUFFER_T buffer, U08* data, U32 len ) +{ + BOOL result = FALSE; + + return result; +} + +/************************************************************************* + * @brief getFromCommBuffer + * The getFromCommBuffer function fills a given byte array with data from \n + * a given buffer and returns the number of bytes retrieved from the buffer. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return the number of bytes retrieved. + *************************************************************************/ +U32 getFromCommBuffer( COMM_BUFFER_T buffer, U08* data, U32 maxLen ) +{ + U32 result = 0; + + return result; +} + Index: App/Services/CommBuffers.h =================================================================== diff -u --- App/Services/CommBuffers.h (revision 0) +++ App/Services/CommBuffers.h (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,51 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file CommBuffers.h + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief header file for Communication Buffers service . + * + **************************************************************************/ + +#ifndef __COMM_BUFFERS_H__ +#define __COMM_BUFFERS_H__ + +#include "Common.h" + +// ********** public definitions ********** + +#define COMM_BUFFER_LENGTH 128 // bytes + +typedef enum Comm_Buffers +{ + COMM_BUFFER_CAN_HD_ALARM = 0, + COMM_BUFFER_CAN_DG_ALARM, + COMM_BUFFER_CAN_UI_ALARM, + COMM_BUFFER_CAN_HD_2_DG, + COMM_BUFFER_CAN_DG_2_HD, + COMM_BUFFER_CAN_HD_2_UI, + COMM_BUFFER_CAN_HD_BROADCAST, + COMM_BUFFER_CAN_DG_BROADCAST, + COMM_BUFFER_CAN_UI_2_HD, + COMM_BUFFER_CAN_UI_BROADCAST, + COMM_BUFFER_FPGA_IN, + COMM_BUFFER_FPGA_OUT, + COMM_BUFFER_DBG_IN, + COMM_BUFFER_DBG_OUT, + NUM_OF_COMM_BUFFERS +} COMM_BUFFER_T; + +// ********** public function prototypes ********** + +void initCommBuffers( void ); +BOOL addToCommBuffer( COMM_BUFFER_T buffer, U08* data, U32 len ); +U32 getFromCommBuffer( COMM_BUFFER_T buffer, U08* data, U32 maxLen ); + +#endif Index: App/Services/MsgQueues.c =================================================================== diff -u --- App/Services/MsgQueues.c (revision 0) +++ App/Services/MsgQueues.c (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,103 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file MsgQueues.c + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief MsgQueues service module. Provides message queue functionality. + * + **************************************************************************/ + +#include "Common.h" +#include "MsgQueues.h" + +// ********** private definitions ********** + +// ********** private data ********** + +/************************************************************************* + * @brief initMsgQueues + * The initMsgQueues function initializes the MsgQueues module. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return none + *************************************************************************/ +void initMsgQueues( void ) +{ + +} + +/************************************************************************* + * @brief addToMsgQueue + * The addToMsgQueue function adds a message to a given message queue. + * @details + * Inputs : none + * Outputs : none + * @param queue : the message queue to add to + * @param msg : a pointer to a message structure to add to the queue + * @return TRUE if message added to queue, FALSE if could not + *************************************************************************/ +BOOL addToMsgQueue( MSG_QUEUE_T queue, MESSAGE_T *msg ) +{ + BOOL result = FALSE; + + return result; +} + +/************************************************************************* + * @brief getFromMsgQueue + * The getFromMsgQueue function retrieves the next message from a given \n + * message queue. + * @details + * Inputs : none + * Outputs : none + * @param queue : the message queue to retrieve from + * @param msg : a pointer to a message structure to stuff + * @return TRUE if a message was found to retrieve, FALSE if not + *************************************************************************/ +BOOL getFromMsgQueue( MSG_QUEUE_T queue, MESSAGE_T *msg ) +{ + BOOL result = FALSE; + + return result; +} + +/************************************************************************* + * @brief isMsgQueueEmpty + * The isMsgQueueEmpty function determines whether a given message queue is empty. + * @details + * Inputs : none + * Outputs : none + * @param queue : the message queue to check + * @return TRUE if a given message queue is empty, FALSE if not + *************************************************************************/ +BOOL isMsgQueueEmpty( MSG_QUEUE_T queue ) +{ + BOOL result = FALSE; + + return result; +} + +/************************************************************************* + * @brief isMsgQueueFull + * The isMsgQueueFull function determines whether a given message queue is full. + * @details + * Inputs : none + * Outputs : none + * @param queue : the message queue to check + * @return TRUE if the given message queue is full, FALSE if not + *************************************************************************/ +BOOL isMsgQueueFull( MSG_QUEUE_T queue ) +{ + BOOL result = FALSE; + + return result; +} Index: App/Services/MsgQueues.h =================================================================== diff -u --- App/Services/MsgQueues.h (revision 0) +++ App/Services/MsgQueues.h (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,70 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file MsgQueues.h + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief header file for Message Queues service . + * + **************************************************************************/ + +#ifndef __MSG_QUEUES_H__ +#define __MSG_QUEUES_H__ + +#include "Common.h" + +// ********** public definitions ********** + +#define MAX_MSG_QUEUE_SIZE 25 // bytes +#define MAX_MSG_CARGO_SIZE 255 // bytes + +typedef enum Msg_Queues +{ + MSG_Q_CAN_HD_ALARM = 0, + MSG_Q_CAN_DG_ALARM, + MSG_Q_CAN_UI_ALARM, + MSG_Q_CAN_HD_2_DG, + MSG_Q_CAN_DG_2_HD, + MSG_Q_CAN_HD_2_UI, + MSG_Q_CAN_HD_BROADCAST, + MSG_Q_CAN_DG_BROADCAST, + MSG_Q_CAN_UI_2_HD, + MSG_Q_CAN_UI_BROADCAST, + MSG_Q_DBG_IN, + MSG_Q_DBG_OUT, + NUM_OF_MSG_QUEUES +} MSG_QUEUE_T; + +typedef struct +{ + U16 msgID; // ID of message + U08 cargoLen; // length of cargo in bytes +} MESSAGE_HEADER_T; + +typedef struct +{ + MESSAGE_HEADER_T hdr; // message header + U08 cargo[MAX_MSG_CARGO_SIZE]; // message cargo +} MESSAGE_T; + +typedef struct +{ + MESSAGE_T msg; // message + U08 crc; // message CRC +} MESSAGE_WRAPPER_T; + +// ********** public function prototypes ********** + +void initMsgQueues( void ); +BOOL addToMsgQueue( MSG_QUEUE_T queue, MESSAGE_T *msg ); +BOOL getFromMsgQueue( MSG_QUEUE_T queue, MESSAGE_T *msg ); +BOOL isMsgQueueEmpty( MSG_QUEUE_T queue ); +BOOL isMsgQueueFull( MSG_QUEUE_T queue ); + +#endif Index: App/Services/SystemComm.c =================================================================== diff -u --- App/Services/SystemComm.c (revision 0) +++ App/Services/SystemComm.c (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,40 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file SystemComm.c + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief SystemComm service module. Provides system message communication \n + * functionality. Messages can be queued for transmission. Incoming messages \n + * are processed. + * + **************************************************************************/ + +#include "Common.h" +#include "SystemComm.h" + +// ********** private definitions ********** + +// ********** private data ********** + + +/************************************************************************* + * @brief initSystemComm + * The initSystemComm function initializes the SystemComm module. + * @details + * Inputs : none + * Outputs : SystemComm module initialized. + * @param none + * @return none + *************************************************************************/ +void initSystemComm( void ) +{ +} + + Index: App/Services/SystemComm.h =================================================================== diff -u --- App/Services/SystemComm.h (revision 0) +++ App/Services/SystemComm.h (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -0,0 +1,26 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file SystemComm.h + * + * @date 08-Oct-2019 + * @author S. Nash + * + * @brief header file for System Communication service . + * + **************************************************************************/ + +#ifndef __SYSTEM_COMM_H__ +#define __SYSTEM_COMM_H__ + +#include "Common.h" + +// ********** public function prototypes ********** + +void initSystemComm( void ); + +#endif Index: Debug/ccsObjs.opt =================================================================== diff -u -r879f01d26ef663cceccf14963c09f53e72c13cec -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- Debug/ccsObjs.opt (.../ccsObjs.opt) (revision 879f01d26ef663cceccf14963c09f53e72c13cec) +++ Debug/ccsObjs.opt (.../ccsObjs.opt) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -1 +1 @@ -"./irqDispatch_a.obj" "./irqDispatch_c.obj" "./App/Contollers/AlarmLamp.obj" "./App/Contollers/Buttons.obj" "./App/Drivers/CPLD.obj" "./App/Drivers/SafetyShutdown.obj" "./App/Modes/ModeFault.obj" "./App/Modes/ModeInitPOST.obj" "./App/Modes/ModeOpParams.obj" "./App/Modes/ModePostTreat.obj" "./App/Modes/ModePreTreat.obj" "./App/Modes/ModePrescription.obj" "./App/Modes/ModeService.obj" "./App/Modes/ModeStandby.obj" "./App/Modes/ModeTreatment.obj" "./App/Modes/OperationModes.obj" "./App/Services/Timers.obj" "./App/Services/WatchdogMgmt.obj" "./App/Tasks/TaskBG.obj" "./App/Tasks/TaskGeneral.obj" "./App/Tasks/TaskPriority.obj" "./App/Tasks/TaskTimer.obj" "./source/can.obj" "./source/dabort.obj" "./source/errata_SSWF021_45.obj" "./source/esm.obj" "./source/gio.obj" "./source/lin.obj" "./source/mibspi.obj" "./source/notification.obj" "./source/pinmux.obj" "./source/rti.obj" "./source/sci.obj" "./source/sys_core.obj" "./source/sys_dma.obj" "./source/sys_intvecs.obj" "./source/sys_main.obj" "./source/sys_mpu.obj" "./source/sys_pcr.obj" "./source/sys_phantom.obj" "./source/sys_pmm.obj" "./source/sys_pmu.obj" "./source/sys_selftest.obj" "./source/sys_startup.obj" "./source/sys_vim.obj" "./source/system.obj" "../source/sys_link.cmd" -lrtsv7R4_T_le_v3D16_eabi.lib \ No newline at end of file +"./irqDispatch_a.obj" "./irqDispatch_c.obj" "./App/Contollers/AlarmLamp.obj" "./App/Contollers/Buttons.obj" "./App/Drivers/CPLD.obj" "./App/Drivers/SafetyShutdown.obj" "./App/Modes/ModeFault.obj" "./App/Modes/ModeInitPOST.obj" "./App/Modes/ModeOpParams.obj" "./App/Modes/ModePostTreat.obj" "./App/Modes/ModePreTreat.obj" "./App/Modes/ModePrescription.obj" "./App/Modes/ModeService.obj" "./App/Modes/ModeStandby.obj" "./App/Modes/ModeTreatment.obj" "./App/Modes/OperationModes.obj" "./App/Services/CommBuffers.obj" "./App/Services/MsgQueues.obj" "./App/Services/SystemComm.obj" "./App/Services/Timers.obj" "./App/Services/WatchdogMgmt.obj" "./App/Tasks/TaskBG.obj" "./App/Tasks/TaskGeneral.obj" "./App/Tasks/TaskPriority.obj" "./App/Tasks/TaskTimer.obj" "./source/can.obj" "./source/dabort.obj" "./source/errata_SSWF021_45.obj" "./source/esm.obj" "./source/gio.obj" "./source/lin.obj" "./source/mibspi.obj" "./source/notification.obj" "./source/pinmux.obj" "./source/rti.obj" "./source/sci.obj" "./source/sys_core.obj" "./source/sys_dma.obj" "./source/sys_intvecs.obj" "./source/sys_main.obj" "./source/sys_mpu.obj" "./source/sys_pcr.obj" "./source/sys_phantom.obj" "./source/sys_pmm.obj" "./source/sys_pmu.obj" "./source/sys_selftest.obj" "./source/sys_startup.obj" "./source/sys_vim.obj" "./source/system.obj" "../source/sys_link.cmd" -lrtsv7R4_T_le_v3D16_eabi.lib \ No newline at end of file Index: Debug/makefile =================================================================== diff -u -r6b268f0dd1a5c790c715abc289754bd59e7ad901 -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- Debug/makefile (.../makefile) (revision 6b268f0dd1a5c790c715abc289754bd59e7ad901) +++ Debug/makefile (.../makefile) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -24,6 +24,9 @@ "./App/Modes/ModeStandby.obj" \ "./App/Modes/ModeTreatment.obj" \ "./App/Modes/OperationModes.obj" \ +"./App/Services/CommBuffers.obj" \ +"./App/Services/MsgQueues.obj" \ +"./App/Services/SystemComm.obj" \ "./App/Services/Timers.obj" \ "./App/Services/WatchdogMgmt.obj" \ "./App/Tasks/TaskBG.obj" \ @@ -209,9 +212,9 @@ # Other Targets clean: -$(RM) $(BIN_OUTPUTS__QUOTED)$(EXE_OUTPUTS__QUOTED) - -$(RM) "irqDispatch_a.obj" "irqDispatch_c.obj" "App/Contollers/AlarmLamp.obj" "App/Contollers/Buttons.obj" "App/Drivers/CPLD.obj" "App/Drivers/SafetyShutdown.obj" "App/Modes/ModeFault.obj" "App/Modes/ModeInitPOST.obj" "App/Modes/ModeOpParams.obj" "App/Modes/ModePostTreat.obj" "App/Modes/ModePreTreat.obj" "App/Modes/ModePrescription.obj" "App/Modes/ModeService.obj" "App/Modes/ModeStandby.obj" "App/Modes/ModeTreatment.obj" "App/Modes/OperationModes.obj" "App/Services/Timers.obj" "App/Services/WatchdogMgmt.obj" "App/Tasks/TaskBG.obj" "App/Tasks/TaskGeneral.obj" "App/Tasks/TaskPriority.obj" "App/Tasks/TaskTimer.obj" "source/can.obj" "source/dabort.obj" "source/errata_SSWF021_45.obj" "source/esm.obj" "source/gio.obj" "source/lin.obj" "source/mibspi.obj" "source/notification.obj" "source/pinmux.obj" "source/rti.obj" "source/sci.obj" "source/sys_core.obj" "source/sys_dma.obj" "source/sys_intvecs.obj" "source/sys_main.obj" "source/sys_mpu.obj" "source/sys_pcr.obj" "source/sys_phantom.obj" "source/sys_pmm.obj" - -$(RM) "source/sys_pmu.obj" "source/sys_selftest.obj" "source/sys_startup.obj" "source/sys_vim.obj" "source/system.obj" - -$(RM) "irqDispatch_c.d" "App/Contollers/AlarmLamp.d" "App/Contollers/Buttons.d" "App/Drivers/CPLD.d" "App/Drivers/SafetyShutdown.d" "App/Modes/ModeFault.d" "App/Modes/ModeInitPOST.d" "App/Modes/ModeOpParams.d" "App/Modes/ModePostTreat.d" "App/Modes/ModePreTreat.d" "App/Modes/ModePrescription.d" "App/Modes/ModeService.d" "App/Modes/ModeStandby.d" "App/Modes/ModeTreatment.d" "App/Modes/OperationModes.d" "App/Services/Timers.d" "App/Services/WatchdogMgmt.d" "App/Tasks/TaskBG.d" "App/Tasks/TaskGeneral.d" "App/Tasks/TaskPriority.d" "App/Tasks/TaskTimer.d" "source/can.d" "source/errata_SSWF021_45.d" "source/esm.d" "source/gio.d" "source/lin.d" "source/mibspi.d" "source/notification.d" "source/pinmux.d" "source/rti.d" "source/sci.d" "source/sys_dma.d" "source/sys_main.d" "source/sys_pcr.d" "source/sys_phantom.d" "source/sys_pmm.d" "source/sys_selftest.d" "source/sys_startup.d" "source/sys_vim.d" "source/system.d" + -$(RM) "irqDispatch_a.obj" "irqDispatch_c.obj" "App/Contollers/AlarmLamp.obj" "App/Contollers/Buttons.obj" "App/Drivers/CPLD.obj" "App/Drivers/SafetyShutdown.obj" "App/Modes/ModeFault.obj" "App/Modes/ModeInitPOST.obj" "App/Modes/ModeOpParams.obj" "App/Modes/ModePostTreat.obj" "App/Modes/ModePreTreat.obj" "App/Modes/ModePrescription.obj" "App/Modes/ModeService.obj" "App/Modes/ModeStandby.obj" "App/Modes/ModeTreatment.obj" "App/Modes/OperationModes.obj" "App/Services/CommBuffers.obj" "App/Services/MsgQueues.obj" "App/Services/SystemComm.obj" "App/Services/Timers.obj" "App/Services/WatchdogMgmt.obj" "App/Tasks/TaskBG.obj" "App/Tasks/TaskGeneral.obj" "App/Tasks/TaskPriority.obj" "App/Tasks/TaskTimer.obj" "source/can.obj" "source/dabort.obj" "source/errata_SSWF021_45.obj" "source/esm.obj" "source/gio.obj" "source/lin.obj" "source/mibspi.obj" "source/notification.obj" "source/pinmux.obj" "source/rti.obj" "source/sci.obj" "source/sys_core.obj" "source/sys_dma.obj" "source/sys_intvecs.obj" "source/sys_main.obj" + -$(RM) "source/sys_mpu.obj" "source/sys_pcr.obj" "source/sys_phantom.obj" "source/sys_pmm.obj" "source/sys_pmu.obj" "source/sys_selftest.obj" "source/sys_startup.obj" "source/sys_vim.obj" "source/system.obj" + -$(RM) "irqDispatch_c.d" "App/Contollers/AlarmLamp.d" "App/Contollers/Buttons.d" "App/Drivers/CPLD.d" "App/Drivers/SafetyShutdown.d" "App/Modes/ModeFault.d" "App/Modes/ModeInitPOST.d" "App/Modes/ModeOpParams.d" "App/Modes/ModePostTreat.d" "App/Modes/ModePreTreat.d" "App/Modes/ModePrescription.d" "App/Modes/ModeService.d" "App/Modes/ModeStandby.d" "App/Modes/ModeTreatment.d" "App/Modes/OperationModes.d" "App/Services/CommBuffers.d" "App/Services/MsgQueues.d" "App/Services/SystemComm.d" "App/Services/Timers.d" "App/Services/WatchdogMgmt.d" "App/Tasks/TaskBG.d" "App/Tasks/TaskGeneral.d" "App/Tasks/TaskPriority.d" "App/Tasks/TaskTimer.d" "source/can.d" "source/errata_SSWF021_45.d" "source/esm.d" "source/gio.d" "source/lin.d" "source/mibspi.d" "source/notification.d" "source/pinmux.d" "source/rti.d" "source/sci.d" "source/sys_dma.d" "source/sys_main.d" "source/sys_pcr.d" "source/sys_phantom.d" "source/sys_pmm.d" "source/sys_selftest.d" "source/sys_startup.d" "source/sys_vim.d" "source/system.d" -$(RM) "irqDispatch_a.d" "source/dabort.d" "source/sys_core.d" "source/sys_intvecs.d" "source/sys_mpu.d" "source/sys_pmu.d" -@echo 'Finished clean' -@echo ' ' Index: HD.dil =================================================================== diff -u -r879f01d26ef663cceccf14963c09f53e72c13cec -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- HD.dil (.../HD.dil) (revision 879f01d26ef663cceccf14963c09f53e72c13cec) +++ HD.dil (.../HD.dil) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -1,4 +1,4 @@ -# RM46L852PGE 09/30/19 13:28:01 +# RM46L852PGE 10/08/19 09:16:25 # ARCH=RM46L852PGE # @@ -3334,7 +3334,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_35_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_27_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_19_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_BAUDRATE.VALUE=500 +DRIVER.CAN.VAR.CAN_1_BAUDRATE.VALUE=250 DRIVER.CAN.VAR.CAN_2_PORT_RX_PDR.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_63_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_55_RTR.VALUE=0x00000000 @@ -3365,7 +3365,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_35_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_27_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_19_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_BOOL_ENA.VALUE=0 +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_57_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_51_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_49_INT_LEVEL.VALUE=0x00000000 @@ -3522,7 +3522,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_11_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_6_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_4_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PROP_SEG.VALUE=4 +DRIVER.CAN.VAR.CAN_1_PROP_SEG.VALUE=2 DRIVER.CAN.VAR.CAN_3_MESSAGE_1_ID.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_INT_LEVEL.VALUE=0x00000000 @@ -3735,7 +3735,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_21_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_13_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_8_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_RATE.VALUE=500.000 +DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_RATE.VALUE=250.000 DRIVER.CAN.VAR.CAN_3_MESSAGE_5_ID.VALUE=5 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_33_INT_LEVEL.VALUE=0x00000000 @@ -3759,7 +3759,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_15_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_RAM_PARITY_ENA.VALUE=0x00000005 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_BOOL_ENA.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_ENA.VALUE=0x80000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_5_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_PORT_TX_PDR.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_62_ID.VALUE=62 @@ -3778,7 +3778,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_64_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_56_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_48_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_EOB.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_1_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_58_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_61_MASK.VALUE=0x000007FF @@ -3787,7 +3787,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_37_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_29_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_TQ.VALUE=181.818 +DRIVER.CAN.VAR.CAN_1_TQ.VALUE=363.636 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_55_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_47_RTR.VALUE=0x00000000 @@ -3878,7 +3878,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_48_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_20_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_12_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_ENA.VALUE=0x80000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_ID.VALUE=64 DRIVER.CAN.VAR.CAN_2_MESSAGE_62_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_ID.VALUE=56 @@ -3897,8 +3897,8 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_48_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_10_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_10_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_EOB.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_DIR.VALUE=0x20000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_EOB.VALUE=0x00000080 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_DIR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_21_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_20_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_13_MASK.VALUE=0x000007FF @@ -4086,7 +4086,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_28_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_28_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=0 +DRIVER.CAN.VAR.CAN_1_SHIFT.VALUE=18 DRIVER.CAN.VAR.CAN_2_MESSAGE_64_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_56_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_50_MASK.VALUE=0x000007FF @@ -4104,7 +4104,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_14_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_9_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_BRPE.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x1FFFFFFF +DRIVER.CAN.VAR.CAN_1_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_45_INT_LEVEL.VALUE=0x00000000 @@ -4148,8 +4148,8 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_37_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=5.500 -DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=5.500 +DRIVER.CAN.VAR.CAN_1_BRPE_FREQ.VALUE=2.750 +DRIVER.CAN.VAR.CAN_1_BRP_FREQ.VALUE=2.750 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_20_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_EOB.VALUE=0x00000000 @@ -4420,7 +4420,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_19_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_2_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_BRP.VALUE=19 +DRIVER.CAN.VAR.CAN_1_BRP.VALUE=39 DRIVER.CAN.VAR.CAN_3_MESSAGE_7_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_3_PROP_SEG.VALUE=4 DRIVER.CAN.VAR.CAN_2_MESSAGE_21_INT_ENA.VALUE=0x00000000 @@ -4706,7 +4706,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_6_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_57_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_49_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=3 +DRIVER.CAN.VAR.CAN_1_PHASE_SEG.VALUE=4 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_3_MESSAGE_22_ID.VALUE=22 DRIVER.CAN.VAR.CAN_3_MESSAGE_14_ID.VALUE=14 @@ -4931,7 +4931,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_9_ID.VALUE=9 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_59_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_SJW.VALUE=3 +DRIVER.CAN.VAR.CAN_1_SJW.VALUE=4 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_EOB.VALUE=0x00000000 @@ -4963,7 +4963,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_37_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_9_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x40000000 +DRIVER.CAN.VAR.CAN_1_IDENTIFIER_MODE.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_33_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_25_INT_LEVEL.VALUE=0x00000000 @@ -4987,7 +4987,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_12_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_2_MESSAGE_7_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_59_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_BOOL_ENA.VALUE=0 +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_ID.VALUE=50 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_ID.VALUE=42 @@ -5214,7 +5214,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_8_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_10_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=72.727 +DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT.VALUE=63.636 DRIVER.CAN.VAR.CAN_2_MESSAGE_51_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_43_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_35_BOOL_ENA.VALUE=0 @@ -5275,7 +5275,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_44_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_36_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_28_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_1_MASK.VALUE=0x000007FF +DRIVER.CAN.VAR.CAN_1_MESSAGE_1_MASK.VALUE=0x00000004 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_ID.VALUE=63 DRIVER.CAN.VAR.CAN_3_MESSAGE_55_ID.VALUE=55 DRIVER.CAN.VAR.CAN_3_MESSAGE_47_ID.VALUE=47 @@ -5499,7 +5499,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_16_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_3_MESSAGE_10_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_8_BOOL_ENA.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MESSAGE_2_MASK.VALUE=0x000007FF +DRIVER.CAN.VAR.CAN_1_MESSAGE_2_MASK.VALUE=0x00000005 DRIVER.CAN.VAR.CAN_3_MESSAGE_59_ID.VALUE=59 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_RTR.VALUE=0x00000000 Index: include/can.h =================================================================== diff -u -rad8ad611c910747eef92336a30b6520a83409532 -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- include/can.h (.../can.h) (revision ad8ad611c910747eef92336a30b6520a83409532) +++ include/can.h (.../can.h) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -635,9 +635,9 @@ | (uint32)((uint32)0x00000005U << 10U) | 0x00020002U) #define CAN1_ES_CONFIGVALUE 0x00000007U #define CAN1_BTR_CONFIGVALUE ((uint32)((uint32)0U << 16U) \ - | (uint32)((uint32)(3U - 1U) << 12U) \ - | (uint32)((uint32)((4U + 3U) - 1U) << 8U) \ - | (uint32)((uint32)(3U - 1U) << 6U) | (uint32)19U) + | (uint32)((uint32)(4U - 1U) << 12U) \ + | (uint32)((uint32)((2U + 4U) - 1U) << 8U) \ + | (uint32)((uint32)(4U - 1U) << 6U) | (uint32)39U) #define CAN1_TEST_CONFIGVALUE 0x00000080U #define CAN1_ABOTR_CONFIGVALUE ((uint32)(0U)) #define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ Index: source/can.c =================================================================== diff -u -r7de64c199413a3f74d69efbdd1424b37c6f607c9 -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- source/can.c (.../can.c) (revision 7de64c199413a3f74d69efbdd1424b37c6f607c9) +++ source/can.c (.../can.c) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -182,6 +182,45 @@ /** - Setup auto bus on timer period */ canREG1->ABOTR = (uint32)0U; + /** - Initialize message 1 + * - Wait until IF1 is ready for use + * - Set message mask + * - Set message control word + * - Set message arbitration + * - Set IF1 control byte + * - Set IF1 message number + */ + /*SAFETYMCUSW 28 D MR:NA "Potentially infinite loop found - Hardware Status check for execution sequence" */ + while ((canREG1->IF1STAT & 0x80U) ==0x80U) + { + } /* Wait */ + + + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x00000004U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)1U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1CMD = (uint8) 0xF8U; + canREG1->IF1NO = 1U; + + /** - Initialize message 2 + * - Wait until IF2 is ready for use + * - Set message mask + * - Set message control word + * - Set message arbitration + * - Set IF2 control byte + * - Set IF2 message number + */ + /*SAFETYMCUSW 28 D MR:NA "Potentially infinite loop found - Hardware Status check for execution sequence" */ + while ((canREG1->IF2STAT & 0x80U) ==0x80U) + { + } /* Wait */ + + canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x00000005U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)2U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF2CMD = (uint8) 0xF8U; + canREG1->IF2NO = 2U; + /** - Setup IF1 for data transmission * - Wait until IF1 is ready for use * - Set IF1 control byte @@ -210,10 +249,10 @@ * - Setup baud rate prescaler */ canREG1->BTR = (uint32)((uint32)0U << 16U) | - (uint32)((uint32)(3U - 1U) << 12U) | - (uint32)((uint32)((4U + 3U) - 1U) << 8U) | - (uint32)((uint32)(3U - 1U) << 6U) | - (uint32)19U; + (uint32)((uint32)(4U - 1U) << 12U) | + (uint32)((uint32)((2U + 4U) - 1U) << 8U) | + (uint32)((uint32)(4U - 1U) << 6U) | + (uint32)39U; /** - CAN1 Port output values */ Index: source/sys_main.c =================================================================== diff -u -rad8ad611c910747eef92336a30b6520a83409532 -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe --- source/sys_main.c (.../sys_main.c) (revision ad8ad611c910747eef92336a30b6520a83409532) +++ source/sys_main.c (.../sys_main.c) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) @@ -57,11 +57,14 @@ #include "rti.h" #include "Common.h" -#include "Timers.h" -#include "OperationModes.h" +#include "CommBuffers.h" #include "CPLD.h" +#include "MsgQueues.h" +#include "OperationModes.h" #include "SafetyShutdown.h" +#include "SystemComm.h" #include "TaskBG.h" +#include "Timers.h" static void initSoftware( void ); static void initHardware( void ); @@ -104,13 +107,16 @@ initSafetyShutdown(); initCPLD(); initOperationModes(); + initCommBuffers(); + initMsgQueues(); + initSystemComm(); } static void initHardware( void ) { gioInit(); mibspiInit(); // re-purposing MIBSPI5 I/O/C pins as GPIO - //canInit(); // CAN1 = CAN, re-purposing CAN2 and CAN3 Rx and Tx pins as GPIO + canInit(); // CAN1 = CAN, re-purposing CAN2 and CAN3 Rx and Tx pins as GPIO } static void initTasks( void )