Index: firmware/.launches/DG.launch
===================================================================
diff -u -r5319f126f8dba1a758e78a53184e8eb0863437db -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/.launches/DG.launch (.../DG.launch) (revision 5319f126f8dba1a758e78a53184e8eb0863437db)
+++ firmware/.launches/DG.launch (.../DG.launch) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -3,6 +3,7 @@
+
@@ -19,15 +20,18 @@
+
+
+
Index: firmware/App/Controllers/DrainPump.c
===================================================================
diff -u -r9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b)
+++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -213,6 +213,7 @@
DRAIN_PUMP_STATE_T result = DRAIN_PUMP_OFF_STATE;
#ifdef DEBUG_ENABLED
+#ifdef ENABLE_DIP_SWITCHES
// TODO - test code - remove later
if ( GET_DIP_SW2_TEST() )
{
@@ -222,6 +223,7 @@
setDrainPumpTargetSpeed( 1000 );
}
#endif
+#endif
// if we've been given a pressure, transition to control to target state
if ( getTargetDrainPumpSpeed() > 0 )
@@ -271,6 +273,7 @@
}
#ifdef DEBUG_ENABLED
+#ifdef ENABLE_DIP_SWITCHES
// TODO - test code - remove later
if ( !GET_DIP_SW2_TEST() )
{
@@ -281,6 +284,7 @@
result = DRAIN_PUMP_OFF_STATE;
}
#endif
+#endif
return result;
}
Index: firmware/App/Controllers/Heaters.c
===================================================================
diff -u -r8ff2c0f050380b2bab2f00eea71dcae546400bbc -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 8ff2c0f050380b2bab2f00eea71dcae546400bbc)
+++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,6 +18,7 @@
// TODO for testing only remove
#include "mibspi.h"
+#include "FPGA.h"
// TODO for testing only remove
#include "AlarmMgmt.h"
@@ -27,9 +28,14 @@
#include "SystemCommMessages.h"
#include "PIControllers.h"
+/**
+ * @addtogroup Heaters
+ * @{
+ */
+
#define MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE 0.89 ///< Main primary heater (heater A) max duty cycle (89%)
-#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 0.50 ///< Small Primary heater (heater B) max duty cycle (25%)
-#define TRIMMER_HEATER_MAX_DUTY_CYCLE 0.50 ///< Trimmer heater max duty cycle (25%)
+#define SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE 0.50 ///< Small Primary heater (heater B) max duty cycle (50%)
+#define TRIMMER_HEATER_MAX_DUTY_CYCLE 0.50 ///< Trimmer heater max duty cycle (50%)
#define HEATERS_MIN_DUTY_CYCLE 0.00 ///< Primary and trimmer heaters minimum duty cycle (0.00%)
#define PRIMARY_HEATERS_P_COEFFICIENT 0.02 ///< Primary heaters proportional coefficient
@@ -38,9 +44,7 @@
#define TRIMMER_HEATER_P_COEFFICIENT 0.02 ///< Trimmer heater proportional coefficient
#define TRIMMER_HEATER_I_COEFFICIENT 0.001 ///< Trimmer heater integral coefficient
-#define DELTA_TEMP_TO_PWM_DUTY_CYCLE_CONVERSION 0.05 ///< Delta temperature to PWM duty cycle conversion (initial guess)
#define CONTROLLER_CHECK_INTERVAL_COUNT 10U ///< Time interval count to check the PI controller
-
#define TEMP_SENSORS_INTERVAL_COUNT 10U ///< Temperature sensors interval count
/// Heaters self test enums
@@ -93,6 +97,8 @@
static U32 primaryHeaterTimerCounter; ///< Primary heater timer counter
static U32 trimmerHeaterTimerCounter; ///< Trimmer heater timer counter
static U32 dataPublicationTimerCounter; ///< Data publication timer counter
+static BOOL isPrimaryHeaterOn; ///< Flag to show if the primary heater is on //TODO add to AE
+static BOOL isTrimmerHeaterOn; ///< Flag to show if the trimmer heater is on //TODO add to AE
// private functions prototypes
@@ -111,6 +117,10 @@
// TODO: Remove the below code. FOR TESTING ONLY
#define PRIMARY_HEATER_MIBSPI1_PORT_MASK 0x00000002 // (CS1 - re-purposed as input GPIO)
#define TOGGLEPRIMAYHEATER() (( mibspiREG1->PC2 & PRIMARY_HEATER_MIBSPI1_PORT_MASK ) != 0)
+static void temporaryStartROPump ( void );
+static void temporaryStopROPump ( void );
+static void temporaryStartFan ( void );
+static void temporaryStopFan ( void );
//TODO: Remove the above code. FOR TESTING ONLY
// Public functions
@@ -153,8 +163,9 @@
* The setPrimaryHeaterTargetTemperature function sets the primary heater
* target temperature
* @details
- * Inputs : F32 (targetTemp)
+ * Inputs : primaryHeaterTargetTemperature
* Outputs : none
+ * @param targetTemp : Target temperature
* @return none
*************************************************************************/
void setPrimaryHeaterTargetTemperature ( F32 targetTemp )
@@ -167,8 +178,9 @@
* The setTrimmerHeaterTargetTemperature function sets the trimmer heater
* target temperature
* @details
- * Inputs : F32 (targetTemp)
+ * Inputs : trimmerHeaterTargetTemperature
* Outputs : none
+ * @param targetTemp : Target temperature
* @return none
*************************************************************************/
void setTrimmerHeaterTargetTemperature ( F32 targetTemp )
@@ -313,17 +325,14 @@
switch ( primaryHeatersExecState )
{
case PRIMARY_HEATERS_EXEC_STATE_OFF:
-
primaryHeatersExecState = handlePrimaryHeaterStateOff();
break;
case PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET:
-
primaryHeatersExecState = handlePrimaryHeaterStateControlToTarget();
break;
default:
-
SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_PRIMARY_HEATER_EXEC_INVALID_STATE,
primaryHeatersExecState );
primaryHeatersExecState = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET;
@@ -344,17 +353,14 @@
switch ( trimmerHeaterExecState )
{
case TRIMMER_HEATER_EXEC_STATE_OFF:
-
trimmerHeaterExecState = handleTrimmerHeaterStateOff();
break;
case TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET:
-
trimmerHeaterExecState = handleTrimmerHeaterControlToTarget();
break;
default:
-
SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_HEATERS_TRIMMER_HEATER_EXEC_INVALID_STATE,
trimmerHeaterExecState );
trimmerHeaterExecState = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET;
@@ -382,10 +388,12 @@
if ( TOGGLEPRIMAYHEATER() )
{
setPrimaryHeaterTargetTemperature ( 37 );
- if ( getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ) > 0 )
+ //if ( getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ) > 0 )
{
startPrimaryHeater();
state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET;
+ temporaryStartROPump();
+ temporaryStartFan();
}
//state = PRIMARY_HEATERS_EXEC_STATE_CONTROL_TO_TARGET;
}
@@ -427,12 +435,14 @@
}
primaryHeaterTimerCounter = 0;
}
- publishTemperatureData();
+ //publishTemperatureData();
// TODO remove this code
if ( !TOGGLEPRIMAYHEATER() )
{
stopPrimaryHeater();
+ temporaryStopROPump();
+ temporaryStopFan();
state = PRIMARY_HEATERS_EXEC_STATE_OFF;
}
// TODO Remove this code
@@ -457,13 +467,15 @@
state = TRIMMER_HEATER_EXEC_STATE_OFF;
if ( TOGGLEPRIMAYHEATER() )
{
- setTrimmerHeaterTargetTemperature ( 37 );
- if ( getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ) > 0 )
+ setTrimmerHeaterTargetTemperature ( 38 );
+ //if ( getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ) > 0 )
{
startTrimmerHeater();
state = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET;
+ //temporaryStartROPump();
+ //temporaryStartFan();
}
- state = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET;
+ //state = TRIMMER_HEATER_EXEC_STATE_CONTROL_TO_TARGET;
}
// TODO remove this code for testing
@@ -490,12 +502,14 @@
setTrimmerHeaterPWM ( trimmerHeaterDutyCycle );
trimmerHeaterTimerCounter = 0;
}
- publishTemperatureData();
+ //publishTemperatureData();
// TODO remove this code
if ( !TOGGLEPRIMAYHEATER() )
{
stopTrimmerHeater();
+ temporaryStopROPump();
+ temporaryStopFan();
state = TRIMMER_HEATER_EXEC_STATE_OFF;
}
// TODO Remove this code
@@ -510,6 +524,7 @@
* @details
* Inputs : none
* Outputs : none
+ * @param : pwm : To set the PWM
* @return none
*************************************************************************/
static void setMainPrimaryHeaterPWM ( F32 pwm )
@@ -524,6 +539,7 @@
* @details
* Inputs : none
* Outputs : none
+ * @param: pwm : To set the PWM
* @return none
*************************************************************************/
static void setSmallPrimaryHeaterPWM ( F32 pwm )
@@ -537,6 +553,7 @@
* @details
* Inputs : none
* Outputs : none
+ * @param : pwm : To set the PWM
* @return none
*************************************************************************/
static void setTrimmerHeaterPWM ( F32 pwm )
@@ -551,21 +568,18 @@
* @details
* Inputs : none
* Outputs : none
+ * @param : heater (NAME_OF_HEATER) : Name of the heater to reset
* @return none
*************************************************************************/
static void resetHeaterState ( NAME_OF_HEATER_T heater )
{
if ( heater == PRIMARY_HEATER )
{
- F32 inletTemperatrue = getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR );
- mainPrimaryHeaterDutyCycle = fabs(primaryHeaterTargetTemperature - inletTemperatrue) * DELTA_TEMP_TO_PWM_DUTY_CYCLE_CONVERSION;
- resetPIController ( PI_CONTROLLER_ID_PRIMARY_HEATER, mainPrimaryHeaterDutyCycle );
+ resetPIController ( PI_CONTROLLER_ID_PRIMARY_HEATER, MAIN_PRIMARY_HEATER_MAX_DUTY_CYCLE );
}
else if ( heater == TRIMMER_HEATER )
{
- F32 inletTemperatrue = getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR );
- trimmerHeaterDutyCycle = fabs(trimmerHeaterTargetTemperature - inletTemperatrue) * DELTA_TEMP_TO_PWM_DUTY_CYCLE_CONVERSION;
- resetPIController ( PI_CONTROLLER_ID_TRIMMER_HEATER, trimmerHeaterDutyCycle );
+ resetPIController ( PI_CONTROLLER_ID_TRIMMER_HEATER, SMALL_PRIMAY_HEATER_MAX_DUTY_CYCLE );
}
}
@@ -583,24 +597,49 @@
{
if ( ++dataPublicationTimerCounter >= TEMP_SENSORS_INTERVAL_COUNT )
{
-//#ifdef DEBUG_ENABLED
-// {
-// char debugTempStr[ 256 ];
-// sprintf( debugTempStr, "MPDuty: %6.2f, SPDuty: %6.2f, THDuty: %6.2f, TPi: %6.2f, TPo: %6.2f, TD1: %6.2f, "
-// "TD2: %6.2f, TRo: %6.2f, TDi: %6.2f, TPh: %6.2f, TTh: %6.2f, PTarg: %6.2f, TTarg: %6.2f\r\n",
-// mainPrimaryHeaterDutyCycle, smallPrimaryHeaterDutyCycle, trimmerHeaterDutyCycle,
-// getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR ),
-// getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ),
-// primaryHeaterTargetTemperature, trimmerHeaterTargetTemperature);
-// sendDebugData ( (U08*)debugTempStr, strlen(debugTempStr) );
-// }
-//#endif
+#ifdef DEBUG_ENABLED
+ {
+ char debugTempStr[ 256 ];
+ sprintf( debugTempStr, "MPDC: %2d, SPDC: %2d, THDC: %2d, TPi: %6.2f, TPo: %6.2f, TD1: %6.2f, "
+ "TD2: %6.2f, TRo: %6.2f, TDi: %6.2f, TPh: %6.2f, TTh: %6.2f, PTarg: %6.2f, TTarg: %6.2f, ROFlow: %6.2f\r\n",
+ (U32)(mainPrimaryHeaterDutyCycle*100), (U32)(smallPrimaryHeaterDutyCycle*100), (U32)(trimmerHeaterDutyCycle*100),
+ getTemperatureValue ( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR ),
+ getTemperatureValue ( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ),
+ primaryHeaterTargetTemperature, trimmerHeaterTargetTemperature,
+ (F32)(10909.0909/getFPGAROPumpFlowRate()) );
+ sendDebugData ( (U08*)debugTempStr, strlen(debugTempStr) );
+ }
+#endif
dataPublicationTimerCounter = 0;
}
}
+
+// TODO REMOVE THE CODE
+static void temporaryStartROPump ( void )
+{
+ F32 tempPWM = 0.6;
+ etpwmSetCmpB( etpwmREG2, (U32)( (S32)( ( tempPWM * (F32)(etpwmREG2->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) );
+}
+static void temporaryStopROPump ( void )
+{
+ etpwmSetCmpB( etpwmREG2, 0 );
+}
+
+static void temporaryStartFan ( void )
+{
+ F32 tempPWM = 0.25;
+ etpwmSetCmpA( etpwmREG6, (U32)( (S32)( ( tempPWM * (F32)(etpwmREG6->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) );
+ etpwmSetCmpB( etpwmREG6, (U32)( (S32)( ( tempPWM * (F32)(etpwmREG6->TBPRD) ) + FLOAT_TO_INT_ROUNDUP_OFFSET ) ) );
+}
+static void temporaryStopFan ( void )
+{
+ etpwmSetCmpA( etpwmREG6, 0 );
+ etpwmSetCmpB( etpwmREG6, 0 );
+}
+// TODO REMOVE THE CODE
Index: firmware/App/Controllers/LoadCell.c
===================================================================
diff -u -rf5d0c90297a0716e1fb5a5c946436cccd35050e5 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision f5d0c90297a0716e1fb5a5c946436cccd35050e5)
+++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -30,8 +30,8 @@
#define LOAD_CELL_SAMPLES_TO_AVERAGE LOAD_CELL_REPORT_PERIOD ///< Averaging load cell data over the reporting interval.
#define LOAD_CELL_AVERAGE_MULTIPLIER (1.0 / (F32)LOAD_CELL_SAMPLES_TO_AVERAGE) ///< Optimization - multiplying is faster than dividing.
// TODO - gain and offset for load cells should be read from NV Data calibration record.
-#define ADC2GRAM 0.01126 // Conversion factor from ADC counts to grams. Division for averaging is folded into this value.
-#define LOAD_CELL_ZERO_OFFSET -237.16 // Zero offset (in grams).
+#define ADC2GRAM (0.0894 * 1.1338) // Conversion factor from ADC counts to grams. Division for averaging is folded into this value.
+#define LOAD_CELL_ZERO_OFFSET -1018.02 // Zero offset (in grams). TODO - right now, this is empty reservoir weight.
// ********** private data **********
Index: firmware/App/Controllers/Pressures.c
===================================================================
diff -u -r249dd3ba5b51f616cc51044424b9009273086cb9 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 249dd3ba5b51f616cc51044424b9009273086cb9)
+++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -34,8 +34,8 @@
/// Default publication interval for pressure and occlusion data.
#define PRESSURES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< interval (ms/task time) at which the pressures data is published on the CAN bus.
-#define PUMP_PRESSURE_ZERO 0x309 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors.
-#define PUMP_PRESSURE_PSIA_PER_COUNT 0.06343 ///< PSIA per ADC count conversion factor for pump in/out pressure sensors.
+#define PUMP_PRESSURE_ZERO 777 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors.
+#define PUMP_PRESSURE_PSIA_PER_COUNT 0.06434 ///< PSIA per ADC count conversion factor for pump in/out pressure sensors.
#define PUMP_PRESSURE_PSIA_TO_PSI_OFFSET 14.7 ///< Subtract this offset to convert PSIA to PSI.
/// Defined states for the pressures monitor state machine.
@@ -66,7 +66,6 @@
static PRESSURE_SELF_TEST_STATE_T pressuresSelfTestState = PRESSURE_SELF_TEST_STATE_START; ///< current pressure self test state.
static U32 pressuresSelfTestTimerCount = 0; ///< timer counter for pressure self test.
-
// ********** private function prototypes **********
static PRESSURE_STATE_T handlePressuresInitState( void );
@@ -75,8 +74,6 @@
static void publishPressuresData( void );
static DATA_GET_PROTOTYPE( U32, getPublishPressuresDataInterval );
-/**@}*/
-
/*********************************************************************//**
* @brief
* The initPressures function initializes the Pressures module.
@@ -403,3 +400,5 @@
return result;
}
+/**@}*/
+
Index: firmware/App/Controllers/ROPump.c
===================================================================
diff -u -r8ff2c0f050380b2bab2f00eea71dcae546400bbc -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 8ff2c0f050380b2bab2f00eea71dcae546400bbc)
+++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -235,12 +235,14 @@
RO_PUMP_STATE_T result = RO_PUMP_OFF_STATE;
#ifdef DEBUG_ENABLED
+#ifdef ENABLE_DIP_SWITCHES
// TODO - test code - remove later
if ( GET_DIP_SW0_TEST() )
{
setROPumpTargetPressure( 120, PUMP_CONTROL_MODE_CLOSED_LOOP );
}
#endif
+#endif
// if we've been given a pressure, transition to control to target state
if ( getTargetROPumpPressure() > 0 )
@@ -289,13 +291,15 @@
}
#ifdef DEBUG_ENABLED
+#ifdef ENABLE_DIP_SWITCHES
// TODO - test code - remove later
if ( !GET_DIP_SW0_TEST() )
{
signalROPumpHardStop();
result = RO_PUMP_OFF_STATE;
}
#endif
+#endif
return result;
}
Index: firmware/App/Controllers/TemperatureSensors.c
===================================================================
diff -u -ra3b108c205e9bcd4d1a45033d73c5714c7247123 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision a3b108c205e9bcd4d1a45033d73c5714c7247123)
+++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,12 +18,12 @@
#include "TemperatureSensors.h"
#include "FPGA.h"
#include "SystemCommMessages.h"
-
-// TODO: For testing only REMOVE
#include "Timers.h"
-// TODO: For testing only REMOVE
-//TODO change the incoming water for ranges
+/**
+ * @addtogroup TemperatureSensors
+ * @{
+ */
// Private variables
@@ -39,7 +39,7 @@
#define TRIMMER_HEATER_EXT_TEMP_SENSORS_REF_RESISTANCE 5110U ///< Trimmer heater external temperature sensors reference resistance
#define TRIMMER_HEATER_EXT_TEMP_SENSORS_0_DEGREE_RESISTANCE 100U ///< Trimmer heater external temperature sensors zero degree resistance
-#define HEATERS_INTERNAL_ADC_TO_TEMP_CONVERSION_COEFF 0.0625 ///< Heaters internal temperature sensors ADC to temperature conversion coefficient
+#define HEATERS_INTERNAL_ADC_TO_TEMP_CONVERSION_COEFF 0.25 ///< Heaters internal temperature sensors ADC to temperature conversion coefficient
#define TEMP_SENSORS_ADC_BITS 24U ///< External temperature sensors ADC bits
#define TEMP_SENSORS_ADC_MAX_COUNT (pow(2,TEMP_SENSORS_ADC_BITS)) ///< Temperature sensors max ADC count
@@ -73,6 +73,11 @@
#define EXTERNAL_TEMP_SENSORS_ERROR_VALUE 0x80 ///< External temperature sensors error value
#define HEATERS_INTERNAL_TEMP_SENSOR_FAULT 0x01 ///< Heaters internal temperature sensor fault
+#define SHIFT_BITS_BY_2 2U ///< Shift bits by 2 TODO add to AE
+#define MIN_WATER_INPUT_TEMPERATURE 10U ///< Minimum water input temperature TODO add to AE
+#define MAX_WATER_INPUT_TEMPERATURE 40U ///< Maximum water input temperature TODO add to AE
+#define ADC_FPGA_READ_DELAY 30U ///< Delay in ms before reading the ADC values from FPGA TODO add to AE
+#define INPUT_WATER_TEMPERATURE_CHECK_TIME_INTERVAL 100U ///< Time interval that is used to check the input water TODO add to AE
/// Temperature sensor self test states
typedef enum tempSensors_Self_Test_States
@@ -98,16 +103,16 @@
static TEMPSENSORS_SELF_TEST_STATES_T tempSensorsSelfTestState; ///< TemperatureSensor self test state
static TEMPSENSORS_EXEC_STATES_T tempSensorsExecState; ///< TemperatureSensor exec state
static U32 sampleCount; ///< Initial ADC read index until the array if filled up for the first time
-static U32 rawADCReads [ NUM_OF_TEMPERATURE_SENSORS ] ///< Raw ADC reads array
- [ MAX_NUM_OF_RAW_ADC_SAMPLES ];
-static U32 runningSumAndIndex [ NUM_OF_TEMPERATURE_SENSORS ] ///< Running sum and next ADC index array
+static S32 rawADCReads [ NUM_OF_TEMPERATURE_SENSORS ]
+ [ MAX_NUM_OF_RAW_ADC_SAMPLES ]; ///< Raw ADC reads array
+static S32 runningSumAndIndex [ NUM_OF_TEMPERATURE_SENSORS ] ///< Running sum and next ADC index array
[ NUM_OF_RUNNING_SUM_AND_INDEX_ARRAY_COLUMNS ];
-static U32 tempSensorsConstants [ NUM_OF_TEMPERATURE_SENSORS ] ///< Temperature sensors constants
- [ NUM_OF_TEMP_SENSORS_CONSTANTS_ARRAY_COLUMNS ];
-static F32 avgADCReads [ NUM_OF_TEMPERATURE_SENSORS ]; //TODO remove ///< Temperature sensors averaged ADC values
-static F32 temperatureValues [ NUM_OF_TEMPERATURE_SENSORS ];
+static U32 tempSensorsConstants [ NUM_OF_TEMPERATURE_SENSORS ]
+ [ NUM_OF_TEMP_SENSORS_CONSTANTS_ARRAY_COLUMNS ];///< Temperature sensors constants
static U32 readAndErrorCounts [ NUM_OF_TEMPERATURE_SENSORS ]
[ NUM_OF_READ_AND_ERROR_ARRAY_COLUMNS ];
+static F32 temperatureValues [ NUM_OF_TEMPERATURE_SENSORS ];
+static U32 elapsedTime; ///< Elapsed time
// Private functions prototypes
@@ -124,7 +129,7 @@
// Public functions
/*************************************************************************
- * @brief initTemperatureSensors
+ * @brief
* The initTemperatureSensors function initializes the module
* @details
* Inputs : none
@@ -139,6 +144,7 @@
tempSensorsSelfTestState = TEMPSENSORS_SELF_TEST_START;
tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START;
sampleCount = 0;
+ elapsedTime = 0;
// Initialize TPi and TPo constants
for ( i = TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR; i < TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR; i++ )
@@ -173,7 +179,7 @@
tempSensorsConstants [ TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR ] [ ADC_READ_0_DEG_RESISTANCE_INDEX ] = 0;
}
/*************************************************************************
- * @brief execTemperatureSensorsSelfTest
+ * @brief
* The execTemperatureSensorsSelfTest function runs the TemperatureSensors
* POST during the self test
* @details
@@ -187,27 +193,22 @@
switch ( tempSensorsSelfTestState )
{
case TEMPSENSORS_SELF_TEST_START:
-
tempSensorsSelfTestState = handleSelfTestStart();
break;
case TEMPSENSORS_SELF_TEST_ADC_CHECK:
-
tempSensorsSelfTestState = handleSelfTestADCCheck();
break;
case TEMPSENSORS_SELF_TEST_CONSISTENCY_CHECK:
-
tempSensorsSelfTestState = handleSelfTestConsistencyCheck();
break;
case TEMPSENSORS_SELF_TEST_COMPLETE:
-
// Done with self test, do nothing
break;
default:
-
SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE,
tempSensorsSelfTestState );
tempSensorsSelfTestState = TEMPSENSORS_SELF_TEST_COMPLETE;
@@ -232,17 +233,14 @@
switch ( tempSensorsExecState )
{
case TEMPSENSORS_SELF_TEST_START:
-
tempSensorsExecState = handleExecStart();
break;
case TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES:
-
tempSensorsExecState = handleExecGetADCValues();
break;
default:
-
SET_ALARM_WITH_2_U32_DATA ( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE,
tempSensorsExecState );
tempSensorsExecState = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES;
@@ -349,9 +347,9 @@
static void processADCRead (U32 sensorIndex, U32 adc, U32 fpgaError, U32 fpgaCount )
{
U32 error;
- U32 heatersTemperature;
BOOL isADCValid = TRUE;
F32 temperature;
+ S32 convertedADC;
/*
* check if the index is not the heaters
@@ -363,10 +361,11 @@
* set the avgCalc to true
* if the avgCalc in true, calculate all the steps and immediately convert to temperature
*/
- if ( sensorIndex != TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR || sensorIndex != TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR )
+ if ( sensorIndex != TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR &&
+ sensorIndex != TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR )
{
- error = 0;
- adc = adc & MASK_OFF_U32_MSB;
+ error = 0; //TODO non-zero error
+ convertedADC = (S32)(adc & MASK_OFF_U32_MSB);
/*
* what if the fpga channel error is not zero?
* what if the fpga channel error is zero but the individual is not?
@@ -389,18 +388,8 @@
// It is a heaters temperature sensor
else
{
- // Fault state is the 17th bit
- U32 fault = adc & MASK_OFF_LSW;
- fault = fault & 0x0001;
-
- if ( fault == HEATERS_INTERNAL_TEMP_SENSOR_FAULT )
- {
- // Fault alarm? or have a threshold?
- // If the fault is 1, should we check the individuals?
- }
- // TODO fix these
- heatersTemperature = adc & 0xFF05;
- heatersTemperature = (heatersTemperature & 0x7FFF) >> 2; //TODO use #define for 2
+ U16 adcConv = ( (U16)adc ) << SHIFT_BITS_BY_2;
+ convertedADC = ( (S16)adcConv ) >> SHIFT_BITS_BY_2;
}
U32 previousReadCount = readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ];
@@ -413,14 +402,14 @@
}
else
{
- readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ] = fpgaCount;
+ readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ] = fpgaCount;
readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_INTERNAL_ERROR_COUNT_INDEX ] = internalErrorCount++;
}
//isADCValid = FALSE;
}
else if ( fpgaCount > previousReadCount )
{
- readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ] = fpgaCount;
+ readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_PREV_FPGA_COUNT_INDEX ] = fpgaCount;
readAndErrorCounts [ sensorIndex ] [ READ_AND_ERROR_INTERNAL_ERROR_COUNT_INDEX ] = 0;
isADCValid = TRUE;
}
@@ -429,12 +418,12 @@
{
// Update the values in the folders
U32 index = runningSumAndIndex [ sensorIndex ] [ ADC_READ_NEXT_INDEX_INDEX ];
- U32 runningSum = runningSumAndIndex [ sensorIndex ] [ ADC_READ_RUNNING_SUM_INDEX ];
- U32 indexValue = rawADCReads [ sensorIndex ] [ index ];
+ S32 runningSum = runningSumAndIndex [ sensorIndex ] [ ADC_READ_RUNNING_SUM_INDEX ];
+ S32 indexValue = rawADCReads [ sensorIndex ] [ index ];
U32 nextIndex = INC_WRAP( index, ADC_READ_FIRST_READ_INDEX, MAX_NUM_OF_RAW_ADC_SAMPLES - 1 );
- runningSum = runningSum - indexValue + adc;
+ runningSum = runningSum - indexValue + convertedADC;
- rawADCReads [ sensorIndex ] [ index ] = adc;
+ rawADCReads [ sensorIndex ] [ index ] = convertedADC;
runningSumAndIndex [ sensorIndex ] [ ADC_READ_NEXT_INDEX_INDEX ] = nextIndex;
runningSumAndIndex [ sensorIndex ] [ ADC_READ_RUNNING_SUM_INDEX ] = runningSum;
@@ -496,7 +485,8 @@
static TEMPSENSORS_SELF_TEST_STATES_T handleSelfTestADCCheck ( void )
{
TEMPSENSORS_SELF_TEST_STATES_T state = TEMPSENSORS_SELF_TEST_CONSISTENCY_CHECK;
-
+ // TODo Remove
+ F32 avgADCReads [ NUM_OF_TEMPERATURE_SENSORS ]; //TODO remove
U08 i;
for ( i = 0; i < sizeof(avgADCReads); i++ )
{
@@ -558,7 +548,19 @@
*************************************************************************/
static TEMPSENSORS_EXEC_STATES_T handleExecStart ( void )
{
- return TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES;
+ TEMPSENSORS_EXEC_STATES_T state = TEMPSENSORS_EXEC_STATE_START;
+
+ if ( elapsedTime == 0 )
+ {
+ elapsedTime = getMSTimerCount();
+ }
+ else if ( didTimeout( elapsedTime, ADC_FPGA_READ_DELAY ) )
+ {
+ elapsedTime = 0;
+ state = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES;
+ }
+
+ return state;
}
/*************************************************************************
* @brief handleExecGetADCValues
@@ -573,21 +575,31 @@
{
TEMPSENSORS_EXEC_STATES_T state = TEMPSENSORS_EXEC_STATE_GET_ADC_VALUES;
- // Check the read count for a change before inserting
- // Need to remember the fpga counter and if it has not changed increment another counter and
- // zero it if it changed. if it is above a certain number throw fault
- // error counter from fpga same as above remember, if it is incremented:
-
// Look at the error counter and the specific error flag to make sure the error is a temp sensor
// Add a byte array to have bits for each sensor to find out exactly what sensor failed
- processADCRead( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR, getFPGATPiTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
- processADCRead( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR, getFPGATPoTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
- processADCRead( TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR, getFPGACD1Temp(), 0, 0 );
- processADCRead( TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR, getFPGACD2Temp(), 0, 0 );
- processADCRead( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR, getFPGATHDoTemp(), 0, 0 );
- processADCRead( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR, getFPGATDiTemp(), 0, 0 );
- //processADCRead( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR, getFPGAPrimaryHeaterTemp() );
- //processADCRead( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR, getFPGATrimmerHeaterTemp() );
+ processADCRead( TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR, getFPGATPiTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
+ processADCRead( TEMPSENSORS_OUTLET_PRIMARY_HEATER_TEMP_SENSOR, getFPGATPoTemp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
+ processADCRead( TEMPSENSORS_CONDUCTIVITY_SENSOR_1_TEMP_SENSOR, getFPGACD1Temp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
+ processADCRead( TEMPSENSORS_CONDUCTIVITY_SENSOR_2_TEMP_SENSOR, getFPGACD2Temp(), getFPGARTDErrorCount(), getFPGARTDReadCount() );
+ processADCRead( TEMPSENSORS_OUTLET_REDUNDANCY_TEMP_SENSOR, getFPGATHDoTemp(), getFPGATHDoErrorCount(), getFPGATHDoReadCount() );
+ processADCRead( TEMPSENSORS_INLET_DIALYSATE_TEMP_SENSOR, getFPGATDiTemp(), getFPGATDiErrorCount(), getFPGATDiReadCount() );
+ processADCRead( TEMPSENSORS_PRIMARY_HEATER_INTERNAL_TEMP_SENSOR, getFPGAPrimaryHeaterTemp(), getFPGAPrimaryHeaterFlags(), getFPGAPrimaryHeaterReadCount() );
+ processADCRead( TEMPSENSORS_TRIMMER_HEATER_INTERNAL_TEMP_SESNOR, getFPGATrimmerHeaterTemp(), getFPGATrimmerHeaterFlags(), getFPGATrimmerHeaterReadCount() );
+ // Check the inlet water is within temperature range at the desired time interval
+ if ( elapsedTime == 0 )
+ {
+ elapsedTime = getMSTimerCount();
+ }
+ else if ( didTimeout( elapsedTime, INPUT_WATER_TEMPERATURE_CHECK_TIME_INTERVAL ) )
+ {
+ elapsedTime = 0;
+ F32 inletTemperature = temperatureValues [ TEMPSENSORS_INLET_PRIMARY_HEATER_TEMP_SENSOR ];
+ if ( inletTemperature < MIN_WATER_INPUT_TEMPERATURE || inletTemperature >= MAX_WATER_INPUT_TEMPERATURE )
+ {
+ SET_ALARM_WITH_1_U32_DATA ( ALARM_ID_INLET_WATER_TEMPERATURE_OUT_OF_RANGE, inletTemperature );
+ }
+ }
+
return state;
}
Index: firmware/App/Controllers/TemperatureSensors.h
===================================================================
diff -u -ra3b108c205e9bcd4d1a45033d73c5714c7247123 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision a3b108c205e9bcd4d1a45033d73c5714c7247123)
+++ firmware/App/Controllers/TemperatureSensors.h (.../TemperatureSensors.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -40,4 +40,9 @@
F32 getTemperatureValue ( TEMPERATURE_SENSORS_T sensor );
+//DATA_GET_PROTOTYPE ( F32, );
+
+BOOL testSetMeasuredTemperatureOverride ( F32 temperatrue );
+BOOL testResetMeasuredTemperatureOverride ( void );
+
#endif
Index: firmware/App/Controllers/Valves.h
===================================================================
diff -u -rf5d0c90297a0716e1fb5a5c946436cccd35050e5 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Controllers/Valves.h (.../Valves.h) (revision f5d0c90297a0716e1fb5a5c946436cccd35050e5)
+++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -59,7 +59,7 @@
VBF, ///< Valve Bypass Filter
VRC, ///< Valve Recirculate
VDR, ///< Valve Drain
- VPI, ///< Valve Pressure inlet
+ VPI, ///< Valve Pressure Inlet
VSP, ///< Valve Sampling Port
VR1, ///< Valve Reservoir 1 (spare for now including DG FPGA, as valve is of passive air relief type)
VR2, ///< Valve Reservoir 2 (spare for now including DG FPGA, as valve is of passive air relief type)
@@ -72,7 +72,7 @@
void initValves( void ); // initialize the valves driver
void execValves( void ); // execute the valves driver
-BOOL setValveState( VALVES_T valve, VALVE_STATE_NAMES_T valveState ); // set valve's state to valveState
+BOOL setValveState( VALVES_T valve, VALVE_STATE_NAMES_T valveState ); // set valve's state to valveState
DATA_ARRAY_GET_PROTOTYPE( U32, getValveState, valveID ); // get valve state for given valve
BOOL testSetValvesStatesPublishIntervalOverride( U32 value );
Index: firmware/App/DGCommon.h
===================================================================
diff -u -rdea90cb6d941a0d70c1666a11a0199e147dea764 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/DGCommon.h (.../DGCommon.h) (revision dea90cb6d941a0d70c1666a11a0199e147dea764)
+++ firmware/App/DGCommon.h (.../DGCommon.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -23,7 +23,7 @@
#define DG_VERSION_MAJOR 0
#define DG_VERSION_MINOR 4
-#define DG_VERSION_MICRO 0
+#define DG_VERSION_MICRO 5
#define DG_VERSION_BUILD 0
// ********** build switches **********
@@ -33,6 +33,7 @@
// #define RM46_EVAL_BOARD_TARGET 1
// #define SIMULATE_UI 1
// #define CAN_TEST 1
+// #define ENABLE_DIP_SWITCHES 1
#include
#include
#endif
Index: firmware/App/Modes/ModeChemicalDisinfect.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeChemicalDisinfect.c (.../ModeChemicalDisinfect.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,7 +18,7 @@
#include "OperationModes.h"
/**
- * @addtogroup ChemicalDisinfectMode
+ * @addtogroup DGChemicalDisinfectMode
* @{
*/
Index: firmware/App/Modes/ModeChemicalDisinfect.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeChemicalDisinfect.h (.../ModeChemicalDisinfect.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeChemicalDisinfect.h (.../ModeChemicalDisinfect.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup ChemicalDisinfectMode ChemicalDisinfectMode
+ * @defgroup DGChemicalDisinfectMode DGChemicalDisinfectMode
* @brief Chemical disinfect mode module.
* Manages chemical disinfect mode functions via a state machine.
*
- * @addtogroup ChemicalDisinfectMode
+ * @addtogroup DGChemicalDisinfectMode
* @{
*/
Index: firmware/App/Modes/ModeDrain.c
===================================================================
diff -u -r9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b)
+++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -22,7 +22,7 @@
#include "Valves.h"
/**
- * @addtogroup DrainMode
+ * @addtogroup DGDrainMode
* @{
*/
Index: firmware/App/Modes/ModeDrain.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeDrain.h (.../ModeDrain.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeDrain.h (.../ModeDrain.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup DrainMode DrainMode
+ * @defgroup DGDrainMode DGDrainMode
* @brief Drain mode module.
* Manages drain mode functions via a state machine.
*
- * @addtogroup DrainMode
+ * @addtogroup DGDrainMode
* @{
*/
Index: firmware/App/Modes/ModeFault.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,7 +18,7 @@
#include "ModeFault.h"
/**
- * @addtogroup FaultMode
+ * @addtogroup DGFaultMode
* @{
*/
Index: firmware/App/Modes/ModeFault.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup FaultMode FaultMode
+ * @defgroup DGFaultMode DGFaultMode
* @brief Fault mode module.
* Manages fault mode functions via a state machine.
*
- * @addtogroup FaultMode
+ * @addtogroup DGFaultMode
* @{
*/
Index: firmware/App/Modes/ModeFill.c
===================================================================
diff -u -r9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b)
+++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -23,7 +23,7 @@
#include "ModeFill.h"
/**
- * @addtogroup FillMode
+ * @addtogroup DGFillMode
* @{
*/
Index: firmware/App/Modes/ModeFill.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeFill.h (.../ModeFill.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup FillMode FillMode
+ * @defgroup DGFillMode DGFillMode
* @brief Fill mode module.
* Manages fill mode functions via a state machine.
*
- * @addtogroup FillMode
+ * @addtogroup DGFillMode
* @{
*/
Index: firmware/App/Modes/ModeFlush.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,7 +18,7 @@
#include "OperationModes.h"
/**
- * @addtogroup FlushMode
+ * @addtogroup DGFlushMode
* @{
*/
Index: firmware/App/Modes/ModeFlush.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeFlush.h (.../ModeFlush.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeFlush.h (.../ModeFlush.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup FlushMode FlushMode
+ * @defgroup DGFlushMode DGFlushMode
* @brief Flush mode module. Manages the state machine for the
* flush mode.
*
- * @addtogroup FlushMode
+ * @addtogroup DGFlushMode
* @{
*/
Index: firmware/App/Modes/ModeHeatDisinfect.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeHeatDisinfect.c (.../ModeHeatDisinfect.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,7 +18,7 @@
#include "OperationModes.h"
/**
- * @addtogroup HeatDisinfectMode
+ * @addtogroup DGHeatDisinfectMode
* @{
*/
Index: firmware/App/Modes/ModeHeatDisinfect.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeHeatDisinfect.h (.../ModeHeatDisinfect.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeHeatDisinfect.h (.../ModeHeatDisinfect.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup HeatDisinfectMode HeatDisinfectMode
+ * @defgroup DGHeatDisinfectMode DGHeatDisinfectMode
* @brief Heat disinfection mode module. Manages the state machine for the
* heat disinfection mode.
*
- * @addtogroup HeatDisinfectMode
+ * @addtogroup DGHeatDisinfectMode
* @{
*/
Index: firmware/App/Modes/ModeInitPOST.c
===================================================================
diff -u -r3e7b064885d99793bb56d940bd613555b1cdbdfa -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 3e7b064885d99793bb56d940bd613555b1cdbdfa)
+++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,7 +21,7 @@
#include "ModeInitPOST.h"
/**
- * @addtogroup InitAndPOSTMode
+ * @addtogroup DGInitAndPOSTMode
* @{
*/
Index: firmware/App/Modes/ModeInitPOST.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup InitAndPOSTMode InitAndPOSTMode
+ * @defgroup DGInitAndPOSTMode DGInitAndPOSTMode
* @brief Initialization and POST mode module.
* Manages initialization and POST mode functions via a state machine.
*
- * @addtogroup InitAndPOSTMode
+ * @addtogroup DGInitAndPOSTMode
* @{
*/
Index: firmware/App/Modes/ModeRecirculate.c
===================================================================
diff -u -r9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision 9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b)
+++ firmware/App/Modes/ModeRecirculate.c (.../ModeRecirculate.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -24,7 +24,7 @@
#include "ModeRecirculate.h"
/**
- * @addtogroup RecirculateMode
+ * @addtogroup DGRecirculateMode
* @{
*/
@@ -36,7 +36,7 @@
// ********** private data **********
static DG_RECIRCULATE_MODE_STATE_T recircState; ///< Currently active re-circulation state.
-static F32 flushLinesVolume = 0.0; ///< Volume of water pumped by RO pump during flush lines state.
+static F32 flushLinesVolumeL = 0.0; ///< Volume of water pumped by RO pump during flush lines state.
// ********** private function prototypes **********
@@ -55,7 +55,7 @@
void initRecirculateMode( void )
{
recircState = DG_RECIRCULATE_MODE_STATE_START;
- flushLinesVolume = 0.0;
+ flushLinesVolumeL = 0.0;
}
/*********************************************************************//**
@@ -138,10 +138,10 @@
F32 waterVolume = ( ( waterFlowRate / SEC_PER_MIN ) / ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) );
// integrate volume of water moved through line
- flushLinesVolume += waterVolume;
+ flushLinesVolumeL += waterVolume;
// when enough water volume has flowed to flush the lines, transition to re-circ state
- if ( flushLinesVolume >= FLUSH_LINES_VOLUME_L )
+ if ( flushLinesVolumeL >= FLUSH_LINES_VOLUME_L )
{
setValveState( VDR, VALVE_STATE_RECIRC_C_TO_NC );
result = DG_RECIRCULATE_MODE_STATE_RECIRC_WATER;
Index: firmware/App/Modes/ModeRecirculate.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeRecirculate.h (.../ModeRecirculate.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeRecirculate.h (.../ModeRecirculate.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup RecirculateMode RecirculateMode
+ * @defgroup DGRecirculateMode DGRecirculateMode
* @brief Re-circulate mode module.
* Manages re-circulate mode functions via a state machine.
*
- * @addtogroup RecirculateMode
+ * @addtogroup DGRecirculateMode
* @{
*/
Index: firmware/App/Modes/ModeService.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeService.c (.../ModeService.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeService.c (.../ModeService.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -18,7 +18,7 @@
#include "ModeService.h"
/**
- * @addtogroup ServiceMode
+ * @addtogroup DGServiceMode
* @{
*/
Index: firmware/App/Modes/ModeService.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeService.h (.../ModeService.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeService.h (.../ModeService.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup ServiceMode ServiceMode
+ * @defgroup DGServiceMode DGServiceMode
* @brief Service mode module.
* Manages service mode functions via a state machine.
*
- * @addtogroup ServiceMode
+ * @addtogroup DGServiceMode
* @{
*/
Index: firmware/App/Modes/ModeSolo.c
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeSolo.c (.../ModeSolo.c) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeSolo.c (.../ModeSolo.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -19,7 +19,7 @@
#include "CPLD.h"
/**
- * @addtogroup SoloStandbyMode
+ * @addtogroup DGSoloStandbyMode
* @{
*/
Index: firmware/App/Modes/ModeSolo.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeSolo.h (.../ModeSolo.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeSolo.h (.../ModeSolo.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup SoloStandbyMode SoloStandbyMode
+ * @defgroup DGSoloStandbyMode DGSoloStandbyMode
* @brief Solo Standby mode module.
* Manages Solo standby mode functions via a state machine.
*
- * @addtogroup SoloStandbyMode
+ * @addtogroup DGSoloStandbyMode
* @{
*/
Index: firmware/App/Modes/ModeStandby.c
===================================================================
diff -u -r9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 9f25f22ef6cd3566f8f7fbbc5c037a69e7f9411b)
+++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -25,7 +25,7 @@
#include "ModeStandby.h"
/**
- * @addtogroup StandbyMode
+ * @addtogroup DGStandbyMode
* @{
*/
@@ -137,7 +137,7 @@
// go to standby solo mode if HD is turned off or stops communicating.
if ( FALSE == isHDCommunicating() )
{ // TODO if HD comm loss, should we wait an hour or so before going to solo standby?
- requestNewOperationMode( DG_MODE_SOLO );
+// requestNewOperationMode( DG_MODE_SOLO ); // TODO - uncomment when solo mode is implemented.
}
// if HD requests water sample, go to water sample state
else if ( TRUE == pendingSampleWaterRequest )
Index: firmware/App/Modes/ModeStandby.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup StandbyMode StandbyMode
+ * @defgroup DGStandbyMode DGStandbyMode
* @brief Standby mode module.
* Manages standby mode functions via a state machine.
*
- * @addtogroup StandbyMode
+ * @addtogroup DGStandbyMode
* @{
*/
Index: firmware/App/Modes/OperationModes.c
===================================================================
diff -u -r3e7b064885d99793bb56d940bd613555b1cdbdfa -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 3e7b064885d99793bb56d940bd613555b1cdbdfa)
+++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -32,7 +32,7 @@
#include "ModeStandby.h"
/**
- * @addtogroup OperationModes
+ * @addtogroup DGOperationModes
* @{
*/
Index: firmware/App/Modes/OperationModes.h
===================================================================
diff -u -r3e7b064885d99793bb56d940bd613555b1cdbdfa -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 3e7b064885d99793bb56d940bd613555b1cdbdfa)
+++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -21,11 +21,11 @@
#include "DGModes.h"
/**
- * @defgroup OperationModes OperationModes
+ * @defgroup DGOperationModes DGOperationModes
* @brief Operation Modes module.
* Manages the top level operation modes of the DG via a state machine.
*
- * @addtogroup OperationModes
+ * @addtogroup DGOperationModes
* @{
*/
Index: firmware/App/Services/Reservoirs.c
===================================================================
diff -u -ra52e41cc2219362d433149ca034908c8763d8378 -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision a52e41cc2219362d433149ca034908c8763d8378)
+++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -81,7 +81,7 @@
*************************************************************************/
void execReservoirs( void )
{
- // TODO - publish active reservoir, fill/drain volume targets at 1 Hz.
+ // publish active reservoir, fill/drain volume targets at 1 Hz.
if ( ++reservoirDataPublicationTimerCounter >= RESERVOIR_DATA_PUB_INTERVAL )
{
U32 actRes = getActiveReservoir();
@@ -114,19 +114,19 @@
case RESERVOIR_1:
activeReservoir.data = (U32)resID;
result = TRUE;
- setValveState( VRF, VALVE_STATE_R2_C_TO_NO );
- setValveState( VRD, VALVE_STATE_R2_C_TO_NO );
- setValveState( VRO, VALVE_STATE_R1_C_TO_NO );
- setValveState( VRI, VALVE_STATE_R1_C_TO_NO );
+ setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); // TODO - valve states are reversed for the two reservoirs for now - revert back when load cells are fixed.
+ setValveState( VRD, VALVE_STATE_R1_C_TO_NC );
+ setValveState( VRO, VALVE_STATE_R2_C_TO_NC );
+ setValveState( VRI, VALVE_STATE_R2_C_TO_NC );
break;
case RESERVOIR_2:
activeReservoir.data = (U32)resID;
result = TRUE;
- setValveState( VRF, VALVE_STATE_R1_C_TO_NC );
- setValveState( VRD, VALVE_STATE_R1_C_TO_NC );
- setValveState( VRO, VALVE_STATE_R2_C_TO_NC );
- setValveState( VRI, VALVE_STATE_R2_C_TO_NC );
+ setValveState( VRF, VALVE_STATE_R2_C_TO_NO );
+ setValveState( VRD, VALVE_STATE_R2_C_TO_NO );
+ setValveState( VRO, VALVE_STATE_R1_C_TO_NO );
+ setValveState( VRI, VALVE_STATE_R1_C_TO_NO );
break;
default:
@@ -305,11 +305,11 @@
*************************************************************************/
U32 getReservoirFillVolumeTargetMl( void )
{
- U32 result = (RESERVOIR_ID_T)fillVolumeTargetMl.data;
+ U32 result = fillVolumeTargetMl.data;
if ( OVERRIDE_KEY == fillVolumeTargetMl.override )
{
- result = (RESERVOIR_ID_T)fillVolumeTargetMl.ovData;
+ result = fillVolumeTargetMl.ovData;
}
return result;
@@ -326,11 +326,11 @@
*************************************************************************/
U32 getReservoirDrainVolumeTargetMl( void )
{
- U32 result = (RESERVOIR_ID_T)drainVolumeTargetMl.data;
+ U32 result = drainVolumeTargetMl.data;
if ( OVERRIDE_KEY == drainVolumeTargetMl.override )
{
- result = (RESERVOIR_ID_T)drainVolumeTargetMl.ovData;
+ result = drainVolumeTargetMl.ovData;
}
return result;
Index: firmware/App/Services/SystemComm.c
===================================================================
diff -u -r77738b42add276957539f0efb3f9a4092852c5ce -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 77738b42add276957539f0efb3f9a4092852c5ce)
+++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -1008,6 +1008,10 @@
handleSampleWaterCmd( message );
break;
+ case MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD:
+ handleStartStopTrimmerHeaterCmd( message );
+ break;
+
case MSG_ID_DG_TESTER_LOGIN_REQUEST:
handleTesterLogInRequest( message );
break;
Index: firmware/App/Services/SystemCommMessages.c
===================================================================
diff -u -r3e7b064885d99793bb56d940bd613555b1cdbdfa -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3e7b064885d99793bb56d940bd613555b1cdbdfa)
+++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -76,7 +76,7 @@
typedef struct
{
U32 setDrainPumpSpeed;
- F32 drainPumpPWM;
+ U32 dacValue;
} DRAIN_PUMP_DATA_T;
typedef struct
@@ -493,10 +493,10 @@
* Inputs : none
* Outputs : Drain pump data msg constructed and queued
* @param tgtSpeed : target speed for drain pump in RPM.
- * @param setPWM : set PWM duty cycle in %.
+ * @param dac : set DAC value.
* @return TRUE if msg successfully queued for transmit, FALSE if not
*************************************************************************/
-BOOL broadcastDrainPumpData( U32 tgtSpeed, F32 setPWM )
+BOOL broadcastDrainPumpData( U32 tgtSpeed, U32 dac )
{
BOOL result;
MESSAGE_T msg;
@@ -509,7 +509,7 @@
msg.hdr.payloadLen = sizeof( DRAIN_PUMP_DATA_T );
payload.setDrainPumpSpeed = tgtSpeed;
- payload.drainPumpPWM = setPWM;
+ payload.dacValue = dac;
memcpy( payloadPtr, &payload, sizeof( DRAIN_PUMP_DATA_T ) );
@@ -685,13 +685,13 @@
{
BOOL result = FALSE;
- if ( message->hdr.payloadLen == sizeof(U32) )
+ if ( message->hdr.payloadLen == sizeof(RESERVOIR_ID_T) )
{
- U32 reservoirID;
+ RESERVOIR_ID_T reservoirID;
result = TRUE;
- memcpy( &reservoirID, message->payload, sizeof(U32) );
- setActiveReservoirCmd( (RESERVOIR_ID_T)reservoirID );
+ memcpy( &reservoirID, message->payload, sizeof(RESERVOIR_ID_T) );
+ setActiveReservoirCmd( reservoirID );
}
sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result );
}
@@ -779,6 +779,38 @@
/*************************************************************************
* @brief
+ * The handleStartStopTrimmerHeaterCmd function handles a trimmer heater start/stop \n
+ * command message from the HD.
+ * @details
+ * Inputs : none
+ * Outputs : message handled
+ * @param message : a pointer to the message to handle
+ * @return none
+ *************************************************************************/
+void handleStartStopTrimmerHeaterCmd( MESSAGE_T *message )
+{
+ BOOL result = FALSE;
+
+ if ( message->hdr.payloadLen == sizeof(U32) )
+ {
+ BOOL startingHeater;
+
+ memcpy( &startingHeater, message->payload, sizeof(U32) );
+
+ if ( TRUE == startingHeater )
+ {
+ result = startTrimmerHeaterCmd();
+ }
+ else
+ {
+ result = stopTrimmerHeaterCmd();
+ }
+ }
+ sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result );
+}
+
+/*************************************************************************
+ * @brief
* The handleSampleWaterCmd function handles a sample water command from the HD.
* @details
* Inputs : none
Index: firmware/App/Services/SystemCommMessages.h
===================================================================
diff -u -rf5b02f03b6695c0c76fd8a4d902a13114e1a8aca -rbbf1e3736be03a4f041ace57e0f95e23caf472dd
--- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision f5b02f03b6695c0c76fd8a4d902a13114e1a8aca)
+++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
@@ -48,7 +48,7 @@
BOOL broadcastROPumpData( U32 tgtPressure, F32 measFlow, F32 setPWM );
// MSG_ID_DRAIN_PUMP_DATA
-BOOL broadcastDrainPumpData( U32 tgtSpeed, F32 setPWM );
+BOOL broadcastDrainPumpData( U32 tgtSpeed, U32 dac );
// MSG_ID_DG_PRESSURES_DATA
BOOL broadcastPressureSensorsData( F32 measROIn, F32 measROOut, F32 measDrainIn, F32 measDrainOut );
@@ -80,6 +80,9 @@
// MSG_ID_DG_SAMPLE_WATER_CMD
void handleSampleWaterCmd( MESSAGE_T *message );
+// MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD
+void handleStartStopTrimmerHeaterCmd( MESSAGE_T *message );
+
// *********** public test support message functions **********
#ifdef DEBUG_ENABLED