Index: App/Services/SystemComm.c =================================================================== diff -u -r833095dbbe2b21a989b05f48bd7ddc390ad964cb -r83de6e3e3de4767fd50713e18b0bd75a06479fc7 --- App/Services/SystemComm.c (.../SystemComm.c) (revision 833095dbbe2b21a989b05f48bd7ddc390ad964cb) +++ App/Services/SystemComm.c (.../SystemComm.c) (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -21,6 +21,7 @@ #include "Common.h" #include "Buttons.h" #include "MsgQueues.h" +#include "SystemCommMessages.h" #include "SystemComm.h" // ***************************** TEST CODE ****************************** @@ -32,16 +33,6 @@ // ********** private definitions ********** -#define MESSAGE_SYNC_BYTE 0xA5 -#define CAN_MESSAGE_CARGO_SIZE 8 - -typedef enum Msg_IDs -{ - MSG_ID_TEST = 0, - MSG_ID_OFF_BUTTON_PRESS, - NUM_OF_MSG_IDS -} MSG_ID_T; - #define NUM_OF_CAN_OUT_BUFFERS 4 // # of CAN buffers for transmit #define NUM_OF_CAN_IN_BUFFERS 6 // # of CAN buffers for receiving @@ -70,11 +61,10 @@ static COMM_BUFFER_T findNextHighestPriorityCANPacketToTransmit( void ); static void transmitNextCANPacket( void ); static void transmitPendingUARTData( void ); -static U32 serializeMessage( MESSAGE_T msg, U08 *data ); static void processIncomingData( void ); static U32 parseMessageFromBuffer( U08 *data, U32 len ); -static void consumeBufferDataBeforeSync( COMM_BUFFER_T buffer ); +static void consumeBufferPaddingBeforeSync( COMM_BUFFER_T buffer ); static void processReceivedMessages( void ); static void processReceivedMessage( MESSAGE_T *message ); @@ -230,52 +220,7 @@ // TODO - implement } -/************************************************************************* - * @brief serializeMessage - * The serializeMessage function serializes a given message into a given \n - * array of bytes. A sync byte is inserted at the beginning of the message \n - * and an 8-bit CRC is appended to the end of the message. The given array \n - * must be large enough to hold the message + 1 sync byte and 1 CRC byte and \n - * up to 7 CAN padding bytes. - * @details - * Inputs : none - * Outputs : given data array populated with serialized message data. - * @param msg : message to serialize - * @param data : byte array to populate with message data - * @return size (in bytes) of serialized message populated in given data array. - *************************************************************************/ -static U32 serializeMessage( MESSAGE_T msg, U08 *data ) -{ - U32 msgSize = 0; - U32 sizeMod, sizePad; - U32 i; - // prefix data with message sync byte - //data[msgSize++] = MESSAGE_SYNC_BYTE; - - // serialize message header data - memcpy( &data[msgSize], &(msg.hdr), sizeof(MESSAGE_HEADER_T) ); - msgSize += sizeof(MESSAGE_HEADER_T); - - // serialize message cargo (only used bytes per cargoLen field) - memcpy( &data[msgSize], &(msg.cargo), msg.hdr.cargoLen ); - msgSize += msg.hdr.cargoLen; - - // TODO - calculate 8-bit CRC - data[msgSize++] = 0; // TODO - s/b 8-bit CRC when calc is available - - // pad with zero bytes to get length a multiple of CAN_MESSAGE_CARGO_SIZE (8) - sizeMod = msgSize % CAN_MESSAGE_CARGO_SIZE; - sizePad = ( sizeMod == 0 ? 0 : CAN_MESSAGE_CARGO_SIZE - sizeMod ); - for ( i = 0; i < sizePad; i++ ) - { - data[msgSize++] = 0; - } - - return msgSize; -} - - /************************************************************************* ********************** RECEIVE SUPPORT FUNCTIONS ************************* *************************************************************************/ @@ -328,9 +273,11 @@ { U32 numOfBytesInBuffer; - //consumeBufferDataBeforeSync( CAN_IN_BUFFERS[i] ); // TODO - call when sync implemented + // since messages can have CAN padding left unconsumed by last get, get padding out of buffer + consumeBufferPaddingBeforeSync( CAN_IN_BUFFERS[i] ); + // do we have enough bytes in buffer for smallest message? numOfBytesInBuffer = numberOfBytesInCommBuffer( CAN_IN_BUFFERS[i] ); - if ( numOfBytesInBuffer >= CAN_MESSAGE_CARGO_SIZE ) + if ( numOfBytesInBuffer >= MESSAGE_OVERHEAD_SIZE ) { U32 bytesPeeked = peekFromCommBuffer( CAN_IN_BUFFERS[i], data, MIN(numOfBytesInBuffer,(sizeof(MESSAGE_WRAPPER_T)+1)) ); U32 msgSize = parseMessageFromBuffer( data, bytesPeeked ); @@ -352,36 +299,35 @@ addToMsgQueue( MSG_Q_IN_CAN, &rcvMsg ); } } - - -// MESSAGE_WRAPPER_T rcvMsg; -// U08 *dataPtr = data; -// -// getFromCommBuffer( CAN_IN_BUFFERS[i], data, CAN_MESSAGE_CARGO_SIZE ); -// blankMessageInWrapper( &rcvMsg ); -// memcpy( &(rcvMsg.msg.hdr), dataPtr, sizeof(MESSAGE_HEADER_T) ); -// dataPtr += sizeof(MESSAGE_HEADER_T); -// memcpy( &(rcvMsg.msg.cargo), dataPtr, rcvMsg.msg.hdr.cargoLen ); -// dataPtr += rcvMsg.msg.hdr.cargoLen; -// rcvMsg.crc = *dataPtr; -// addToMsgQueue( MSG_Q_IN_CAN, &rcvMsg ); } } } /************************************************************************* - * @brief consumeBufferDataBeforeSync - * The consumeBufferDataBeforeSync function removes any bytes in a given \n + * @brief consumeBufferPaddingBeforeSync + * The consumeBufferPaddingBeforeSync function removes any bytes in a given \n * buffer that lie before a sync byte. * @details * Inputs : none * Outputs : none * @param msg : buffer : the comm buffer to process * @return none *************************************************************************/ -static void consumeBufferDataBeforeSync( COMM_BUFFER_T buffer ) +static void consumeBufferPaddingBeforeSync( COMM_BUFFER_T buffer ) { - // TODO - implement + U08 data; + U32 numOfBytesInBuffer = numberOfBytesInCommBuffer( buffer ); + + // consume bytes out of buffer 1 at a time until we find the sync byte or it's empty + while ( numOfBytesInBuffer > 0 ) + { + getFromCommBuffer( buffer, &data, 1 ); + if ( MESSAGE_SYNC_BYTE == data ) + { + break; // we found a sync - we're done + } + numOfBytesInBuffer = numberOfBytesInCommBuffer( buffer ); + } } /************************************************************************* @@ -405,21 +351,19 @@ for ( i = 0; i < len; i++ ) { // find sync byte - //if ( MESSAGE_SYNC_BYTE == data[i] ) - if (1) // TODO - find sync byte when implemented + if ( MESSAGE_SYNC_BYTE == data[i] ) { - U32 pos = i; // + 1; // TODO - add one when sync byte implemented + U32 pos = i + 1; // skip past sync byte implemented U32 remSize = len - pos; - U32 minSize = sizeof(MESSAGE_HEADER_T) + sizeof(U08); // if a minimum sized msg would fit in remaining - if ( remSize >= minSize ) + if ( remSize >= MESSAGE_OVERHEAD_SIZE ) { cargoSize = data[pos+sizeof(U16)]; - msgSize = minSize + cargoSize; + msgSize = MESSAGE_OVERHEAD_SIZE + cargoSize; if ( msgSize <= remSize ) { - result = msgSize; + result = msgSize; // we found a complete message of this size } } @@ -477,7 +421,7 @@ switch ( message->hdr.msgID ) { case MSG_ID_OFF_BUTTON_PRESS: - userConfirmOffButton( message->cargo[0] ); + handleOffButtonConfirmMsgFromUI( message ); // ***************************** TEST CODE ****************************** // TODO - remove later #if 1 @@ -491,41 +435,3 @@ break; } } - - -/************************************************************************* -**************** SUITE OF SEND MESSAGE FUNCTIONS BELOW ******************* -*************************************************************************/ - -/************************************************************************* - * @brief sendOffButtonMsgToUI - * The sendOffButtonMsgToUI function constructs an off button msg to the UI \n - * and queues the msg for transmit on the appropriate CAN channel. - * @details - * Inputs : none - * Outputs : Off button msg constructed and queued. - * @param none - * @return TRUE if msg successfully queued for transmit, FALSE if not - *************************************************************************/ -BOOL sendOffButtonMsgToUI( void ) -{ - BOOL result; - MESSAGE_T msg; - U32 msgSize; - U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_CARGO_SIZE]; // must hold full (wrapped) message + sync + any CAN padding - U08 *dataPtr = data; - - // create a message record - blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_OFF_BUTTON_PRESS; - msg.hdr.cargoLen = 0; - - // serialize the message (w/ sync, CRC, and appropriate CAN padding) - msgSize = serializeMessage( msg, data ); - - // add serialized message data to appropriate comm buffer - result = addToCommBuffer( COMM_BUFFER_OUT_CAN_HD_2_UI, dataPtr, msgSize ); - - return result; -} - Index: App/Services/SystemComm.h =================================================================== diff -u -r833095dbbe2b21a989b05f48bd7ddc390ad964cb -r83de6e3e3de4767fd50713e18b0bd75a06479fc7 --- App/Services/SystemComm.h (.../SystemComm.h) (revision 833095dbbe2b21a989b05f48bd7ddc390ad964cb) +++ App/Services/SystemComm.h (.../SystemComm.h) (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -22,6 +22,10 @@ // ********** public definitions ********** +#define MESSAGE_SYNC_BYTE 0xA5 + +#define CAN_MESSAGE_CARGO_SIZE 8 + typedef COMM_BUFFER_T CAN_MESSAGE_BOX_T; // the first 10 comm buffers align with the 10 active CAN message boxes // ********** public function prototypes ********** @@ -32,6 +36,4 @@ void handleCANPacketReceivedInt( CAN_MESSAGE_BOX_T srcCANBox ); void handleCANXmitCompleteInt( void ); -BOOL sendOffButtonMsgToUI( void ); - #endif Index: App/Services/SystemCommMessages.c =================================================================== diff -u --- App/Services/SystemCommMessages.c (revision 0) +++ App/Services/SystemCommMessages.c (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -0,0 +1,136 @@ +/************************************************************************** + * + * 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 10-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 "Buttons.h" +#include "MsgQueues.h" +#include "SystemCommMessages.h" +#include "SystemComm.h" + +// ********** private definitions ********** + +#pragma pack(push,1) + +typedef struct +{ + U08 confirmed; // 1 = confirmed, 0 = rejected/timed out +} OFF_BUTTON_MESSAGE_FROM_UI_CARGO_T; + +#pragma pack(pop) + +// ********** private data ********** + +// ********** private function prototypes ********** + +static U32 serializeMessage( MESSAGE_T msg, U08 *data ); + +/************************************************************************* + * @brief serializeMessage + * The serializeMessage function serializes a given message into a given \n + * array of bytes. A sync byte is inserted at the beginning of the message \n + * and an 8-bit CRC is appended to the end of the message. The given array \n + * must be large enough to hold the message + 1 sync byte and 1 CRC byte and \n + * up to 7 CAN padding bytes. + * @details + * Inputs : none + * Outputs : given data array populated with serialized message data. + * @param msg : message to serialize + * @param data : byte array to populate with message data + * @return size (in bytes) of serialized message populated in given data array. + *************************************************************************/ +static U32 serializeMessage( MESSAGE_T msg, U08 *data ) +{ + U32 msgSize = 0; + U32 sizeMod, sizePad; + U32 i; + + // prefix data with message sync byte + data[msgSize++] = MESSAGE_SYNC_BYTE; + + // serialize message header data + memcpy( &data[msgSize], &(msg.hdr), sizeof(MESSAGE_HEADER_T) ); + msgSize += sizeof(MESSAGE_HEADER_T); + + // serialize message cargo (only used bytes per cargoLen field) + memcpy( &data[msgSize], &(msg.cargo), msg.hdr.cargoLen ); + msgSize += msg.hdr.cargoLen; + + // TODO - calculate 8-bit CRC + data[msgSize++] = 0; // TODO - s/b 8-bit CRC when calc is available + + // pad with zero bytes to get length a multiple of CAN_MESSAGE_CARGO_SIZE (8) + sizeMod = msgSize % CAN_MESSAGE_CARGO_SIZE; + sizePad = ( sizeMod == 0 ? 0 : CAN_MESSAGE_CARGO_SIZE - sizeMod ); + for ( i = 0; i < sizePad; i++ ) + { + data[msgSize++] = 0; + } + + return msgSize; +} + +/************************************************************************* + * @brief sendOffButtonMsgToUI + * The sendOffButtonMsgToUI function constructs an off button msg to the UI \n + * and queues the msg for transmit on the appropriate CAN channel. + * @details + * Inputs : none + * Outputs : Off button msg constructed and queued. + * @param none + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendOffButtonMsgToUI( void ) +{ + BOOL result; + MESSAGE_T msg; + U32 msgSize; + U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_CARGO_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 *dataPtr = data; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_OFF_BUTTON_PRESS; + msg.hdr.cargoLen = 0; + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) + msgSize = serializeMessage( msg, data ); + + // add serialized message data to appropriate comm buffer + result = addToCommBuffer( COMM_BUFFER_OUT_CAN_HD_2_UI, dataPtr, msgSize ); + + return result; +} + +/************************************************************************* + * @brief handleOffButtonConfirmMsgFromUI + * The handleOffButtonConfirmMsgFromUI function handles a response to an \n + * off button message to the UI. + * @details + * Inputs : none + * Outputs : message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ) +{ + OFF_BUTTON_MESSAGE_FROM_UI_CARGO_T cargo; + + memcpy( &cargo, message->cargo, sizeof(OFF_BUTTON_MESSAGE_FROM_UI_CARGO_T) ); + userConfirmOffButton( cargo.confirmed ); +} + Index: App/Services/SystemCommMessages.h =================================================================== diff -u --- App/Services/SystemCommMessages.h (revision 0) +++ App/Services/SystemCommMessages.h (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -0,0 +1,36 @@ +/************************************************************************** + * + * 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 SystemCommMessages.h + * + * @date 10-Oct-2019 + * @author S. Nash + * + * @brief header file for System Communication message definitions and functions. + * + **************************************************************************/ + +#ifndef __SYSTEM_COMM_MESSAGES_H__ +#define __SYSTEM_COMM_MESSAGES_H__ + +#include "Common.h" + +// ********** public definitions ********** + +typedef enum Msg_IDs +{ + MSG_ID_TEST = 0, + MSG_ID_OFF_BUTTON_PRESS, + NUM_OF_MSG_IDS +} MSG_ID_T; + +// ********** public function prototypes ********** + +BOOL sendOffButtonMsgToUI( void ); +void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); + +#endif Index: Debug/ccsObjs.opt =================================================================== diff -u -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe -r83de6e3e3de4767fd50713e18b0bd75a06479fc7 --- Debug/ccsObjs.opt (.../ccsObjs.opt) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) +++ Debug/ccsObjs.opt (.../ccsObjs.opt) (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -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/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 +"./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/SystemCommMessages.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 -ree310a2e5262c05bf0dc0eb0d84da0ee50bac7fe -r83de6e3e3de4767fd50713e18b0bd75a06479fc7 --- Debug/makefile (.../makefile) (revision ee310a2e5262c05bf0dc0eb0d84da0ee50bac7fe) +++ Debug/makefile (.../makefile) (revision 83de6e3e3de4767fd50713e18b0bd75a06479fc7) @@ -27,6 +27,7 @@ "./App/Services/CommBuffers.obj" \ "./App/Services/MsgQueues.obj" \ "./App/Services/SystemComm.obj" \ +"./App/Services/SystemCommMessages.obj" \ "./App/Services/Timers.obj" \ "./App/Services/WatchdogMgmt.obj" \ "./App/Tasks/TaskBG.obj" \ @@ -212,9 +213,10 @@ # 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/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.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/SystemCommMessages.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" + -$(RM) "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" + -$(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/SystemCommMessages.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" + -$(RM) "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 ' '