Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -r261cfc6d93996e76e26c1e9c3f5740077ad2ec22 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 261cfc6d93996e76e26c1e9c3f5740077ad2ec22) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -405,7 +405,6 @@ { roRejectionRatio = cpo / cpi; } - } /*********************************************************************//** Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -ra4669c80291e85fa5ce17d77ebcfd0c882831202 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision a4669c80291e85fa5ce17d77ebcfd0c882831202) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -433,12 +433,12 @@ static F32 calculateBaroPressure( U32 adcSum ) { S32 tempDiff = getBaroSensorTemperatureDiff(); - U64 tempOffset = ( baroConvConsts.pressureOffsetTempCoeff * tempDiff ) / TWO_TO_POWER_OF_6; - U64 presOffset = baroConvConsts.pressureOffset * TWO_TO_POWER_OF_17; - U64 offset = presOffset + tempOffset; - U64 tempSensitivity = ( baroConvConsts.pressureSensitivityTempCoeff * tempDiff ) / TWO_TO_POWER_OF_7; - U64 presSensitivity = baroConvConsts.pressureSensitivity * TWO_TO_POWER_OF_16; - U64 sensitivity = tempSensitivity + presSensitivity; + S64 tempOffset = ( baroConvConsts.pressureOffsetTempCoeff * tempDiff ) / TWO_TO_POWER_OF_6; + S64 presOffset = baroConvConsts.pressureOffset * TWO_TO_POWER_OF_17; + S64 offset = presOffset + tempOffset; + S64 tempSensitivity = ( baroConvConsts.pressureSensitivityTempCoeff * tempDiff ) / TWO_TO_POWER_OF_7; + S64 presSensitivity = baroConvConsts.pressureSensitivity * TWO_TO_POWER_OF_16; + S64 sensitivity = tempSensitivity + presSensitivity; S32 pres = (S32)( ( ( adcSum * sensitivity ) / TWO_TO_POWER_OF_21 ) - offset ) / TWO_TO_POWER_OF_15; F32 presPSI = ( (F32)pres / (F32)( COUNTS_TO_MILLI_BAR * ONE_BAR_TO_MILLI_BAR ) ) * ONE_BAR_TO_PSI_CONVERSION; Index: firmware/App/Controllers/ROPump.c =================================================================== diff -u -r340d76e1d4dee94b1e721cf2fac15ec8af134294 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 340d76e1d4dee94b1e721cf2fac15ec8af134294) +++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -196,15 +196,15 @@ roPumpState = RO_PUMP_OFF_STATE; roPumpControlMode = NUM_OF_PUMP_CONTROL_MODES; isROPumpOn = FALSE; - roPumpFeedbackDutyCyclePct = 0.0; - roVolumeL = 0.0; - targetROPumpFlowRateLPM = 0.0; - roPumpPWMDutyCyclePct = 0.0; - roPumpDutyCyclePctSet = 0.0; - pendingROPumpCmdMaxPressure = 0.0; - pendingROPumpCmdTargetFlow = 0.0; + roPumpFeedbackDutyCyclePct = 0.0F; + roVolumeL = 0.0F; + targetROPumpFlowRateLPM = 0.0F; + roPumpPWMDutyCyclePct = 0.0F; + roPumpDutyCyclePctSet = 0.0F; + pendingROPumpCmdMaxPressure = 0.0F; + pendingROPumpCmdTargetFlow = 0.0F; pendingROPumpCmdCountDown = 0; - targetROPumpMaxPressure = 0.0; + targetROPumpMaxPressure = 0.0F; } /*********************************************************************//** Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r340d76e1d4dee94b1e721cf2fac15ec8af134294 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 340d76e1d4dee94b1e721cf2fac15ec8af134294) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -131,6 +131,19 @@ BOOL hasCRCBeenChecked; ///< Barometric sensor has CRC been checked flag. } BARO_SENSOR_CONSTS_T; +/// Barometric sensor coefficients +typedef struct +{ + U16 mfgInfo; ///< Barometric sensor manufacturing info. + U16 pressSensitivity; ///< Barometric sensor pressure sensitivity. + U16 pressOffset; ///< Barometric sensor pressure offset. + U16 tempCoeffOfPressSens; ///< Barometric sensor temperature coefficient of pressure sensor. + U16 tempCoeffPressOffset; ///< Barometric sensor temperature coefficient of pressure offset. + U16 referenceTemp; ///< Barometric sensor reference temperature. + U16 tempCoeffOfTemp; ///< Barometric sensor temperature coefficient of Temperature sensor. + U16 crc; ///< Barometric sensor CRC of the coefficients. +} BARO_SENSORS_COEFFS_T; + // ********** private data ********** static TEMPSENSORS_EXEC_STATES_T tempSensorsExecState; ///< TemperatureSensor exec state. @@ -200,6 +213,7 @@ void initTemperatureSensors( void ) { U08 i; + tempSensorsExecState = TEMPSENSORS_EXEC_STATE_START; elapsedTime = 0; internalHeatersConversionTimer = 0; @@ -671,6 +685,7 @@ static void processHtrsTempSnsrsADCRead( U32 sensorIndex, U16 adc ) { S16 convert = (S16)adc; + processADCRead( sensorIndex, (S32)convert ); } @@ -751,7 +766,7 @@ case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: { tempSensors[ sensorIndex ].baroTempSnsrDiff = (S32)avgADCReads - ( baroConvConsts.refTemperature * TWO_TO_POWER_OF_8 ); - U64 baroSnsrTemperature = BARO_SENSOR_REFERENCE_TEMP_C + ( ( tempSensors[ sensorIndex ].baroTempSnsrDiff * + S64 baroSnsrTemperature = BARO_SENSOR_REFERENCE_TEMP_C + ( ( tempSensors[ sensorIndex ].baroTempSnsrDiff * baroConvConsts.temperatureCoeff ) / TWO_TO_POWER_OF_23 ); temperature = (F32)( (U32)( baroSnsrTemperature ) / 100 ); } @@ -942,9 +957,9 @@ #endif { U08 i; - F32 temperature = 0.0; + F32 temperature = 0.0F; BOOL isTemperatureOutOfRange = FALSE; - F32 alarmTemperature = 0.0; + F32 alarmTemperature = 0.0F; U08 alarmIndex = 0; for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) @@ -966,6 +981,8 @@ case TEMPSENSORS_INTERNAL_THD_RTD: case TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR: case TEMPSENSORS_BAROMETRIC_TEMP_SENSOR: + // All the temperature sensors are monitored except the heaters' temperature sensors. + // The heaters' temperature sensors are only broadcast for information temperature = getTemperatureValue( i ); // Check both temperature and to be in range @@ -1041,17 +1058,7 @@ if ( TRUE == hasCRCChanged ) { U08 calculatedCRC; - struct - { - U16 mfgInfo; - U16 pressSensitivity; - U16 pressOffset; - U16 tempCoeffOfPressSens; - U16 tempCoeffPressOffset; - U16 referenceTemp; - U16 tempCoeffOfTemp; - U16 crc; - } baroCoeffs; + BARO_SENSORS_COEFFS_T baroCoeffs; baroCoeffs.mfgInfo = getFPGABaroMfgInfo(); baroCoeffs.pressSensitivity = getFPGABaroPressureSensitivity(); @@ -1078,6 +1085,7 @@ } } + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ Index: firmware/App/Controllers/Voltages.c =================================================================== diff -u -rcd3f58205f4dab89291b29ee73b7fa9c31773abc -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision cd3f58205f4dab89291b29ee73b7fa9c31773abc) +++ firmware/App/Controllers/Voltages.c (.../Voltages.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -275,9 +275,11 @@ adcReadings[ ch ][ adcReadingsIdx[ ch ] ] = getFPGAHeaterGndADC(); break; +#ifndef _VECTORCAST_ default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_INT_ADC_CHANNEL_NUMBER, ch ) break; +#endif } adcReadingsTotals[ ch ] += adcReadings[ ch ][ adcReadingsIdx[ ch ] ]; Index: firmware/App/Drivers/CPLD.c =================================================================== diff -u -r53110a8d810e392e8f75cf0bf85a3ec07927e846 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 53110a8d810e392e8f75cf0bf85a3ec07927e846) +++ firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -112,20 +112,27 @@ *************************************************************************/ void setCPLDCleanLEDColor( CPLD_CLEAN_LED_COLORS_T color ) { - switch (color) + switch ( color ) { case CPLD_CLEAN_LED_ORANGE: CLEAN_LED_ORANGE(); break; + case CPLD_CLEAN_LED_YELLOW: CLEAN_LED_YELLOW(); break; + case CPLD_CLEAN_LED_BLUE: CLEAN_LED_BLUE(); break; + case CPLD_CLEAN_LED_OFF: + CLR_CLEAN_LED(); + break; + default: CLR_CLEAN_LED(); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_LED_COLOR_SELECTED, color ) break; } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r33d262afee2fd0dd9d714ed86a21b8907ed84e25 -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 33d262afee2fd0dd9d714ed86a21b8907ed84e25) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -132,6 +132,8 @@ SW_FAULT_ID_ILLEGAL_MEM_ACCESS, SW_FAULT_ID_INVALID_CHEMICAL_BOTTLE_SELECTED, SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED, + SW_FAULT_ID_INVALID_FPGA_ERROR_GROUP_SELECTED, + SW_FAULT_ID_INVALID_LED_COLOR_SELECTED, // 105 NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r46bf7baaa9d8095e0405b018fcd4bc594907797e -r4d637d588c0d78d95645e24ccbfdc01d45718a2f --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 46bf7baaa9d8095e0405b018fcd4bc594907797e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 4d637d588c0d78d95645e24ccbfdc01d45718a2f) @@ -454,6 +454,7 @@ if ( message->hdr.payloadLen == sizeof( DG_CMD_DIALYSATE_HEATING_PARAMS_T ) ) { DG_CMD_DIALYSATE_HEATING_PARAMS_T payload; + result = TRUE; memcpy( &payload, message->payload, sizeof( DG_CMD_DIALYSATE_HEATING_PARAMS_T ) ); setDialysateHeatingParameters( payload );