Index: firmware/App/Controllers/DrainPump.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Controllers/DrainPump.c (.../DrainPump.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -79,6 +79,9 @@ #define DRAIN_PUMP_CURRENT_OUT_OF_RANGE_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Drain pump current out of range timeout in milliseconds. #define DRAIN_PUMP_DIR_OF_RANGE_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Drain pump direction out of range timeout in milliseconds. #define DRAIN_PUMP_FORWARD_DIR 0 ///< Drain pump forward direction. +#define DRAIN_PUMP_DIR_BIT_MASK 0x80 ///< Drain pump direction bit clear mask. +#define DRAIN_PUMP_DIR_ERROR_CNT_BIT_MASK 0x3F ///< Drain pump direction error count bit mask. +#define DRAIN_PUMP_DIR_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Drain pump direction hall sensor FPGA error time out in milliseconds. /// Enumeration of drain pump states. typedef enum DrainPump_States @@ -177,6 +180,9 @@ initPersistentAlarm( ALARM_ID_DRAIN_PUMP_OFF_FAULT, SAFETY_SHUTDOWN_TIMEOUT, SAFETY_SHUTDOWN_TIMEOUT ); initPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_CURRENT_OUT_OF_RANGE, DRAIN_PUMP_CURRENT_OUT_OF_RANGE_TIMEOUT_MS, DRAIN_PUMP_CURRENT_OUT_OF_RANGE_TIMEOUT_MS ); initPersistentAlarm( ALARM_ID_DG_DRAIN_PUMP_DIRECTION_INVALID, DRAIN_PUMP_DIR_OF_RANGE_TIMEOUT_MS, DRAIN_PUMP_DIR_OF_RANGE_TIMEOUT_MS ); + + initFPGAPersistentAlarm( FPGA_PERS_ERROR_DRAIN_PUMP_DIR_HALL_SENSOR, ALARM_ID_DG_DRAIN_PUMP_DIRECTION_FPGA_FAULT, + DRAIN_PUMP_DIR_FPGA_ERROR_TIMEOUT_MS, DRAIN_PUMP_DIR_FPGA_ERROR_TIMEOUT_MS ); } /*********************************************************************//** @@ -349,14 +355,22 @@ U16 fpgaADCSpeedCount = getFPGADrainPumpSpeed(); U16 fpgaADCCurrentCount = getFPGADrainPumpCurrentFeedback(); F32 currentA = getDrainPumpMeasuredCurrentA(); + U32 dirHallSensorErrorCount = (U32)( getFPGADrainPumpDirection() & DRAIN_PUMP_DIR_ERROR_CNT_BIT_MASK ); drainPumpMeasuredRPM.data = ( DRAIN_PUMP_OFF_RPM_ADC_COUNT == fpgaADCSpeedCount ? 0 : (U32)( RPM_CONVERSION_COEFF / (F32)fpgaADCSpeedCount ) ); drainPumpMeasuredCurrentA.data = (F32)fpgaADCCurrentCount * CURRENT_CONVERSION_COEFF; - drainPumpMeasuredDir.data = ( (U32)getFPGADrainPumpDirection() & 0x40 ) >> 7; + drainPumpMeasuredDir.data = ( (U32)getFPGADrainPumpDirection() & DRAIN_PUMP_DIR_BIT_MASK ) >> SHIFT_BITS_BY_7; #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRAIN_PUMP_MONITOR ) != SW_CONFIG_ENABLE_VALUE ) #endif { +#ifndef _RELEASE_ + if ( ( getSoftwareConfigStatus( SW_CONFIG_ENABLE_V3_SYSTEM ) != SW_CONFIG_ENABLE_VALUE ) && ( getCurrentOperationMode() != DG_MODE_INIT ) ) +#endif + { + checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_DRAIN_PUMP_DIR_HALL_SENSOR, dirHallSensorErrorCount ); + } + switch( drainPumpState ) { case DRAIN_PUMP_OFF_STATE: Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -54,11 +54,13 @@ #define LOAD_CELL_PRIMARY_BACKUP_MAX_ALLOWED_DRIFT_GRAMS 60.0F ///< Load cell primary and backup maximum allowed weight drift in grams. #define DATA_PUBLISH_COUNTER_START_COUNT 0 ///< Data publish counter start count. #define LOAD_CELL_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Load cell FPGA error timeout in milliseconds. +#define LOAD_CELL_FPGA_SIGN_BIT 0x800000 ///< Load cell FPGA sign bit. +#define LOAD_CELL_SIGN_EXTENSION 0xFF800000 ///< Load cell FPGA sign bit extension. /// Load cell data structure. typedef struct { - U32 rawReading; ///< Latest raw load cell reading. + S32 rawReading; ///< Latest raw load cell reading. OVERRIDE_F32_T weight; ///< Latest load cell weight. F32 autoCalOffset; ///< Load cell auto-calibration offset. F32 loadCellVelocity_g_min; ///< Velocity (in g/min) of load cell. @@ -168,16 +170,26 @@ U32 b2 = getFPGALoadCellB2(); // Check error bits from new readings - U32 a1Err = ( a1 >> SHIFT_BITS_BY_31 ) << SHIFT_24_BITS; - U32 a2Err = ( a2 >> SHIFT_BITS_BY_31 ) << SHIFT_16_BITS_FOR_WORD_SHIFT; - U32 b1Err = ( b1 >> SHIFT_BITS_BY_31 ) << SHIFT_8_BITS_FOR_BYTE_SHIFT; + U32 a1Err = ( a1 >> SHIFT_BITS_BY_31 ); + U32 a2Err = ( a2 >> SHIFT_BITS_BY_31 ); + U32 b1Err = ( b1 >> SHIFT_BITS_BY_31 ); U32 b2Err = ( b2 >> SHIFT_BITS_BY_31 ); - loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].rawReading = ( 0 == a1Err ? a1 & MASK_OFF_U32_MSB : loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].rawReading ); - loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading = ( 0 == a2Err ? a2 & MASK_OFF_U32_MSB : loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading ); - loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].rawReading = ( 0 == b1Err ? b1 & MASK_OFF_U32_MSB : loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].rawReading ); - loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading = ( 0 == b2Err ? b2 & MASK_OFF_U32_MSB : loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading ); + U32 a1Sign = ( ( a1 & MASK_OFF_U32_MSB ) & LOAD_CELL_FPGA_SIGN_BIT ) >> SHIFT_BITS_BY_23; + U32 a2Sign = ( ( a2 & MASK_OFF_U32_MSB ) & LOAD_CELL_FPGA_SIGN_BIT ) >> SHIFT_BITS_BY_23; + U32 b1Sign = ( ( b1 & MASK_OFF_U32_MSB ) & LOAD_CELL_FPGA_SIGN_BIT ) >> SHIFT_BITS_BY_23; + U32 b2Sign = ( ( b2 & MASK_OFF_U32_MSB ) & LOAD_CELL_FPGA_SIGN_BIT ) >> SHIFT_BITS_BY_23; + S32 a1Signed = (S32)( 1 == a1Sign ? ( a1 & MASK_OFF_U32_MSB ) | LOAD_CELL_SIGN_EXTENSION : ( a1 & MASK_OFF_U32_MSB ) ); + S32 a2Signed = (S32)( 1 == a2Sign ? ( a2 & MASK_OFF_U32_MSB ) | LOAD_CELL_SIGN_EXTENSION : ( a2 & MASK_OFF_U32_MSB ) ); + S32 b1Signed = (S32)( 1 == b1Sign ? ( b1 & MASK_OFF_U32_MSB ) | LOAD_CELL_SIGN_EXTENSION : ( b1 & MASK_OFF_U32_MSB ) ); + S32 b2Signed = (S32)( 1 == b2Sign ? ( b2 & MASK_OFF_U32_MSB ) | LOAD_CELL_SIGN_EXTENSION : ( b2 & MASK_OFF_U32_MSB ) ); + + loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].rawReading = ( 0 == a1Err ? a1Signed : loadcells[ LOAD_CELL_RESERVOIR_1_PRIMARY ].rawReading ); + loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading = ( 0 == a2Err ? a2Signed : loadcells[ LOAD_CELL_RESERVOIR_1_BACKUP ].rawReading ); + loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].rawReading = ( 0 == b1Err ? b1Signed : loadcells[ LOAD_CELL_RESERVOIR_2_PRIMARY ].rawReading ); + loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading = ( 0 == b2Err ? b2Signed : loadcells[ LOAD_CELL_RESERVOIR_2_BACKUP ].rawReading ); + checkFPGAPersistentAlarms( FPGA_PERS_ERROR_LOAD_CELL_A1_B1_SENSORS, getFPGAADC1ErrorCount(), getFPGAADC1ReadCount() ); checkFPGAPersistentAlarms( FPGA_PERS_ERROR_LOAD_CELL_A2_B2_SENSORS, getFPGAADC2ErrorCount(), getFPGAADC2ReadCount() ); Index: firmware/App/Controllers/Pressures.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Controllers/Pressures.c (.../Pressures.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -37,12 +37,14 @@ // ********** private definitions ********** -#define PUMP_PRESSURE_ZERO 777 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors. -#define PUMP_PRESSURE_PSIA_PER_COUNT 0.06434F ///< PSIA per ADC count conversion factor for pump in/out pressure sensors. +#define PUMP_PRESSURE_ZERO 759 ///< ADC counts equivalent to 0 PSI for pump in/out pressure sensors. +#define PUMP_PRESSURE_PSIA_PER_COUNT 0.06583F ///< PSIA per ADC count conversion factor for pump in/out pressure sensors. +#define PUMP_V3_PRESSURE_ZERO 782 ///< Beta ADC counts equivalent to 0 psi for pump in/out pressure sensors. +#define PUMP_V3_PRESSURE_PSIA_PER_COUNT 0.065359F ///< Beta PSIA ADC count conversion factor for pump in/out pressure sensors. #define PUMP_PRESSURE_PSIA_TO_PSI_OFFSET 14.7F ///< Subtract this offset to convert PSIA to PSI. #define ONE_BAR_TO_PSI_CONVERSION 14.5F ///< 1 bar to 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 ONE_BAR_TO_MILLI_BAR 1000 ///< 1 bar to milli-bar conversion. +#define COUNTS_TO_MILLI_BAR 100 ///< Counts to milli-bar conversion. #define PRESSURE_SAMPLES_TO_AVERAGE ( 200 / TASK_PRIORITY_INTERVAL ) ///< Averaging pressure data over the reporting interval. #define PRESSURE_AVERAGE_MULTIPLIER ( 1.0F / (F32)PRESSURE_SAMPLES_TO_AVERAGE ) ///< Optimization - multiplying is faster than dividing. @@ -301,15 +303,28 @@ static PRESSURE_STATE_T handlePressuresContReadState( void ) { PRESSURE_STATE_T result = PRESSURE_CONTINUOUS_READ_STATE; + U32 zeroPressureOffset = PUMP_PRESSURE_ZERO; + F32 count2PressureConv = PUMP_PRESSURE_PSIA_PER_COUNT; U08 sensorId; F32 pressureReading; BOOL isPressureOutOfRange; +#ifndef _RELEASE_ + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_V3_SYSTEM ) ) + { + if ( getCurrentOperationMode() != DG_MODE_INIT ) + { + zeroPressureOffset = PUMP_V3_PRESSURE_ZERO; + count2PressureConv = PUMP_V3_PRESSURE_PSIA_PER_COUNT; + } + } +#endif + // Update sums for pressure average calculations - msrdPressureSum[ PRESSURE_SENSOR_RO_PUMP_INLET ] += (S32)getIntADCReading( INT_ADC_RO_PUMP_INLET_PRESSURE ) - PUMP_PRESSURE_ZERO; - msrdPressureSum[ PRESSURE_SENSOR_RO_PUMP_OUTLET ] += (S32)getIntADCReading( INT_ADC_RO_PUMP_OUTLET_PRESSURE ) - PUMP_PRESSURE_ZERO; - msrdPressureSum[ PRESSURE_SENSOR_DRAIN_PUMP_INLET ] += (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_INLET_PRESSURE ) - PUMP_PRESSURE_ZERO; - msrdPressureSum[ PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ] += (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE ) - PUMP_PRESSURE_ZERO; + msrdPressureSum[ PRESSURE_SENSOR_RO_PUMP_INLET ] += (S32)getIntADCReading( INT_ADC_RO_PUMP_INLET_PRESSURE ) - zeroPressureOffset; + msrdPressureSum[ PRESSURE_SENSOR_RO_PUMP_OUTLET ] += (S32)getIntADCReading( INT_ADC_RO_PUMP_OUTLET_PRESSURE ) - zeroPressureOffset; + msrdPressureSum[ PRESSURE_SENSOR_DRAIN_PUMP_INLET ] += (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_INLET_PRESSURE ) - zeroPressureOffset; + msrdPressureSum[ PRESSURE_SENSOR_DRAIN_PUMP_OUTLET ] += (S32)getIntADCReading( INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE ) - zeroPressureOffset; msrdPressureSum[ PRESSURE_SENSOR_BAROMETRIC ] += (S32)( getFPGABaroPressure() & MASK_OFF_U32_MSB ); // Check if a new calibration is available @@ -337,7 +352,7 @@ case PRESSURE_SENSOR_RO_PUMP_OUTLET: case PRESSURE_SENSOR_DRAIN_PUMP_OUTLET: case PRESSURE_SENSOR_DRAIN_PUMP_INLET: - pressureBeforeCal = ( adcSum * PUMP_PRESSURE_PSIA_PER_COUNT ) - baroPressure; + pressureBeforeCal = ( adcSum * count2PressureConv ) - baroPressure; pressures[ sensorId ].data = getCalibrationAppliedPressure( sensorId, pressureBeforeCal ); msrdPressureSum[ sensorId ] = 0; break; Index: firmware/App/Controllers/TemperatureSensors.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Controllers/TemperatureSensors.c (.../TemperatureSensors.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -293,10 +293,10 @@ tempSensors[ TEMPSENSORS_TRIMMER_HEATER_INTERNAL ].maxAllowedTemp = HEATERS_INTERNAL_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; // FPGA board temperature conversion coefficient - tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].conversionCoeff = 503.975 / (F32)BITS_12_FULL_SCALE; + tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].conversionCoeff = 503.975F / (F32)BITS_12_FULL_SCALE; tempSensors[ TEMPSENSORS_FPGA_BOARD_SENSOR ].maxAllowedTemp = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; - F32 conversionCoeff = 1.0 / 13584.0; + F32 conversionCoeff = 1.0F / 13584.0F; // Board temperature sensors conversion coefficient tempSensors[ TEMPSENSORS_LOAD_CELL_A1_B1 ].conversionCoeff = conversionCoeff; tempSensors[ TEMPSENSORS_LOAD_CELL_A1_B1 ].maxAllowedTemp = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; @@ -771,7 +771,7 @@ // Wrong sensor was called, raise an alarm SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED, sensorIndex ); // Wrong sensor, return temperature to be -1 - temperature = -1.0; + temperature = -1.0F; break; } Index: firmware/App/Controllers/Thermistors.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Controllers/Thermistors.c (.../Thermistors.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -61,7 +61,7 @@ OVERRIDE_F32_T temperatureValue; ///< Thermistor temperature value. } THERMISTOR_T; -static THERMISTORS_EXEC_STATES_T thermistorsExecState = THERMISTORS_EXEC_STATE_START_STATE; ///< Thermistors exec state. +static THERMISTORS_EXEC_STATES_T thermistorsExecState; ///< Thermistors exec state. static THERMISTOR_T thermistorsStatus[ NUM_OF_THERMISTORS ]; ///< Thermistors array. static OVERRIDE_U32_T thermistorsPublishInterval = { THERMISTORS_DATA_PUBLISH_INTERVAL, THERMISTORS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Thermistors publish time interval override. @@ -225,8 +225,14 @@ // If time has elapsed to read the ADCs, read them all if ( ++adcReadCounter >= THERMISTORS_ADC_READ_INTERVAL ) { +#ifndef _RELEASE_ + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_V3_SYSTEM ) ) + { + thermistorsStatus[ THERMISTOR_ONBOARD_NTC ].rawADCRead = getIntADCReading( INT_ADC_BOARD_THERMISTOR ); + } +#endif // Get all the raw readings in ADC - thermistorsStatus[ THERMISTOR_ONBOARD_NTC ].rawADCRead = getIntADCReading( INT_ADC_BOARD_THERMISTOR ); + thermistorsStatus[ THERMISTOR_ONBOARD_NTC ].rawADCRead = getFPGAOnBoardThermistorCount(); thermistorsStatus[ THERMISTOR_POWER_SUPPLY_1 ].rawADCRead = getIntADCReading( INT_ADC_POWER_SUPPLY_1_THERMISTOR ); thermistorsStatus[ THERMISTOR_POWER_SUPPLY_2 ].rawADCRead = getIntADCReading( INT_ADC_POWER_SUPPLY_2_THERMISTOR ); Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -re7aa2915e4a36b3622f0f75ed7ecd48796fc8649 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision e7aa2915e4a36b3622f0f75ed7ecd48796fc8649) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -753,10 +753,11 @@ { if ( FALSE == didFMPCheckStart ) { // When FMP check starts, set baseline weight of reservoir we are filling - didFMPCheckStart = TRUE; - reservoirBaseWeight = getReservoirWeight( getInactiveReservoir() ); + didFMPCheckStart = TRUE; + reservoirBaseWeight = getReservoirWeight( getInactiveReservoir() ); } - integratedVolumeML += getMeasuredROFlowRateWithConcPumpsLPM() * ML_PER_LITER * FLOW_INTEGRATOR; + + integratedVolumeML += getMeasuredROFlowRateWithConcPumpsLPM() * ML_PER_LITER * FLOW_INTEGRATOR; } usedAcidVolumeML.data += getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ) * FLOW_INTEGRATOR; Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -872,7 +872,7 @@ SELF_TEST_STATUS_T result; // check FPGA reported correct ID - /*if ( FPGA_EXPECTED_ID == fpgaHeader.fpgaId ) + if ( FPGA_EXPECTED_ID == fpgaHeader.fpgaId ) { // Check FPGA compatibility w/ firmware if ( DG_FPGA_COMPATIBILITY_REV == fpgaSensorReadings.fpgaCompatibilityRev ) @@ -889,9 +889,9 @@ { result = SELF_TEST_STATUS_FAILED; SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_FPGA_POST_TEST_FAILED, (U32)fpgaHeader.fpgaId ) - }*/ + } - return SELF_TEST_STATUS_PASSED; //result; + return result; } /*********************************************************************//** @@ -2506,4 +2506,17 @@ return fpgaSensorReadings.fpgaDrainPumpDirection; } +/*********************************************************************//** + * @brief + * The getFPGAOnBoardThermistorCount function returns the onboard thermistor + * count. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return onboard thermistor + *************************************************************************/ +U16 getFPGAOnBoardThermistorCount( void ) +{ + return fpgaSensorReadings.fpgaOnBoardThermistor; +} + /**@}*/ Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r0c296cef29037819be204c45a23d4d38a52b2718 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 0c296cef29037819be204c45a23d4d38a52b2718) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -181,6 +181,8 @@ U16 getFPGADrainPumpSpeedFeedback( void ); U08 getFPGADrainPumpDirection( void ); +U16 getFPGAOnBoardThermistorCount( void ); + /**@}*/ #endif Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r7eb83ebaf0db7cfef5d055ae0277b50e474ab016 -r984bfc66d6fe07456671a1039472356871f0161c --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 7eb83ebaf0db7cfef5d055ae0277b50e474ab016) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 984bfc66d6fe07456671a1039472356871f0161c) @@ -1294,11 +1294,11 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof( U32 ) ) + if ( message->hdr.payloadLen == sizeof( BOOL ) ) { BOOL startingHeater; - memcpy( &startingHeater, message->payload, sizeof( U32 ) ); + memcpy( &startingHeater, message->payload, sizeof( BOOL ) ); if ( TRUE == startingHeater ) {