Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r46c538cc5b7b40ddc8227e2ad1c77bab93716571 -r562333878837ad2ff1efa6e61e6cdbf332227fec --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 46c538cc5b7b40ddc8227e2ad1c77bab93716571) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 562333878837ad2ff1efa6e61e6cdbf332227fec) @@ -419,13 +419,13 @@ /*********************************************************************//** * @brief - * The getDGDialysateFlowRateMlMin function gets the latest dialysate flow + * The getDGDialysateFlowRateLMin function gets the latest dialysate flow * rate reported by the DG. * @details Inputs: dgDialysateFlowRateMlMin * @details Outputs: none - * @return Latest dialysate flow rate reported by DG. + * @return Latest dialysate flow rate (in L/min) reported by DG. *************************************************************************/ -F32 getDGDialysateFlowRateMlMin( void ) +F32 getDGDialysateFlowRateLMin( void ) { F32 result = dgDialysateFlowRateMlMin; @@ -437,12 +437,14 @@ * The getDialysateFlowDataFreshFlag function returns a flag to indicate * if the dialysate flow rate data reported by the DG is fresh or stale data. * @details Inputs: dgDialysateFlowDataFreshFlag - * @details Outputs: none + * @details Outputs: dgDialysateFlowDataFreshFlag * @return T/F flag to indicate fresh/stale status of dialysate flow data. *************************************************************************/ BOOL getDialysateFlowDataFreshFlag( void ) { - return dgDialysateFlowDataFreshFlag; + dgDialysateFlowDataFreshFlag = FALSE; + + return dgDialysateFlowDataFreshFlag; } /*********************************************************************//** @@ -629,25 +631,11 @@ void setDialysateFlowData( F32 flowRate ) { dgDialysateFlowRateMlMin = flowRate; - setDialysateFlowDataFreshFlag( TRUE ); // sets freshness status + dgDialysateFlowDataFreshFlag = TRUE; } /*********************************************************************//** * @brief - * The setDialysateFlowDataFreshFlag function sets the dialysate flow - * data freshness flag. - * @details Inputs: none - * @details Outputs: dgDialysateFlowDataFreshFlag - * @param flowRateFreshFlag to set - * @return none - *************************************************************************/ -void setDialysateFlowDataFreshFlag( BOOL flowRateFreshFlag ) -{ - dgDialysateFlowDataFreshFlag = flowRateFreshFlag; -} - -/*********************************************************************//** - * @brief * The setNewLoadCellReadings function sets the latest DG reservoir load cell * readings sent by the DG (in g or mL). New readings are expected once * every 100 ms. Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r46c538cc5b7b40ddc8227e2ad1c77bab93716571 -r562333878837ad2ff1efa6e61e6cdbf332227fec --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 46c538cc5b7b40ddc8227e2ad1c77bab93716571) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 562333878837ad2ff1efa6e61e6cdbf332227fec) @@ -121,7 +121,7 @@ DG_RESERVOIR_ID_T getDGInactiveReservoir( void ); BOOL hasDGCompletedReservoirSwitch( void ); BOOL getDialysateFlowDataFreshFlag( void ); -F32 getDGDialysateFlowRateMlMin( void ); +F32 getDGDialysateFlowRateLMin( void ); F32 getLoadCellWeight( LOAD_CELL_ID_T loadCellID ); F32 getReservoirWeight( DG_RESERVOIR_ID_T resID ); F32 getReservoirWeightLargeFilter( DG_RESERVOIR_ID_T resID ); @@ -133,7 +133,6 @@ void setDGDialysateTemperatures( F32 primaryHtrTemp, F32 trimmerHtrTemp ); void setDGReservoirsData( DG_RESERVOIR_ID_T resID, U32 fillVol, U32 drainVol ); void setDialysateFlowData( F32 flowRate ); -void setDialysateFlowDataFreshFlag( BOOL flowRateFreshFlag ); void setNewLoadCellReadings( F32 res1Primary, F32 res1Backup, F32 res2Primary, F32 res2Backup ); void setDGDisinfectsStates( DG_DISINFECT_UI_STATES_T states ); Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r03eb5e8c4e87cd3c92304f70e661dec1d0055d09 -r562333878837ad2ff1efa6e61e6cdbf332227fec --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 03eb5e8c4e87cd3c92304f70e661dec1d0055d09) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 562333878837ad2ff1efa6e61e6cdbf332227fec) @@ -240,7 +240,6 @@ // 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_DIALYSATE_FLOW_DATA_NOT_RECEIVE, 0, 0 ); } /*********************************************************************//** @@ -408,60 +407,16 @@ U08 flowErrorCtr = getFPGADialysateFlowErrorCounter(); U08 flowStatus = getFPGADialysateFlowMeterStatus(); F32 dipFlow; -#ifdef USE_FMD_FLOW_SENSOR - F32 dpFlow = getFPGADialysateFlow(); - // Check if a new calibration is available - if ( TRUE == isNewCalibrationRecordAvailable() ) - { - // Get the new calibration data and check its validity - processCalibrationData(); - } - dipFlow = pow(dpFlow, 4) * dialysateFlowCalRecord.hdFlowSensors[ CAL_DATA_HD_DIALYSATE_FLOW_SENSOR ].fourthOrderCoeff + - pow(dpFlow, 3) * dialysateFlowCalRecord.hdFlowSensors[ CAL_DATA_HD_DIALYSATE_FLOW_SENSOR ].thirdOrderCoeff + - pow(dpFlow, 2) * dialysateFlowCalRecord.hdFlowSensors[ CAL_DATA_HD_DIALYSATE_FLOW_SENSOR ].secondOrderCoeff + - dpFlow * dialysateFlowCalRecord.hdFlowSensors[ CAL_DATA_HD_DIALYSATE_FLOW_SENSOR ].gain + - dialysateFlowCalRecord.hdFlowSensors[ CAL_DATA_HD_DIALYSATE_FLOW_SENSOR ].offset; - -#ifndef DISABLE_PUMP_FLOW_CHECKS - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DP_FLOW_SENSOR_ERROR, ( flowErrorCtr != lastDialysateFlowCommErrorCount ) ) ) - { - activateAlarmNoData( ALARM_ID_HD_DP_FLOW_SENSOR_ERROR ); - } - if ( flowStatus != DFM_SENSOR_CONNECTED_STATUS ) - { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_DIALYSATE_FLOW_STATUS_SELF_TEST_FAILURE, (U32)flowStatus ); - } - lastDialysateFlowCommErrorCount = flowErrorCtr; -#endif - -#ifndef DISABLE_FPGA_COUNTER_CHECKS - // Check for stale flow reading - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DP_FLOW_READ_TIMEOUT_ERROR, ( fpReadCtr == lastDialysateFlowFastPacketReadCtr ) ) ) - { - activateAlarmNoData( ALARM_ID_HD_DP_FLOW_READ_TIMEOUT_ERROR ); - } - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_DP_FLOW_SLOW_READ_TIMEOUT_ERROR, ( spReadCtr == lastDialysateFlowSlowPacketReadCtr ) ) ) - { - activateAlarmNoData( ALARM_ID_HD_DP_FLOW_SLOW_READ_TIMEOUT_ERROR ); - } -#endif - - // Record flow read counters for next time around - lastDialysateFlowFastPacketReadCtr = fpReadCtr; - lastDialysateFlowSlowPacketReadCtr = spReadCtr; - - dialInFlowSignalStrength.data = getFPGADialysateFlowSignalStrength(); -#else + // Process new dialysate flow readings if ( TRUE == getDialysateFlowDataFreshFlag() ) { - dialysateFlowDataFreshStatusCounter = 0; // reset counter - dipFlow = getDGDialysateFlowRateMlMin() * (F32)ML_PER_LITER; - filterDialInFlowReadings( dipFlow ); // process the fresh dialysate flow data - setDialysateFlowDataFreshFlag( FALSE ); + dipFlow = getDGDialysateFlowRateLMin() * (F32)ML_PER_LITER; // convert rate to mL/min + filterDialInFlowReadings( dipFlow ); // process the fresh dialysate flow data + dialysateFlowDataFreshStatusCounter = 0; // reset counter } else - { // dialysate flow data is a stale data + { // Alarm if not receiving new dialysate flow readings in timely manner if ( ++dialysateFlowDataFreshStatusCounter > DIP_DIALYSATE_FLOW_DATA_ALARM_THRESHOLD ) { filterDialInFlowReadings( 0.0 ); @@ -471,8 +426,8 @@ } } } -#endif - + + // Get latest pump speed and current from motor controller adcDialInPumpMCSpeedRPM.data = (F32)(SIGN_FROM_12_BIT_VALUE(dipRPM)) * DIP_SPEED_ADC_TO_RPM_FACTOR; adcDialInPumpMCCurrentmA.data = (F32)(SIGN_FROM_12_BIT_VALUE(dipmA)) * DIP_CURRENT_ADC_TO_MA_FACTOR;