Index: sources/drydemo/StateControllerStandby.cpp =================================================================== diff -u -rbf271a558491a83b39eb30748784f1b744736dd2 -r6c0428ed8c6430924d54d5a42c45c8ec0c16c7c2 --- sources/drydemo/StateControllerStandby.cpp (.../StateControllerStandby.cpp) (revision bf271a558491a83b39eb30748784f1b744736dd2) +++ sources/drydemo/StateControllerStandby.cpp (.../StateControllerStandby.cpp) (revision 6c0428ed8c6430924d54d5a42c45c8ec0c16c7c2) @@ -133,7 +133,7 @@ _treatmentStatus.bicartTotal = 100; } -void StateController::triggerAnAlarm(Alarm_List alarmID) +void StateController::triggerAnAlarm(const Alarm_List alarmID) { if (!_alarmTriggerSpecs.contains(alarmID)) { return; } @@ -164,7 +164,7 @@ switch (userAction) { case ALARM_USER_ACTION_RESUME: // If we are in treatment pause return back to treatment, otherwise just clear the alarm - if (isFromTxPause) { + if (isFromTxPause && _treatmentStatus.bicartAction == DRY_BICART_ACTION_DONE) { _treatmentSubStates.dialysisSubState = DIALYSIS_UF_STATE; _treatmentSubStates.txState = TREAT_DIALYSIS_STATE; _treatmentStatus.stateTransitionEvent = "T_TP_2_Tx"; @@ -247,8 +247,7 @@ break; case SEQ_ALARM_DRY_BICARB_CARTRIDGE: - //if (_treatmentStatus.activeTopAlarm != ALARM_ID_NO_ALARM) { triggerAnAlarm(ALARM_ID_NO_ALARM); return; } - triggerAnAlarm(ALARM_ID_DD_BICARBONATE_CARTRIDGE_LOW_LEVEL); + if (_treatmentStatus.activeTopAlarm != ALARM_ID_DD_BICARBONATE_CARTRIDGE_LOW_LEVEL) { triggerAnAlarm(ALARM_ID_DD_BICARBONATE_CARTRIDGE_LOW_LEVEL); return; } // Set the bicart screen to start draining automatically _treatmentStatus.bicartDrainInProgress = DRY_BICART_DRIN_IN_PROGRESS; _treatmentStatus.bicartProgress = 0; @@ -368,3 +367,19 @@ _sendMessages.append(resp); _isSendListReady = true; } + +void StateController::handleTDWaterSampleResultRequest() +{ + if (_treatmentRcvdMessages[ID_UI_WATER_SAMPLE_RESULT_RQST].isNull()) { return; } + QVariantList reason; + quint32 acceptReject = ACCEPT_VALUE; + float chlorineLevel = extractF32DataFromReceivedMessage(ID_UI_WATER_SAMPLE_RESULT_RQST, 0); + + reason.append(REQUEST_REJECT_REASON_NONE); + reason.append(chlorineLevel); + + // TODO check range. + handleUIResponseMessage(ID_TD_WATER_SAMPLE_RESULT_RESP, acceptReject, reason); + _treatmentRcvdMessages[ID_UI_WATER_SAMPLE_RESULT_RQST].clear(); +} +