Index: firmware/App/Drivers/ConductivityTeensy.c =================================================================== diff -u -r3fa7efb8799333684f48d5a894a703db2e3aa945 -r72de2cfa37decafea02ad19a52e44aca5d3da024 --- firmware/App/Drivers/ConductivityTeensy.c (.../ConductivityTeensy.c) (revision 3fa7efb8799333684f48d5a894a703db2e3aa945) +++ firmware/App/Drivers/ConductivityTeensy.c (.../ConductivityTeensy.c) (revision 72de2cfa37decafea02ad19a52e44aca5d3da024) @@ -15,7 +15,7 @@ * ***************************************************************************/ -#include // Used for calculating the polynomial calibration equation and INF +#include // Used for log() and INF #include // For memcpy #include "sci.h" @@ -56,12 +56,12 @@ #define COND_STATUS_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Timeout before which we should receive acknowledgment from teensy #define COND_DATA_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Timeout before which we should receive data from teensy #define COND_TEMP_OFFSET 25 ///< Temperature offset constant used in RTD calculations. -#define COND_CONVERSION_SM_TO_USCM 1000000.0F ///< Conductivity conversion from siemens per meter to micro siemens per centimeter. +#define COND_CONVERSION_SM_TO_USCM 1000000.0F ///< Conductivity conversion from siemens per meter to micro siemens per centimeter. #define COND_INFINITE_R_VALUE 800000 ///< Resistance value for when the driver detects INF from the sensor. // ********** private data ********** -static COND_COMM_STATE_T condCommState; ///< current Conductivity driver comm state. +static COND_COMM_STATE_T condCommState; ///< Current Conductivity driver comm state. static U32 condInitTime; ///< Tracks duration of init state. static U32 condResponseTime; ///< Tracks duration between cmd sent and its response received. @@ -1835,6 +1835,10 @@ case D43_COND: sensorNum = TEENSY_SENSOR_5; break; + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID, sensorId ) + break; + } return sensorNum; @@ -1846,23 +1850,21 @@ impedance value. * @details \b Inputs: condCalculatedMeasurement * @details \b Outputs: none - * @param sensor ID of conductivity sensor to get conductivity. + * @param sensorId ID of conductivity sensor to get conductivity. * @return The current conductivity of a given conductivity sensor. *************************************************************************/ F32 getTeensyConductivityValue( CONDUCTIVITY_SENSORS_T sensorId ) { U32 sensorNum = getTeensyCondId( sensorId ); F32 result = 0.0F; - if ( D74_COND != sensorId ) + result = condCalculatedMeasurement[ sensorNum ].Conductivity.data; + if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Conductivity.override ) { - result = condCalculatedMeasurement[ sensorNum ].Conductivity.data; - if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Conductivity.override ) - { - result = condCalculatedMeasurement[ sensorNum ].Conductivity.ovData; - } + result = condCalculatedMeasurement[ sensorNum ].Conductivity.ovData; } + return result; } @@ -1880,15 +1882,13 @@ U32 sensorNum = getTeensyCondId( sensorId ); F32 result = 0.0F; - if ( D74_COND != sensorId ) + result = condCalculatedMeasurement[ sensorNum ].Temperature.data; + if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Temperature.override ) { - result = condCalculatedMeasurement[ sensorNum ].Temperature.data; - if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Temperature.override ) - { - result = condCalculatedMeasurement[ sensorNum ].Temperature.ovData; - } + result = condCalculatedMeasurement[ sensorNum ].Temperature.ovData; } + return result; } @@ -1906,13 +1906,10 @@ U32 sensorNum = getTeensyCondId( sensorId ); F32 result = 0.0F; - if ( D74_COND != sensorId ) + result = condCalculatedMeasurement[ sensorNum ].Resistance.data; + if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Resistance.override ) { - result = condCalculatedMeasurement[ sensorNum ].Resistance.data; - if ( OVERRIDE_KEY == condCalculatedMeasurement[ sensorNum ].Resistance.override ) - { - result = condCalculatedMeasurement[ sensorNum ].Resistance.ovData; - } + result = condCalculatedMeasurement[ sensorNum ].Resistance.ovData; } return result; Index: firmware/App/Drivers/ConductivityTeensy.h =================================================================== diff -u -r290cac3c0557c978647cef2972800dfe137dd662 -r72de2cfa37decafea02ad19a52e44aca5d3da024 --- firmware/App/Drivers/ConductivityTeensy.h (.../ConductivityTeensy.h) (revision 290cac3c0557c978647cef2972800dfe137dd662) +++ firmware/App/Drivers/ConductivityTeensy.h (.../ConductivityTeensy.h) (revision 72de2cfa37decafea02ad19a52e44aca5d3da024) @@ -19,30 +19,13 @@ #define _CONDUCTIVITY_TEENSY_H_ #include "DDCommon.h" - +#include "ConductivitySensors.h" // ********** public definitions ********** #define DOUBLE_COUNT 8 ///< Number of double values in Teensy EEPROM data #define FLOAT_COUNT 16 ///< Number of float values in Teensy EEPROM data #define MAX_COND_MST_PARAM_IDX 7 ///< Total number of parameters in measurement settings CONDUCTIVITY_MEASUREMENT_SETTINGS_T -/// Enumeration of conductivity sensors. -typedef enum ConductivitySensors -{ - D17_COND = 0, ///< Bicarb only conductivity sensor - 1 - FIRST_DD_COND_SENSOR = D17_COND, ///< First conductivity sensor - D27_COND, ///< Acid and Bicarb mix conductivity sensor - 1 - D29_COND, ///< Acid and Bicarb mix conductivity sensor - 2 - D43_COND, ///< Spent dialysate conductivity sensor - D74_COND, ///< Bicarb only conductivity sensor - 2 - LAST_DD_COND_SENSOR = D74_COND, ///< Last conductivity sensor - P9_COND, ///< Inlet water conductivity sensor - FIRST_FP_COND_SENSOR = P9_COND, ///< First FP conductivity sensor - P18_COND, ///< RO outlet water conductivity sensor - LAST_FP_COND_SENSOR = P18_COND, ///< Last FP conductivity sensor - NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors -} CONDUCTIVITY_SENSORS_T; - /// Enumeration of Teensy Sensor Index values typedef enum TeensySensorIndex { Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -rbd896114f304304a7096b30b2a85067a64645e82 -r72de2cfa37decafea02ad19a52e44aca5d3da024 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision bd896114f304304a7096b30b2a85067a64645e82) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 72de2cfa37decafea02ad19a52e44aca5d3da024) @@ -253,13 +253,21 @@ static void filterConductivitySensorReadings( void ) { CONDUCTIVITY_SENSORS_T sensor; - + F32 rawCond = 0.0F; for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { #ifdef __TEENSY_CONDUCTIVITY_DRIVER__ - F32 rawCond = getTeensyConductivityValue( sensor ); + + if (sensor != D74_COND ) + { + rawCond = getTeensyConductivityValue( sensor ); + } + else + { + rawCond = getConductivityValue( sensor ); + } #else - F32 rawCond = getConductivityValue( sensor ); + rawCond = getConductivityValue( sensor ); #endif // TODO - calibrate @@ -317,15 +325,24 @@ static void filterConductivitySensorTemperatureReadings( void ) { CONDUCTIVITY_SENSORS_T sensor; + F32 rawTemp = 0.0F; for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { + #ifdef __TEENSY_CONDUCTIVITY_DRIVER__ - F32 rawTemp = getTeensyConductivityTemperatureValue( sensor ); + + if (sensor != D74_COND ) + { + rawTemp = getTeensyConductivityTemperatureValue( sensor ); + } + else + { + rawTemp = getConductivityTemperatureValue( sensor ); + } #else - F32 rawTemp = getConductivityTemperatureValue( sensor ); + rawCond = getConductivityTemperatureValue( sensor ); #endif - // TODO - calibrate if ( filteredConductivityTemperatureReadings[sensor].conductivityTempReadingsCount >= SIZE_OF_FLOW_ROLLING_AVG ) Index: firmware/App/Monitors/Conductivity.h =================================================================== diff -u -ra34d98a4021d683b0272ecfc741bf8567e28ab61 -r72de2cfa37decafea02ad19a52e44aca5d3da024 --- firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision a34d98a4021d683b0272ecfc741bf8567e28ab61) +++ firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision 72de2cfa37decafea02ad19a52e44aca5d3da024) @@ -19,12 +19,10 @@ #define __CONDUCTIVITY_H__ #include "DDCommon.h" -#ifdef __TEENSY_CONDUCTIVITY_DRIVER__ #include "ConductivityTeensy.h" -#else #include "ConductivitySensors.h" -#endif + /** * @defgroup Conductivity Conductivity * @brief Conductivity Sensors monitor module. Monitors and filters conductivity sensor readings. Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -rd748813399d38ef5b71d760e327e368cc82d7a38 -r72de2cfa37decafea02ad19a52e44aca5d3da024 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision d748813399d38ef5b71d760e327e368cc82d7a38) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 72de2cfa37decafea02ad19a52e44aca5d3da024) @@ -379,6 +379,7 @@ static void filterDialTemperatureReadings( void ) { DIAL_TEMPERATURE_SENSORS_T i; + F32 temperatureC = 0.0F; for ( i = DIAL_TEMP_FIRST; i < NUM_OF_DIAL_TEMPS; i++ ) { @@ -390,10 +391,19 @@ else if ( TRUE == didTimeout( dialTempMovingAvgData[ i ].dialTempDataColStartTimeMS, D28_D30_DATA_COLLECTION_TIME_MS ) ) { CONDUCTIVITY_SENSORS_T sensor = ( DIAL_TEMP_D28 == i ? D27_COND : D29_COND ); + #ifdef __TEENSY_CONDUCTIVITY_DRIVER__ - F32 temperatureC = getTeensyConductivityTemperatureValue( sensor ); + + if (sensor != D74_COND) + { + temperatureC = getTeensyConductivityTemperatureValue( sensor ); + } + else + { + temperatureC = getConductivityTemperatureValue( sensor ); + } #else - F32 temperatureC = getConductivityTemperatureValue( sensor ); + temperatureC = getConductivityTemperatureValue( sensor ); #endif U32 currentIndex = dialTempMovingAvgData[ i ].dialTempSamplesNextIndex; F32 prevSampleToRemoveC = dialTempMovingAvgData[ i ].dialTempSamplesC[ currentIndex ]; @@ -530,7 +540,7 @@ data.d28CondTemp = getTeensyConductivityTemperatureValue( D27_COND ); data.d30CondTemp = getTeensyConductivityTemperatureValue( D29_COND ); data.d44CondTemp = getTeensyConductivityTemperatureValue( D43_COND ); - data.d75CondTemp = getTeensyConductivityTemperatureValue( D74_COND ); + data.d75CondTemp = getConductivityTemperatureValue( D74_COND ); #else data.d16CondTemp = getConductivityTemperatureValue( D17_COND ); data.d28CondTemp = getConductivityTemperatureValue( D27_COND );