Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rc4ea2fbaae71d7beca3879c0970d488f169ebae4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision c4ea2fbaae71d7beca3879c0970d488f169ebae4) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -35,7 +35,7 @@ #define CONCENTRATE_PUMP_FORWARD_DIR 0x1 ///< Concentrate pump forward direction configuration. #define CONCENTRATE_PUMP_REVERSE_DIR 0x0 ///< Concentrate pump reverse direction configuration. -#define CONCENTRATE_PUMP_SPEED_INCREMENT 10.0F ///< Speed increase (mL/min) when controlling concentrate pump to target step speed. +#define CONCENTRATE_PUMP_RAMP_SPEED_INCREMENT 10.0F ///< Speed increase (mL/min) when controlling concentrate pump to target step speed. #define CONCENTRATE_PUMP_MIN_SPEED 3.0F ///< Minimum speed for concentrate pump in mL per min. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_ON_PCT 0.02F ///< Concentrate pump speed out of range tolerance when on in percentage. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM 1.0F ///< Concentrate pump speed out of range tolerance when slow in mL/min. @@ -54,7 +54,7 @@ #define CONCENTRATE_PUMP_HALL_SENSORS_OUT_OF_RANGE_TIME_MS ( 5 * MS_PER_SECOND ) ///< Hall sensors out of range time in milliseconds. #define CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP 8.0F ///< Number of micro-steps ( fractions of step) per step. -#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ( ( 1 / CONCENTRATE_PUMP_VOLUME_PER_REV ) * \ +#define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION ( ( 1.0F / CONCENTRATE_PUMP_VOLUME_PER_REV ) * \ ( CONCENTRATE_PUMP_STEP_PER_REV * \ CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ) ///< Convert volume in to number of revolutions needed. #ifdef __PUMPTEST__ @@ -87,7 +87,6 @@ #define CONCENTRATE_PUMP_CONTROL_SLEEP_OFF 0x40 ///< Concentrate pump control sleep off. #define CONCENTRATE_PUMP_CONTROL_ENABLE_MASK 0x10 ///< Concentrate pump control enable bit mask. - static const U32 CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | CONCENTRATE_PUMP_CONTROL_NOT_RESET | CONCENTRATE_PUMP_CONTROL_ENABLE | @@ -165,6 +164,7 @@ static void monitorPumpSpeed( CONCENTRATE_PUMPS_T pumpId, ALARM_ID_T alarm ); static void checkConcentratePumpControlSet( CONCENTRATE_PUMPS_T pumpId ); static void publishConcentratePumpData( void ); +static void monitorPumpParkStatus( void ); /*********************************************************************//** * @brief @@ -253,14 +253,39 @@ // Calculate pump speed for each defined pump calcMeasuredPumpsSpeed(); + // Update rev count status + pumpMesauredRevCnt[ D11_PUMP ].data = (U32)getFPGAD11PumpRevolutionCountStatus(); + pumpMesauredRevCnt[ D10_PUMP ].data = (U32)getFPGAD10PumpRevolutionCountStatus(); + + //Monitor Pump Park status + monitorPumpParkStatus(); + + //Monitor Pump Speed + monitorPumpSpeed( D11_PUMP, ALARM_ID_DD_D11_PUMP_SPEED_CONTROL_ERROR ); + monitorPumpSpeed( D10_PUMP, ALARM_ID_DD_D10_PUMP_SPEED_CONTROL_ERROR ); + + checkPersistentAlarm( ALARM_ID_DD_CONCENTRATE_PUMP_FAULT, isConcPumpFault, fpgaConcPumpsFault, CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD ); + + //Publish concentrate pump data + publishConcentratePumpData(); +} + +/*********************************************************************//** + * @brief + * The monitorPumpParkStatus function monitors the concentrate pump park status + * and associated fault handling. + * @details \b Inputs: Park status + * @details \b Outputs: isConcPumpParkInProgress,acidConcentratePumpParkPersistenceClear + * bicarbConcentratePumpParkPersistenceClear + * @return none + *************************************************************************/ +static void monitorPumpParkStatus( void ) +{ parked[ D11_PUMP ].data = (U32)getFPGAD11PumpIsParked(); parked[ D10_PUMP ].data = (U32)getFPGAD10PumpIsParked(); parkFaulted[ D11_PUMP ].data = (U32)getFPGAD11PumpParkFault(); parkFaulted[ D10_PUMP ].data = (U32)getFPGAD10PumpParkFault(); - pumpMesauredRevCnt[ D11_PUMP ].data = (U32)getFPGAD11PumpRevolutionCountStatus(); - pumpMesauredRevCnt[ D10_PUMP ].data = (U32)getFPGAD10PumpRevolutionCountStatus(); - if ( ( TRUE == getConcPumpIsParked( D11_PUMP ) ) || ( TRUE == getConcPumpParkIsFaulted( D11_PUMP ) ) ) { // If the pump has parked or faulted during the park, then it is not in progress @@ -297,14 +322,6 @@ resetPersistentAlarmTimer( ALARM_ID_DD_D10_PUMP_SPEED_CONTROL_ERROR ); } } - - monitorPumpSpeed( D11_PUMP, ALARM_ID_DD_D11_PUMP_SPEED_CONTROL_ERROR ); - monitorPumpSpeed( D10_PUMP, ALARM_ID_DD_D10_PUMP_SPEED_CONTROL_ERROR ); - - checkPersistentAlarm( ALARM_ID_DD_CONCENTRATE_PUMP_FAULT, isConcPumpFault, fpgaConcPumpsFault, CONCENTRATE_PUMP_FAULT_PERSISTENCE_PERIOD ); - - //Publish concentrate pump data - publishConcentratePumpData(); } /*********************************************************************//** @@ -485,6 +502,7 @@ * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid pump ID is seen. * @param pumpId pump id to set step speed * @param targetSpeed_ml_min target speed in mL/min + * @param targetVolume_ml dosing volume to be delivered in ml. * @return none *************************************************************************/ void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min, F32 targetVolume_ml ) @@ -804,14 +822,10 @@ if ( D11_PUMP == pumpId ) { setFPGAD11PumpSetStepSpeed( CONCENTRATE_PUMP_ZERO_FLOW_RATE ); - //concentratePumps[ D11_PUMP ].controlSet |= CONCENTRATE_PUMP_CONTROL_ENABLE_MASK; - //setFPGAD11PumpControl( concentratePumps[ D11_PUMP ].controlSet ); } else { setFPGAD10PumpSetStepSpeed( CONCENTRATE_PUMP_ZERO_FLOW_RATE ); - //concentratePumps[ D10_PUMP ].controlSet |= CONCENTRATE_PUMP_CONTROL_ENABLE_MASK; - //setFPGAD10PumpControl( concentratePumps[ D10_PUMP ].controlSet ); } #ifndef __PUMPTEST__ // Park concentrate pump too if requested @@ -884,7 +898,6 @@ static CONCENTRATE_PUMP_STATE_T handleConcentratePumpRampToTargetSpeedState( CONCENTRATE_PUMPS_T pumpId ) { CONCENTRATE_PUMP_STATE_T state = CONCENTRATE_PUMP_RAMP_TO_TARGET_SPEED_STATE; - //U16 currentMeasuredRev = getConcPumpCurrentMeasuredRevolutionCount( pumpId ); if ( TRUE == stepConcentratePumpToTargetSpeed( pumpId ) ) { @@ -915,7 +928,6 @@ static CONCENTRATE_PUMP_STATE_T handleConcentratePumpControlTargetSpeedState( CONCENTRATE_PUMPS_T pumpId ) { CONCENTRATE_PUMP_STATE_T state = CONCENTRATE_PUMP_CONTROL_TARGET_SPEED_STATE; - //U16 currentMeasuredRev = getConcPumpCurrentMeasuredRevolutionCount( pumpId ); F32 targetToCurreSpeedDiffMLPM = fabs( getPumpTargetSpeed( pumpId ) - concentratePumps[ pumpId ].currentPumpSpeed ); if ( ++concentratePumps[ pumpId ].controlTimerCounter >= CONCENTRATE_PUMP_CONTROL_INTERVAL ) @@ -960,9 +972,9 @@ if ( currentToTargetDiff > NEARLY_ZERO ) { - if ( currentToTargetDiff > CONCENTRATE_PUMP_SPEED_INCREMENT ) + if ( currentToTargetDiff > CONCENTRATE_PUMP_RAMP_SPEED_INCREMENT ) { - speedIncrease = CONCENTRATE_PUMP_SPEED_INCREMENT; + speedIncrease = CONCENTRATE_PUMP_RAMP_SPEED_INCREMENT; } else { @@ -1035,24 +1047,15 @@ for ( pumpId = CONCENTRATEPUMPS_FIRST; pumpId < NUM_OF_CONCENTRATE_PUMPS; pumpId++ ) { - switch ( pumpId ) + if ( D11_PUMP == pumpId ) { - case D11_PUMP: - pulseWidthCount = getFPGAD11PumpHallSensePulseWidth(); - break; + pulseWidthCount = getFPGAD11PumpHallSensePulseWidth(); + } + else + { + pulseWidthCount = getFPGAD10PumpHallSensePulseWidth(); + } - case D10_PUMP: - pulseWidthCount = getFPGAD10PumpHallSensePulseWidth(); - break; - -#ifndef _VECTORCAST_ - // Disabled in VectorCAST since it cannot be reached in VectorCAST because the switch case is in a for loop - default: - // Loop only allows for valid concentrate pump Ids. - break; -#endif - } - pulseWidthInMicroSeconds = pulseWidthCount * CONCENTRATE_PUMP_HALL_SENSE_PERIOD_RESOLUTION; concentratePumps[ pumpId ].pulseWidthUS = pulseWidthInMicroSeconds; isPumpPulseWidthOut = ( pulseWidthInMicroSeconds <= (F32)CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT ? TRUE : FALSE ); @@ -1121,37 +1124,30 @@ * required set bit, they are set again. * @details \b Inputs: concentratePumps * @details \b Outputs: none - * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid pump ID is seen. * @param pumpId pump id to check its control set bit * @return none *************************************************************************/ static void checkConcentratePumpControlSet( CONCENTRATE_PUMPS_T pumpId ) { U08 controlSetBits; - switch ( pumpId ) + if ( D11_PUMP == pumpId ) { - case D11_PUMP: - controlSetBits = getFPGAD11PumpControlStatus(); + controlSetBits = getFPGAD11PumpControlStatus(); - if ( controlSetBits != concentratePumps[ pumpId ].controlSet ) - { - setFPGAD11PumpControl( concentratePumps[ pumpId ].controlSet ); - } - break; + if ( controlSetBits != concentratePumps[ pumpId ].controlSet ) + { + setFPGAD11PumpControl( concentratePumps[ pumpId ].controlSet ); + } + } + else + { + controlSetBits = getFPGAD10PumpControlStatus(); - case D10_PUMP: - controlSetBits = getFPGAD10PumpControlStatus(); - - if ( controlSetBits != concentratePumps[ pumpId ].controlSet ) - { - setFPGAD10PumpControl( concentratePumps[ pumpId ].controlSet ); - } - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONCENTRATE_PUMP_INVALID_PUMP_ID, pumpId ); - break; + if ( controlSetBits != concentratePumps[ pumpId ].controlSet ) + { + setFPGAD10PumpControl( concentratePumps[ pumpId ].controlSet ); + } } } Index: firmware/App/Controllers/DialysatePumps.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -43,11 +43,10 @@ #define DATA_PUBLISH_COUNTER_START_COUNT 60 ///< Data publish counter start count. #define DP_CONTROL_INTERVAL ( 1000 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate pump is controlled. -//#define DP_CONTROL_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate pump is controlled. #define DIALYSATE_PUMP_CONTROL_RUN 0x01 ///< Dialysate pump control run pump. #define DIALYSATE_PUMP_CONTROL_STOP 0x00 ///< Dialysate pump control stop pump. #define DIALYSATE_PUMP_FORWARD_DIR 1 ///< Dialysate pump forward direction. reverse direction is not allowed. -#define DIALYSATE_PUMP_SPEED_INCREMENT 10.0F ///< Speed increase when controlling dialysate pump to target step speed. +#define DIALYSATE_PUMP_RAMP_SPEED_INCREMENT 10.0F ///< Speed increase when controlling dialysate pump ramp to target step speed. #define ZERO_SPEED 0.0F ///< Zero speed/RPM value. #define DIALYSATE_PUMP_MAX_CURRENT_WHEN_OFF_A 0.1F ///< Dialysate pump maximum current when the pump is off in amps. @@ -151,7 +150,7 @@ * @brief * The initDialysatePump function initializes the DialysatePumps unit. * @details \b Inputs: none - * @details \b Outputs: Dialysate unit variables initialized. + * @details \b Outputs: Dialysate pump unit variables initialized. * @return none *************************************************************************/ void initDialysatePump( void ) @@ -252,7 +251,8 @@ } else if ( rpm < MIN_DIALYSATE_PUMP_RPM ) { - pumpTargetSpeed[ pumpId ].data = 0.0; + // Lets assign minimum speed to make sure, driver is not getting into fault mode + pumpTargetSpeed[ pumpId ].data = MIN_DIALYSATE_PUMP_RPM; } else { @@ -393,7 +393,6 @@ BOOL isCurrentOutOfRange = FALSE; DIALYSATE_PUMPS_T pumpId; - // Update the paramerters dialysatePumpMeasuredCurrentA[ D12_PUMP ].data = (F32)d12Current * CURRENT_CONVERSION_COEFF; dialysatePumpMeasuredCurrentA[ D48_PUMP ].data = (F32)d48Current * CURRENT_CONVERSION_COEFF; @@ -422,7 +421,7 @@ isOffCurrentOut = ( getDialysatePumpMeasuredCurrentA( pumpId ) > DIALYSATE_PUMP_MAX_CURRENT_WHEN_OFF_A ? TRUE : FALSE ); isRPMTooHigh = ( getDialysatePumpMeasuredSpeed( pumpId ) > MIN_DIALYSATE_PUMP_RPM ? TRUE : FALSE ); - + //TODO : Enable the code later for alarm testing #if 0 if ( D12_PUMP == pumpId ) { @@ -457,6 +456,7 @@ BOOL isDirInvalid = ( ( direction != DIALYSATE_PUMP_FORWARD_DIR ) && ( rpm > DIALYSATE_PUMP_MIN_RPM_FOR_DIR_CHECK ) ? TRUE : FALSE ); isRPMOutOfRange = ( rpmDiff > MAX_ALLOWED_RPM_OUT_OF_RANGE ? TRUE : FALSE ); + //TODO : Enable the code later for alarm testing #if 0 if ( D12_PUMP == pumpId ) { @@ -485,6 +485,7 @@ // Check the persistent alarm for the maximum dialysate pump current F32 currentA = getDialysatePumpMeasuredCurrentA( pumpId ); isCurrentOutOfRange = ( currentA > DIALYSATE_PUMP_MAX_CURRENT_A ? TRUE : FALSE ) | isOffCurrentOut; + //TODO : Enable the code later for alarm testing #if 0 if ( D12_PUMP == pumpId ) { @@ -539,7 +540,6 @@ break; #ifndef _VECTORCAST_ - // The switch case is in a for loop so the default case cannot be covered in VectorCAST default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_DIALYSATE_PUMP_EXEC_INVALID_STATE, pumpId ) dialysatePumps[ pumpId ].dialysatePumpState = DIALYSATE_PUMP_OFF_STATE; @@ -681,9 +681,9 @@ if ( currentToTargetDiff > ZERO_SPEED ) { - if ( currentToTargetDiff > DIALYSATE_PUMP_SPEED_INCREMENT ) + if ( currentToTargetDiff > DIALYSATE_PUMP_RAMP_SPEED_INCREMENT ) { - speedIncrease = DIALYSATE_PUMP_SPEED_INCREMENT; + speedIncrease = DIALYSATE_PUMP_RAMP_SPEED_INCREMENT; } else { @@ -743,19 +743,20 @@ { F32 measuredPressure = getFilteredPressure( D18_PRES ); F32 targetPressure = getDialysatePumpTargetPressure( pumpId ); - F32 newSpeed = 0; + F32 newSpeed = 0.0F; //F32 control = runPIController( PI_CONTROLLER_ID_D12_PUMP, targetPressure, measuredPressure ); // TODO : get the equivalent speed for the given control // newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); + //TODO: Below code is placeholder to have minimal close loop control, to be reevaluated. #if 0 if ( measuredPressure < targetPressure ) { - newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_SPEED_INCREMENT; + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_RAMP_SPEED_INCREMENT; } else { - newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_SPEED_INCREMENT; + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_RAMP_SPEED_INCREMENT; } //Apply speed limit @@ -771,19 +772,20 @@ { F32 measuredPressure = getFilteredPressure( D51_PRES ); F32 targetPressure = getDialysatePumpTargetPressure( pumpId ); - F32 newSpeed = 0; + F32 newSpeed = 0.0F; //F32 control = runPIController( PI_CONTROLLER_ID_D48_PUMP, targetPressure, measuredPressure ); // TODO : get the equivalent speed for the given control // newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); + //TODO: Below code is placeholder to have minimal close loop control, to be reevaluated. #if 0 if ( measuredPressure < targetPressure ) { - newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_SPEED_INCREMENT; + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_RAMP_SPEED_INCREMENT; } else { - newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_SPEED_INCREMENT; + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_RAMP_SPEED_INCREMENT; } //Apply speed limit Index: firmware/App/Controllers/DialysatePumps.h =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -24,17 +24,20 @@ * @defgroup DialysatePumps DialysatePumps * @brief Dialysate Pumps monitor/controller module. Controls and monitors the dialysate pumps. * Dialysate pump manufacturer: Diener Silencer Series Gear Pumps, PN: 01483-PM-3-RA. - * The pump shall produce flow rates of 50-4500 ml/min. + * The pump shall produce flow rates of 350-2700 ml/min. * * @addtogroup DialysatePumps * @{ */ // ********** public definitions ********** -#define MIN_DIALYSATE_PUMP_RPM 350 ///< Minimum RPM target for dialysate pump (though zero is allowed if turning pump off). -#define MAX_DIALYSATE_PUMP_RPM 2700 ///< Maximum RPM target for dialysate pump. +#define MIN_DIALYSATE_PUMP_RPM 350 ///< Minimum RPM target for dialysate pump (though zero is allowed if turning pump off). +#define MAX_DIALYSATE_PUMP_RPM 2700 ///< Maximum RPM target for dialysate pump. +#define MIN_DIALYSATE_FLOW_RATE ( 100.0F ) ///< Minimum dialysate flow rate +#define MAX_DIALYSATE_FLOW_RATE ( 600.0F ) ///< Maximum dialysate flow rate + /// Enumeration of dialysate pumps. typedef enum DialysatePumps { Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -355,22 +355,16 @@ ALARM_ID_T alarm; BOOL isLevelLow = FALSE; - switch ( heater ) + if ( D5_HEAT == heater ) { - case D5_HEAT: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); - break; - - case D45_HEAT: - alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D46_LEVL ) != 0 )? FALSE : TRUE ); - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_INVALID_HEATER_ID_SELECTED, heater ) - break; + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; + isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); } + else + { + alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; + isLevelLow = ( ( getLevelStatus( D46_LEVL ) != 0 )? FALSE : TRUE ); + } checkPersistentAlarm( alarm, isLevelLow, 0.0F, 0.0F ); } @@ -489,42 +483,36 @@ if( ++heatersStatus[ heater ].controlIntervalCounter > D5_HEAT_CONTROL_INTERVAL_COUNT ) { - switch ( heater ) + if ( D5_HEAT == heater ) { - case D5_HEAT: - measuredTemperature = getTemperatureValue( (U32)D4_TEMP ); - if ( measuredTemperature >= targetTemperature ) - { - // Turn off heater - control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; - } - else - { - // Turn On heater - control[ heater ].data = D5_HEAT_ON; - } + measuredTemperature = getTemperatureValue( (U32)D4_TEMP ); + if ( measuredTemperature >= targetTemperature ) + { + // Turn off heater + control[ heater ].data = HEATERS_MIN_DUTY_CYCLE; + } + else + { + // Turn On heater + control[ heater ].data = D5_HEAT_ON; + } - //control = runPIController( PI_CONTROLLER_ID_D5_HEAT, targetTemperature, measuredTemperature ); - break; + //control = runPIController( PI_CONTROLLER_ID_D5_HEAT, targetTemperature, measuredTemperature ); + } + else + { + measuredTemperature = getTemperatureValue( (U32)D50_TEMP ); + //control = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); + if ( targetTemperature > 0.0F ) + { + ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * D45_HEAT_GAIN ); + //Apply dutycycle limit + ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); + ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); + } - case D45_HEAT: - measuredTemperature = getTemperatureValue( (U32)D50_TEMP ); - //control = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); - if ( targetTemperature > 0.0F ) - { - ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * D45_HEAT_GAIN ); - //Apply dutycycle limit - ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); - ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); - } - - control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_INVALID_HEATER_ID_SELECTED, heater ) - break; + control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET; } heatersStatus[ heater ].hasTargetTempChanged = FALSE; @@ -579,11 +567,11 @@ if ( D5_HEAT == heater ) { BOOL heaterCntrl = (BOOL)control; - setFPGACPrimaryHeaterOnOffControl( heaterCntrl ); + setFPGAD5HeaterOnOffControl( heaterCntrl ); } else { - setFPGATrimmerHeaterPWMControl( (U08)control ); + setFPGAD45HeaterPWMControl( (U08)control ); } } else Index: firmware/App/Controllers/PistonPumpControl.c =================================================================== diff -u -r289ff659b85cfeee55ea707e31dcd762616685b5 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/PistonPumpControl.c (.../PistonPumpControl.c) (revision 289ff659b85cfeee55ea707e31dcd762616685b5) +++ firmware/App/Controllers/PistonPumpControl.c (.../PistonPumpControl.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -23,6 +23,7 @@ #include "Valves.h" #ifdef __PUMPTEST__ + /** * @addtogroup PistonPumpControl * @{ @@ -530,6 +531,7 @@ return result; } +/**@}*/ + #endif -/**@}*/ Index: firmware/App/Controllers/PistonPumpControl.h =================================================================== diff -u -r289ff659b85cfeee55ea707e31dcd762616685b5 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/PistonPumpControl.h (.../PistonPumpControl.h) (revision 289ff659b85cfeee55ea707e31dcd762616685b5) +++ firmware/App/Controllers/PistonPumpControl.h (.../PistonPumpControl.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -14,15 +14,15 @@ * @date (original) 07-Jan-2025 * ***************************************************************************/ +#ifdef __PUMPTEST__ #ifndef __PISTON_PUMP_CONTROL_H__ #define __PISTON_PUMP_CONTROL_H__ -#ifdef __PUMPTEST__ - #include "DDCommon.h" #include "DDDefs.h" + /** * @defgroup PistonPumpControl PistonPumpControl * @brief PistonPumpControl unit. Performs Dosing and ultrafilteration functions via a state machine. Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -371,11 +371,6 @@ { U32 valveState = getU32OverrideValue( &valveSensedStates[ valveID ] ); -// if ( OVERRIDE_KEY == valveSensedStates[ valveID ].override ) -// { -// valveState = valveSensedStates[ valveID ].ovData; -// } - name = ( DEENERGIZED == valveState ? VALVE_STATE_CLOSED : VALVE_STATE_OPEN ); } else Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -117,7 +117,6 @@ BOOL testValveSensedStateOverride( MESSAGE_T *message ); BOOL testValveOpenCloseStateOverride( MESSAGE_T *message ); - /**@}*/ #endif Index: firmware/App/DDCommon.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/DDCommon.h (.../DDCommon.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -27,15 +27,18 @@ #define DD_VERSION_MICRO 0 #define DD_VERSION_BUILD 0 -//Uncomment the below line for new dosing pump testing -#define __PUMPTEST__ 1 - // ********** development build switches ********** #ifndef _RELEASE_ #ifndef _VECTORCAST_ // #define TASK_TIMING_OUTPUT_ENABLED 1 // Re-purposes alarm lamp pins for task timing +//flag to check PT100 use in calculations +#define USE_PT_100 1 + +//Uncomment the below line for new dosing pump testing +#define __PUMPTEST__ 1 + #include #include #endif Fisheye: Tag 322747d530c1b8205be257557e53dcfe9caad50a refers to a dead (removed) revision in file `firmware/App/Drivers/BalancingChamber.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 322747d530c1b8205be257557e53dcfe9caad50a refers to a dead (removed) revision in file `firmware/App/Drivers/BalancingChamber.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -33,8 +33,6 @@ #define HIGH_PRES_MAX_PSI 145.038F ///< Convert pressure to PSI for 10 bar pressure sensor #define LOW_PRES_MAX_PSI 50.7632F ///< Convert pressure to PSI for 3.5 bar pressure sensor #define PRES_MIN_PSI 0.0F ///< Minimum value for PSI conversion - - #define ONE_BAR_TO_MILLI_BAR 1000 ///< 1 bar to milli-bar conversion. #define COUNTS_TO_MILLI_BAR 100 ///< Counts to milli-bar conversion. #define BAR_TO_MMHG ( 750.062F ) ///< Conversion factor for converting bar to mmHg. Index: firmware/App/Drivers/TemperatureSensors.c =================================================================== diff -u -red39129abdca4ec343369d83494530b23621e052 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Drivers/TemperatureSensors.c (.../TemperatureSensors.c) (revision ed39129abdca4ec343369d83494530b23621e052) +++ firmware/App/Drivers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -34,15 +34,15 @@ // ********** private definitions ********** -#define USE_PT_100 1 ///< flag to check PT100 use in calculations - #define PRIMARY_HEATER_TEMP_SENSORS_GAIN 8U ///< Primary heater temperature sensors gain. #define PRIMARY_HEATER_TEMP_SENSORS_REF_RESISTANCE 20000 ///< Primary heater temperature sensors reference resistance. #define PRIMARY_HEATER_TEMP_SENSORS_0_DEGREE_RESISTANCE 1000U ///< Primary heater temperature sensors zero degree resistance. -#define PT100_TEMP_SENSORS_GAIN 8U ///< PT100 temperature sensors gain. +#ifdef USE_PT_100 +#define PT100_TEMP_SENSORS_GAIN 8U ///< PT100 temperature sensors gain. #define PT100_TEMP_SENSORS_REF_RESISTANCE 4700 ///< PT100 temperature sensors reference resistance. #define PT100_TEMP_SENSORS_0_DEGREE_RESISTANCE 100U ///< PT100 temperature sensors zero degree resistance. +#endif #define TEMP_SENSORS_ADC_BITS 24U ///< External temperature sensors ADC bits. #define MAX_NUM_OF_RAW_ADC_SAMPLES 4U ///< Number of ADC reads for moving average calculations. @@ -198,7 +198,6 @@ tempSensors[ D50_TEMP ].maxAllowedTemp = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; #endif - // Board temperature sensors conversion coefficient tempSensors[ BRD_TEMP ].conversionCoeff = conversionCoeff; tempSensors[ BRD_TEMP ].maxAllowedTemp = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; @@ -607,7 +606,7 @@ //calId = NUM_OF_CAL_DATA_TEMP_SENSORS; break; } - + //TODO : Enable the code later when calibration data available. // if ( calId != NUM_OF_CAL_DATA_TEMP_SENSORS ) // { // *temperature = pow( tempTemperature, 4 ) * tempSensorCalRecord.tempSensors[ calId ].fourthOrderCoeff + Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r799f26bec11423fa4894a8e01ebc50bf0e5f4a32 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 799f26bec11423fa4894a8e01ebc50bf0e5f4a32) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -62,7 +62,7 @@ static U32 genDialysateDataPublicationTimerCounter; ///< Used to schedule generate dialysate data publication to CAN bus. static OVERRIDE_U32_T genDialysateDataPublishInterval; ///< Generate dialysate mode data publish interval. static F32 lastDialTargetTemperatureSet; ///< last dialysate target temperature set for heater control -static BOOL isTreatementParamUpdated; ///< To indicate change in treatment parameters +static BOOL isTreatmentParamUpdated; ///< To indicate change in treatment parameters // ********** private function prototypes ********** @@ -75,7 +75,7 @@ static DD_GEND_MODE_STATE_T handleGenDProduceDialysateState( void ); static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryState( void ); static DD_GEND_MODE_STATE_T handleGenDDialysateDeliveryPauseState( void ); -static F32 getGenDilaysateTargetTemperature( void ); +static F32 getGenDialysateTargetTemperature( void ); static void publishGenDialysateModeData( void ); /*********************************************************************//** @@ -108,7 +108,7 @@ genDialysateDataPublishInterval.override = OVERRIDE_RESET; genDialysateDataPublicationTimerCounter = 0; lastDialTargetTemperatureSet = 0.0F; - isTreatementParamUpdated = FALSE; + isTreatmentParamUpdated = FALSE; //Initialize balancing chamber module initBalanceChamber(); @@ -140,7 +140,7 @@ *************************************************************************/ void execGenDialysateMonitor( void ) { - // Read temperature and conducitivity + // Read temperature and conductivity //F32 hydChamberTemperature = getTemperatureValue( D4_TEMP ); //F32 biCarbConductivity = getConductivityValue( D17_COND ); //F32 acidBicarbMixConductivity = getConductivityValue( D29_COND ); @@ -178,20 +178,20 @@ valveControlForBCClosedState(); setHydValvesStatetoClosedState(); setUFValvesStatetoClosedState(); - setValveState( M4_VALV, VALVE_STATE_OPEN ); //M4 + setValveState( M4_VALV, VALVE_STATE_OPEN ); // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); // Turn on the primary heater - setHeaterTargetTemperature( D5_HEAT, getGenDilaysateTargetTemperature() ); + setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() ); startHeater( D5_HEAT ); - lastDialTargetTemperatureSet = getGenDilaysateTargetTemperature(); + lastDialTargetTemperatureSet = getGenDialysateTargetTemperature(); break; case DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE: // Open up VHo valve - setValveState( D14_VALV, VALVE_STATE_OPEN ); //D14 + setValveState( D14_VALV, VALVE_STATE_OPEN ); // Start timer for hyd chamber negative pressure check state hydChamberPressureCheckStartTimeMS = getMSTimerCount(); // Start D12/DGP pump @@ -207,24 +207,11 @@ // Start the timer for spent dialysate pressure check spentDialPressureCheckStartTimeMS = getMSTimerCount(); - // Open all balancing chamber valves for free flow - //valveControlForBCOpenState(); + // Open only fresh side balancing chamber valves + valveControlForBCFreshSideOnlyOpenState(); - // Open fresh balancing chamber valves D19,D20,D21,D22 - setValveState( D19_VALV, VALVE_STATE_OPEN ); - setValveState( D20_VALV, VALVE_STATE_OPEN ); - setValveState( D21_VALV, VALVE_STATE_OPEN ); - setValveState( D22_VALV, VALVE_STATE_OPEN ); - - // Close spent side valves D23,D24,D25,D26 - setValveState( D23_VALV, VALVE_STATE_CLOSED ); - setValveState( D25_VALV, VALVE_STATE_CLOSED ); - setValveState( D24_VALV, VALVE_STATE_CLOSED ); - setValveState( D26_VALV, VALVE_STATE_CLOSED ); - - // Make sure valves are in correct position - setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve : D53 + setValveState( D53_VALV, VALVE_STATE_OPEN ); // Drain valve setValveState( D35_VALV, VALVE_STATE_CLOSED ); // VDI setValveState( D40_VALV, VALVE_STATE_CLOSED ); // VDO setValveState( D34_VALV, VALVE_STATE_OPEN ); // Bypass valve @@ -296,12 +283,7 @@ } // Update any dynamic treatment parameter changes - if ( TRUE == isTreatementParamUpdated ) - { - updateTreatementSettings(); - //reset the flag - isTreatementParamUpdated = FALSE; - } + updateTreatmentSettings(); // execute current gen dialysate state switch ( genDialysateState ) @@ -364,7 +346,6 @@ // Read floater switch BOOL result = FALSE; LEVEL_STATE_T floaterLevel = getLevelStatus( D6_LEVL ); - //LEVEL_STATE_T spentDialLevel = getLevelStatus( D46_LEVL ); // Get the target temperature from TD targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); @@ -373,7 +354,7 @@ if ( LEVEL_STATE_HIGH == floaterLevel ) { // Get the target dialysate temperature - F32 targetTemperature = getGenDilaysateTargetTemperature(); + F32 targetTemperature = getGenDialysateTargetTemperature(); //turn off inlet water valve setValveState( D3_VALV, VALVE_STATE_CLOSED ); @@ -530,7 +511,7 @@ execBalancingChamberControl(); //if the produced dialysate is good and TD asks for dialysate delivery - // move to next state + //move to next state if ( ( TRUE == getDialGoodToDeliverStatus() ) && ( FALSE == getTDDialyzerBypass() ) ) { setModeGenDStateTransition( DD_GEND_DIALYSATE_DELIVERY_STATE ); @@ -599,35 +580,41 @@ /*********************************************************************//** * @brief - * The setTreatementParamUpdate function sets the flag to indicate one or more + * The setTreatmentParamUpdate function sets the flag to indicate one or more * treatement parameters updated. * gen dialysate mode. * @details \b Inputs: none - * @details \b Outputs: isTreatementParamUpdated + * @details \b Outputs: isTreatmentParamUpdated * @return none *************************************************************************/ -void setTreatementParamUpdate( void ) +void setTreatmentParamUpdate( void ) { - isTreatementParamUpdated = TRUE; + isTreatmentParamUpdated = TRUE; } /*********************************************************************//** * @brief - * The updateTreatementSettings function updates the switching rate post the + * The updateTreatmentSettings function updates the switching rate post the * treatement parameters updated during treatement. - * @details \b Inputs: none - * @details \b Outputs: balChamberSwitchingPeriod. + * @details \b Inputs: isTreatmentParamUpdated + * @details \b Outputs: balChamberSwitchingPeriod,isTreatmentParamUpdated. * @return none *************************************************************************/ -void updateTreatementSettings( void ) +void updateTreatmentSettings( void ) { - // Update the Balancing chamber switching rate based on dialysis rate - updateBalChamberSwitchingPeriod(); + // Update any dynamic treatment parameter changes + if ( TRUE == isTreatmentParamUpdated ) + { + // Update the Balancing chamber switching rate based on dialysis rate + updateBalChamberSwitchingPeriod(); - //TODO: update others parameters setting as needed. + //TODO: update others parameters setting as needed. + + //reset the flag + isTreatmentParamUpdated = FALSE; + } } - /*********************************************************************//** * @brief * The getDialGoodToDeliverStatus function gets the dialysate good to deliver @@ -638,13 +625,8 @@ *************************************************************************/ U32 getDialGoodToDeliverStatus( void ) { - U32 result = isDialysateGoodtoDeliver.data; + U32 result = getU32OverrideValue( &isDialysateGoodtoDeliver ); - if ( OVERRIDE_KEY == isDialysateGoodtoDeliver.override ) - { - result = isDialysateGoodtoDeliver.ovData; - } - return result; } @@ -658,13 +640,8 @@ *************************************************************************/ U32 getDialDeliveryProgressStatus( void ) { - U32 result = isDialDeliveryInProgress.data; + U32 result = getU32OverrideValue( &isDialDeliveryInProgress ); - if ( OVERRIDE_KEY == isDialDeliveryInProgress.override ) - { - result = isDialDeliveryInProgress.ovData; - } - return result; } @@ -678,34 +655,24 @@ *************************************************************************/ static U32 getGenDilaysateDataPublishInterval( void ) { - U32 result = genDialysateDataPublishInterval.data; + U32 result = getU32OverrideValue( &genDialysateDataPublishInterval ); - if ( OVERRIDE_KEY == genDialysateDataPublishInterval.override ) - { - result = genDialysateDataPublishInterval.ovData; - } - return result; } /*********************************************************************//** * @brief - * The getGenDilaysateTargetTemperature function gets the target dialysate + * The getGenDialysateTargetTemperature function gets the target dialysate * temperature. - * @details \b Inputs: getGenDilaysateTargetTemperature + * @details \b Inputs: getGenDialysateTargetTemperature * @details \b Outputs: none * @return the target dialysate temperature for the treatment. *************************************************************************/ -static F32 getGenDilaysateTargetTemperature( void ) +static F32 getGenDialysateTargetTemperature( void ) { - F32 result = targetHydChamberFluidTemp.data; + F32 temp = getF32OverrideValue( &targetHydChamberFluidTemp ); - if ( OVERRIDE_KEY == targetHydChamberFluidTemp.override ) - { - result = targetHydChamberFluidTemp.ovData; - } - - return result; + return temp; } /*********************************************************************//** @@ -807,10 +774,10 @@ * value of the hydraulics chamber fluid temperature. * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testGenDHydChamberFluidTempOverride( MESSAGE_T *message ) -//{ -// BOOL result = f32Override( message, &targetHydChamberFluidTemp ); -// -// return result; -//} +BOOL testGenDHydChamberFluidTempOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &targetHydChamberFluidTemp ); + + return result; +} /**@}*/ Index: firmware/App/Modes/ModeGenDialysate.h =================================================================== diff -u -r799f26bec11423fa4894a8e01ebc50bf0e5f4a32 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 799f26bec11423fa4894a8e01ebc50bf0e5f4a32) +++ firmware/App/Modes/ModeGenDialysate.h (.../ModeGenDialysate.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -54,8 +54,8 @@ DD_GEND_MODE_STATE_T getCurrentGenDialysateState( void ); // Get the current state of the gen dialysate mode. U32 getDialGoodToDeliverStatus( void ); // Get the dialysate good to deliver status -void setTreatementParamUpdate( void ); // To indicate one or more treatment parameters updated -void updateTreatementSettings( void ); // Process the recent treatment parameters changes +void setTreatmentParamUpdate( void ); // To indicate one or more treatment parameters updated +void updateTreatmentSettings( void ); // Process the recent treatment parameters changes BOOL testDDGenDialysateDataPublishIntervalOverride( MESSAGE_T *message ); // GenD Mode data publish interval override BOOL testDialDeliveryInProgressOverride( MESSAGE_T *message ); // To override the dialysate delivery in progress flag Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -187,16 +187,11 @@ { DD_STANDBY_MODE_STATE_T state = DD_STANDBY_MODE_STATE_IDLE; - //TODO : Testing - commenting solo mode for now - - // go to standby solo mode if TD is turned off or stops communicating. + //TODO : Define comm loss alarm when TD is turned off or stops communicating // if ( FALSE == isTDCommunicating() ) -// { // TODO if TD comm loss, do we need solo standby? -// SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_TD_COMMUNICATION_LOSS, 0, 0 ) -// //requestNewOperationMode( DD_MODE_SOLO ); +// { + // define the alarm // } -// else if ( TRUE == getU32OverrideValue( &pendingStartDDRequest ) ) - if ( TRUE == getU32OverrideValue( &pendingStartDDRequest ) ) { pendingStartDDRequest.data = FALSE; Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Monitors/Level.c (.../Level.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -60,6 +60,7 @@ static void publishLevelsData( void ); static BOOL processLevelCount( U16 count ); +static LEVEL_STATE_T getFloaterLevelstatus( void ); /*********************************************************************//** * @brief @@ -108,25 +109,7 @@ { // Process the status of the Level case D6_LEVL: - if ( FPGA_LEVEL_LOW == getFPGAD6LevelStatus() ) - { - //currentLevelStatus = LEVEL_STATE_LOW ; - currentLevelStatus = LEVEL_STATE_HIGH ; - } - else if ( FPGA_LEVEL_MEDIUM == getFPGAD6LevelStatus() ) - { - currentLevelStatus = LEVEL_STATE_MEDIUM ; - } - else if ( FPGA_LEVEL_HIGH == getFPGAD6LevelStatus() ) - { - //currentLevelStatus = LEVEL_STATE_HIGH ; - currentLevelStatus = LEVEL_STATE_LOW ; - } - else - { - // Handle invalid level - alarm - currentLevelStatus = LEVEL_STATE_ILLEGAL ; - } + currentLevelStatus = getFloaterLevelstatus(); break; case D63_LEVL: @@ -252,6 +235,38 @@ /*********************************************************************//** * @brief + * The getFloaterLevelstatus function gets the floater level reported by FPGA + * @details \b Inputs: FPGA level sensor data + * @details \b Outputs: level + * @return level status + *************************************************************************/ +static LEVEL_STATE_T getFloaterLevelstatus( void ) +{ + LEVEL_STATE_T currentLevelStatus = LEVEL_STATE_HIGH; + + if ( FPGA_LEVEL_LOW == getFPGAD6LevelStatus() ) + { + currentLevelStatus = LEVEL_STATE_HIGH ; + } + else if ( FPGA_LEVEL_MEDIUM == getFPGAD6LevelStatus() ) + { + currentLevelStatus = LEVEL_STATE_MEDIUM ; + } + else if ( FPGA_LEVEL_HIGH == getFPGAD6LevelStatus() ) + { + currentLevelStatus = LEVEL_STATE_LOW ; + } + else + { + // TODO - Handle invalid level alarm + currentLevelStatus = LEVEL_STATE_ILLEGAL ; + } + + return currentLevelStatus; +} + +/*********************************************************************//** + * @brief * The publishLevelsData function broadcasts the level data at the * publication interval. * @details \b Inputs: levelsDataPublicationCounter @@ -269,7 +284,6 @@ data.d6Level = (U32)getLevelStatus( D6_LEVL ); data.d63Level = (U32)getLevelStatus( D63_LEVL ); data.d46Level = (U32)getLevelStatus( D46_LEVL ); - //data.spentDialysateLevel = (U32)getFPGAFloater1Status(); levelsDataPublicationCounter = 0; Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -134,8 +134,9 @@ SW_FAULT_ID_GEND_MODE_INVALID_EXEC_STATE1 = 103, SW_FAULT_ID_INVALID_RO_OPERATING_MODE = 104, #ifdef __PUMPTEST__ - SW_FAULT_ID_PISTON_PUMP_EXEC_INVALID_STATE = 105, - SW_FAULT_ID_PISTON_PUMP_INVALID_PUMP_ID = 106, + // Assigning high value to separate from actual fault id from test fault ids. + SW_FAULT_ID_PISTON_PUMP_EXEC_INVALID_STATE = 9000, + SW_FAULT_ID_PISTON_PUMP_INVALID_PUMP_ID = 9001, #endif NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r799f26bec11423fa4894a8e01ebc50bf0e5f4a32 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 799f26bec11423fa4894a8e01ebc50bf0e5f4a32) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -42,32 +42,28 @@ #define MAX_COMM_ERROR_RETRIES 5 ///< Maximum number of communication error retries -#define DRAIN_PUMP_DAC_SHIFT_BITS 4 ///< Drain pump DAC shift bits. - -#define FPGA_FLUIDLEAK_STATE_MASK 0x0004 ///< Bit mask for fluid leak detector. - //TODO : Define the default values for the Valves ( 0: Deenergized, 1 : Energized) on power up. #define FPGA_ENABLE_VALVES_CONTROL 0x0000 ///< FPGA enable valves control. #define FPGA_ENABLE_BC_VALVES_CONTROL 0x00 ///< FPGA enable Balancing chamber valves control. #define FPGA_ENABLE_UF_VALVES_CONTROL 0x00 ///< FPGA enable Balancing Chamber valves control. -#define FPGA_CD1_RESET_BIT 0x01 ///< Conductivity Sensor CD1 reset bit mask. -#define FPGA_CD1_INIT_ENABLE_BIT 0x02 ///< Conductivity Sensor CD1 Initialization enable bit mask. -#define FPGA_CD1_WR_ENABLE_BIT 0x04 ///< Conductivity Sensor CD1 write enable bit mask. -#define FPGA_CD1_RD_ENABLE_BIT 0x08 ///< Conductivity Sensor CD1 read enable bit mask. -#define FPGA_CD2_RESET_BIT 0x10 ///< Conductivity Sensor CD2 reset bit mask. -#define FPGA_CD2_INIT_ENABLE_BIT 0x20 ///< Conductivity Sensor CD2 Initialization enable bit mask. -#define FPGA_CD2_WR_ENABLE_BIT 0x40 ///< Conductivity Sensor CD2 write enable bit mask. -#define FPGA_CD2_RD_ENABLE_BIT 0x80 ///< Conductivity Sensor CD2 read enable bit mask. +#define FPGA_D17_RESET_BIT 0x01 ///< Conductivity Sensor D17 reset bit mask. +#define FPGA_D17_INIT_ENABLE_BIT 0x02 ///< Conductivity Sensor D17 Initialization enable bit mask. +#define FPGA_D17_WR_ENABLE_BIT 0x04 ///< Conductivity Sensor D17 write enable bit mask. +#define FPGA_D17_RD_ENABLE_BIT 0x08 ///< Conductivity Sensor D17 read enable bit mask. +#define FPGA_D27_RESET_BIT 0x10 ///< Conductivity Sensor D27 reset bit mask. +#define FPGA_D27_INIT_ENABLE_BIT 0x20 ///< Conductivity Sensor D27 Initialization enable bit mask. +#define FPGA_D27_WR_ENABLE_BIT 0x40 ///< Conductivity Sensor D27 write enable bit mask. +#define FPGA_D27_RD_ENABLE_BIT 0x80 ///< Conductivity Sensor D27 read enable bit mask. -#define FPGA_CD3_RESET_BIT 0x01 ///< Conductivity Sensor CD3 reset bit mask. -#define FPGA_CD3_INIT_ENABLE_BIT 0x02 ///< Conductivity Sensor CD3 Initialization enable bit mask. -#define FPGA_CD3_WR_ENABLE_BIT 0x04 ///< Conductivity Sensor CD3 write enable bit mask. -#define FPGA_CD3_RD_ENABLE_BIT 0x08 ///< Conductivity Sensor CD3 read enable bit mask. -#define FPGA_CD4_RESET_BIT 0x10 ///< Conductivity Sensor CD4 reset bit mask. -#define FPGA_CD4_INIT_ENABLE_BIT 0x20 ///< Conductivity Sensor CD4 Initialization enable bit mask. -#define FPGA_CD4_WR_ENABLE_BIT 0x40 ///< Conductivity Sensor CD4 write enable bit mask. -#define FPGA_CD4_RD_ENABLE_BIT 0x80 ///< Conductivity Sensor CD4 read enable bit mask. +#define FPGA_D29_RESET_BIT 0x01 ///< Conductivity Sensor D29 reset bit mask. +#define FPGA_D29_INIT_ENABLE_BIT 0x02 ///< Conductivity Sensor D29 Initialization enable bit mask. +#define FPGA_D29_WR_ENABLE_BIT 0x04 ///< Conductivity Sensor D29 write enable bit mask. +#define FPGA_D29_RD_ENABLE_BIT 0x08 ///< Conductivity Sensor D29 read enable bit mask. +#define FPGA_D43_RESET_BIT 0x10 ///< Conductivity Sensor D43 reset bit mask. +#define FPGA_D43_INIT_ENABLE_BIT 0x20 ///< Conductivity Sensor D43 Initialization enable bit mask. +#define FPGA_D43_WR_ENABLE_BIT 0x40 ///< Conductivity Sensor D43 write enable bit mask. +#define FPGA_D43_RD_ENABLE_BIT 0x80 ///< Conductivity Sensor D43 read enable bit mask. // Assuming all valves are ON/OFF based control ( No PWM control used) #define FPGA_ENABLE_VALVES_PWM 0x0000 ///< FPGA enable valves PWM. @@ -92,9 +88,9 @@ #define FPGA_D12_PUMP_ERROR_BIT 0x01 ///< Fresh dialysate pump error bit mask. #define FPGA_D48_PUMP_ERROR_BIT 0x02 ///< Spent dialysate pump error bit mask. -#define FPGA_FLOATER_LEVEL_BIT 0x03 ///< Floater level bit mask. +#define FPGA_D6_FLOATER_LEVEL_BIT 0x03 ///< Floater level bit mask. -#define FPGA_PRIMARY_HEATER_CNTRL_BIT 0x01 ///< FPGA GIO Primary heater control bit mask +#define FPGA_D5_HEATER_CNTRL_BIT 0x01 ///< FPGA GIO D5 heater control bit mask /// FPGA size of V3 read bytes. #define FPGA_SIZE_OF_V3_READ_BYTES ( FPGA_READ_V3_END_BYTE_NUM - FPGA_READ_V3_START_BYTE_NUM ) @@ -189,11 +185,11 @@ U08 fpgaHallSensInputs; ///< Reg 350. Hall sensor Inputs - U08 fpgaBldTxFIFOCnt; ///< Reg 351. Blood leak sensor transmit FIFO count - U16 fpgaBldRxErrorCnt; ///< Reg 352. Blood leak sensor Receive error count - U16 fpgaBldRxFIFOCnt; ///< Reg 354. Blood leak sensor Receive FIFO count - U08 fpgaBldRxFIFODataOut; ///< Reg 356. Blood leak sensor Receive data - U08 fpgaBldPulseStatus; ///< Reg 357. Blood leak sensor status + U08 fpgaD42TxFIFOCnt; ///< Reg 351. Blood leak sensor transmit FIFO count + U16 fpgaD42RxErrorCnt; ///< Reg 352. Blood leak sensor Receive error count + U16 fpgaD42RxFIFOCnt; ///< Reg 354. Blood leak sensor Receive FIFO count + U08 fpgaD42RxFIFODataOut; ///< Reg 356. Blood leak sensor Receive data + U08 fpgaD42PulseStatus; ///< Reg 357. Blood leak sensor status U16 fpgaValveStates; ///< Reg 358. Valve status read U16 fpgaValvePWMEnableStates; ///< Reg 360. Valve PWM Enable status read @@ -311,9 +307,9 @@ U08 fpgaD10PumpControl; ///< Reg 121. BiCarb Concentrate Pump Control U16 fpgaD10PumpSpeed; ///< Reg 122. BiCarb Concentrate Pump Speed/RPM Control - U08 fpgaBloodLeakSensorTest; ///< Reg 124. Blood leak sensor test - U08 fpgaBloodLeakUARTControl; ///< Reg 125. Blood leak sensor UART control - U08 fpgaBloodLeakFIFOTx; ///< Reg 126. Blood leak sensor FIFO transmit control + U08 fpgaD42SensorTest; ///< Reg 124. Blood leak sensor test + U08 fpgaD42UARTControl; ///< Reg 125. Blood leak sensor UART control + U08 fpgaD42FIFOTx; ///< Reg 126. Blood leak sensor FIFO transmit control U08 fpgaD5HeaterPWMControl; ///< Reg 127. Primary heater PWM control U08 fpgaD45HeaterPWMControl; ///< Reg 128. Trimmer heater PWM control U08 fpgaNotUsed; ///< Reg 129. Not used @@ -484,14 +480,14 @@ * The setFPGABCValveStates function sets the DD balancing chamber valve states with a * 8-bit set of states - one bit per valve, with a 1 meaning "energized" and a 0 * meaning "de-energized". The bit positions for these bit states are as follows: - * 0 - V1.\n - * 1 - V2.\n - * 2 - V3.\n - * 3 - V4.\n - * 4 - V5.\n - * 5 - V6.\n - * 6 - V7.\n - * 7 - V8.\n + * 0 - D23.\n + * 1 - D19.\n + * 2 - D25.\n + * 3 - D21.\n + * 4 - D24.\n + * 5 - D20.\n + * 6 - D26.\n + * 7 - D22.\n * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaBCValveControl * @param valveStates bit mask for the balancing chamber valve states @@ -553,13 +549,13 @@ /*********************************************************************//** * @brief * The setFPGAD48PumpControl function sets the controls for - * dialysate out pump (SDP). - * bit 7: TBD - * bit 6: TBD - * bit 5: TBD - * bit 4: TBD - * bit 3: TBD - * bit 1-2: TBD + * dialysate out pump (D48). + * bit 7: Reserved + * bit 6: Reserved + * bit 5: Reserved + * bit 4: Reserved + * bit 3: Reserved + * bit 1-2: Reserved * bit 0: Run (1), stop (0) * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaD48PumpControl @@ -574,13 +570,13 @@ /*********************************************************************//** * @brief * The setFPGAD12PumpControl function sets the controls for - * dialysate In pump (DGP). - * bit 7: TBD - * bit 6: TBD - * bit 5: TBD - * bit 4: TBD - * bit 3: TBD - * bit 1-2: TBD + * De gassing pump (D12). + * bit 7: Reserved + * bit 6: Reserved + * bit 5: Reserved + * bit 4: Reserved + * bit 3: Reserved + * bit 1-2: Reserved * bit 0: Run (1), stop (0) * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaD12PumpControl @@ -705,7 +701,7 @@ *************************************************************************/ void setFPGAD17CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D17_RESET_BIT; } /*********************************************************************//** @@ -719,7 +715,7 @@ *************************************************************************/ void clearFPGAD17CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D17_RESET_BIT; } /*********************************************************************//** @@ -733,7 +729,7 @@ *************************************************************************/ void setFPGAD17CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D17_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -747,7 +743,7 @@ *************************************************************************/ void clearFPGAD17CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D17_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -764,7 +760,7 @@ *************************************************************************/ void setFPGAD17CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D17_WR_ENABLE_BIT; } /*********************************************************************//** @@ -778,7 +774,7 @@ *************************************************************************/ void clearFPGAD17CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D17_WR_ENABLE_BIT; } /*********************************************************************//** @@ -795,7 +791,7 @@ *************************************************************************/ void setFPGAD17CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD1_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D17_RD_ENABLE_BIT; } /*********************************************************************//** @@ -809,7 +805,7 @@ *************************************************************************/ void clearFPGAD17CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD1_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D17_RD_ENABLE_BIT; } /*********************************************************************//** @@ -823,7 +819,7 @@ *************************************************************************/ void setFPGAD27CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D27_RESET_BIT; } /*********************************************************************//** @@ -837,7 +833,7 @@ *************************************************************************/ void clearFPGAD27CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D27_RESET_BIT; } /*********************************************************************//** @@ -851,7 +847,7 @@ *************************************************************************/ void setFPGAD27CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D27_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -865,7 +861,7 @@ *************************************************************************/ void clearFPGAD27CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D27_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -882,7 +878,7 @@ *************************************************************************/ void setFPGAD27CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D27_WR_ENABLE_BIT; } /*********************************************************************//** @@ -896,7 +892,7 @@ *************************************************************************/ void clearFPGAD27CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D27_WR_ENABLE_BIT; } /*********************************************************************//** @@ -913,7 +909,7 @@ *************************************************************************/ void setFPGAD27CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_CD2_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control |= FPGA_D27_RD_ENABLE_BIT; } /*********************************************************************//** @@ -927,7 +923,7 @@ *************************************************************************/ void clearFPGAD27CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_CD2_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD12Control &= ~FPGA_D27_RD_ENABLE_BIT; } /*********************************************************************//** @@ -941,7 +937,7 @@ *************************************************************************/ void setFPGAD29CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D29_RESET_BIT; } /*********************************************************************//** @@ -955,7 +951,7 @@ *************************************************************************/ void clearFPGAD29CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D29_RESET_BIT; } /*********************************************************************//** @@ -969,7 +965,7 @@ *************************************************************************/ void setFPGAD29CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D29_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -983,7 +979,7 @@ *************************************************************************/ void clearFPGAD29CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D29_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -1000,7 +996,7 @@ *************************************************************************/ void setFPGAD29CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D29_WR_ENABLE_BIT; } /*********************************************************************//** @@ -1014,7 +1010,7 @@ *************************************************************************/ void clearFPGAD29CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D29_WR_ENABLE_BIT; } /*********************************************************************//** @@ -1031,7 +1027,7 @@ *************************************************************************/ void setFPGAD29CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD3_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D29_RD_ENABLE_BIT; } /*********************************************************************//** @@ -1045,7 +1041,7 @@ *************************************************************************/ void clearFPGAD29CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD3_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D29_RD_ENABLE_BIT; } /*********************************************************************//** @@ -1059,7 +1055,7 @@ *************************************************************************/ void setFPGAD43CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D43_RESET_BIT; } /*********************************************************************//** @@ -1073,7 +1069,7 @@ *************************************************************************/ void clearFPGAD43CondReset( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_RESET_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D43_RESET_BIT; } /*********************************************************************//** @@ -1087,7 +1083,7 @@ *************************************************************************/ void setFPGAD43CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D43_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -1101,7 +1097,7 @@ *************************************************************************/ void clearFPGAD43CondInitEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_INIT_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D43_INIT_ENABLE_BIT; } /*********************************************************************//** @@ -1118,7 +1114,7 @@ *************************************************************************/ void setFPGAD43CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D43_WR_ENABLE_BIT; } /*********************************************************************//** @@ -1132,7 +1128,7 @@ *************************************************************************/ void clearFPGAD43CondWriteEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_WR_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D43_WR_ENABLE_BIT; } /*********************************************************************//** @@ -1149,7 +1145,7 @@ *************************************************************************/ void setFPGAD43CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_CD4_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control |= FPGA_D43_RD_ENABLE_BIT; } /*********************************************************************//** @@ -1163,21 +1159,21 @@ *************************************************************************/ void clearFPGAD43CondReadEnable( void ) { - fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_CD4_RD_ENABLE_BIT; + fpgaActuatorSetPoints.fpgaConSensTD34Control &= ~FPGA_D43_RD_ENABLE_BIT; } /*********************************************************************//** * @brief * The setFpgaCD12Control function sets the FPGA Conductivity * Sensor control register for CD1&2. - * bit 7: Enables TD2 read transaction (1), address needed - * bit 6: Enables TD2 write transaction (1), address and data needs to be set - * bit 5: Enable TD2 Init procedure (1) - * bit 4: reset TD2 Conduct sensor (1) - * bit 3: Enables TD1 read transaction (1), address needed - * bit 2: Enables TD1 write transaction (1), address and data needs to be set - * bit 1: Enable TD1 Init procedure (1) - * bit 0: reset TD1 Conduct sensor (1) + * bit 7: Enables D27 read transaction (1), address needed + * bit 6: Enables D27 write transaction (1), address and data needs to be set + * bit 5: Enable D27 Init procedure (1) + * bit 4: reset D27 Conduct sensor (1) + * bit 3: Enables D17 read transaction (1), address needed + * bit 2: Enables D17 write transaction (1), address and data needs to be set + * bit 1: Enable D17 Init procedure (1) + * bit 0: reset D17 Conduct sensor (1) * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD12Control * @param control Conductivity Sensor control set @@ -1192,14 +1188,14 @@ * @brief * The setFpgaCD34Control function sets the FPGA Conductivity * Sensor control register for CD3&4. - * bit 7: Enables TD4 read transaction (1), address needed - * bit 6: Enables TD4 write transaction (1), address and data needs to be set - * bit 5: Enable TD4 Init procedure (1) - * bit 4: reset TD4 Conduct sensor (1) - * bit 3: Enables TD3 read transaction (1), address needed - * bit 2: Enables TD3 write transaction (1), address and data needs to be set - * bit 1: Enable TD3 Init procedure (1) - * bit 0: reset TD3 Conduct sensor (1) + * bit 7: Enables D43 read transaction (1), address needed + * bit 6: Enables D43 write transaction (1), address and data needs to be set + * bit 5: Enable D43 Init procedure (1) + * bit 4: reset D43 Conduct sensor (1) + * bit 3: Enables D29 read transaction (1), address needed + * bit 2: Enables D29 write transaction (1), address and data needs to be set + * bit 1: Enable D29 Init procedure (1) + * bit 0: reset D29 Conduct sensor (1) * @details \b Inputs: none * @details \b Outputs: fpgaActuatorSetPoints.fpgaConSensTD34Control * @param control Conductivity sensor control set @@ -1268,28 +1264,28 @@ /*********************************************************************//** * @brief - * The setFPGAPrimaryHeaterPWMControl function sets the primary heater + * The setFPGAD5HeaterPWMControl function sets the primary heater * PWM input. * @details \b Inputs: none * @details \b Outputs: fpgaD5HeaterPWMControl * @param control the PWM dutycycle to control the heater * @return none *************************************************************************/ -void setFPGAPrimaryHeaterPWMControl( U08 control ) +void setFPGAD5HeaterPWMControl( U08 control ) { fpgaActuatorSetPoints.fpgaD5HeaterPWMControl = control; } /*********************************************************************//** * @brief - * The setFPGATrimmerHeaterPWMControl function sets the trimmer heater + * The setFPGAD45HeaterPWMControl function sets the trimmer heater * PWM input. * @details \b Inputs: none * @details \b Outputs: fpgaD45HeaterPWMControl * @param control the PWM dutycycle to control the heater * @return none *************************************************************************/ -void setFPGATrimmerHeaterPWMControl( U08 control ) +void setFPGAD45HeaterPWMControl( U08 control ) { fpgaActuatorSetPoints.fpgaD45HeaterPWMControl = control; } @@ -1324,22 +1320,22 @@ /*********************************************************************//** * @brief - * The setFPGACPrimaryHeaterOnOffControl function sets the primary heater + * The setFPGAD5HeaterOnOffControl function sets the primary heater * On/Off control. * @details \b Inputs: none * @details \b Outputs: fpgaGPIOControl * @param flag Turn heater ON when true, otherwise not. * @return none *************************************************************************/ -void setFPGACPrimaryHeaterOnOffControl( BOOL flag ) +void setFPGAD5HeaterOnOffControl( BOOL flag ) { if ( TRUE == flag) { - fpgaActuatorSetPoints.fpgaGPIOControl |= FPGA_PRIMARY_HEATER_CNTRL_BIT; + fpgaActuatorSetPoints.fpgaGPIOControl |= FPGA_D5_HEATER_CNTRL_BIT; } else { - fpgaActuatorSetPoints.fpgaGPIOControl &= ~FPGA_PRIMARY_HEATER_CNTRL_BIT; + fpgaActuatorSetPoints.fpgaGPIOControl &= ~FPGA_D5_HEATER_CNTRL_BIT; } } @@ -2331,7 +2327,7 @@ *************************************************************************/ U08 getFPGAD6LevelStatus( void ) { - return ( fpgaSensorReadings.fpgaD6FloaterStatus & FPGA_FLOATER_LEVEL_BIT ); + return ( fpgaSensorReadings.fpgaD6FloaterStatus & FPGA_D6_FLOATER_LEVEL_BIT ); } /*********************************************************************//** Index: firmware/App/Services/FpgaDD.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -222,9 +222,9 @@ U32 getFPGABaroTemperature( void ); //Primary and Trimmer heater -void setFPGAPrimaryHeaterPWMControl( U08 control ); -void setFPGATrimmerHeaterPWMControl( U08 control ); -void setFPGACPrimaryHeaterOnOffControl( BOOL flag ); +void setFPGAD5HeaterPWMControl( U08 control ); +void setFPGAD45HeaterPWMControl( U08 control ); +void setFPGAD5HeaterOnOffControl( BOOL flag ); /**@}*/ Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -141,11 +141,12 @@ MSG_ID_DD_DIAL_DELIVERY_GOOD_TO_DELIVER_OVERRIDE_REQUEST, MSG_ID_DD_HEATERS_TARGET_TEMPERATURE_OVERRIDE_REQUEST, //55 MSG_ID_DD_BC_VALVE_STATES_OVERRIDE_REQUEST, + MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST, + MSG_ID_DD_HYD_CHAMBER_TARGET_TEMP_OVERRIDE_REQUEST, #ifdef __PUMPTEST__ MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST, MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST, #endif - MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST, }; /// Message handling function table @@ -206,11 +207,12 @@ &testDialGoodToDeliverStatusOverride, &testHeaterTargetTemperatureOverride, //55 &testBCValveStatesOverride, + &testBCSwitchOnlyStartStopOverride, + &testGenDHydChamberFluidTempOverride, #ifdef __PUMPTEST__ &testDDPistonPumpControlDataPublishIntervalOverride, &testDDPistonPumpStartStopOverride, #endif - &testBCSwitchOnlyStartStopOverride, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -r799f26bec11423fa4894a8e01ebc50bf0e5f4a32 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 799f26bec11423fa4894a8e01ebc50bf0e5f4a32) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -15,6 +15,7 @@ * ***************************************************************************/ +#include "DialysatePumps.h" #include "Messaging.h" #include "MessagePayloads.h" #include "ModeGenDialysate.h" @@ -66,7 +67,7 @@ // Initialize unit variables tdCurrentOpMode = MODE_INIT; tdSubMode = 0; - tdDialysateFlowrate = MAX_DIALYSIS_FLOW_RATE; // Will update later based on the TD value + tdDialysateFlowrate = MAX_DIALYSATE_FLOW_RATE; // Will update later based on the TD value tdUFRate = 0.0F; tdTargetDialysateTemp = 0.0F; tdDialyzerBypass = FALSE; @@ -376,7 +377,7 @@ setTDDialyzerBypass( startTxRequest.bypassDialyzer ); // Signal to update treatement parameters - setTreatementParamUpdate(); + setTreatmentParamUpdate(); } result = TRUE; Index: firmware/App/Services/TDInterface.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r322747d530c1b8205be257557e53dcfe9caad50a --- firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/App/Services/TDInterface.h (.../TDInterface.h) (revision 322747d530c1b8205be257557e53dcfe9caad50a) @@ -33,9 +33,6 @@ // ********** public definitions ********** -#define MIN_DIALYSIS_FLOW_RATE ( 100.0F ) ///< TD minimum dialysis flow rate -#define MAX_DIALYSIS_FLOW_RATE ( 600.0F ) ///< TD Max dialysis flow rate - // ********** public function prototypes ********** void initTDInterface( void );