Index: firmware/App/Modes/ConsumableSelfTest.c =================================================================== diff -u -r82b7c4c94b0f8b3f8a3d3d2e41384a7a7d497215 -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision 82b7c4c94b0f8b3f8a3d3d2e41384a7a7d497215) +++ firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -108,6 +108,7 @@ if ( TRUE == consumableInstallConfirmed ) { consumableInstallConfirmed = FALSE; + #ifndef _RELEASE_ if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_CONSUMABLES_TESTS ) ) { Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r3d66fccdb8dbe06d7cc184c76d2e6fb096f5883d -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 3d66fccdb8dbe06d7cc184c76d2e6fb096f5883d) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -623,6 +623,8 @@ *************************************************************************/ void execDialysis( void ) { + DIALYSIS_STATE_T priorSubState = currentDialysisState; + // Check ultrafiltration max rate and accuracy during dialysis (even when ultrafiltration is paused). checkUFAccuracyAndVolume(); @@ -646,6 +648,10 @@ break; } + if ( priorSubState != currentDialysisState ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentDialysisState ); + } // Publish saline bolus data at set interval (whether we are delivering one or not) publishSalineBolusData(); } @@ -661,6 +667,7 @@ static DIALYSIS_STATE_T handleDialysisUltrafiltrationState( void ) { DIALYSIS_STATE_T result = DIALYSIS_UF_STATE; + UF_STATE_T priorSubState = currentUFState; U32 preStop = getTreatmentParameterU32( TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ); F32 minRem = (F32)getTreatmentTimeRemainingSecs() / (F32)SEC_PER_MIN; @@ -692,6 +699,11 @@ break; } + if ( priorSubState != currentUFState ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentUFState ); + } + return result; } @@ -707,6 +719,8 @@ { DIALYSIS_STATE_T result = DIALYSIS_SALINE_BOLUS_STATE; + SALINE_BOLUS_STATE_T priorSubState = currentSalineBolusState; + switch ( currentSalineBolusState ) { case SALINE_BOLUS_STATE_IDLE: @@ -731,6 +745,11 @@ break; } + if ( priorSubState != currentSalineBolusState ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentSalineBolusState ); + } + return result; } Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r4add9605a250a0b953217c8673204b705128561b -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 4add9605a250a0b953217c8673204b705128561b) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -171,6 +171,7 @@ U32 execPostTreatmentMode( void ) { BOOL stop = isStopButtonPressed(); + HD_POST_TREATMENT_STATE_T priorSubState = currentPostTreatmentState; switch ( currentPostTreatmentState ) { @@ -195,6 +196,11 @@ break; } + if ( priorSubState != currentPostTreatmentState ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_MODE_CHANGE, priorSubState, currentPostTreatmentState ); + } + if ( ++postTreatmentPublishTimerCounter >= getU32OverrideValue( &postTreatmentModePublishInterval ) ) { POST_TREATMENT_STATE_DATA_T data; @@ -512,6 +518,8 @@ *************************************************************************/ static void execDrainReservoirs( void ) { + DRAIN_STATE_T priorSubState = currentDrainReservoirState; + switch ( currentDrainReservoirState ) { case DRAIN_DG_DEPRIME_STATE: @@ -538,6 +546,11 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_POST_TREATMENT_RESERVOIR_MGMT_INVALID_STATE, currentDrainReservoirState ); break; } + + if ( priorSubState != currentDrainReservoirState ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentDrainReservoirState ); + } } /*********************************************************************//** Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r82b7c4c94b0f8b3f8a3d3d2e41384a7a7d497215 -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 82b7c4c94b0f8b3f8a3d3d2e41384a7a7d497215) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -358,7 +358,7 @@ } else { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT, currentNoCartSelfTestsState ); +// SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT, currentNoCartSelfTestsState ); } } } Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r660876bca7ae34f862ae9cc6feef9a30ec02fe94 -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 660876bca7ae34f862ae9cc6feef9a30ec02fe94) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -5250,6 +5250,7 @@ if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) { result = testSetBatteryRemainingPercentOverride( payload.state.f32 ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r660876bca7ae34f862ae9cc6feef9a30ec02fe94 -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 660876bca7ae34f862ae9cc6feef9a30ec02fe94) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -840,9 +840,6 @@ // MSG_ID_HD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE BOOL sendBloodLeakEmbeddedModeCommandResponse( U08 cmd, U32 responseLen, U08* response ); -// MSG_ID_HD_SEND_ALARMS_COMMAND -void handleResendAllAlarmsCommand( MESSAGE_T* message ); - // MSG_ID_HD_BLOOD_PUMP_SET_PWM void handleTestBloodPumpSetPWM( MESSAGE_T* message ); Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -r0f9838d6b8606a6a9853ccb6157e4c25d70ddd02 -r8b09199bae9870a8d63d4be9636ef66c849f8531 --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 0f9838d6b8606a6a9853ccb6157e4c25d70ddd02) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 8b09199bae9870a8d63d4be9636ef66c849f8531) @@ -174,7 +174,7 @@ { F32 v24 = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS ); F32 audioCurrent = getFPGABackupAlarmAudioCurrent(); - + // Verify 24V is down when w.d. expired if ( v24 > MAX_24V_LEVEL_ON_WATCHDOG_EXPIRED ) {