Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r329acf53eb90ccf47c5b3f68623b87ec38de5fda -r1d07de4e970f54f2ae1786ef546cf5567df9ba8e --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 329acf53eb90ccf47c5b3f68623b87ec38de5fda) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 1d07de4e970f54f2ae1786ef546cf5567df9ba8e) @@ -1,19 +1,19 @@ -/************************************************************************** -* -* Copyright (c) 2019-2023 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 -* -* @author (last) Dara Navaei -* @date (last) 07-Apr-2023 -* -* @author (original) Dara Navaei -* @date (original) 05-Nov-2019 -* -***************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2023 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 +* +* @author (last) Dara Navaei +* @date (last) 07-Apr-2023 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #include // For memcpy() @@ -23,27 +23,27 @@ #include "Comm.h" #include "Interrupts.h" +#include "OperationModes.h" +#include "SystemComm.h" +#include "SystemCommMessages.h" +#include "Interrupts.h" #include "OperationModes.h" -#include "SystemComm.h" -#include "SystemCommMessages.h" -#include "Interrupts.h" -#include "OperationModes.h" #include "Timers.h" #include "Utilities.h" -/** - * @addtogroup SystemComm - * @{ - */ - +/** + * @addtogroup SystemComm + * @{ + */ + // ********** private definitions ********** #define NUM_OF_CAN_OUT_BUFFERS 5 ///< Number of CAN buffers for transmit #define NUM_OF_CAN_IN_BUFFERS 7 ///< Number of CAN buffers for receiving -#define NUM_OF_MSG_IN_BUFFERS 7 ///< Number of Msg buffers for receiving +#define NUM_OF_MSG_IN_BUFFERS 7 ///< Number of Msg buffers for receiving #define CAN_XMIT_PACKET_TIMEOUT_MS 200 ///< If transmitted CAN frame does not cause a transmit complete interrupt within this time, re-send or move on -#define MAX_XMIT_RETRIES 5 ///< Maximum number of retries on no transmit complete interrupt timeout +#define MAX_XMIT_RETRIES 5 ///< Maximum number of retries on no transmit complete interrupt timeout #define UI_COMM_TIMEOUT_IN_MS 7500 ///< UI has not checked in for this much time #define DG_COMM_TIMEOUT_IN_MS 1000 ///< DG has not checked in for this much time @@ -52,16 +52,16 @@ #define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< CRC error window #define MSG_NOT_ACKED_TIMEOUT_MS 250 ///< Maximum time for a Denali message that requires ACK to be ACK'd - + #define MSG_NOT_ACKED_MAX_RETRIES 10 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm #define PENDING_ACK_LIST_SIZE 25 ///< Maximum number of Denali messages that can be pending ACK at any given time - -#define MAX_FPGA_CLOCK_SPEED_ERRORS 3 ///< maximum number of FPGA clock speed errors within window period before alarm -#define MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< FPGA clock speed error window - + +#define MAX_FPGA_CLOCK_SPEED_ERRORS 3 ///< maximum number of FPGA clock speed errors within window period before alarm +#define MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< FPGA clock speed error window + #pragma pack(push, 1) -/// Record for transmitted message that is pending acknowledgment from receiver. +/// Record for transmitted message that is pending acknowledgment from receiver. typedef struct { BOOL used; @@ -77,7 +77,7 @@ // ********** private data ********** -/// Array of out-going CAN buffers. +/// Array of out-going CAN buffers. const COMM_BUFFER_T CAN_OUT_BUFFERS[ NUM_OF_CAN_OUT_BUFFERS ] = { COMM_BUFFER_OUT_CAN_HD_ALARM, @@ -87,7 +87,7 @@ COMM_BUFFER_OUT_CAN_PC }; -/// Array of in-coming CAN buffers. +/// Array of in-coming CAN buffers. const COMM_BUFFER_T MSG_IN_BUFFERS[ NUM_OF_MSG_IN_BUFFERS ] = { COMM_BUFFER_IN_CAN_DG_ALARM, @@ -105,8 +105,8 @@ static volatile PENDING_ACK_RECORD_T pendingAckList[ PENDING_ACK_LIST_SIZE ]; ///< List of outgoing messages that are awaiting an ACK -static volatile BOOL hdIsOnlyCANNode = TRUE; ///< Flag indicating whether HD is alone on CAN bus. -static U32 canXmitRetryCtr = 0; ///< Counter for CAN transmit retries. +static volatile BOOL hdIsOnlyCANNode = TRUE; ///< Flag indicating whether HD is alone on CAN bus. +static U32 canXmitRetryCtr = 0; ///< Counter for CAN transmit retries. static volatile BOOL dgIsCommunicating = FALSE; ///< Has DG sent a message since last check static U32 timeOfLastDGCheckIn = 0; ///< Last time DG checked in static volatile BOOL uiIsCommunicating = FALSE; ///< Has UI sent a message since last check @@ -143,12 +143,12 @@ { U32 i; - // Initialize bad message CRC time windowed count - initTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC, MAX_COMM_CRC_FAILURES, MAX_COMM_CRC_FAILURE_WINDOW_MS ); + // Initialize bad message CRC time windowed count + initTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC, MAX_COMM_CRC_FAILURES, MAX_COMM_CRC_FAILURE_WINDOW_MS ); + + // Initialize FPGA clock speed error time windowed count + initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CLOCK_SPEED_ERROR, MAX_FPGA_CLOCK_SPEED_ERRORS, MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS); - // Initialize FPGA clock speed error time windowed count - initTimeWindowedCount( TIME_WINDOWED_COUNT_FPGA_CLOCK_SPEED_ERROR, MAX_FPGA_CLOCK_SPEED_ERRORS, MAX_FPGA_CLOCK_SPEED_ERROR_WINDOW_MS); - // Initialize pending ACK list for ( i = 0; i < PENDING_ACK_LIST_SIZE; i++ ) { @@ -167,11 +167,11 @@ void checkInFromDG( void ) { dgIsCommunicating = TRUE; - timeOfLastDGCheckIn = getMSTimerCount(); - - if ( TRUE == isAlarmActive( ALARM_ID_HD_DG_COMM_TIMEOUT ) ) - { - clearAlarmCondition( ALARM_ID_HD_DG_COMM_TIMEOUT ); + timeOfLastDGCheckIn = getMSTimerCount(); + + if ( TRUE == isAlarmActive( ALARM_ID_HD_DG_COMM_TIMEOUT ) ) + { + clearAlarmCondition( ALARM_ID_HD_DG_COMM_TIMEOUT ); } } @@ -185,10 +185,10 @@ *************************************************************************/ void checkInFromUI( void ) { - if ( FALSE == uiDidCommunicate ) - { // Start DG check-in timer when UI first communicates - timeOfLastDGCheckIn = getMSTimerCount(); - } + if ( FALSE == uiDidCommunicate ) + { // Start DG check-in timer when UI first communicates + timeOfLastDGCheckIn = getMSTimerCount(); + } uiIsCommunicating = TRUE; timeOfLastUICheckIn = getMSTimerCount(); @@ -233,36 +233,36 @@ * @return TRUE if UI has communicated since power up, FALSE if not *************************************************************************/ BOOL uiCommunicated( void ) -{ -#ifdef SIMULATE_UI - uiDidCommunicate = TRUE; -#endif +{ +#ifdef SIMULATE_UI + uiDidCommunicate = TRUE; +#endif return uiDidCommunicate; +} + +/*********************************************************************//** + * @brief + * The isHDOnlyCANNode function determines whether the HD is the only node + * currently on the CAN bus. + * @details Inputs: hdIsOnlyCANNode + * @details Outputs: none + * @return TRUE if HD is only node on CAN bus, FALSE if not + *************************************************************************/ +BOOL isHDOnlyCANNode( void ) +{ + return hdIsOnlyCANNode; } /*********************************************************************//** * @brief - * The isHDOnlyCANNode function determines whether the HD is the only node - * currently on the CAN bus. - * @details Inputs: hdIsOnlyCANNode - * @details Outputs: none - * @return TRUE if HD is only node on CAN bus, FALSE if not - *************************************************************************/ -BOOL isHDOnlyCANNode( void ) -{ - return hdIsOnlyCANNode; -} - -/*********************************************************************//** - * @brief * The execSystemCommRx function manages received data from other sub-systems. * @details Inputs: none * @details Outputs: Incoming messages parsed and processed. * @return none *************************************************************************/ void execSystemCommRx( void ) -{ +{ // Parse messages from comm buffers and queue them processIncomingData(); @@ -286,39 +286,39 @@ *************************************************************************/ void execSystemCommTx( void ) { - // Do not transmit if no other nodes on CAN bus - if ( FALSE == hdIsOnlyCANNode ) - { - // If CAN transmitter is idle, start transmitting any pending packets - if ( FALSE == isCAN1TransmitInProgress() ) - { - transmitNextCANPacket(); - } - else - { - // Generally, transmitter should not be busy at time of this function call - check timeout just in case so we do not get stuck waiting forever - if ( TRUE == didTimeout( lastCANPacketSentTimeStamp, CAN_XMIT_PACKET_TIMEOUT_MS ) ) - { - // Assume last packet was not successfully transmitted. Re-send last packet. - if ( ++canXmitRetryCtr <= MAX_XMIT_RETRIES ) - { - // Ensure we have a previous CAN packet/channel to resend - canTransmit() channel param MUST be valid - if ( ( lastCANPacketSentChannel > COMM_BUFFER_NOT_USED ) && ( lastCANPacketSentChannel <= COMM_BUFFER_LAST_CAN_BUFFER ) ) - { - canTransmit( canREG1, lastCANPacketSentChannel, lastCANPacketSent ); - } - } - // We must be only node on CAN bus - nobody is ACKing our transmitted frames - else - { - hdIsOnlyCANNode = TRUE; // Set only CAN node flag - canXmitRetryCtr = MAX_XMIT_RETRIES; - signalCANXmitsCompleted(); // Clear pending xmit flag - clearCANXmitBuffers(); // Clear xmit buffers - nothing is going out right now - } // end - are we retrying xmit or are we alone on CAN bus - } // end - pending xmit timeout? - } // end - transmit in progress or not - } // end - DG not alone on CAN bus + // Do not transmit if no other nodes on CAN bus + if ( FALSE == hdIsOnlyCANNode ) + { + // If CAN transmitter is idle, start transmitting any pending packets + if ( FALSE == isCAN1TransmitInProgress() ) + { + transmitNextCANPacket(); + } + else + { + // Generally, transmitter should not be busy at time of this function call - check timeout just in case so we do not get stuck waiting forever + if ( TRUE == didTimeout( lastCANPacketSentTimeStamp, CAN_XMIT_PACKET_TIMEOUT_MS ) ) + { + // Assume last packet was not successfully transmitted. Re-send last packet. + if ( ++canXmitRetryCtr <= MAX_XMIT_RETRIES ) + { + // Ensure we have a previous CAN packet/channel to resend - canTransmit() channel param MUST be valid + if ( ( lastCANPacketSentChannel > COMM_BUFFER_NOT_USED ) && ( lastCANPacketSentChannel <= COMM_BUFFER_LAST_CAN_BUFFER ) ) + { + canTransmit( canREG1, lastCANPacketSentChannel, lastCANPacketSent ); + } + } + // We must be only node on CAN bus - nobody is ACKing our transmitted frames + else + { + hdIsOnlyCANNode = TRUE; // Set only CAN node flag + canXmitRetryCtr = MAX_XMIT_RETRIES; + signalCANXmitsCompleted(); // Clear pending xmit flag + clearCANXmitBuffers(); // Clear xmit buffers - nothing is going out right now + } // end - are we retrying xmit or are we alone on CAN bus + } // end - pending xmit timeout? + } // end - transmit in progress or not + } // end - DG not alone on CAN bus } /*********************************************************************//** @@ -337,15 +337,15 @@ // Message interrupt is for a transmit message box? if ( TRUE == isCANBoxForXmit( srcCANBox ) ) { - U32 bytesXmitted; - + U32 bytesXmitted; + bytesXmitted = transmitNextCANPacket(); // If nothing more to send, signal that transmitter is available if ( 0 == bytesXmitted ) { signalCANXmitsCompleted(); - } + } } else if ( TRUE == isCANBoxForRecv( srcCANBox ) ) { @@ -366,7 +366,7 @@ } else { - // Should not get here - not an active message box + // Should not get here - not an active message box SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CAN_MESSAGE_BOX, srcCANBox ) } } @@ -421,26 +421,26 @@ } return result; +} + +/*********************************************************************//** + * @brief + * The clearCANXmitBuffers function clears all CAN transmit buffers. + * @details Inputs: CAN_OUT_BUFFERS[] + * @details Outputs: CAN transmit buffers cleared. + * @return none + *************************************************************************/ +static void clearCANXmitBuffers( void ) +{ + U32 i; + + for ( i = 0; i < NUM_OF_CAN_OUT_BUFFERS; i++ ) + { + clearBuffer( CAN_OUT_BUFFERS[ i ] ); + } } -/*********************************************************************//** - * @brief - * The clearCANXmitBuffers function clears all CAN transmit buffers. - * @details Inputs: CAN_OUT_BUFFERS[] - * @details Outputs: CAN transmit buffers cleared. - * @return none - *************************************************************************/ -static void clearCANXmitBuffers( void ) -{ - U32 i; - for ( i = 0; i < NUM_OF_CAN_OUT_BUFFERS; i++ ) - { - clearBuffer( CAN_OUT_BUFFERS[ i ] ); - } -} - - /************************************************************************* ********************** TRANSMIT SUPPORT FUNCTIONS ************************ *************************************************************************/ @@ -532,7 +532,7 @@ * The processIncomingData function parses out messages from the Input * Comm Buffers and adds them to the Received Message Queue. * @details Inputs: none - * @details Outputs:hdIsOnlyCANNode, rcvMsg, dgIsCommunicating, + * @details Outputs:hdIsOnlyCANNode, rcvMsg, dgIsCommunicating, * timeOfLastDGCheckIn, timeOfLastUICheckIn, uiDidCommunicate * @return none *************************************************************************/ @@ -561,9 +561,9 @@ if ( numOfBytesInBuffer >= MESSAGE_OVERHEAD_SIZE ) { // Peek at minimum of all bytes available or max message size (+1 for sync byte) U32 bytesPeeked = peekFromCommBuffer( MSG_IN_BUFFERS[ i ], data, MIN( numOfBytesInBuffer, sizeof( MESSAGE_WRAPPER_T ) + 1 ) ); - S32 msgSize = parseMessageFromBuffer( data, bytesPeeked ); - - hdIsOnlyCANNode = FALSE; // Since we are getting a message, this indicates we are not the only node on the CAN bus + S32 msgSize = parseMessageFromBuffer( data, bytesPeeked ); + + hdIsOnlyCANNode = FALSE; // Since we are getting a message, this indicates we are not the only node on the CAN bus canXmitRetryCtr = 0; if ( msgSize > 0 ) // Valid, complete message found? @@ -586,19 +586,19 @@ // Copy CRC portion of message data to the new message rcvMsg.crc = *dataPtr; // Add new message to queue for later processing - addToMsgQueue( MSG_Q_IN, &rcvMsg ); - // If message from DG broadcast channel, update DG comm status - if ( COMM_BUFFER_IN_CAN_DG_BROADCAST == MSG_IN_BUFFERS[ i ] ) - { - dgIsCommunicating = TRUE; - timeOfLastDGCheckIn = getMSTimerCount(); + addToMsgQueue( MSG_Q_IN, &rcvMsg ); + // If message from DG broadcast channel, update DG comm status + if ( COMM_BUFFER_IN_CAN_DG_BROADCAST == MSG_IN_BUFFERS[ i ] ) + { + dgIsCommunicating = TRUE; + timeOfLastDGCheckIn = getMSTimerCount(); + } + // If message from UI channel, mark UI communication so HD can begin transmitting + if ( ( COMM_BUFFER_IN_CAN_UI_2_HD == MSG_IN_BUFFERS[ i ] ) || ( COMM_BUFFER_IN_CAN_UI_BROADCAST == MSG_IN_BUFFERS[ i ] ) ) + { + timeOfLastUICheckIn = getMSTimerCount(); + uiDidCommunicate = TRUE; } - // If message from UI channel, mark UI communication so HD can begin transmitting - if ( ( COMM_BUFFER_IN_CAN_UI_2_HD == MSG_IN_BUFFERS[ i ] ) || ( COMM_BUFFER_IN_CAN_UI_BROADCAST == MSG_IN_BUFFERS[ i ] ) ) - { - timeOfLastUICheckIn = getMSTimerCount(); - uiDidCommunicate = TRUE; - } } else if ( -1 == msgSize ) // Candidate message with bad CRC found? { @@ -710,7 +710,7 @@ { BOOL isThereMsgRcvd = TRUE; // Assume TRUE at first to get into while loop MESSAGE_WRAPPER_T message; - + while ( TRUE == isThereMsgRcvd ) { // See if any messages received @@ -754,44 +754,35 @@ static void checkForCommTimeouts( void ) { if ( TRUE == uiDidCommunicate ) - { - HD_OP_MODE_T opMode = getCurrentOperationMode(); + { + HD_OP_MODE_T opMode = getCurrentOperationMode(); if ( TRUE == didTimeout( timeOfLastUICheckIn, UI_COMM_TIMEOUT_IN_MS ) ) - { -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_COMM_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) -#endif + { +#ifndef _RELEASE_ + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_COMM_ALARMS ) != SW_CONFIG_ENABLE_VALUE ) +#endif { - activateAlarmNoData( ALARM_ID_UI_COMM_TIMEOUT ); - } + activateAlarmNoData( ALARM_ID_HD_UI_COMM_TIMEOUT ); + } } - - // Only alarm on DG comm loss while in the treatment workflow - if ( MODE_PRET == opMode || MODE_TREA == opMode || MODE_POST == opMode ) - { - if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) - { - activateAlarmNoData( ALARM_ID_HD_UI_COMM_TIMEOUT ); - } - } - - if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) - { -#ifndef RUN_WITHOUT_DG - // Only alarm on DG comm loss while in the treatment workflow - if ( MODE_PRET == opMode || MODE_TREA == opMode || MODE_POST == opMode ) - { - activateAlarmNoData( ALARM_ID_HD_DG_COMM_TIMEOUT ); - } - else // Otherwise clear the alarm - { - clearAlarmCondition( ALARM_ID_HD_DG_COMM_TIMEOUT ); - } - dgIsCommunicating = FALSE; -#endif - } - } + + if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) + { +#ifndef RUN_WITHOUT_DG + // Only alarm on DG comm loss while in the treatment workflow + if ( MODE_PRET == opMode || MODE_TREA == opMode || MODE_POST == opMode ) + { + activateAlarmNoData( ALARM_ID_HD_DG_COMM_TIMEOUT ); + } + else // Otherwise clear the alarm + { + clearAlarmCondition( ALARM_ID_HD_DG_COMM_TIMEOUT ); + } + dgIsCommunicating = FALSE; +#endif + } + } } /*********************************************************************//** @@ -805,10 +796,10 @@ *************************************************************************/ static void checkTooManyBadMsgCRCs( void ) { - if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC ) ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_COMM_TOO_MANY_BAD_CRCS, (U32)ALARM_SOURCE_HD ); - } + if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC ) ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_COMM_TOO_MANY_BAD_CRCS, (U32)ALARM_SOURCE_HD ); + } } /*********************************************************************//** @@ -851,8 +842,8 @@ { _enable_IRQ(); } - } - + } + return result; } @@ -908,22 +899,22 @@ pendingAckList[ i ].retries--; pendingAckList[ i ].timeStamp = getMSTimerCount(); addToCommBuffer( pendingAckList[ i ].channel, (U08*)pendingAckList[ i ].msg, pendingAckList[ i ].msgSize ); - } + } // If no retries left, alarm else { U16 msgID; - memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); - if ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_DG ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED_BY_UI, (U32)msgID ); - } - else - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED_BY_DG, (U32)msgID ); - } - pendingAckList[ i ].used = FALSE; // Take pending message off of list + memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); + if ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_DG ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED_BY_UI, (U32)msgID ); + } + else + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED_BY_DG, (U32)msgID ); + } + pendingAckList[ i ].used = FALSE; // Take pending message off of list } } } @@ -948,18 +939,18 @@ handleOffButtonConfirmMsgFromUI( message ); break; - case MSG_ID_ALARM_TRIGGERED: - handleAlarmTriggered( message ); + case MSG_ID_ALARM_TRIGGERED: + handleAlarmTriggered( message ); + break; + + case MSG_ID_ALARM_CONDITION_CLEARED: + handleAlarmCleared( message ); + break; + + case MSG_ID_UI_ALARM_USER_ACTION_REQUEST: + handleAlarmUserAction( message ); break; - case MSG_ID_ALARM_CONDITION_CLEARED: - handleAlarmCleared( message ); - break; - - case MSG_ID_UI_ALARM_USER_ACTION_REQUEST: - handleAlarmUserAction( message ); - break; - case MSG_ID_UI_CHECK_IN: handleUICheckIn( message ); break; @@ -974,12 +965,12 @@ case MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST: handleChangeUFSettingsRequest( message ); + break; + + case MSG_ID_USER_SALINE_BOLUS_REQUEST: + handleSalineBolusRequest( message ); break; - case MSG_ID_USER_SALINE_BOLUS_REQUEST: - handleSalineBolusRequest( message ); - break; - case MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE_REQUEST: handleChangeUFSettingsConfirmation( message ); break; @@ -994,23 +985,23 @@ case MSG_ID_FW_VERSIONS_REQUEST: handleFWVersionRequest( message ); - handleHDSerialNumberRequest(); + handleHDSerialNumberRequest(); + break; + + case MSG_ID_DG_VERSION_REPONSE: + handleDGVersionResponse( message ); + break; + + case MSG_ID_DG_HEATERS_DATA: + handleDGHeatersData( message ); break; - case MSG_ID_DG_VERSION_REPONSE: - handleDGVersionResponse( message ); - break; - - case MSG_ID_DG_HEATERS_DATA: - handleDGHeatersData( message ); - break; - case MSG_ID_DG_TEMPERATURE_DATA: handleDGTemperatureData( message ); break; - case MSG_ID_DG_FLOW_SENSORS_DATA: - handleDialysateFlowData( message ); + case MSG_ID_DG_FLOW_SENSORS_DATA: + handleDialysateFlowData( message ); break; case MSG_ID_DG_OP_MODE_DATA: @@ -1021,178 +1012,178 @@ handleDGReservoirData( message ); break; - case MSG_ID_USER_ALARM_SILENCE_REQUEST: - handleUIAlarmSilenceRequest( message ); - break; - - case MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST: - handleTreatmentParametersFromUI( message ); - break; - - case MSG_ID_UI_INITIATE_TREATMENT_REQUEST: - handleInitiateTreatmentRequest( message ); - break; - - case MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS_REQUEST: - handleUIUserConfirmTreatmentParameters( message ); - break; - - case MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST: - handleChangePressureLimitsRequest( message ); - break; - - case MSG_ID_UI_HEPARIN_PAUSE_RESUME_REQUEST: - handleHeparinCommandRequest( message ); - break; - - case MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD_REQUEST: - handleAlarmAudioVolumeSetCmd( message ); - break; - - case MSG_ID_UI_SET_UF_VOLUME_PARAMETER_REQUEST: - handleUFVolumeSetRequest( message ); - break; - - case MSG_ID_UI_SAMPLE_WATER_CMD_REQUEST: - handleSampleWaterCmd( message ); - break; - - case MSG_ID_UI_SAMPLE_WATER_RESULT: - handleSampleWaterResult( message ); - break; - - case MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM_REQUEST: - handleConsumableInstallConfirm( message ); - break; - - case MSG_ID_UI_INSTALLATION_CONFIRM_REQUEST: - handleInstallationConfirm( message ); - break; - - case MSG_ID_UI_START_PRIME_REQUEST: - handleStartPrimeCmd( message ); - break; - - case MSG_ID_UI_PATIENT_CONNECTION_BEGIN_REQUEST: - handleContinueToTreatmentCmd( message ); - break; - - case MSG_ID_UI_PATIENT_CONNECTION_CONFIRM_REQUEST: - handlePatientConnectionConfirmCmd( message ); - break; - - case MSG_ID_UI_START_TREATMENT_REQUEST: - handleStartTreatmentRequest( message ); - break; - - case MSG_ID_UI_RINSEBACK_CMD_REQUEST: - handlRinsebackCmd( message ); - break; - - case MSG_ID_UI_RECIRC_CMD_REQUEST: - handleTreatmentRecircCmd( message ); - break; - - case MSG_ID_UI_TX_END_CMD_REQUEST: - handleTreatmentEndCmd( message ); - break; - - case MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM_REQUEST: - handlePatientDisconnectionConfirmCmd( message ); - break; - - case MSG_ID_UI_DISPOSABLE_REMOVAL_CONFIRM_REQUEST: - handleDisposableRemovalConfirmCmd( message ); - break; - - case MSG_ID_UI_TREATMENT_LOG_DATA_REQUEST: - handleUITreatmentLogDataRequest( message ); - break; - - case MSG_ID_UI_DISINFECT_REQUEST: - handleUIDisinfectRequest( message ); - break; - - case MSG_ID_DG_COMMAND_RESPONSE: - handleDGCmdResp( message ); - break; - - case MSG_ID_DG_FLUSH_DATA: - handleFlushUIStateReadingFromDG( message ); - break; - - case MSG_ID_DG_HEAT_DISINFECT_DATA: - handleHeatDisinfectUIStateReadingFromDG( message ); - break; - - case MSG_ID_DG_CHEM_DISINFECT_DATA: - handleChemDisinfectUIStateReadingFromDG( message ); - break; - - case MSG_ID_UI_HD_SET_RTC_REQUEST: - handleUIClockSyncRequest( message ); - break; - - case MSG_ID_DG_POST_FINAL_TEST_RESULT: - handleDGPOSTFinalResult( message ); - break; - - case MSG_ID_UI_POST_FINAL_TEST_RESULT: - handleUIPOSTFinalResult( message ); - break; - - case MSG_ID_UI_VERSION_INFO_RESPONSE: - handleUIVersionResponse( message ); - break; - - case MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST: - handleUIActiveAlarmsListRequest( message ); - break; - - case MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_REQUEST: - handleSetHDStandbyDisinfectSubmodeRequest( message ); - break; - - case MSG_ID_UI_SERVICE_INFO_REQUEST: - handleHDServiceScheduleRequest( message ); - break; - - case MSG_ID_HD_USAGE_INFO_REQUEST: - handleHDUsageInfoRequest( message ); - break; - - case MSG_ID_DG_CONCENTRATE_MIXING_RATIOS_DATA: - handleDGMixingRatios( message ); - break; - - case MSG_ID_UI_SERVICE_MODE_REQUEST: - handleUIServiceModeRequest( message ); - break; - - case MSG_ID_DG_SERVICE_SCHEDULE_DATA: - handleDGServiceScheduleData( message ); - break; - - case MSG_ID_DG_USAGE_DATA: - handleDGUsageInfoData( message ); - break; - - case MSG_ID_UI_CONFIRMATION_RESULT_RESPONSE: - handleUIConfirmationResponse( message ); - break; - - case MSG_ID_HD_SET_SERVICE_TIME_REQUEST: - handleSetHDServiceTime( message ); - break; - - // NOTE: this always must be the last case - case MSG_ID_TESTER_LOGIN_REQUEST: - handleTesterLogInRequest( message ); - break; - + case MSG_ID_USER_ALARM_SILENCE_REQUEST: + handleUIAlarmSilenceRequest( message ); + break; + + case MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST: + handleTreatmentParametersFromUI( message ); + break; + + case MSG_ID_UI_INITIATE_TREATMENT_REQUEST: + handleInitiateTreatmentRequest( message ); + break; + + case MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS_REQUEST: + handleUIUserConfirmTreatmentParameters( message ); + break; + + case MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST: + handleChangePressureLimitsRequest( message ); + break; + + case MSG_ID_UI_HEPARIN_PAUSE_RESUME_REQUEST: + handleHeparinCommandRequest( message ); + break; + + case MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD_REQUEST: + handleAlarmAudioVolumeSetCmd( message ); + break; + + case MSG_ID_UI_SET_UF_VOLUME_PARAMETER_REQUEST: + handleUFVolumeSetRequest( message ); + break; + + case MSG_ID_UI_SAMPLE_WATER_CMD_REQUEST: + handleSampleWaterCmd( message ); + break; + + case MSG_ID_UI_SAMPLE_WATER_RESULT: + handleSampleWaterResult( message ); + break; + + case MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM_REQUEST: + handleConsumableInstallConfirm( message ); + break; + + case MSG_ID_UI_INSTALLATION_CONFIRM_REQUEST: + handleInstallationConfirm( message ); + break; + + case MSG_ID_UI_START_PRIME_REQUEST: + handleStartPrimeCmd( message ); + break; + + case MSG_ID_UI_PATIENT_CONNECTION_BEGIN_REQUEST: + handleContinueToTreatmentCmd( message ); + break; + + case MSG_ID_UI_PATIENT_CONNECTION_CONFIRM_REQUEST: + handlePatientConnectionConfirmCmd( message ); + break; + + case MSG_ID_UI_START_TREATMENT_REQUEST: + handleStartTreatmentRequest( message ); + break; + + case MSG_ID_UI_RINSEBACK_CMD_REQUEST: + handlRinsebackCmd( message ); + break; + + case MSG_ID_UI_RECIRC_CMD_REQUEST: + handleTreatmentRecircCmd( message ); + break; + + case MSG_ID_UI_TX_END_CMD_REQUEST: + handleTreatmentEndCmd( message ); + break; + + case MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM_REQUEST: + handlePatientDisconnectionConfirmCmd( message ); + break; + + case MSG_ID_UI_DISPOSABLE_REMOVAL_CONFIRM_REQUEST: + handleDisposableRemovalConfirmCmd( message ); + break; + + case MSG_ID_UI_TREATMENT_LOG_DATA_REQUEST: + handleUITreatmentLogDataRequest( message ); + break; + + case MSG_ID_UI_DISINFECT_REQUEST: + handleUIDisinfectRequest( message ); + break; + + case MSG_ID_DG_COMMAND_RESPONSE: + handleDGCmdResp( message ); + break; + + case MSG_ID_DG_FLUSH_DATA: + handleFlushUIStateReadingFromDG( message ); + break; + + case MSG_ID_DG_HEAT_DISINFECT_DATA: + handleHeatDisinfectUIStateReadingFromDG( message ); + break; + + case MSG_ID_DG_CHEM_DISINFECT_DATA: + handleChemDisinfectUIStateReadingFromDG( message ); + break; + + case MSG_ID_UI_HD_SET_RTC_REQUEST: + handleUIClockSyncRequest( message ); + break; + + case MSG_ID_DG_POST_FINAL_TEST_RESULT: + handleDGPOSTFinalResult( message ); + break; + + case MSG_ID_UI_POST_FINAL_TEST_RESULT: + handleUIPOSTFinalResult( message ); + break; + + case MSG_ID_UI_VERSION_INFO_RESPONSE: + handleUIVersionResponse( message ); + break; + + case MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST: + handleUIActiveAlarmsListRequest( message ); + break; + + case MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_REQUEST: + handleSetHDStandbyDisinfectSubmodeRequest( message ); + break; + + case MSG_ID_UI_SERVICE_INFO_REQUEST: + handleHDServiceScheduleRequest( message ); + break; + + case MSG_ID_HD_USAGE_INFO_REQUEST: + handleHDUsageInfoRequest( message ); + break; + + case MSG_ID_DG_CONCENTRATE_MIXING_RATIOS_DATA: + handleDGMixingRatios( message ); + break; + + case MSG_ID_UI_SERVICE_MODE_REQUEST: + handleUIServiceModeRequest( message ); + break; + + case MSG_ID_DG_SERVICE_SCHEDULE_DATA: + handleDGServiceScheduleData( message ); + break; + + case MSG_ID_DG_USAGE_DATA: + handleDGUsageInfoData( message ); + break; + + case MSG_ID_UI_CONFIRMATION_RESULT_RESPONSE: + handleUIConfirmationResponse( message ); + break; + + case MSG_ID_HD_SET_SERVICE_TIME_REQUEST: + handleSetHDServiceTime( message ); + break; + + // NOTE: this always must be the last case + case MSG_ID_TESTER_LOGIN_REQUEST: + handleTesterLogInRequest( message ); + break; + default: // Un-recognized or un-handled message ID received - ignore - break; + break; } // Handle any test messages if tester has logged in successfully @@ -1242,12 +1233,12 @@ case MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE: handleTestBloodFlowBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_TREATMENT_TIME_REMAINING_OVERRIDE: + handleTestTreatmentTimeRemainingOverrideRequest( message ); break; - case MSG_ID_TREATMENT_TIME_REMAINING_OVERRIDE: - handleTestTreatmentTimeRemainingOverrideRequest( message ); - break; - case MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE: handleTestBloodPumpMeasuredSpeedOverrideRequest( message ); break; @@ -1340,426 +1331,426 @@ handleTestHDSafetyShutdownOverrideRequest( message ); break; - case MSG_ID_HD_ACCEL_OVERRIDE: - handleTestHDAccelOverrideRequest( message ); - break; - - case MSG_ID_HD_ACCEL_MAX_OVERRIDE: - handleTestHDAccelMaxOverrideRequest( message ); - break; - - case MSG_ID_HD_ACCEL_SEND_INTERVAL_OVERRIDE: - handleTestHDAccelBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE: - handleTestDialOutFlowSetPointOverrideRequest( message ); - break; - - case MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER: - handleTestSetTreatmentParameter( message ); - break; - - case MSG_ID_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE: - handleTestHDValvesBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_VALVES_HOME: - handleHomeHDValve( message ); - break; - - case MSG_ID_HD_VALVES_SET_AIR_TRAP_VALVE: - handleSetAirTrapValve( message ); - break; - - case MSG_ID_HD_VALVES_POSITION_OVERRIDE: - handleSetHDValvePositionOverrideRequest( message ); - break; - -#ifdef DEBUG_ENABLED - case MSG_ID_HD_VALVES_SET_PWM_OVERRIDE: - handleSetHDValvePWMOverrideRequest( message ); - break; -#endif - - case MSG_ID_HD_AIR_TRAP_SEND_INTERVAL_OVERRIDE: - handleSetAirTrapBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_AIR_TRAP_LEVEL_SENSOR_OVERRIDE: - handleSetAirTrapLevelSensorOverrideRequest( message ); - break; - - case MSG_ID_HD_SOFTWARE_RESET_REQUEST: - handleHDSoftwareResetRequest( message ); - break; - - case MSG_ID_BLOOD_ROTOR_COUNT_OVERRIDE: - handleHDBloodPumpRotorCountOverrideRequest( message ); - break; - - case MSG_ID_HD_DIALYSATE_INLET_PUMP_ROTOR_COUNT_OVERRIDE: - handleHDDialInPumpRotorCountOverrideRequest( message ); - break; - - case MSG_ID_BLOOD_PUMP_HOME_CMD: - handleTestBloodPumpHomeRequest( message ); - break; - - case MSG_ID_DIAL_IN_PUMP_HOME_CMD: - handleTestDialInPumpHomeRequest( message ); - break; - - case MSG_ID_DIAL_OUT_PUMP_HOME_CMD: - handleTestDialOutPumpHomeRequest( message ); - break; - - case MSG_ID_SUPER_CLEAR_ALARMS_CMD: - handleTestSuperClearAlarmsRequest( message ); - break; - - case MSG_ID_HD_SET_OP_MODE_REQUEST: - handleTestSetOpModeRequest( message ); - break; - - case MSG_ID_HD_FLUID_LEAK_SEND_INTERVAL_OVERRIDE: - handleSetFluidLeakBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_FLUID_LEAK_STATE_OVERRIDE: - handleSetFluidLeakStateOverrideRequest( message ); - break; - - case MSG_ID_HD_BLOOD_LEAK_DATA_SEND_INTERVAL_OVERRIDE: - handleSetBloodLeakDataBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_BLOOD_LEAK_STATUS_OVERRIDE: - handleSetBloodLeakStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_BLOOD_LEAK_ZERO_REQUEST: - handleBloodLeakZeroRequest( message ); - break; - - case MSG_ID_HD_BUBBLES_DATA_SEND_INTERVAL_OVERRIDE: - handleSetBubblesDataBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_BUBBLE_STATUS_OVERRIDE: - handleSetBubbleStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST: - handleBubbleSelfTestRequest( message ); - break; - - case MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE: - handleBloodPrimeVolumeOverrideRequest( message ); - break; - - case MSG_ID_HD_SWITCHES_STATUS_OVERRIDE: - handleSetSwitchesStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE: - handleTestSwitchesPublishIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_BATTERY_REMAINING_CAP_MWH_OVERRIDE: - handleBatteryRemainingPercentOverrideRequest( message ); - break; - - case MSG_ID_HD_RINSEBACK_VOLUME_OVERRIDE: - handleRinsebackVolumeOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: - handleTestSyringePumpDataBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST: - handleTestSyringePumpOperationRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_MEASURED_RATE_OVERRIDE: - handleTestSyringePumpMeasuredRateOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_MEASURED_FORCE_OVERRIDE: - handleTestSyringePumpMeasuredForceOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_SYRINGE_DETECT_OVERRIDE: - handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_MEASURED_HOME_OVERRIDE: - handleTestSyringePumpMeasuredHomeOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_MEASURED_POSITION_OVERRIDE: - handleTestSyringePumpMeasuredPositionOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: - handleTestSyringePumpMeasuredVolumeOverrideRequest( message ); - break; - - case MSG_ID_HD_VALVES_CURRENT_OVERRIDE: - handleTestValvesCurrentOverrideRequest( message ); - break; - - case MSG_ID_HD_VALVES_POSITION_COUNT_OVERRIDE: - handleTestValvesPositionCountOverrideRequest( message ); - break; - - case MSG_ID_HD_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE: - handleTestMonitoredVoltagesSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_MONITORED_VOLTAGES_OVERRIDE: - handleTestMonitoredVoltageOverrideRequest( message ); - break; - - case MSG_ID_HD_ALARM_INFO_SEND_INTERVAL_OVERRIDE: - handleTestAlarmInfoSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_ALARM_AUDIO_VOLUME_LEVEL_OVERRIDE: - handleTestAlarmAudioVolumeOverrideRequest( message ); - break; - - case MSG_ID_HD_ALARM_AUDIO_CURRENT_HG_OVERRIDE: - handleTestAlarmAudioCurrentHgOverrideRequest( message ); - break; - - case MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE: - handleTestAlarmAudioCurrentLgOverrideRequest( message ); - break; - - case MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE: - handleTestAlarmBackupAudioCurrentOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE: - handleTestSyringePumpStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE: - handleTestSyringePumpEncoderStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE: - handleTestSyringePumpADCandDACStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE: - handleTestSyringePumpADCReadCtrOverrideRequest( message ); - break; - - case MSG_ID_HD_TEMPERATURES_VALUE_OVERRIDE: - handleTestTemperaturesValueOverrideRequest( message ); - break; - - case MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRIDE: - handleTestTemperaturesBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_FANS_PUBLISH_INTERVAL_OVERRIDE: - handleTestFansBroadcastIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_FANS_RPM_OVERRIDE: - handleFansRPMOverride( message ); - break; - - case MSG_ID_HD_SET_CALIBRATION_RECORD: - handleSetHDCalibrationRecord( message ); - break; - - case MSG_ID_HD_GET_CALIBRATION_RECORD: - handleGetHDCalibrationRecord( message ); - break; - - case MSG_ID_HD_SET_SYSTEM_RECORD: - handleSetHDSystemRecord( message ); - break; - - case MSG_ID_HD_GET_SYSTEM_RECORD: - handleGetHDSystemRecord( message ); - break; - - case MSG_ID_HD_GET_SERVICE_RECORD: - handleGetHDServiceRecord( message ); - break; - - case MSG_ID_HD_SET_SERVICE_RECORD: - handleSetHDServiceRecord( message ); - break; - - case MSG_ID_HD_ALARM_STATUS_PUBLISH_INTERVAL_OVERRIDE: - handleTestAlarmStatusSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_TREATMENT_TIME_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestTreatmentTimeDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_TREATMENT_RANGES_PUBLISH_INTERVAL_OVERRIDE: - handleTestTreatmentRangesSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_TREATMENT_STOP_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestTreatmentStopDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_BLOOD_PRIME_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestBloodPrimeDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_RINSEBACK_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestRinsebackDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_STANDBY_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestStandbyModeDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_OP_MODE_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestOpModeDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_PRE_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestPreTreatmentModeDataSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestTreatmentModeSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_POST_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: - handleTestPostTreatmentModeSendIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_BLOCK_MESSAGE_TRANSMISSION: - handleTestBlockMessagesRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_FORCE_SENSOR_DAC_CALIBRATE: - handleTestSyringePumpForceSensorCalibrateRequest( message ); - break; - - case MSG_ID_HD_SET_FANS_RPM_ALARM_START_TIME_OFFSET: - handleTestFansRPMAlarmStartTimeOffsetRequest( message ); - break; - - case MSG_ID_HD_SYRINGE_PUMP_HEPRIN_BOLUS_TARGET_RATE_OVERRIDE: - handleTestSyringePumpHeprinBolusTargetRateOverrideRequest( message ); - break; - - case MSG_ID_HD_FANS_DUTY_CYCLE_OVERRIDE: - handleSetFansDutyCycleOverrideRequest( message ); - break; - - case MSG_ID_HD_GET_SW_CONFIG_RECORD: - handleGetHDSoftwareConfigRecord( message ); - break; - - case MSG_ID_HD_SET_SW_CONFIG_RECORD: - handleSetHDSoftwareConfigRecord( message ); - break; - - case MSG_ID_HD_STOP_RTC_CLOCK: - handleStopHDRTCClock( message ); - break; - - case MSG_ID_HD_GET_USAGE_INFO_RECORD: - handleGetHDUsageInfoRecord( message ); - break; - - case MSG_ID_HD_SET_USAGE_INFO_RECORD: - handleSetHDUsageInfoRecord( message ); - break; - - case MSG_ID_HD_SET_BLOOD_LEAK_2_EMB_MODE: - handleSetBloodLeak2EmbeddedMode( message ); - break; - - case MSG_ID_HD_SET_BLOOD_LEAK_EMB_MODE_COMMAND: - handleSetBloodLeakEmbeddedModeCommand( message ); - break; - - case MSG_ID_HD_SEND_ALARMS_COMMAND: - handleResendAllAlarmsCommand( message ); - break; - - case MSG_ID_HD_REQ_CURRENT_TREATMENT_PARAMETERS: - handleTestCurrentTreamtmentParametersRequest( message ); - break; - - case MSG_ID_HD_BLOOD_PUMP_SET_PWM: - handleTestBloodPumpSetPWM( message ); - break; - - case MSG_ID_HD_DIAL_IN_SET_PWM: - handleTestDialInSetPWM( message ); - break; - - case MSG_ID_HD_DIAL_OUT_SET_PWM: - handleTestDialOutSetPWM( message ); - break; - - case MSG_ID_HD_NV_RECORD_CRC_OVERRIDE: - handleTestHDNVRecordCRCOverride( message ); - break; - - case MSG_ID_HD_AIR_PUMP_PUBLISH_INTERVAL_OVERRIDE: - handleAirPumpIntervalOverrideRequest( message ); - break; - - case MSG_ID_HD_AIR_PUMP_SET_STATE: - handleAirPumpSetState( message ); - break; - - case MSD_ID_HD_RTC_CTL_REG1_STATUS_OVERRIDE: - handleHDRTCControlReg1StatusOverrideRequest( message ); - break; - - case MSD_ID_HD_RTC_CTL_REG3_STATUS_OVERRIDE: - handleHDRTCControlReg3StatusOverrideRequest( message ); - break; - - case MSG_ID_HD_BATTERY_STATUS_OVERRIDE: - handleBatteryStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_BATTERY_CHARGER_STATUS_OVERRIDE: - handleBatteryChargerStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_BATTERY_COMM_STATUS_OVERRIDE: - handleBatteryI2CStatusOverrideRequest( message ); - break; - - case MSG_ID_HD_DIAL_IN_PUMP_HARD_STOP: - handleDialInPumpHardStopRequest( message ); - break; - - case MSG_ID_HD_DIAL_OUT_PUMP_HARD_STOP: - handleDialOutPumpHardStopRequest( message ); - break; - - case MSG_ID_HD_BLOOD_PUMP_HARD_STOP: - handleBloodPumpHardStopRequest( message ); - break; - - // The default cannot be reached in VectorCAST since the cases are run in a for loop + case MSG_ID_HD_ACCEL_OVERRIDE: + handleTestHDAccelOverrideRequest( message ); + break; + + case MSG_ID_HD_ACCEL_MAX_OVERRIDE: + handleTestHDAccelMaxOverrideRequest( message ); + break; + + case MSG_ID_HD_ACCEL_SEND_INTERVAL_OVERRIDE: + handleTestHDAccelBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE: + handleTestDialOutFlowSetPointOverrideRequest( message ); + break; + + case MSG_ID_HD_SET_PARAMETER_TREATMENT_PARAMETER: + handleTestSetTreatmentParameter( message ); + break; + + case MSG_ID_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE: + handleTestHDValvesBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_VALVES_HOME: + handleHomeHDValve( message ); + break; + + case MSG_ID_HD_VALVES_SET_AIR_TRAP_VALVE: + handleSetAirTrapValve( message ); + break; + + case MSG_ID_HD_VALVES_POSITION_OVERRIDE: + handleSetHDValvePositionOverrideRequest( message ); + break; + +#ifdef DEBUG_ENABLED + case MSG_ID_HD_VALVES_SET_PWM_OVERRIDE: + handleSetHDValvePWMOverrideRequest( message ); + break; +#endif + + case MSG_ID_HD_AIR_TRAP_SEND_INTERVAL_OVERRIDE: + handleSetAirTrapBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_AIR_TRAP_LEVEL_SENSOR_OVERRIDE: + handleSetAirTrapLevelSensorOverrideRequest( message ); + break; + + case MSG_ID_HD_SOFTWARE_RESET_REQUEST: + handleHDSoftwareResetRequest( message ); + break; + + case MSG_ID_BLOOD_ROTOR_COUNT_OVERRIDE: + handleHDBloodPumpRotorCountOverrideRequest( message ); + break; + + case MSG_ID_HD_DIALYSATE_INLET_PUMP_ROTOR_COUNT_OVERRIDE: + handleHDDialInPumpRotorCountOverrideRequest( message ); + break; + + case MSG_ID_BLOOD_PUMP_HOME_CMD: + handleTestBloodPumpHomeRequest( message ); + break; + + case MSG_ID_DIAL_IN_PUMP_HOME_CMD: + handleTestDialInPumpHomeRequest( message ); + break; + + case MSG_ID_DIAL_OUT_PUMP_HOME_CMD: + handleTestDialOutPumpHomeRequest( message ); + break; + + case MSG_ID_SUPER_CLEAR_ALARMS_CMD: + handleTestSuperClearAlarmsRequest( message ); + break; + + case MSG_ID_HD_SET_OP_MODE_REQUEST: + handleTestSetOpModeRequest( message ); + break; + + case MSG_ID_HD_FLUID_LEAK_SEND_INTERVAL_OVERRIDE: + handleSetFluidLeakBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_FLUID_LEAK_STATE_OVERRIDE: + handleSetFluidLeakStateOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_DATA_SEND_INTERVAL_OVERRIDE: + handleSetBloodLeakDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_STATUS_OVERRIDE: + handleSetBloodLeakStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_ZERO_REQUEST: + handleBloodLeakZeroRequest( message ); + break; + + case MSG_ID_HD_BUBBLES_DATA_SEND_INTERVAL_OVERRIDE: + handleSetBubblesDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BUBBLE_STATUS_OVERRIDE: + handleSetBubbleStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST: + handleBubbleSelfTestRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PRIME_VOLUME_OVERRIDE: + handleBloodPrimeVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_SWITCHES_STATUS_OVERRIDE: + handleSetSwitchesStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE: + handleTestSwitchesPublishIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_REMAINING_CAP_MWH_OVERRIDE: + handleBatteryRemainingPercentOverrideRequest( message ); + break; + + case MSG_ID_HD_RINSEBACK_VOLUME_OVERRIDE: + handleRinsebackVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: + handleTestSyringePumpDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST: + handleTestSyringePumpOperationRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_RATE_OVERRIDE: + handleTestSyringePumpMeasuredRateOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_FORCE_OVERRIDE: + handleTestSyringePumpMeasuredForceOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_SYRINGE_DETECT_OVERRIDE: + handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_HOME_OVERRIDE: + handleTestSyringePumpMeasuredHomeOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_POSITION_OVERRIDE: + handleTestSyringePumpMeasuredPositionOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: + handleTestSyringePumpMeasuredVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_VALVES_CURRENT_OVERRIDE: + handleTestValvesCurrentOverrideRequest( message ); + break; + + case MSG_ID_HD_VALVES_POSITION_COUNT_OVERRIDE: + handleTestValvesPositionCountOverrideRequest( message ); + break; + + case MSG_ID_HD_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE: + handleTestMonitoredVoltagesSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_MONITORED_VOLTAGES_OVERRIDE: + handleTestMonitoredVoltageOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_INFO_SEND_INTERVAL_OVERRIDE: + handleTestAlarmInfoSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_VOLUME_LEVEL_OVERRIDE: + handleTestAlarmAudioVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_CURRENT_HG_OVERRIDE: + handleTestAlarmAudioCurrentHgOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE: + handleTestAlarmAudioCurrentLgOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE: + handleTestAlarmBackupAudioCurrentOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE: + handleTestSyringePumpStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE: + handleTestSyringePumpEncoderStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE: + handleTestSyringePumpADCandDACStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE: + handleTestSyringePumpADCReadCtrOverrideRequest( message ); + break; + + case MSG_ID_HD_TEMPERATURES_VALUE_OVERRIDE: + handleTestTemperaturesValueOverrideRequest( message ); + break; + + case MSG_ID_HD_TEMPERATURES_PUBLISH_INTERVAL_OVERRIDE: + handleTestTemperaturesBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_FANS_PUBLISH_INTERVAL_OVERRIDE: + handleTestFansBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_FANS_RPM_OVERRIDE: + handleFansRPMOverride( message ); + break; + + case MSG_ID_HD_SET_CALIBRATION_RECORD: + handleSetHDCalibrationRecord( message ); + break; + + case MSG_ID_HD_GET_CALIBRATION_RECORD: + handleGetHDCalibrationRecord( message ); + break; + + case MSG_ID_HD_SET_SYSTEM_RECORD: + handleSetHDSystemRecord( message ); + break; + + case MSG_ID_HD_GET_SYSTEM_RECORD: + handleGetHDSystemRecord( message ); + break; + + case MSG_ID_HD_GET_SERVICE_RECORD: + handleGetHDServiceRecord( message ); + break; + + case MSG_ID_HD_SET_SERVICE_RECORD: + handleSetHDServiceRecord( message ); + break; + + case MSG_ID_HD_ALARM_STATUS_PUBLISH_INTERVAL_OVERRIDE: + handleTestAlarmStatusSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_TREATMENT_TIME_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestTreatmentTimeDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_TREATMENT_RANGES_PUBLISH_INTERVAL_OVERRIDE: + handleTestTreatmentRangesSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_TREATMENT_STOP_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestTreatmentStopDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PRIME_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestBloodPrimeDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_RINSEBACK_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestRinsebackDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_STANDBY_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestStandbyModeDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_OP_MODE_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestOpModeDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_PRE_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestPreTreatmentModeDataSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestTreatmentModeSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_POST_TREATMENT_DATA_PUBLISH_INTERVAL_OVERRIDE: + handleTestPostTreatmentModeSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOCK_MESSAGE_TRANSMISSION: + handleTestBlockMessagesRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_FORCE_SENSOR_DAC_CALIBRATE: + handleTestSyringePumpForceSensorCalibrateRequest( message ); + break; + + case MSG_ID_HD_SET_FANS_RPM_ALARM_START_TIME_OFFSET: + handleTestFansRPMAlarmStartTimeOffsetRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_HEPRIN_BOLUS_TARGET_RATE_OVERRIDE: + handleTestSyringePumpHeprinBolusTargetRateOverrideRequest( message ); + break; + + case MSG_ID_HD_FANS_DUTY_CYCLE_OVERRIDE: + handleSetFansDutyCycleOverrideRequest( message ); + break; + + case MSG_ID_HD_GET_SW_CONFIG_RECORD: + handleGetHDSoftwareConfigRecord( message ); + break; + + case MSG_ID_HD_SET_SW_CONFIG_RECORD: + handleSetHDSoftwareConfigRecord( message ); + break; + + case MSG_ID_HD_STOP_RTC_CLOCK: + handleStopHDRTCClock( message ); + break; + + case MSG_ID_HD_GET_USAGE_INFO_RECORD: + handleGetHDUsageInfoRecord( message ); + break; + + case MSG_ID_HD_SET_USAGE_INFO_RECORD: + handleSetHDUsageInfoRecord( message ); + break; + + case MSG_ID_HD_SET_BLOOD_LEAK_2_EMB_MODE: + handleSetBloodLeak2EmbeddedMode( message ); + break; + + case MSG_ID_HD_SET_BLOOD_LEAK_EMB_MODE_COMMAND: + handleSetBloodLeakEmbeddedModeCommand( message ); + break; + + case MSG_ID_HD_SEND_ALARMS_COMMAND: + handleResendAllAlarmsCommand( message ); + break; + + case MSG_ID_HD_REQ_CURRENT_TREATMENT_PARAMETERS: + handleTestCurrentTreamtmentParametersRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PUMP_SET_PWM: + handleTestBloodPumpSetPWM( message ); + break; + + case MSG_ID_HD_DIAL_IN_SET_PWM: + handleTestDialInSetPWM( message ); + break; + + case MSG_ID_HD_DIAL_OUT_SET_PWM: + handleTestDialOutSetPWM( message ); + break; + + case MSG_ID_HD_NV_RECORD_CRC_OVERRIDE: + handleTestHDNVRecordCRCOverride( message ); + break; + + case MSG_ID_HD_AIR_PUMP_PUBLISH_INTERVAL_OVERRIDE: + handleAirPumpIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_AIR_PUMP_SET_STATE: + handleAirPumpSetState( message ); + break; + + case MSD_ID_HD_RTC_CTL_REG1_STATUS_OVERRIDE: + handleHDRTCControlReg1StatusOverrideRequest( message ); + break; + + case MSD_ID_HD_RTC_CTL_REG3_STATUS_OVERRIDE: + handleHDRTCControlReg3StatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_STATUS_OVERRIDE: + handleBatteryStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_CHARGER_STATUS_OVERRIDE: + handleBatteryChargerStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_COMM_STATUS_OVERRIDE: + handleBatteryI2CStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_DIAL_IN_PUMP_HARD_STOP: + handleDialInPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_DIAL_OUT_PUMP_HARD_STOP: + handleDialOutPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PUMP_HARD_STOP: + handleBloodPumpHardStopRequest( message ); + break; + + // The default cannot be reached in VectorCAST since the cases are run in a for loop default: // Unrecognized message ID received - ignore - break; + break; } } } - -/**@}*/ + +/**@}*/