Fisheye: Tag 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 refers to a dead (removed) revision in file `firmware/App/Modes/ModeUpdate.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 refers to a dead (removed) revision in file `firmware/App/Modes/ModeUpdate.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Modes/Update.c =================================================================== diff -u -re0dddcdd74abee2e00aa5880e0ead812816ec810 -r23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 --- firmware/App/Modes/Update.c (.../Update.c) (revision e0dddcdd74abee2e00aa5880e0ead812816ec810) +++ firmware/App/Modes/Update.c (.../Update.c) (revision 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8) @@ -8,7 +8,7 @@ * @file Update.c * * @author (last) Dana Rich -* @date (last) 25-April-2023 +* @date (last) 7-March-2023 * * @author (original) Dana Rich * @date (original) 7-March-2023 @@ -20,9 +20,11 @@ #include "system.h" #include "Update.h" +#define APP_STATUS_ADDRESS 0x00010000 #define BL_START_ADDRESS 0x00000000 uint32_t bootloaderStartAddress = (uint32_t)BL_START_ADDRESS; +uint32_t g_pulUpdateSuccess[2] = {0x5A5A5A5A, 0x00}; /*********************************************************************//** * @brief @@ -39,13 +41,35 @@ /*********************************************************************//** * @brief + * Sets the flag in FLASH that indicates the devices requests to enter into + * update mode from the bootloader. + * @details Inputs: none + * @details Outputs: Memory location reflects desired status + * @return none + *************************************************************************/ +bool setBootloaderFlag( void ) +{ + register uint32_t src = (uint32_t)&g_pulUpdateSuccess[1]; + register uint32_t dst = APP_STATUS_ADDRESS; + unsigned int bytes = 16; + + Fapi_issueProgrammingCommand((uint32_t *)dst, + (uint8_t *)src, + (uint32_t) bytes, + 0, + 0, + Fapi_AutoEccGeneration); + + while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); + + return (FAPI_GET_FSM_STATUS == Fapi_Status_Success); +} + +/*********************************************************************//** + * @brief * Sets the software reset bits [15-14] of the System Exception Control * Register. Setting bit 15, or clearing bit 14 will cause a system * software reset. - * - * This will leave the device in a state where the bootloader will not be - * left until the next power cycle or a command the start the main app - * is received by the bootloader. * @details Inputs: none * @details Outputs: RM46x reboots * @return none Index: firmware/App/Modes/Update.h =================================================================== diff -u -r4979bda4723da492e500f380a0e2b33517843c28 -r23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 --- firmware/App/Modes/Update.h (.../Update.h) (revision 4979bda4723da492e500f380a0e2b33517843c28) +++ firmware/App/Modes/Update.h (.../Update.h) (revision 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8) @@ -19,6 +19,7 @@ #define __UPDATE_H__ void startBootloader( void ); +bool setBootloaderFlag( void ); void rebootSystemNow( void ); #endif /* __UPDATE_H__ */ Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8) @@ -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) 20-Mar-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) 20-Mar-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 5000 ///< 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 150 ///< Maximum time for a Denali message that requires ACK to be ACK'd - + #define MSG_NOT_ACKED_MAX_RETRIES 8 ///< 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 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 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 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_DG_COMM_TIMEOUT ) ) - { - clearAlarmCondition( ALARM_ID_DG_COMM_TIMEOUT ); + timeOfLastDGCheckIn = getMSTimerCount(); + + if ( TRUE == isAlarmActive( ALARM_ID_DG_COMM_TIMEOUT ) ) + { + clearAlarmCondition( ALARM_ID_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 * @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,12 +586,12 @@ // 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(); } } else if ( -1 == msgSize ) // Candidate message with bad CRC found? @@ -704,7 +704,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 @@ -748,35 +748,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_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_DG_COMM_TIMEOUT ); - } - else // Otherwise clear the alarm - { - clearAlarmCondition( ALARM_ID_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_DG_COMM_TIMEOUT ); + } + else // Otherwise clear the alarm + { + clearAlarmCondition( ALARM_ID_DG_COMM_TIMEOUT ); + } + dgIsCommunicating = FALSE; +#endif + } + } } /*********************************************************************//** @@ -790,10 +790,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 ); + } } /*********************************************************************//** @@ -836,8 +836,8 @@ { _enable_IRQ(); } - } - + } + return result; } @@ -893,15 +893,15 @@ 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 ) ); - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); - pendingAckList[ i ].used = FALSE; // Take pending message off of list + memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); + pendingAckList[ i ].used = FALSE; // Take pending message off of list } } } @@ -926,18 +926,18 @@ handleOffButtonConfirmMsgFromUI( message ); break; - 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 ); + 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_UI_CHECK_IN: handleUICheckIn( message ); break; @@ -952,12 +952,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; @@ -972,23 +972,23 @@ case MSG_ID_FW_VERSIONS_REQUEST: handleFWVersionRequest( message ); - handleHDSerialNumberRequest(); - break; - - case MSG_ID_DG_VERSION_REPONSE: - handleDGVersionResponse( message ); - break; - - case MSG_ID_DG_HEATERS_DATA: - handleDGHeatersData( message ); + handleHDSerialNumberRequest(); 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: @@ -999,178 +999,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 @@ -1220,12 +1220,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; @@ -1318,426 +1318,439 @@ 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; + + + case MSG_ID_FW_SET_ENTER_BOOTLOADER: + handleSetBootloaderRequest( message ); + break; + + case MSG_ID_FW_ENTER_BOOTLOADER_NOW: + handleEnterBootloaderNowRequest( message ); + break; + + case MSG_ID_FW_REBOOT_NOW: + handleRebootNowRequest( 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; } } } - -/**@}*/ + +/**@}*/ Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8) @@ -40,11 +40,12 @@ #include "TreatmentEnd.h" #include "TreatmentRecirc.h" #include "TreatmentStop.h" +#include "Update.h" #include "Utilities.h" #include "Valves.h" #include "WatchdogMgmt.h" #include "HDDefs.h" -#include "TaskPriority.h" +#include "TaskPriority.h" /** * @addtogroup SystemCommMessages @@ -8079,4 +8080,74 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleSetBootloaderRequest function handles a + * request to set the flag to trigger update mode + * after a reboot. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleSetBootloaderRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // verify payload length + if ( 0 == message->hdr.payloadLen ) + { + result = setBootloaderFlag(); + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleEnterBootloaderNowRequest function handles a + * request immediately jump to the bootloader application. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleEnterBootloaderNowRequest( MESSAGE_T *message ) +{ + BOOL result = (0 == message->hdr.payloadLen); + + // respond to request immediately with whether it was formatted correctly + sendTestAckResponseMsg((MSG_ID_T)message->hdr.msgID, result); + + if (result) + { + // Jump to the bootloader, there is no coming back from this. + startBootloader(); + } +} + +/*********************************************************************//** + * @brief + * The handleEnterBootloaderNowRequest function handles a + * request immediately jump to the bootloader application. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleRebootNowRequest( MESSAGE_T *message ) +{ + BOOL result = (0 == message->hdr.payloadLen); + + // respond to request immediately with whether it was formatted correctly + sendTestAckResponseMsg((MSG_ID_T)message->hdr.msgID, result); + + if (result) + { + // Jump to the bootloader, there is no coming back from this. + startBootloader(); + } +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 23ff586bf450a0fe6dd88bdac1fb433cfeb7e6e8) @@ -14,11 +14,11 @@ * @date (original) 05-Nov-2019 * ***************************************************************************/ - -#ifndef __SYSTEM_COMM_MESSAGES_H__ -#define __SYSTEM_COMM_MESSAGES_H__ -#include "AirPump.h" +#ifndef __SYSTEM_COMM_MESSAGES_H__ +#define __SYSTEM_COMM_MESSAGES_H__ + +#include "AirPump.h" #include "AirTrap.h" #include "BloodFlow.h" #include "BloodLeak.h" @@ -27,13 +27,13 @@ #include "CommBuffers.h" #include "DGInterface.h" #include "DialInFlow.h" -#include "DialOutFlow.h" +#include "DialOutFlow.h" #include "Dialysis.h" -#include "Fans.h" +#include "Fans.h" #include "FluidLeak.h" #include "HDCommon.h" #include "MessageSupport.h" -#include "ModeInitPOST.h" +#include "ModeInitPOST.h" #include "ModePostTreat.h" #include "ModePreTreat.h" #include "ModeStandby.h" @@ -49,7 +49,7 @@ #include "Temperatures.h" #include "Valves.h" #include "Voltages.h" - + /** * @defgroup SystemCommMessages SystemCommMessages * @brief The system communication messages module provides helper functions @@ -62,7 +62,7 @@ // ********** public definitions ********** #define ACK_REQUIRED TRUE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. -#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. +#define ACK_NOT_REQUIRED FALSE ///< Macro for functions that want to know if an outgoing message requires acknowledgement from receiver. #pragma pack(push, 1) typedef struct @@ -137,22 +137,22 @@ U32 minDialRate; ///< Minimum dialysate flow rate (in mL/min) U32 maxDialRate; ///< Maximum dialysate flow rate (in mL/min) } TREATMENT_PARAM_BROADCAST_PAYLOAD_T; - -// ********** public function prototypes ********** -// Serialize message +// ********** public function prototypes ********** + +// Serialize message U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); -// ACK MSG +// ACK MSG BOOL sendACKMsg( MESSAGE_T *message ); -// MSG_ID_DG_CHECK_IN -void handleDGCheckIn( MESSAGE_T *message ); - -// MSG_ID_UI_CHECK_IN -void handleUICheckIn( MESSAGE_T *message ); - -// MSG_ID_REQUEST_FW_VERSIONS +// MSG_ID_DG_CHECK_IN +void handleDGCheckIn( MESSAGE_T *message ); + +// MSG_ID_UI_CHECK_IN +void handleUICheckIn( MESSAGE_T *message ); + +// MSG_ID_REQUEST_FW_VERSIONS void handleFWVersionRequest( MESSAGE_T *message ); // MSG_ID_REQUEST_FW_VERSIONS @@ -171,8 +171,8 @@ void handleHDServiceScheduleRequest( MESSAGE_T *message ); // MSG_ID_REQUEST_HD_USAGE_INFO -void handleHDUsageInfoRequest( MESSAGE_T *message ); - +void handleHDUsageInfoRequest( MESSAGE_T *message ); + // MSG_ID_DG_VERSION void handleDGVersionResponse( MESSAGE_T *message ); @@ -182,16 +182,16 @@ // MSG_ID_HD_EVENT BOOL sendEvent( HD_EVENT_ID_T event, EVENT_DATA_T dat1, EVENT_DATA_T dat2 ); -// MSG_ID_OFF_BUTTON_PRESS -BOOL sendOffButtonMsgToUI( U08 cmd ); -void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); +// MSG_ID_OFF_BUTTON_PRESS +BOOL sendOffButtonMsgToUI( U08 cmd ); +void handleOffButtonConfirmMsgFromUI( MESSAGE_T *message ); // MSG_ID_ALARM_TRIGGERED void handleAlarmTriggered( MESSAGE_T *message ); // MSG_ID_ALARM_CLEARED void handleAlarmCleared( MESSAGE_T *message ); - + // MSG_ID_USER_REQUEST_ALARM_SILENCE void handleUIAlarmSilenceRequest( MESSAGE_T *message ); @@ -213,28 +213,28 @@ // MSG_ID_UI_POST_FINAL_TEST_RESULT void handleUIPOSTFinalResult( MESSAGE_T *message ); -// MSG_ID_LOAD_CELL_READINGS +// MSG_ID_LOAD_CELL_READINGS void handleLoadCellReadingsFromDG( MESSAGE_T *message ); // MSG_ID_DG_HEATERS_DATA -void handleDGHeatersData( MESSAGE_T *message ); - -// MSG_ID_DG_TEMPERATURE_DATA: -void handleDGTemperatureData( MESSAGE_T *message ); - -// MSG_ID_RO_PUMP_DATA: +void handleDGHeatersData( MESSAGE_T *message ); + +// MSG_ID_DG_TEMPERATURE_DATA: +void handleDGTemperatureData( MESSAGE_T *message ); + +// MSG_ID_RO_PUMP_DATA: void handleROPumpData( MESSAGE_T *message ); // MSG_ID_DG_FLOW_SENSORS_DATA -void handleDialysateFlowData( MESSAGE_T *message ); - -// MSG_ID_DRAIN_PUMP_DATA: -void handleDrainPumpData( MESSAGE_T *message ); - -// MSG_ID_DG_PRESSURES_DATA: -void handleDGPressuresData( MESSAGE_T *message ); - -// MSG_ID_DG_RESERVOIR_DATA: +void handleDialysateFlowData( MESSAGE_T *message ); + +// MSG_ID_DRAIN_PUMP_DATA: +void handleDrainPumpData( MESSAGE_T *message ); + +// MSG_ID_DG_PRESSURES_DATA: +void handleDGPressuresData( MESSAGE_T *message ); + +// MSG_ID_DG_RESERVOIR_DATA: void handleDGReservoirData( MESSAGE_T *message ); // MSG_ID_UI_INITIATE_TREATMENT_REQUEST @@ -247,8 +247,8 @@ void handleTreatmentParametersFromUI( MESSAGE_T *message ); // MSG_ID_HD_NEW_TREATMENT_PARAMS_RESPONSE -BOOL sendTreatmentParametersResponseMsg( BOOL accepted, U08 *rejectReasons, U32 byteLength ); - +BOOL sendTreatmentParametersResponseMsg( BOOL accepted, U08 *rejectReasons, U32 byteLength ); + // MSG_ID_UI_SET_UF_VOLUME_PARAMETER void handleUFVolumeSetRequest( MESSAGE_T *message ); @@ -258,40 +258,40 @@ // MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS void handleUIUserConfirmTreatmentParameters( MESSAGE_T *message ); -// MSG_ID_USER_UF_PAUSE_RESUME_REQUEST -void handleUFPauseResumeRequest( MESSAGE_T *message ); +// MSG_ID_USER_UF_PAUSE_RESUME_REQUEST +void handleUFPauseResumeRequest( MESSAGE_T *message ); -// MSG_ID_USER_UF_PAUSE_RESUME_RESPONSE +// MSG_ID_USER_UF_PAUSE_RESUME_RESPONSE BOOL sendUFPauseResumeResponse( BOOL accepted, U32 reason, U32 ufState ); -// MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST -void handleChangeUFSettingsRequest( MESSAGE_T *message ); - -// MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE -BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ); - -// MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE -void handleChangeUFSettingsConfirmation( MESSAGE_T *message ); - -// MSG_ID_USER_UF_SETTINGS_CHANGE_CONFIRMATION_RESPONSE -BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ); - -// MSG_ID_USER_TREATMENT_TIME_CHANGE_REQUEST -void handleChangeTreatmentDurationRequest( MESSAGE_T *message ); - -// MSG_ID_USER_TREATMENT_TIME_CHANGE_RESPONSE -BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ); - +// MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST +void handleChangeUFSettingsRequest( MESSAGE_T *message ); + +// MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE +BOOL sendChangeUFSettingsResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min, S32 timeDiff, F32 rateDiff, F32 oldUFRate_mL_min ); + +// MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE +void handleChangeUFSettingsConfirmation( MESSAGE_T *message ); + +// MSG_ID_USER_UF_SETTINGS_CHANGE_CONFIRMATION_RESPONSE +BOOL sendChangeUFSettingsOptionResponse( BOOL accepted, U32 reason, F32 volume_mL, U32 time_min, F32 ufRate_mL_min ); + +// MSG_ID_USER_TREATMENT_TIME_CHANGE_REQUEST +void handleChangeTreatmentDurationRequest( MESSAGE_T *message ); + +// MSG_ID_USER_TREATMENT_TIME_CHANGE_RESPONSE +BOOL sendChangeTreatmentDurationResponse( BOOL accepted, U32 reason, U32 time_min, F32 volume_mL ); + // MSG_ID_TREATMENT_TIME_REMAINING_OVERRIDE: void handleTestTreatmentTimeRemainingOverrideRequest( MESSAGE_T *message ); -// MSG_ID_TREATMENT_PARAM_CHANGE_RANGES -BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); +// MSG_ID_TREATMENT_PARAM_CHANGE_RANGES +BOOL sendTreatmentParamsRangesToUI( U32 minTime, U32 maxTime, F32 minUFVol, F32 maxUFVol, U32 minDialRate, U32 maxDialRate ); // MSG_ID_HD_TREATMENT_LOG_PERIODIC_DATA BOOL sendTreatmentPeriodicDataToUI( TREATMENT_LOG_DATA_PERIODIC_T * periodDataPtr ); -// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST +// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST void handleChangeBloodDialysateRateChangeRequest( MESSAGE_T *message ); // MSG_ID_USER_SALINE_BOLUS_REQUEST @@ -300,9 +300,9 @@ // MSG_ID_USER_SALINE_BOLUS_RESPONSE BOOL sendSalineBolusResponse( BOOL accepted, U32 rejReason, U32 bolusVol ); -// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_RESPONSE -BOOL sendChangeBloodDialysateRateChangeResponse( BOOL accepted, U32 reason, U32 bloodRate, U32 dialRate ); - +// MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_RESPONSE +BOOL sendChangeBloodDialysateRateChangeResponse( BOOL accepted, U32 reason, U32 bloodRate, U32 dialRate ); + // MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST void handleChangePressureLimitsRequest( MESSAGE_T *message ); @@ -431,37 +431,37 @@ // *********** public DG command functions ********** -// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS -BOOL sendDialysateHeatingParamsToDG( DG_CMD_DIALYSATE_HEATING_PARAMS_T *params ); - -// MSG_ID_DG_SWITCH_RESERVOIR_CMD -BOOL sendDGSwitchReservoirCommand( DG_SWITCH_RSRVRS_CMD_T *cmd ); +// MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS +BOOL sendDialysateHeatingParamsToDG( DG_CMD_DIALYSATE_HEATING_PARAMS_T *params ); +// MSG_ID_DG_SWITCH_RESERVOIR_CMD +BOOL sendDGSwitchReservoirCommand( DG_SWITCH_RSRVRS_CMD_T *cmd ); + // MSG_ID_DG_CHANGE_VALVE_SETTING_CMD BOOL sendDGChangeValveSettingCommand( U32 valveSettingCmd ); - -// MSG_ID_DG_FILL_CMD -BOOL sendDGFillCommand( U32 cmd, U32 fillToVolumeMl, F32 targetFlowRateLPM ); - -// MSG_ID_DG_DRAIN_CMD -BOOL sendDGDrainCommand( DRAIN_RESERVOIR_CMD_PAYLOAD_T *drainCmdPtr ); - -// MSG_ID_STARTING_STOPPING_TREATMENT_CMD -BOOL sendDGStartStopCommand( BOOL start ); - -// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD -BOOL sendDGStartStopTrimmerHeaterCommand( BOOL start ); - -// MSG_ID_DG_SAMPLE_WATER_CMD -BOOL sendDGSampleWaterCommand( SAMPLE_WATER_CMD_T cmd ); +// MSG_ID_DG_FILL_CMD +BOOL sendDGFillCommand( U32 cmd, U32 fillToVolumeMl, F32 targetFlowRateLPM ); + +// MSG_ID_DG_DRAIN_CMD +BOOL sendDGDrainCommand( DRAIN_RESERVOIR_CMD_PAYLOAD_T *drainCmdPtr ); + +// MSG_ID_STARTING_STOPPING_TREATMENT_CMD +BOOL sendDGStartStopCommand( BOOL start ); + +// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD +BOOL sendDGStartStopTrimmerHeaterCommand( BOOL start ); + +// MSG_ID_DG_SAMPLE_WATER_CMD +BOOL sendDGSampleWaterCommand( SAMPLE_WATER_CMD_T cmd ); + // MSG_ID_DG_COMMAND_RESPONSE void handleDGCmdResp( MESSAGE_T *messagePtr ); // MSG_ID_UI_HD_SET_RTC_REQUEST: void handleUIClockSyncRequest( MESSAGE_T *message ); - -// MSG_ID_DG_OP_MODE + +// MSG_ID_DG_OP_MODE void handleDGOpMode( MESSAGE_T *message ); // MSG_ID_DG_START_STOP_FLUSH @@ -485,7 +485,7 @@ // MSG_ID_UI_REQUEST_SERVICE_MODE void handleUIServiceModeRequest( MESSAGE_T *message ); -// MSG_ID_ALARM_STATUS +// MSG_ID_ALARM_STATUS BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ); // MSG_ID_HD_SEND_CALIBRATION_RECORD @@ -545,123 +545,123 @@ // MSG_ID_HD_SEND_CHEM_FLUSH_SAMPLE_PASS_FAIL_TO_DG void handleSendChemFlushPassFailToDG( U32 status ); -// *********** public test support message functions ********** - -// MSG_TESTER_LOG_IN -void handleTesterLogInRequest( MESSAGE_T *message ); -BOOL isTestingActivated( void ); - -// MSG_ID_OFF_BUTTON_STATE_OVERRIDE -void handleTestOffButtonStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_STOP_BUTTON_STATE_OVERRIDE -void handleTestStopButtonStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_ALARM_LAMP_PATTERN_OVERRIDE -void handleTestAlarmLampPatternOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE: -void handleTestWatchdogCheckInStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_ALARM_STATE_OVERRIDE -void handleTestAlarmStateOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_ALARM_TIME_OVERRIDE -void handleTestAlarmTimeOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_FLOW_SET_PT_OVERRIDE -void handleTestBloodFlowSetPointOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_FLOW_MEAS_OVERRIDE -void handleTestBloodFlowMeasuredOverrideRequest( MESSAGE_T *message ); - +// *********** public test support message functions ********** + +// MSG_TESTER_LOG_IN +void handleTesterLogInRequest( MESSAGE_T *message ); +BOOL isTestingActivated( void ); + +// MSG_ID_OFF_BUTTON_STATE_OVERRIDE +void handleTestOffButtonStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_STOP_BUTTON_STATE_OVERRIDE +void handleTestStopButtonStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_ALARM_LAMP_PATTERN_OVERRIDE +void handleTestAlarmLampPatternOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE: +void handleTestWatchdogCheckInStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_ALARM_STATE_OVERRIDE +void handleTestAlarmStateOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_ALARM_TIME_OVERRIDE +void handleTestAlarmTimeOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_FLOW_SET_PT_OVERRIDE +void handleTestBloodFlowSetPointOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_FLOW_MEAS_OVERRIDE +void handleTestBloodFlowMeasuredOverrideRequest( MESSAGE_T *message ); + // MSG_ID_BLOOD_ROTOR_COUNT_OVERRIDE void handleHDBloodPumpRotorCountOverrideRequest( MESSAGE_T *message ); // MSG_ID_DIALYSATE_INLET_PUMP_ROTOR_COUNT_OVERRIDE void handleHDDialInPumpRotorCountOverrideRequest( MESSAGE_T *message ); -// MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE -void handleTestBloodPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE -void handleTestBloodPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE -void handleTestBloodFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE -void handleTestBloodPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE -void handleTestBloodPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE +// MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE +void handleTestBloodPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE +void handleTestBloodPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE +void handleTestBloodFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE +void handleTestBloodPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE +void handleTestBloodPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE void handleTestDialInFlowSetPointOverrideRequest( MESSAGE_T *message ); // MSG_ID_DIAL_OUT_FLOW_SET_PT_OVERRIDE -void handleTestDialOutFlowSetPointOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_FLOW_MEAS_OVERRIDE -void handleTestDialInFlowMeasuredOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_PUMP_MC_MEAS_SPEED_OVERRIDE -void handleTestDialInPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_PUMP_MC_MEAS_CURR_OVERRIDE -void handleTestDialInPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_FLOW_SEND_INTERVAL_OVERRIDE -void handleTestDialInFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_PUMP_MEAS_SPEED_OVERRIDE -void handleTestDialInPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_IN_PUMP_MEAS_ROTOR_SPEED_OVERRIDE -void handleTestDialInPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_PRESSURE_ARTERIAL_OVERRIDE -void handleTestArterialPressureOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_PRESSURE_VENOUS_OVERRIDE -void handleTestVenousPressureOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_OCCLUSION_BLOOD_PUMP_OVERRIDE -void handleTestBloodPumpOcclusionOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_PRES_OCCL_SEND_INTERVAL_OVERRIDE -void handleTestPresOcclBroadcastIntervalOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_SET_RTC_TIMESTAMP -void handleSetRTCTimestamp( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_FLOW_SEND_INTERVAL_OVERRIDE -void handleTestDialOutFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_UF_REF_VOLUME_OVERRIDE -void handleTestDialOutUFReferenceVolumeOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_UF_MEAS_VOLUME_OVERRIDE -void handleTestDialOutUFMeasuredVolumeOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_PUMP_MC_MEAS_SPEED_OVERRIDE -void handleTestDialOutPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_PUMP_MC_MEAS_CURR_OVERRIDE -void handleTestDialOutPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_PUMP_MEAS_SPEED_OVERRIDE -void handleTestDialOutPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_PUMP_MEAS_ROTOR_SPEED_OVERRIDE -void handleTestDialOutPumpMeasuredRotorSpeedOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_DIAL_OUT_LOAD_CELL_WEIGHT_OVERRIDE -void handleTestDialOutLoadCellWeightOverrideRequest( MESSAGE_T *message ); - -// MSG_ID_HD_SAFETY_SHUTDOWN_OVERRIDE: -void handleTestHDSafetyShutdownOverrideRequest( MESSAGE_T *message ); +void handleTestDialOutFlowSetPointOverrideRequest( MESSAGE_T *message ); +// MSG_ID_DIAL_IN_FLOW_MEAS_OVERRIDE +void handleTestDialInFlowMeasuredOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_PUMP_MC_MEAS_SPEED_OVERRIDE +void handleTestDialInPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_PUMP_MC_MEAS_CURR_OVERRIDE +void handleTestDialInPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_FLOW_SEND_INTERVAL_OVERRIDE +void handleTestDialInFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_PUMP_MEAS_SPEED_OVERRIDE +void handleTestDialInPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_IN_PUMP_MEAS_ROTOR_SPEED_OVERRIDE +void handleTestDialInPumpRotorMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_PRESSURE_ARTERIAL_OVERRIDE +void handleTestArterialPressureOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_PRESSURE_VENOUS_OVERRIDE +void handleTestVenousPressureOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_OCCLUSION_BLOOD_PUMP_OVERRIDE +void handleTestBloodPumpOcclusionOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_PRES_OCCL_SEND_INTERVAL_OVERRIDE +void handleTestPresOcclBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_SET_RTC_TIMESTAMP +void handleSetRTCTimestamp( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_FLOW_SEND_INTERVAL_OVERRIDE +void handleTestDialOutFlowBroadcastIntervalOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_UF_REF_VOLUME_OVERRIDE +void handleTestDialOutUFReferenceVolumeOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_UF_MEAS_VOLUME_OVERRIDE +void handleTestDialOutUFMeasuredVolumeOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_PUMP_MC_MEAS_SPEED_OVERRIDE +void handleTestDialOutPumpMCMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_PUMP_MC_MEAS_CURR_OVERRIDE +void handleTestDialOutPumpMCMeasuredCurrentOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_PUMP_MEAS_SPEED_OVERRIDE +void handleTestDialOutPumpMeasuredSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_PUMP_MEAS_ROTOR_SPEED_OVERRIDE +void handleTestDialOutPumpMeasuredRotorSpeedOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DIAL_OUT_LOAD_CELL_WEIGHT_OVERRIDE +void handleTestDialOutLoadCellWeightOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_HD_SAFETY_SHUTDOWN_OVERRIDE: +void handleTestHDSafetyShutdownOverrideRequest( MESSAGE_T *message ); + // MSG_ID_HD_ACCEL_OVERRIDE: void handleTestHDAccelOverrideRequest( MESSAGE_T *message ); @@ -968,6 +968,15 @@ // MSG_ID_HD_BLOOD_PUMP_HARD_STOP void handleBloodPumpHardStopRequest( MESSAGE_T *message ); +// MSG_ID_HD_SET_ENTER_BOOTLOADER +void handleSetBootloaderRequest( MESSAGE_T *message ); + +// MSG_ID_HD_ENTER_BOOTLOADER_NOW +void handleEnterBootloaderNowRequest( MESSAGE_T *message ); + +// MSG_ID_HD_REBOOT_NOW +void handleRebootNowRequest( MESSAGE_T *message ); + /**@}*/ -#endif +#endif