Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -ra069eb423b26296eb95214e18383c81adae07497 -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision a069eb423b26296eb95214e18383c81adae07497) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -53,7 +53,9 @@ #define CONCENTRATE_PUMP_VOLUME_PER_PULSE ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_PULSE_PER_REV ) #define CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL ( 500 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is monitored. + #define CONCENTRATE_PUMP_CONTROL_INTERVAL ( 50 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is controlled. + #define CONCENTRATE_PUMP_SPEED_CONTROL_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for concentrate pump speed control error. /// Enumeration of concentrate pump states. Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -ra069eb423b26296eb95214e18383c81adae07497 -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision a069eb423b26296eb95214e18383c81adae07497) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -94,7 +94,7 @@ * @details Outputs: LoadCell module initialized. * @return none *************************************************************************/ - void initLoadCell( void ) +void initLoadCell( void ) { U32 i; U32 j; Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -ra069eb423b26296eb95214e18383c81adae07497 -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision a069eb423b26296eb95214e18383c81adae07497) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -357,18 +357,18 @@ flow = flow - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ) / 1000.0 ) - ( getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB ) / 1000.0 ); + // Apply calibration to flow sensor reading measuredROFlowRateLPM.data = pow(flow, 4) * flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].fourthOrderCoeff + pow(flow, 3) * flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].thirdOrderCoeff + pow(flow, 2) * flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].secondOrderCoeff + - flow * flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].gain + + flow * flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].gain + flowSensorsCalRecord.flowSensors[ CAL_DATA_RO_PUMP_FLOW_SENSOR ].offset; - // If the flow is less than a certain value, FPGA will return 0xFFFF meaning that - // the flow is 0. - if ( FLOW_SENSOR_ZERO_READING == roFlowReading ) - { - measuredROFlowRateLPM.data = 0.0; - } + // If the flow is less than a certain value, FPGA will return 0xFFFF meaning that the flow is 0. + if ( FLOW_SENSOR_ZERO_READING == roFlowReading ) + { + measuredROFlowRateLPM.data = 0.0; + } measuredFlowReadingsSum = 0; flowFilterCounter = 0; Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -ra069eb423b26296eb95214e18383c81adae07497 -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision a069eb423b26296eb95214e18383c81adae07497) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -62,6 +62,8 @@ static BOOL rinseConcentrateLines; ///< Flag indicates to rinse concentrate lines. static U32 rinseConcentrateLinesTimerCtr; ///< Timer counter for rinsing concentrate lines. static U32 dialysateDrainStartTime; ///< Dialysate drain start time. +static BOOL rinseConcentrateLines; ///< Flag indicates to rinse concentrate lines. +static U32 rinseConcentrateLinesTimerCtr; ///< Timer counter for rinsing concentrate lines. // ********** private function prototypes ********** static DG_DRAIN_STATE_T handleDrainStateStart( void ); Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r46c6c0c0967b279e4a5ad1eb501b526812704248 -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 46c6c0c0967b279e4a5ad1eb501b526812704248) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -48,7 +48,6 @@ #define DIALYSATE_FILL_TIME_OUT ( 5 * SEC_PER_MIN * MS_PER_SECOND ) ///< Time out period when reservoir is not filled with correct dialysate. #define EMPTY_BOTTLE_DETECT_PERSISTENT_PERIOD_MS ( 5 * MS_PER_SECOND ) ///< Persistent period for empty bottle detect. - #define CONCENTRATE_PUMP_PRIME_INTERVAL ( 3 * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Persistent time interval for concentrate pumps prime. #define ACID_BICARB_CONCENTRATE_ADDITION_MULTIPLER 1.06 ///< Acid and bicarbonate concentrates make up around 6% to total volume. Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r989cb7be41238fe88d132b532f05298d2320e94e -re92a64cc9e95e2c79a5ff88d183ec33d8baa9745 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 989cb7be41238fe88d132b532f05298d2320e94e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision e92a64cc9e95e2c79a5ff88d183ec33d8baa9745) @@ -22,7 +22,6 @@ #include "Accel.h" #include "ConcentratePumps.h" #include "ConductivitySensors.h" -#include "Fans.h" #include "FPGA.h" #include "Heaters.h" #include "ModeFlush.h" @@ -363,7 +362,6 @@ return result; } - // *********************************************************************** // **************** Message Handling Helper Functions ******************** // *********************************************************************** @@ -2966,37 +2964,6 @@ } /*********************************************************************//** - * @brief - * The handleFansRPMOverride function handles a request to override a fans RPM value. - * @details Inputs: none - * @details Outputs: message handled - * @param message a pointer to the message to handle - * @return none - *************************************************************************/ -void handleFansRPMOverride( MESSAGE_T *message ) -{ - TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; - BOOL result = FALSE; - - // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) - { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); - if ( FALSE == payload.reset ) - { - result = testSetFanRPMOverride( payload.index, payload.state.f32 ); - } - else - { - result = testResetFanRPMOverride( payload.index ); - } - } - - // respond to request - sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); -} - -/*********************************************************************//** * @brief * The handleStopDGRTCClock function handles a request to stop the RTC clock. * @details Inputs: none @@ -3170,6 +3137,37 @@ /*********************************************************************//** * @brief + * The handleFansRPMOverride function handles a request to override a fans RPM value. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleFansRPMOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetFanRPMOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetFanRPMOverride( payload.index ); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief * The handleTestFansRPMAlarmStartTimeOverrideRequest function handles a * request to override the fan RPM alarm start time. * @details Inputs: none