Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -rf9b8b75c3686be892799b5446b955fd36ab49fa3 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision f9b8b75c3686be892799b5446b955fd36ab49fa3) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -51,7 +51,7 @@ #define BP_HOME_RATE 50 ///< target pump speed (in estimate mL/min) for homing. #define BP_HOME_TIMEOUT_MS 10000 ///< maximum time allowed for homing to complete (in ms). #define BP_SPEED_CALC_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the blood pump speed is calculated. -#define BP_HALL_EDGE_COUNTS_PER_REV 6 ///< number of hall sensor edge counts per motor revolution. +#define BP_HALL_EDGE_COUNTS_PER_REV 48 ///< number of hall sensor edge counts per motor revolution. #define BP_MAX_CURR_WHEN_STOPPED_MA 150.0 ///< motor controller current should not exceed this when pump should be stopped #define BP_MIN_CURR_WHEN_RUNNING_MA 150.0 ///< motor controller current should always exceed this when pump should be running @@ -69,8 +69,8 @@ #define BP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * BP_GEAR_RATIO * BP_MOTOR_RPM_TO_PWM_DC_FACTOR + BP_PWM_ZERO_OFFSET ) ///< conversion factor from mL/min to estimated PWM duty cycle %. #define BLOODPUMP_ADC_FULL_SCALE_V 3.0 ///< BP analog signals are 0-3V (while int. ADC ref may be different) -#define BLOODPUMP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( BLOODPUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) ///< Blood pump ADC channel zero offset. -#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)BLOODPUMP_ADC_ZERO ) ///< macro converts 12 bit ADC value to signed 16-bit value. +#define BLOODPUMP_ADC_ZERO 1998 ///< Blood pump ADC channel zero offset. +#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)BLOODPUMP_ADC_ZERO ) ///< macro converts 12 bit ADC value to signed 16-bit value. #define BLOOD_FLOW_SAMPLE_FREQ ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Blood flow sample frequency (in task intervals). #define SIZE_OF_ROLLING_AVG ( BLOOD_FLOW_SAMPLE_FREQ * 2 ) ///< measured blood flow is filtered w/ moving average @@ -166,6 +166,8 @@ static void updateBloodPumpSpeedAndDirectionFromHallSensors( void ); static void checkBloodPumpRotor( void ); static void checkBloodPumpDirection( void ); +static void checkBloodPumpSpeeds( void ); +static void checkBloodPumpFlowAgainstSpeed( void ); static void checkBloodPumpMCCurrent( void ); static DATA_GET_PROTOTYPE( U32, getPublishBloodFlowDataInterval ); @@ -179,6 +181,8 @@ *************************************************************************/ void initBloodFlow( void ) { + bpLastMotorHallSensorCount = getFPGABloodPumpHallSensorCount(); + stopBloodPump(); setBloodPumpDirection( MOTOR_DIR_FORWARD ); @@ -348,6 +352,10 @@ // calculate blood pump motor speed/direction from hall sensor count updateBloodPumpSpeedAndDirectionFromHallSensors(); + // check pump speeds and flow + checkBloodPumpSpeeds(); + checkBloodPumpFlowAgainstSpeed(); + // check for home position, zero/low speed checkBloodPumpRotor(); @@ -978,15 +986,29 @@ if ( BLOOD_PUMP_CONTROL_TO_TARGET_STATE == bloodPumpState ) { - // check set direction vs. direction from sign of motor controller speed + // check set direction vs. direction from hall sensors or sign of motor controller speed bpMCDir = ( getMeasuredBloodPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); - if ( bloodPumpDirectionSet != bpMCDir ) + if ( ( bloodPumpDirectionSet != bpMCDir ) || ( bloodPumpDirectionSet != bpMotorDirectionFromHallSensors ) ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_BLOOD_PUMP_MC_DIRECTION_CHECK, (U32)bloodPumpDirectionSet, (U32)bpMCDir ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_BLOOD_PUMP_MC_DIRECTION_CHECK, (U32)bloodPumpDirectionSet, (U32)bpMotorDirectionFromHallSensors ) } } } +static void checkBloodPumpSpeeds( void ) +{ + +} + +static void checkBloodPumpFlowAgainstSpeed( void ) +{ + +} +//ALARM_ID_BLOOD_PUMP_OFF_CHECK = 7, ///< Blood pump failed motor controller off check. +//ALARM_ID_BLOOD_PUMP_ROTOR_SPEED_CHECK = 9, ///< Blood pump failed rotor speed check. Mismatch with rotor and motor speeds. +//ALARM_ID_BLOOD_PUMP_FLOW_VS_MOTOR_SPEED_CHECK = 51, ///< Blood pump failed flow vs. motor speed check. Mismatch with flow rate and rate implied by motor speed. +//ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK = 54, ///< Blood pump failed motor speed check. Measured vs. commanded. + /*********************************************************************//** * @brief * The checkBloodPumpMCCurrent function checks the measured MC current vs. \n Index: firmware/App/Controllers/Buttons.c =================================================================== diff -u -r94895e32fe18e78b98fe3bb7786838cf00afdbfa -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision 94895e32fe18e78b98fe3bb7786838cf00afdbfa) +++ firmware/App/Controllers/Buttons.c (.../Buttons.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -256,7 +256,9 @@ { offRequestAwaitingUserConfirmation = TRUE; offRequestPendingTimer = 0; +#ifndef SIMULATE_UI sendOffButtonMsgToUI( OFF_BUTTON_CMD_PROMPT_USER_TO_CONFIRM ); +#endif } else { // send rejection response to power off request @@ -347,6 +349,9 @@ { // if off request in a valid mode, send to UI for user confirmation userConfirmOffButton( OFF_BUTTON_RSP_USER_REQUESTS_POWER_OFF ); +#ifdef SIMULATE_UI + userConfirmOffButton( OFF_BUTTON_RSP_USER_CONFIRMS_POWER_OFF ); +#endif } prevOffButtonState = getOffButtonState(); } Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rf9b8b75c3686be892799b5446b955fd36ab49fa3 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision f9b8b75c3686be892799b5446b955fd36ab49fa3) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -52,7 +52,7 @@ #define DIP_HOME_RATE 50 ///< target pump speed (in estimate mL/min) for homing. #define DIP_HOME_TIMEOUT_MS 10000 ///< maximum time allowed for homing to complete (in ms). #define DIP_SPEED_CALC_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the dialysate inlet pump speed is calculated. -#define DIP_HALL_EDGE_COUNTS_PER_REV 6 ///< number of hall sensor edge counts per motor revolution. +#define DIP_HALL_EDGE_COUNTS_PER_REV 48 ///< number of hall sensor edge counts per motor revolution. #define DIP_MAX_CURR_WHEN_STOPPED_MA 150.0 ///> motor controller current should not exceed this when pump should be stopped #define DIP_MIN_CURR_WHEN_RUNNING_MA 150.0 ///> motor controller current should always exceed this when pump should be running @@ -70,8 +70,8 @@ #define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR + DIP_PWM_ZERO_OFFSET ) ///> #define DIAL_IN_PUMP_ADC_FULL_SCALE_V 3.0 ///> BP analog signals are 0-3V (while int. ADC ref V may be different) -#define DIAL_IN_PUMP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( DIAL_IN_PUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) ///> -#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DIAL_IN_PUMP_ADC_ZERO ) ///> +#define DIAL_IN_PUMP_ADC_ZERO 1998 ///> Mid-point (zero) for ADC readings. +#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DIAL_IN_PUMP_ADC_ZERO ) ///> Macro converts a 12-bit ADC reading to a signed 16-bit value. #define DIAL_IN_FLOW_SAMPLE_FREQ ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///> #define SIZE_OF_ROLLING_AVG ( DIAL_IN_FLOW_SAMPLE_FREQ * 2 ) ///> measured dialIn flow is filtered w/ moving average @@ -167,6 +167,8 @@ static void updateDialInPumpSpeedAndDirectionFromHallSensors( void ); static void checkDialInPumpRotor( void ); static void checkDialInPumpDirection( void ); +static void checkDialInPumpSpeeds( void ); +static void checkDialInPumpFlowAgainstSpeed( void ); static void checkDialInPumpMCCurrent( void ); static DATA_GET_PROTOTYPE( U32, getPublishDialInFlowDataInterval ); @@ -180,6 +182,8 @@ *************************************************************************/ void initDialInFlow( void ) { + dipLastMotorHallSensorCount = getFPGADialInPumpHallSensorCount(); + stopDialInPump(); setDialInPumpDirection( MOTOR_DIR_FORWARD ); @@ -349,6 +353,10 @@ // calculate dialysate inlet pump motor speed/direction from hall sensor count updateDialInPumpSpeedAndDirectionFromHallSensors(); + // check pump speeds and flow + checkDialInPumpSpeeds(); + checkDialInPumpFlowAgainstSpeed(); + // check for home position, zero/low speed checkDialInPumpRotor(); @@ -899,15 +907,25 @@ if ( DIAL_IN_PUMP_CONTROL_TO_TARGET_STATE == dialInPumpState ) { - // check set direction vs. direction from sign of motor controller speed + // check set direction vs. direction from hall sensors or sign of motor controller speed dipMCDir = ( getMeasuredDialInPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); - if ( dialInPumpDirectionSet != dipMCDir ) + if ( ( dialInPumpDirectionSet != dipMCDir ) || ( dialInPumpDirectionSet != dipMotorDirectionFromHallSensors ) ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DIAL_IN_PUMP_MC_DIRECTION_CHECK, (U32)dialInPumpDirectionSet, (U32)dipMCDir ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DIAL_IN_PUMP_MC_DIRECTION_CHECK, (U32)dialInPumpDirectionSet, (U32)dipMotorDirectionFromHallSensors ) } } } +static void checkDialInPumpSpeeds( void ) +{ + +} + +static void checkDialInPumpFlowAgainstSpeed( void ) +{ + +} + /*********************************************************************//** * @brief * The checkDialInPumpMCCurrent function checks the measured MC current vs. \n Index: firmware/App/Controllers/DialOutFlow.c =================================================================== diff -u -rf9b8b75c3686be892799b5446b955fd36ab49fa3 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision f9b8b75c3686be892799b5446b955fd36ab49fa3) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -55,7 +55,7 @@ #define DOP_HOME_RATE 50 ///< target pump speed (in estimate mL/min) for homing. #define DOP_HOME_TIMEOUT_MS 10000 ///< maximum time allowed for homing to complete (in ms). #define DOP_SPEED_CALC_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the dialysate outlet pump speed is calculated. -#define DOP_HALL_EDGE_COUNTS_PER_REV 6 ///< number of hall sensor edge counts per motor revolution. +#define DOP_HALL_EDGE_COUNTS_PER_REV 48 ///< number of hall sensor edge counts per motor revolution. #define DOP_MAX_CURR_WHEN_STOPPED_MA 150.0 ///< Motor controller current should not exceed this when pump should be stopped. #define DOP_MIN_CURR_WHEN_RUNNING_MA 150.0 ///< Motor controller current should always exceed this when pump should be running. @@ -65,7 +65,7 @@ #define DOP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for dialysate outlet pump motor. #define DOP_CURRENT_ADC_TO_MA_FACTOR 3.002 ///< Conversion factor from ADC counts to mA for dialysate outlet pump motor. #define DOP_ADC_FULL_SCALE_V 3.0 ///< DPo analog signals are 0-3V (while int. ADC ref V may be different). -#define DOP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( DOP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) ///< Mid-point (zero) for ADC readings. +#define DOP_ADC_ZERO 1998 ///< Mid-point (zero) for ADC readings. #define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DOP_ADC_ZERO ) ///< Macro converts a 12-bit ADC reading to a signed 16-bit value. @@ -165,6 +165,8 @@ static void updateDialOutPumpSpeedAndDirectionFromHallSensors( void ); static void checkDialOutPumpRotor( void ); static void checkDialOutPumpDirection( void ); +static void checkDialOutPumpSpeeds( void ); +static void checkDialOutPumpFlowAgainstSpeed( void ); static void checkDialOutPumpMCCurrent( void ); static DATA_GET_PROTOTYPE( U32, getPublishDialOutDataInterval ); @@ -181,6 +183,8 @@ { U32 i; + dopLastMotorHallSensorCount = getFPGADialOutPumpHallSensorCount(); + stopDialOutPump(); setDialOutPumpDirection( MOTOR_DIR_FORWARD ); @@ -403,6 +407,10 @@ // calculate dialysate outlet pump motor speed/direction from hall sensor count updateDialOutPumpSpeedAndDirectionFromHallSensors(); + // check pump speeds and flow + checkDialOutPumpSpeeds(); + checkDialOutPumpFlowAgainstSpeed(); + // check for home position, zero/low speed checkDialOutPumpRotor(); @@ -798,15 +806,25 @@ if ( DIAL_OUT_PUMP_CONTROL_TO_TARGET_STATE == dialOutPumpState ) { - // check set direction vs. direction from sign of motor controller speed + // check set direction vs. direction from hall sensors or sign of motor controller speed dopMCDir = ( getMeasuredDialOutPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); - if ( dialOutPumpDirectionSet != dopMCDir ) + if ( ( dialOutPumpDirectionSet != dopMCDir ) || ( dialOutPumpDirectionSet != dopMotorDirectionFromHallSensors ) ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DIAL_OUT_PUMP_MC_DIRECTION_CHECK, (U32)dialOutPumpDirectionSet, (U32)dopMCDir ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DIAL_OUT_PUMP_MC_DIRECTION_CHECK, (U32)dialOutPumpDirectionSet, (U32)dopMotorDirectionFromHallSensors ) } } } +static void checkDialOutPumpSpeeds( void ) +{ + +} + +static void checkDialOutPumpFlowAgainstSpeed( void ) +{ + +} + /************************************************************************* * @brief * The checkDialOutPumpMCCurrent function checks the measured MC current vs. \n Index: firmware/App/HDCommon.h =================================================================== diff -u -r9d4666bf3064df18a6d935125d7a69e4e8234e84 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/HDCommon.h (.../HDCommon.h) (revision 9d4666bf3064df18a6d935125d7a69e4e8234e84) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -32,9 +32,10 @@ #ifndef _VECTORCAST_ // #define RM46_EVAL_BOARD_TARGET 1 // #define BREADBOARD_TARGET 1 - #define SIMULATE_UI 1 +// #define SIMULATE_UI 1 #define SKIP_POST 1 #define DISABLE_CRC_ERROR 1 + #define DISABLE_ACK_ERRORS 1 #define DISABLE_MOTOR_CURRENT_ERRORS 1 // #define SHOW_LOAD_CELL_IN_ROTOR_RPM 1 // #define SHOW_RAW_FLOW_VALUES 1 Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rc0d1d149e3b669b0bf424206c725b5c1bfaff797 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision c0d1d149e3b669b0bf424206c725b5c1bfaff797) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -66,15 +66,15 @@ { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE }, // ALARM_ID_WATCHDOG_POST_TEST_FAILED { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE }, // ALARM_ID_UI_COMM_POST_FAILED { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_MC_CURRENT_CHECK - { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_MC_SPEED_CHECK + { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_OFF_CHECK { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_MC_DIRECTION_CHECK { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_ROTOR_SPEED_CHECK { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_MC_CURRENT_CHECK - { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_MC_SPEED_CHECK + { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_OFF_CHECK { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_MC_DIRECTION_CHECK { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_ROTOR_SPEED_CHECK { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_CURRENT_CHECK - { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_SPEED_CHECK + { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_OFF_CHECK { ALARM_PRIORITY_MEDIUM, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_DIRECTION_CHECK { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_ROTOR_SPEED_CHECK { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE }, // ALARM_ID_WATCHDOG_EXPIRED @@ -110,6 +110,12 @@ { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE, TRUE , TRUE, TRUE, TRUE, TRUE, TRUE, FALSE }, // ALARM_ID_TEMPERATURE_SENSORS_OUT_OF_RANGE { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE, TRUE , TRUE, TRUE, TRUE, TRUE, TRUE, FALSE }, // ALARM_ID_TEMPERATURE_SENSORS_INCONSISTENT { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_HD_COMM_TIMEOUT + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_FLOW_VS_MOTOR_SPEED_CHECK + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_FLOW_VS_MOTOR_SPEED_CHECK + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_FLOW_VS_MOTOR_SPEED_CHECK + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_IN_PUMP_MOTOR_SPEED_CHECK + { ALARM_PRIORITY_HIGH, ALM_ESC_4_MIN, ALARM_ID_BLOOD_SITTING_WARNING, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MOTOR_SPEED_CHECK }; /// A blank alarm data record for alarms that do not include alarm data when triggered. Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra19a676d1e67bb3e1aca9e9bba49727f9d5f8b38 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a19a676d1e67bb3e1aca9e9bba49727f9d5f8b38) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -206,6 +206,7 @@ data[ msgSize++ ] = 0; } +#ifndef DISABLE_ACK_ERRORS // if ACK required, add to pending ACK list if ( TRUE == ackReq ) { @@ -215,6 +216,7 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) } } +#endif if ( FALSE == error ) { Index: firmware/App/Tasks/TaskBG.c =================================================================== diff -u -re5bb82cad756fbb10f04d576dffd499df78f6b35 -r8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd --- firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision e5bb82cad756fbb10f04d576dffd499df78f6b35) +++ firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 8377b4e6ed494cbfc5dfc2bd9ad3c89b85b333cd) @@ -55,10 +55,12 @@ } else { +#ifndef SIMULATE_UI if ( TRUE == didTimeout( startUICommTimeout, MAX_TIME_FOR_UI_TO_COMMUNICATE_MS ) ) { activateAlarmNoData( ALARM_ID_UI_COMM_POST_FAILED ); } +#endif } }