Index: firmware/App/Drivers/FlowSensor.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -33,6 +33,7 @@ static OVERRIDE_S32_T currentFlowReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor pressure readings (overrideable). static OVERRIDE_F32_T currentFlowTempReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor temperature readings (overrideable). +static F32 currentFlowInternalTempReadings[ NUM_OF_FLOW_SENSORS ]; ///< Current flow sensor internal temperature readings. // ********** private function prototypes ********** @@ -59,6 +60,8 @@ currentFlowTempReadings[ sensor ].ovData = 0.0F; currentFlowTempReadings[ sensor ].ovInitData = 0.0F; currentFlowTempReadings[ sensor ].override = OVERRIDE_RESET; + + currentFlowInternalTempReadings[ sensor ] = 0.0F; } } @@ -81,6 +84,10 @@ // Update and convert raw flow sensor temperatures to deg C currentFlowTempReadings[ P16_FLOW ].data = (F32)( (S16)getFPGAFlowP16Temp() ) / FLOW_TEMPERATURE_DIVIDER; currentFlowTempReadings[ P7_FLOW ].data = (F32)( (S16)getFPGAFlowP7Temp() ) / FLOW_TEMPERATURE_DIVIDER; + + // Update and convert raw flow sensor internal temperatures to deg C + currentFlowInternalTempReadings[ P16_FLOW ] = (F32)( (S16)getFPGAFlowP16InternalTemp() ) / FLOW_TEMPERATURE_DIVIDER; + currentFlowInternalTempReadings[ P7_FLOW ] = (F32)( (S16)getFPGAFlowP7InternalTemp() ) / FLOW_TEMPERATURE_DIVIDER; } /*********************************************************************//** @@ -143,7 +150,33 @@ return result; } +/*********************************************************************//** + * @brief + * The getFlowInternalTemperature function gets the current + * internal temperature (in deg C) for a given flow sensor. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given flow sensor is invalid. + * @details \b Inputs: currentFlowInternalTempReadings + * @details \b Outputs: none + * @param sensor ID of flow sensor to get internal temperature for. + * @return The current flow sensor internal temperature (in deg C) of the given flow sensor. + *************************************************************************/ +F32 getFlowInternalTemperature( FLOW_SENSORS_T sensor ) +{ + F32 result = 0.0F; + if ( sensor < NUM_OF_FLOW_SENSORS ) + { + result = currentFlowInternalTempReadings[ sensor ]; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, FP_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR2, (U32)sensor ) + } + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Drivers/FlowSensor.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -49,6 +49,7 @@ void readFlowSensors( void ); S32 getFlowRate( FLOW_SENSORS_T sensor ); F32 getFlowTemperature( FLOW_SENSORS_T sensor ); +F32 getFlowInternalTemperature( FLOW_SENSORS_T sensor ); BOOL testFlowSensorReadingsOverride( MESSAGE_T *message ); BOOL testFlowSensorTemperatureReadingsOverride( MESSAGE_T *message ); Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -487,15 +487,17 @@ { TEMPERATURE_SENSORS_FP_DATA_T data; - data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); - data.p10Temp = getFilteredConductivitySensorTemperature( P9_COND ); - data.p19Temp = getFilteredConductivitySensorTemperature( P18_COND ); - data.p8Temp = getFilteredPressureSensorTemperature( P8_PRES ); - data.p13Temp = getFilteredPressureSensorTemperature( P13_PRES ); - data.p17Temp = getFilteredPressureSensorTemperature( P17_PRES ); - data.p7Temp = getFilteredFlowSensorTemperature( P7_FLOW ); - data.p16Temp = getFilteredFlowSensorTemperature( P16_FLOW ); - data.p46Temp = getFilteredPressureSensorTemperature( P46_PRES ); + data.m3Temp = getFilteredPressureSensorTemperature( M3_PRES ); + data.p10Temp = getFilteredConductivitySensorTemperature( P9_COND ); + data.p19Temp = getFilteredConductivitySensorTemperature( P18_COND ); + data.p8Temp = getFilteredPressureSensorTemperature( P8_PRES ); + data.p13Temp = getFilteredPressureSensorTemperature( P13_PRES ); + data.p17Temp = getFilteredPressureSensorTemperature( P17_PRES ); + data.p7Temp = getFilteredFlowSensorTemperature( P7_FLOW ); + data.p16Temp = getFilteredFlowSensorTemperature( P16_FLOW ); + data.p46Temp = getFilteredPressureSensorTemperature( P46_PRES ); + data.p7InternalTemp = getFlowInternalTemperature( P7_FLOW ); + data.p16InternalTemp = getFlowInternalTemperature( P16_FLOW ); broadcastData( MSG_ID_FP_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_FP_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_FP_DATA_T ) ); fpTempDataPublicationTimerCounter = 0; Index: firmware/App/Monitors/Temperature.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -67,6 +67,9 @@ F32 p7Temp; ///< Temperature RO inlet F32 p16Temp; ///< Temperature RO outlet F32 p46Temp; ///< Temperature after sediment filter (P46) + F32 p7InternalTemp; ///< P7 internal Temperature + F32 p16InternalTemp; ///< P16 internal Temperature + } TEMPERATURE_SENSORS_FP_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Services/FpgaDD.c =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Services/FpgaDD.c (.../FpgaDD.c) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -3526,6 +3526,19 @@ /*********************************************************************//** * @brief + * The getFPGAFlowP16InternalTemp function gets the P16 flow sensor + * internal temperature. + * @details \b Inputs: fpgaSensorReadings.flowIntTempP16 + * @details \b Outputs: none + * @return P16 internal temperature + *************************************************************************/ +U16 getFPGAFlowP16InternalTemp( void ) +{ + return fpgaSensorReadings.flowIntTempP16; +} + +/*********************************************************************//** + * @brief * The getFPGAFlowP7 function gets the P7 flow rate (in mL/min). * @details \b Inputs: fpgaSensorReadings.flowRateP7 * @details \b Outputs: none @@ -3551,6 +3564,19 @@ /*********************************************************************//** * @brief + * The getFPGAFlowP7InternalTemp function gets the P7 flow sensor + * internal temperature. + * @details \b Inputs: fpgaSensorReadings.flowIntTempP7 + * @details \b Outputs: none + * @return P7 internal temperature + *************************************************************************/ +U16 getFPGAFlowP7InternalTemp( void ) +{ + return fpgaSensorReadings.flowIntTempP7; +} + +/*********************************************************************//** + * @brief * The setFPGAP9Control function sets the FPGA P9 sensor control register * to perform a given action. * bit 4..7: unused Index: firmware/App/Services/FpgaDD.h =================================================================== diff -u -r830213bc6dcc1a684610caf78c79d55f2cb41e93 -r188516c38eff3adc3b74ef1a84a788acc0a7fe82 --- firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 830213bc6dcc1a684610caf78c79d55f2cb41e93) +++ firmware/App/Services/FpgaDD.h (.../FpgaDD.h) (revision 188516c38eff3adc3b74ef1a84a788acc0a7fe82) @@ -301,8 +301,10 @@ U16 getFPGAFlowP16( void ); U16 getFPGAFlowP16Temp( void ); +U16 getFPGAFlowP16InternalTemp( void ); U16 getFPGAFlowP7( void ); U16 getFPGAFlowP7Temp( void ); +U16 getFPGAFlowP7InternalTemp( void ); void setFPGAP9Control( U08 control ); void setFPGAP9Address( U16 address );