Index: firmware/App/Common.h =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Common.h (.../Common.h) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Common.h (.../Common.h) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -24,7 +24,7 @@ #ifndef _VECTORCAST_ // #define RM46_EVAL_BOARD_TARGET 1 // #define SIMULATE_UI 1 - #define DEBUG_ENABLED 1 +// #define DEBUG_ENABLED 1 #ifdef DEBUG_ENABLED #include Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -80,7 +80,8 @@ static BLOOD_PUMP_STATE_T bloodPumpState = BLOOD_PUMP_OFF_STATE; // current state of blood flow controller state machine static U32 bloodFlowDataPublicationTimerCounter = 0; // used to schedule blood flow data publication to CAN bus -DATA_DECL( U32, BloodFlowDataPub, bloodFlowDataPublishInterval, BLOOD_FLOW_DATA_PUB_INTERVAL, BLOOD_FLOW_DATA_PUB_INTERVAL ); // interval (in ms) at which to publish blood flow data to CAN bus +// interval (in ms) at which to publish blood flow data to CAN bus +DATA_DECL( U32, BloodFlowDataPub, bloodFlowDataPublishInterval, BLOOD_FLOW_DATA_PUB_INTERVAL, BLOOD_FLOW_DATA_PUB_INTERVAL ); static BOOL isBloodPumpOn = FALSE; // blood pump is currently running static F32 bloodPumpPWMDutyCyclePct = 0.0; // initial blood pump PWM duty cycle static F32 bloodPumpPWMDutyCyclePctSet = 0.0; // currently set blood pump PWM duty cycle @@ -105,6 +106,7 @@ static void stopBloodPump( void ); static void releaseBloodPumpStop( void ); static void setBloodPumpDirection( MOTOR_DIR_T dir ); +static DATA_GET_PROTOTYPE( U32, getPublishBloodFlowDataInterval ); /************************************************************************* * @brief initBloodFlow @@ -518,7 +520,7 @@ /************************************************************************* * @brief testSetBloodFlowDataPublishIntervalOverride * The testSetBloodFlowDataPublishIntervalOverride function overrides the \n - * blood flow data publish interval. \n + * blood flow data publish interval. * @details * Inputs : none * Outputs : bloodFlowDataPublishInterval Index: firmware/App/Controllers/BloodFlow.h =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Controllers/BloodFlow.h (.../BloodFlow.h) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -32,7 +32,6 @@ SELF_TEST_STATUS_T execBloodFlowTest( void ); -DATA_GET_PROTOTYPE( U32, getPublishBloodFlowDataInterval ); DATA_GET_PROTOTYPE( S32, getTargetBloodFlowRate ); DATA_GET_PROTOTYPE( F32, getMeasuredBloodFlowRate); DATA_GET_PROTOTYPE( F32, getMeasuredBloodPumpSpeed ); Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -20,31 +20,16 @@ #include "AlarmLamp.h" #include "OperationModes.h" #include "SystemCommMessages.h" +#include "TaskGeneral.h" #include "Timers.h" // ********** private definitions ********** +#define ALARM_STATUS_PUBLISH_INTERVAL (500/TASK_GENERAL_INTERVAL) // 500ms / task interval + #pragma pack(push,1) typedef struct { - ALARM_PRIORITY_T alarmsState; // current alarm priority level - BOOL alarmsSilenced; // alarms are currently silenced? - U32 alarmsSilenceStart; // time stamp for when alarms were silenced (ms) - U32 alarmsSilenceExpiresIn; // time until alarm silence expires (seconds) - U32 alarmsEscalatesIn; // time until alarm will escalate (seconds) - ALARM_ID_T alarmTop; // ID of current top alarm that will drive lamp/audio and UI should be displaying right now - BOOL systemFault; // a system fault is active? - BOOL stop; // we should be in controlled stop right now - BOOL noClear; // no recovery will be possible - BOOL noResume; // treatment may not be resumed at this time - BOOL noRinseback; // rinseback may not be initiated at this time - BOOL noEndTreatment; // ending the treatment is not an option at this time - BOOL noNewTreatment; // no new treatments may be started even if current treatment is ended - BOOL bypassDialyzer; // the dialyzer should be bypassed at this time -} COMP_ALARM_STATUS_T; - -typedef struct -{ ALARM_PRIORITY_T alarmPriority; // priority of alarm U32 alarmEscalatesAfter; // time (s) after start when alarm will escalate if not cleared (zero indicates no escalation) ALARM_ID_T alarmEscalatesTo; // ID of alarm that this alarm will escalate to (ALARM_ID_NO_ALARM indicates no esclation) @@ -69,6 +54,10 @@ // ********** private data ********** +static U32 alarmStatusPublicationTimerCounter = 0; // used to schedule alarm status publication to CAN bus +// interval (in ms) at which to publish alarm status to CAN bus +DATA_DECL( U32, AlarmStatusPub, alarmStatusPublishInterval, ALARM_STATUS_PUBLISH_INTERVAL, ALARM_STATUS_PUBLISH_INTERVAL ); + DATA_ARRAY_DECL( BOOL, AlarmStates, NUM_OF_ALARM_IDS, alarmIsActive ); DATA_ARRAY_DECL( U32, AlarmStarts, NUM_OF_ALARM_IDS, alarmStartedAt ); @@ -90,6 +79,7 @@ static DATA_ARRAY_GET_PROTOTYPE( BOOL, getAlarmActive, alarmID ); static DATA_ARRAY_GET_PROTOTYPE( U32, getAlarmStartTime, alarmID ); +static DATA_GET_PROTOTYPE( U32, getPublishAlarmStatusInterval ); /************************************************************************* * @brief initAlarmMgmt @@ -157,7 +147,12 @@ updateAlarmsFlags(); updateAlarmsSilenceStatus(); setAlarmLampAndAudio(); - // TODO - publish alarms status record to rest of system + // publish alarm status at interval + if ( ++alarmStatusPublicationTimerCounter > getPublishAlarmStatusInterval() ) + { + broadcastAlarmStatus( alarmStatus ); + alarmStatusPublicationTimerCounter = 0; + } } /************************************************************************* @@ -177,7 +172,7 @@ // if alarm is a fault and not already triggered, request transition to fault mode if ( ( FALSE == getAlarmActive(alarm) ) && ( TRUE == alarmTable[alarm].alarmIsFault ) ) { -// requestNewOperationMode( MODE_FAUL ); + requestNewOperationMode( MODE_FAUL ); } // activate alarm alarmIsActive[alarm].data = TRUE; @@ -475,13 +470,74 @@ } } +/************************************************************************* + * @brief getPublishAlarmStatusInterval + * The getPublishAlarmStatusInterval function gets the alarm status \n + * publication interval. + * @details + * Inputs : alarmStatusPublishInterval + * Outputs : none + * @param none + * @return the current alarm status publication interval (in ms). + *************************************************************************/ +DATA_GET( U32, getPublishAlarmStatusInterval, alarmStatusPublishInterval ) + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ /************************************************************************* + * @brief testSetAlarmStatusPublishIntervalOverride + * The testSetAlarmStatusPublishIntervalOverride function overrides the \n + * alarm status publish interval. + * @details + * Inputs : none + * Outputs : alarmStatusPublishInterval + * @param value : override blood flow data publish interval with (in ms) + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testSetAlarmStatusPublishIntervalOverride( U32 value ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + U32 intvl = value / TASK_GENERAL_INTERVAL; + + result = TRUE; + alarmStatusPublishInterval.ovData = intvl; + alarmStatusPublishInterval.override = OVERRIDE_KEY; + } + + return result; +} + +/************************************************************************* + * @brief testResetAlarmStatusPublishIntervalOverride + * The testResetAlarmStatusPublishIntervalOverride function resets the override \n + * of the alarm status publish interval. + * @details + * Inputs : none + * Outputs : alarmStatusPublishInterval + * @return TRUE if override reset successful, FALSE if not + *************************************************************************/ +BOOL testResetAlarmStatusPublishIntervalOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + alarmStatusPublishInterval.override = OVERRIDE_RESET; + alarmStatusPublishInterval.ovData = alarmStatusPublishInterval.ovInitData; + } + + return result; +} + +/************************************************************************* * @brief testSetAlarmStateOverride and testResetAlarmStateOverride * The testSetAlarmStateOverride function overrides the state of the \n * alarm active state for a given alarm with the alarm management with \n Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -51,6 +51,24 @@ #pragma pack(push,4) typedef struct { + ALARM_PRIORITY_T alarmsState; // current alarm priority level + BOOL alarmsSilenced; // alarms are currently silenced? + U32 alarmsSilenceStart; // time stamp for when alarms were silenced (ms) + U32 alarmsSilenceExpiresIn; // time until alarm silence expires (seconds) + U32 alarmsEscalatesIn; // time until alarm will escalate (seconds) + ALARM_ID_T alarmTop; // ID of current top alarm that will drive lamp/audio and UI should be displaying right now + BOOL systemFault; // a system fault is active? + BOOL stop; // we should be in controlled stop right now + BOOL noClear; // no recovery will be possible + BOOL noResume; // treatment may not be resumed at this time + BOOL noRinseback; // rinseback may not be initiated at this time + BOOL noEndTreatment; // ending the treatment is not an option at this time + BOOL noNewTreatment; // no new treatments may be started even if current treatment is ended + BOOL bypassDialyzer; // the dialyzer should be bypassed at this time +} COMP_ALARM_STATUS_T; + +typedef struct +{ U32 data; } ALARM_DATA_U32_T; @@ -137,6 +155,8 @@ void clearAlarm( ALARM_ID_T alarm ); BOOL isAlarmActive( ALARM_ID_T alarm ); +BOOL testSetAlarmStatusPublishIntervalOverride( U32 value ); +BOOL testResetAlarmStatusPublishIntervalOverride( void ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); BOOL testSetAlarmStartOverride( U32 alarmID, U32 value ); Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -489,7 +489,7 @@ { U32 rspSize = FPGA_READ_RSP_HDR_LEN + sizeof(FPGA_HEADER_T); U32 crcPos = rspSize; - U16 crc = MAKE_WORD_OF_BYTES( fpgaReadResponseBuffer[crcPos], fpgaReadResponseBuffer[crcPos+1] ); + U16 crc = MAKE_WORD_OF_BYTES( fpgaReadResponseBuffer[crcPos], fpgaReadResponseBuffer[crcPos + 1] ); // does the FPGA response CRC check out? if ( crc == crc16( fpgaReadResponseBuffer, rspSize ) ) @@ -543,7 +543,7 @@ memcpy( &(fpgaWriteCmdBuffer[FPGA_WRITE_CMD_HDR_LEN]), &fpgaActuatorSetPoints, sizeof(FPGA_ACTUATORS_T) ); crc = crc16( fpgaWriteCmdBuffer, FPGA_WRITE_CMD_HDR_LEN+sizeof(FPGA_ACTUATORS_T) ); fpgaWriteCmdBuffer[FPGA_WRITE_CMD_HDR_LEN+sizeof(FPGA_ACTUATORS_T)] = GET_MSB_OF_WORD( crc ); - fpgaWriteCmdBuffer[FPGA_WRITE_CMD_HDR_LEN+sizeof(FPGA_ACTUATORS_T)+1] = GET_LSB_OF_WORD( crc ); + fpgaWriteCmdBuffer[FPGA_WRITE_CMD_HDR_LEN+sizeof(FPGA_ACTUATORS_T) + 1] = GET_LSB_OF_WORD( crc ); // construct bulk read command to read sensor data registers starting at address 8 fpgaReadCmdBuffer[0] = FPGA_READ_CMD_CODE; fpgaReadCmdBuffer[1] = 0x08; // start at FPGA address 0x108 (264) @@ -596,7 +596,7 @@ { U32 rspSize = FPGA_READ_RSP_HDR_LEN + sizeof(FPGA_SENSORS_T); U32 crcPos = rspSize; - U16 crc = MAKE_WORD_OF_BYTES( fpgaReadResponseBuffer[crcPos], fpgaReadResponseBuffer[crcPos+1] ); + U16 crc = MAKE_WORD_OF_BYTES( fpgaReadResponseBuffer[crcPos], fpgaReadResponseBuffer[crcPos + 1] ); // does the FPGA response CRC check out? if ( crc == crc16( fpgaReadResponseBuffer, rspSize ) ) Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -561,7 +561,7 @@ // if a minimum sized msg would fit in remaining, continue if ( remSize >= MESSAGE_OVERHEAD_SIZE ) { - payloadSize = data[pos+sizeof(U16)]; + payloadSize = data[pos + sizeof(U16)]; msgSize = MESSAGE_OVERHEAD_SIZE + payloadSize; // we now know the size of the message - we can now know if full message is contained in buffer if ( msgSize <= remSize ) @@ -647,7 +647,7 @@ } // handle any test messages if tester has logged in successfully - if ( ( msgID > MSG_ID_FIRST_TESTER_MESSAGE ) && ( msgID < NUM_OF_MSG_IDS ) && ( TRUE == isTestingActivated() ) ) + if ( ( msgID > MSG_ID_FIRST_TESTER_MESSAGE ) && ( msgID <= END_OF_MSG_IDS ) && ( TRUE == isTestingActivated() ) ) { switch ( msgID ) { @@ -699,6 +699,10 @@ handleTestBloodFlowBroadcastIntervalOverrideRequest( message ); break; + case MSG_ID_ALARM_STATUS_SEND_INTERVAL_OVERRIDE: + handleTestAlarmStatusBroadcastIntervalOverrideRequest( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r90f6438e80dbe0a32472a076a0d1bc54db65d15a -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 90f6438e80dbe0a32472a076a0d1bc54db65d15a) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -111,7 +111,7 @@ BOOL result; MESSAGE_T msg; U32 msgSize; - U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 data[sizeof(MESSAGE_WRAPPER_T) + 1 + CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding // create a message record blankMessage( &msg ); @@ -146,6 +146,41 @@ } /************************************************************************* + * @brief broadcastAlarmStatus + * The broadcastAlarmStatus function constructs an alarm status msg to \n + * be broadcast and queues the msg for transmit on the appropriate CAN channel. + * @details + * Inputs : none + * Outputs : alarm status msg constructed and queued. + * @param almStatus : alarm status record + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ) +{ + BOOL result; + MESSAGE_T msg; + U32 msgSize; + U08 data[sizeof(MESSAGE_WRAPPER_T) + 1 + CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 *payloadPtr = msg.payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_ALARM_STATUS; + msg.hdr.payloadLen = sizeof(COMP_ALARM_STATUS_T); + + memcpy( payloadPtr, &almStatus, sizeof(COMP_ALARM_STATUS_T) ); + + // 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_ALARM, data, msgSize ); + + return result; + +} + +/************************************************************************* * @brief broadcastAlarmTriggered * The broadcastAlarmTriggered function constructs an alarm triggered msg to \n * be broadcast and queues the msg for transmit on the appropriate CAN channel. @@ -162,7 +197,7 @@ BOOL result; MESSAGE_T msg; U32 msgSize; - U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 data[sizeof(MESSAGE_WRAPPER_T) + 1 + CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding U08 *payloadPtr = msg.payload; // create a message record @@ -199,7 +234,7 @@ BOOL result; MESSAGE_T msg; U32 msgSize; - U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 data[sizeof(MESSAGE_WRAPPER_T) + 1 + CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding U08 *payloadPtr = msg.payload; // create a message record @@ -236,7 +271,7 @@ BOOL result; MESSAGE_T msg; U32 msgSize; - U08 data[sizeof(MESSAGE_WRAPPER_T)+1+CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding + U08 data[sizeof(MESSAGE_WRAPPER_T) + 1 + CAN_MESSAGE_PAYLOAD_SIZE]; // must hold full (wrapped) message + sync + any CAN padding U08 *payloadPtr = msg.payload; // create a message record @@ -474,6 +509,18 @@ DATA_ARRAY_OVERRIDE_HANDLER_FUNC( U32, handleTestAlarmTimeOverrideRequest, testSetAlarmStartOverride, testResetAlarmStartOverride ) /************************************************************************* + * @brief handleTestAlarmStatusBroadcastIntervalOverrideRequest + * The handleTestAlarmStatusBroadcastIntervalOverrideRequest function handles a request to \n + * override the broadcast interval for alarm status. + * @details + * Inputs : none + * Outputs : message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +DATA_OVERRIDE_HANDLER_FUNC( U32, handleTestAlarmStatusBroadcastIntervalOverrideRequest, testSetAlarmStatusPublishIntervalOverride, testResetAlarmStatusPublishIntervalOverride ) + +/************************************************************************* * @brief handleTestBloodFlowSetPointOverrideRequest * The handleTestBloodFlowSetPointOverrideRequest function handles a request to \n * override the set point for the blood flow rate (mL/min). Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r8592c629e9e6e212c1325239a21ceb641f9dc1fe -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 8592c629e9e6e212c1325239a21ceb641f9dc1fe) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -47,7 +47,8 @@ MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE, // 0x800A MSG_ID_BLOOD_PUMP_MEAS_CURR_OVERRIDE, // 0x800B MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE, // 0x800C - NUM_OF_MSG_IDS + MSG_ID_ALARM_STATUS_SEND_INTERVAL_OVERRIDE, // 0x800D + END_OF_MSG_IDS } MSG_ID_T; // ********** public function prototypes ********** @@ -56,6 +57,8 @@ BOOL sendOffButtonMsgToUI( void ); void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); +// MSG_ID_ALARM_STATUS +BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ); // MSG_ID_ALARM_TRIGGERED BOOL broadcastAlarmTriggered( ALARM_ID_T alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); // MSG_ID_ALARM_CLEARED @@ -94,6 +97,9 @@ // MSG_ID_ALARM_TIME_OVERRIDE void handleTestAlarmTimeOverrideRequest( MESSAGE_T *message ); +// MSG_ID_ALARM_STATUS_SEND_INTERVAL_OVERRIDE +void handleTestAlarmStatusBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + // MSG_ID_BLOOD_FLOW_SET_PT_OVERRIDE void handleTestBloodFlowSetPointOverrideRequest( MESSAGE_T *message ); Index: firmware/irqDispatch_c.c =================================================================== diff -u -ra9b2756ea97a44ffbc3875333827a6f463cab298 -r3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1 --- firmware/irqDispatch_c.c (.../irqDispatch_c.c) (revision a9b2756ea97a44ffbc3875333827a6f463cab298) +++ firmware/irqDispatch_c.c (.../irqDispatch_c.c) (revision 3417fd56afc9b21fb4c2d86c75dd33ac31fbd9f1) @@ -1,12 +1,20 @@ -/** @file irqDispatch_c.c - * @brief contains Second Level IRQ Dispatcher C routine - * @date 5/13/2014 - * @note - */ +/************************************************************************** + * + * 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 irqDispatch_c.c + * + * @date 30-Sep-2019 + * @author S. Nash (Modified example from Texas Instruments - 5/13/2014) + * + * @brief Contains Second Level IRQ Dispatcher C routine + * + **************************************************************************/ #if defined(__TI_VIM_128CH__) -//#include "HL_sys_common.h" -//#include "HL_sys_vim.h" #include "sys_common.h" #include "sys_vim.h" #elif defined(__TI_VIM_96CH__)