Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r79c2105d7ec35f3caeb977f6e2cc1b494853d211 -ra074eec2ed7d04a1ea90072d7c9c013bf27a6e90 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 79c2105d7ec35f3caeb977f6e2cc1b494853d211) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision a074eec2ed7d04a1ea90072d7c9c013bf27a6e90) @@ -17,6 +17,7 @@ #include "AirTrap.h" //#include "BloodFlow.h" +#include "Bubbles.h" #include "Buttons.h" #include "DDInterface.h" #include "ModeService.h" @@ -176,8 +177,8 @@ { // PRESSURE_LIMIT_CHANGE_RESPONSE_T respRecord; - // don't re-initialize treatment if tester is returning to treatment mode from a fault - if ( getPreviousOperationMode() != MODE_FAUL ) + // don't re-initialize treatment if tester is jumping to Tx mode +// if ( getPreviousOperationMode() != MODE_PRET ) { // Initialize treatment mode each time we transition to it initTreatmentMode(); @@ -195,8 +196,10 @@ setCurrentSubState( NO_SUB_STATE ); +#ifndef TEST_UI_ONLY // Enable venous bubble detection in treatment mode -// setVenousBubbleDetectionEnabled( TRUE ); + setVenousBubbleDetectionEnabled( H18_BBLD, TRUE ); +#endif // Set treatment parameters presTreatmentTimeSecs = getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ) * SEC_PER_MIN; @@ -477,7 +480,8 @@ TREATMENT_STATE_T result = TREATMENT_BLOOD_PRIME_STATE; lastTreatmentTimeStamp = getMSTimerCount(); -// transitionToBloodPrime(); + //transitionToBloodPrime(); // TODO + setDialysisBloodPumpFlowRate( getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ) ); // TODO - remove later return result; } @@ -784,13 +788,15 @@ // Update treatment time stats and broadcast - end treatment if time elapsedTreatmentTimeInSecs = CALC_ELAPSED_TREAT_TIME_IN_SECS(); - // Broadcast treatment time data at interval + // Broadcast treatment time and set point data at interval if ( ++treatmentTimeBroadcastTimerCtr >= getU32OverrideValue( &treatmentTimePublishInterval ) ) { TREATMENT_TIME_DATA_T payload = { 0, 0, 0 }; + TREATMENT_SET_POINTS_T spPayload = { 0, 0, 0.0F }; treatmentTimeBroadcastTimerCtr = 0; + // Build and send treatment time data if treatment not yet completed. if ( isTreatmentCompleted() != TRUE ) { payload.treatmentTimeElapsedinSec = elapsedTreatmentTimeInSecs; @@ -807,6 +813,12 @@ } } sendMessage( MSG_ID_TD_TREATMENT_TIME_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)(&payload), sizeof( TREATMENT_TIME_DATA_T ) ); + + // Build and send treatment set points message. + spPayload.bloodFlow = getTreatmentParameterU32( TREATMENT_PARAM_BLOOD_FLOW ); + spPayload.dialFlow = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ); + spPayload.dialTemp = getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + sendMessage( MSG_ID_TD_TREATMENT_SET_POINTS, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)(&spPayload), sizeof( TREATMENT_SET_POINTS_T ) ); } // Broadcast treatment state data at interval @@ -819,10 +831,13 @@ payload.treatmentSubMode = (U32)currentTreatmentState; payload.bldPrimeState = 0; // getCurrentBloodPrimeState(); payload.dialysisState = getDialysisState(); - payload.txStopState = 0; // getCurrentTreatmentStopState(); + payload.isoUFState = 0; + payload.txStopState = getCurrentTreatmentPausedState(); payload.rinsebackState = 0; // getCurrentRinsebackState(); payload.txRecircState = 0; // getCurrentTreatmentRecircState(); payload.txEndState = 0; // getCurrentTreatmentEndState(); + payload.txSalBolusState = 0; // + payload.txHepState = 0; // sendMessage( MSG_ID_TD_TREATMENT_STATE_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)(&payload), sizeof( TREATMENT_STATE_DATA_T ) ); } @@ -952,7 +967,7 @@ { U32 treatmentTime = MIN_TREATMENT_TIME_MINUTES; - if ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_ONE_MINUTE_TREATMENT ) ) + //if ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_ONE_MINUTE_TREATMENT ) ) { treatmentTime = 1; }