Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rb156b12139fea40401c94b512503a2ceced69e22 -r77392c1537f02650413087b86b946370a6289dcd --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision b156b12139fea40401c94b512503a2ceced69e22) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 77392c1537f02650413087b86b946370a6289dcd) @@ -50,7 +50,7 @@ #define MAX_DIAL_IN_PUMP_PWM_STEP_DN_CHANGE 0.02F ///< Max duty cycle change when ramping down ~ 300 mL/min/s. #define MAX_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.90F ///< Controller will error if PWM duty cycle > 90%, so set max to 90%. #define MIN_DIAL_IN_PUMP_PWM_DUTY_CYCLE 0.10F ///< Controller will error if PWM duty cycle < 10%, so set min to 10%. -#define MIN_DG_DIAL_FLOW_RATE 10.0F ///< Minimum DG Dialysate Flow Rate (mL/Min) - DN-9NOV2022 +#define MIN_DG_DIAL_FLOW_RATE 10.0F ///< Minimum DG Dialysate Flow Rate (mL/Min) #define DIP_CONTROL_INTERVAL_SEC 4 ///< Dialysate inlet pump control interval (in seconds). /// Interval (ms/task time) at which the dialIn pump is controlled. @@ -74,7 +74,7 @@ #define DIP_MAX_MOTOR_SPEED_VS_TRGT_DIFF_PCT 0.15F ///< Maximum motor speed vs target difference in percent. /// Persist time (task intervals) for unexpected flow check failure condition. -static const U32 DIP_UNEXP_FLOW_CHK_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); +static const U32 DIP_NO_FLOW_CHK_PERSIST = ((10 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); /// Persist time (task intervals) for motor off error condition. static const U32 DIP_OFF_ERROR_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); /// Persist time (task intervals) motor speed error condition. @@ -276,7 +276,7 @@ // Initialize persistent alarm for flow sensor signal strength too low initPersistentAlarm( ALARM_ID_HD_DIAL_IN_FLOW_OUT_OF_RANGE, 0, DIP_MAX_FLOW_RATE_OUT_OF_RANGE_PERSIST ); - initPersistentAlarm( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, DIP_UNEXP_FLOW_CHK_PERSIST, DIP_UNEXP_FLOW_CHK_PERSIST ); + initPersistentAlarm( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, 0, DIP_NO_FLOW_CHK_PERSIST ); initTimeWindowedCount( TIME_WINDOWED_COUNT_DIP_COMMUTATION_ERROR, DIP_COMMUTATION_ERROR_MAX_CNT, DIP_COMMUTATION_ERROR_TIME_WIN_MS ); } @@ -1097,6 +1097,7 @@ if ( ++dialInFlowDataPublicationTimerCounter >= getU32OverrideValue( &dialInFlowDataPublishInterval ) ) { DIALIN_PUMP_STATUS_PAYLOAD_T payload; + HD_OP_MODE_T opMode = getCurrentOperationMode(); payload.setPoint = targetDialInFlowRate; payload.measFlow = getMeasuredDialInFlowRate(); @@ -1106,6 +1107,14 @@ payload.measMCCurr = getMeasuredDialInPumpMCCurrent(); payload.pwmDC = dialInPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR; payload.rotorCount = getDialInPumpRotorCount(); + if ( ( MODE_PRET == opMode ) || ( MODE_TREA == opMode ) || ( MODE_POST == opMode ) ) + { // prescribed flow only available in treatment modes + payload.presFlow = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ); + } + else + { + payload.presFlow = 0; + } broadcastData( MSG_ID_DIALYSATE_FLOW_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&payload, sizeof( DIALIN_PUMP_STATUS_PAYLOAD_T ) ); dialInFlowDataPublicationTimerCounter = 0; } @@ -1405,10 +1414,9 @@ } // Check DG Dialysate flow rate - /* TODO: Temporarily comment this out. Will restore it when know better how to handle this alarm. if ( ( TRUE == isDialInPumpRunning() ) && ( dialInPumpControlMode != PUMP_CONTROL_MODE_OPEN_LOOP ) ) { - F32 measuredDialInFlow = getDGDialysateFlowRateLMin() * ML_PER_LITER; + F32 measuredDialInFlow = getDGRawDialysateFlowRateLMin() * ML_PER_LITER; if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, measuredDialInFlow < MIN_DG_DIAL_FLOW_RATE ) ) ) { @@ -1418,7 +1426,7 @@ else { isPersistentAlarmTriggered( ALARM_ID_HD_DIAL_IN_FLOW_CHECK_FAILURE, FALSE ); - } */ + } } /*********************************************************************//**