Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -rca391ad263e9e2cd9554c11c8c101d59f133f560 -reaeff603027c54d0be5171d519710942672ef623 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision ca391ad263e9e2cd9554c11c8c101d59f133f560) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision eaeff603027c54d0be5171d519710942672ef623) @@ -7,8 +7,8 @@ * * @file ConductivitySensors.c * -* @author (last) Vinayakam Mani -* @date (last) 18-Sep-2025 +* @author (last) Michael Garthwaite +* @date (last) 14-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 13-Sep-2024 @@ -63,18 +63,18 @@ /// Defined states for the conductivity write transaction. typedef enum Conductvity_States { - CONDUCTIVITY_INIT_STATE = 0, ///< Conductivity sensor write initiate state. - CONDUCTIVITY_READ_DATA_STATE, ///< Conductivity sensor write complete state. + CONDUCTIVITY_INIT_STATE = 0, ///< Conductivity sensor initiate state. + CONDUCTIVITY_READ_DATA_STATE, ///< Conductivity sensor read data state. NUM_OF_CONDUCTIVITY_STATES ///< Number of conductivity write states. } CONDUCTIVITY_STATE_T; /// Conductivity Sensor Status group typedef struct { - F32 rawTemperature; ///< raw Temperature in C from the conductivity sensor. - F32 rawResistance; ///< raw Resistance in Ohms from the conductivity sensor. - F32 calculatedTemperature; - F32 calculatedResistance; + F32 rawTemperature; ///< Raw Temperature in C from the conductivity sensor. + F32 rawResistance; ///< Raw Resistance in kOhms from the conductivity sensor. + F32 calculatedTemperature; ///< Calculated temperature in C. + F32 calculatedResistance; ///< Calculated resistance in Ohms U08 condReadCount; ///< Last conductivity read count. U08 condErrorCount; ///< Last conductivity error count. U08 tempReadCount; ///< Last temperature read count. @@ -109,8 +109,8 @@ static U32 getConductivitySensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ); static U32 getTemperatureSensorReadCount( CONDUCTIVITY_SENSORS_T sensor ); static U32 getTemperatureSensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ); -static BOOL monitorCalDataReads( U32 sensorId ); -static BOOL checkConductivityCoefficientRanges( U32 sensorId ); +static BOOL monitorCalDataReads( CONDUCTIVITY_SENSORS_T sensorId ); +static BOOL checkConductivityCoefficientRanges( CONDUCTIVITY_SENSORS_T sensorId ); static void calculateConductivityUpdatedStandard( CONDUCTIVITY_SENSORS_T sensorNum, BOOL isFPSensor ); static void calculateTemperature( CONDUCTIVITY_SENSORS_T sensorNum ); static void calculateResistance( CONDUCTIVITY_SENSORS_T sensorNum, BOOL isFPSensor ); @@ -124,8 +124,7 @@ *************************************************************************/ void initConductivitySensors( void ) { - /// TODO: Revert back to init state. - currentConductivityState = CONDUCTIVITY_READ_DATA_STATE; + currentConductivityState = CONDUCTIVITY_INIT_STATE; CONDUCTIVITY_SENSORS_T sensor; // Initialize override structures for each conductivity sensor @@ -168,48 +167,19 @@ conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = FALSE; memset( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead, 0 ,sizeof( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead ) ); - // TODO: Remove temp values. Sensors do not have calibrated values. - conductivitySensorCoefficients[ sensor ].K_high = 4.1F; - conductivitySensorCoefficients[ sensor ].alpha_high = 0.02F; - conductivitySensorCoefficients[ sensor ].eta_high = 1.0F; -// conductivitySensorCoefficients[ sensor ].zeta_high = 0.0F; - conductivitySensorCoefficients[ sensor ].K_low = 4.1F; - conductivitySensorCoefficients[ sensor ].alpha_low = 0.02F; - conductivitySensorCoefficients[ sensor ].eta_low = 1.0F; - conductivitySensorCoefficients[ sensor ].zeta_low = -76.4F; - conductivitySensorCoefficients[ sensor ].beta = 0.25F; - conductivitySensorCoefficients[ sensor ].delta = -250.0F; + conductivitySensorCoefficients[ sensor ].K_high = 0.0F; + conductivitySensorCoefficients[ sensor ].alpha_high = 0.0F; + conductivitySensorCoefficients[ sensor ].eta_high = 0.0F; + conductivitySensorCoefficients[ sensor ].zeta_high = 0.0F; + conductivitySensorCoefficients[ sensor ].K_low = 0.0F; + conductivitySensorCoefficients[ sensor ].alpha_low = 0.0F; + conductivitySensorCoefficients[ sensor ].eta_low = 0.0F; + conductivitySensorCoefficients[ sensor ].zeta_low = 0.0F; + conductivitySensorCoefficients[ sensor ].beta = 0.0F; + conductivitySensorCoefficients[ sensor ].delta = 0.0F; conductivitySensorCoefficients[ sensor ].reserved1 = 0.0F; conductivitySensorCoefficients[ sensor ].reserved2 = 0.0F; - // Beta 2 - Unit 04 -// if ( ( P9_COND == sensor ) || ( P18_COND == sensor ) || ( D74_COND == sensor ) ) -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -6.42F; -// } -// else if ( ( D17_COND == sensor ) || ( D27_COND == sensor ) || ( D29_COND == sensor ) ) -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -14.4F; -// } -// else -// { -// conductivitySensorCoefficients[ sensor ].zeta_high = -6.65F; -// } - - // Beta 2 - Unit 05 - if ( ( P9_COND == sensor ) || ( P18_COND == sensor ) || ( D74_COND == sensor ) ) - { - conductivitySensorCoefficients[ sensor ].zeta_high = -28.6F; - } - else if ( ( D17_COND == sensor ) || ( D27_COND == sensor ) || ( D29_COND == sensor ) ) - { - conductivitySensorCoefficients[ sensor ].zeta_high = -38.35F; - } - else - { - conductivitySensorCoefficients[ sensor ].zeta_high = -6.65F; - } - memset( conductivitySensorRevisions[ sensor ].swRev, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); memset( conductivitySensorRevisions[ sensor ].hwRev, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); memset( conductivitySensorRevisions[ sensor ].hwSerial, 0, sizeof( U08 ) * CONDUCTIVITY_CAL_CHAR_LENGTH ); @@ -222,6 +192,9 @@ initFPGAPersistentAlarm( FPGA_PERS_ERROR_D29_COND_SENSOR, ALARM_ID_DD_D29_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_D43_COND_SENSOR, ALARM_ID_DD_D43_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_D74_COND_SENSOR, ALARM_ID_DD_D74_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + initFPGAPersistentAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, ALARM_ID_FP_P9_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + initFPGAPersistentAlarm( FPGA_PERS_ERROR_P18_COND_SENSOR, ALARM_ID_FP_P18_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + } /*********************************************************************//** @@ -383,57 +356,57 @@ // Check which counter, assign it, and assign read bool to TRUE per sensor for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { - if ( FALSE == conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead ) + if ( FALSE == conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead ) { switch( conductivitySensorStatus[ sensor ].calMemCount ) { case CAL_DATA_1: - conductivitySensorCoefficients[ sensor ].K_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].K_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_1 ] = TRUE; break; case CAL_DATA_2: - conductivitySensorCoefficients[ sensor ].alpha_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].alpha_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_2 ] = TRUE; break; case CAL_DATA_3: - conductivitySensorCoefficients[ sensor ].eta_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].eta_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_3 ] = TRUE; break; case CAL_DATA_4: - conductivitySensorCoefficients[ sensor ].zeta_high = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].zeta_high, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_4 ] = TRUE; break; case CAL_DATA_5: - conductivitySensorCoefficients[ sensor ].K_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].K_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_5 ] = TRUE; break; case CAL_DATA_6: - conductivitySensorCoefficients[ sensor ].alpha_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].alpha_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_6 ] = TRUE; break; case CAL_DATA_7: - conductivitySensorCoefficients[ sensor ].eta_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].eta_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_7 ] = TRUE; break; case CAL_DATA_8: - conductivitySensorCoefficients[ sensor ].zeta_low = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].zeta_low, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_8 ] = TRUE; break; case CAL_DATA_9: - conductivitySensorCoefficients[ sensor ].beta = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].beta, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_9 ] = TRUE; break; case CAL_DATA_10: - conductivitySensorCoefficients[ sensor ].delta = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].delta, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_10 ] = TRUE; break; case CAL_DATA_11: - conductivitySensorCoefficients[ sensor ].reserved1 = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].reserved1, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_11 ] = TRUE; break; case CAL_DATA_12: - conductivitySensorCoefficients[ sensor ].reserved2 = (F32)conductivitySensorStatus[ sensor ].calData; + memcpy( &conductivitySensorCoefficients[ sensor ].reserved2, &conductivitySensorStatus[ sensor ].calData, sizeof(U32)); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ CAL_DATA_12 ] = TRUE; break; case SW_REV_LOWER_WORD: @@ -472,6 +445,10 @@ memcpy( ( conductivitySensorRevisions[ sensor ].hwRev + ( LOWER_WORD_SIZE + MID_WORD_SIZE ) ), &conductivitySensorStatus[ sensor ].calData, sizeof( U32 ) ); conductivitySensorStatus[ sensor ].hasCalSlotBeenRead[ HW_SERIAL_UPPER_WORD ] = TRUE; break; + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_SENSOR_CAL_CHECK, sensor ) + break; + } // check if we have finished reading all values. conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = monitorCalDataReads( sensor ); @@ -480,28 +457,43 @@ else { - if ( ( getTestConfigStatus( TEST_CONFIG_FP_DISABLE_CONDUCTIVITY_ALARMS ) == TRUE ) && - ( getTestConfigStatus( TEST_CONFIG_DD_DISABLE_CONDUCTIVITY_ALARMS ) == TRUE ) ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_DISABLE_CONDUCTIVITY_SENSOR_CHECKS ) == TRUE ) { conductivitySensorStatus[ sensor ].calReadComplete = TRUE; } else { conductivitySensorStatus[ sensor ].calReadComplete = checkConductivityCoefficientRanges( sensor ); - } - if ( TRUE == conductivitySensorStatus[ sensor ].calReadComplete ) - { - calResult = TRUE; + // TODO: this retry should be changed to an alarm or fault once we change the functionality of + // BETA 2.0 test config. This is meant to handle the in-between state of FPGA transitioning + // between 2.0 and non-2.0 data structures. + if ( FALSE == conductivitySensorStatus[ sensor ].calReadComplete ) + { + conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead = FALSE; + memset( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead, 0 ,sizeof( conductivitySensorStatus[ sensor ].hasCalSlotBeenRead ) ); + } } } + + // calResult determines if we are done reading calibration data from all sensors. + // each sensor can re-assign it back to false if it is not completely done reading. + if ( TRUE == conductivitySensorStatus[ sensor ].calReadComplete ) + { + calResult = TRUE; + } + else + { + calResult = FALSE; + } } if ( TRUE == calResult ) { // All cal data has been assigned and checks. state = CONDUCTIVITY_READ_DATA_STATE; } + return state; } @@ -536,6 +528,7 @@ calculateConductivityUpdatedStandard( sensor, isFPSensor ); } + return state; } @@ -595,7 +588,7 @@ * @param sensor ID of the conductivity sensor. * @return True if all cal data has been read, false if not. *************************************************************************/ -static BOOL monitorCalDataReads( U32 sensorId ) +static BOOL monitorCalDataReads( CONDUCTIVITY_SENSORS_T sensorId ) { BOOL result = TRUE; CONDUCTIVITY_CAL_IDX_T calIdx; @@ -607,6 +600,7 @@ result = FALSE; } } + return result; } @@ -619,76 +613,76 @@ * @param sensor ID of the conductivity sensor. * @return True if all cal data is in range, false if not. *************************************************************************/ -static BOOL checkConductivityCoefficientRanges( U32 sensorId ) +static BOOL checkConductivityCoefficientRanges( CONDUCTIVITY_SENSORS_T sensorId ) { BOOL result = TRUE; CONDUCTIVITY_CAL_IDX_T idx = CAL_DATA_1; // Check data for high and low ranges. - if( ( conductivitySensorCoefficients[ sensorId ].K_high <= CELL_COEFF_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].K_high >= CELL_COEFF_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].K_high > CELL_COEFF_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].K_high < CELL_COEFF_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_1; } - if( ( conductivitySensorCoefficients[ sensorId ].K_low <= CELL_COEFF_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].K_low >= CELL_COEFF_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].K_low > CELL_COEFF_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].K_low < CELL_COEFF_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_2; } - if( ( conductivitySensorCoefficients[ sensorId ].alpha_high <= TEMPERATURE_CORRECTION_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].alpha_high >= TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].alpha_high > TEMPERATURE_CORRECTION_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].alpha_high < TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_3; } - if( ( conductivitySensorCoefficients[ sensorId ].alpha_low <= TEMPERATURE_CORRECTION_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].alpha_low >= TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].alpha_low > TEMPERATURE_CORRECTION_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].alpha_low < TEMPERATURE_CORRECTION_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_4; } - if( ( conductivitySensorCoefficients[ sensorId ].eta_high <= RESISTANCE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].eta_high >= RESISTANCE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].eta_high > RESISTANCE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].eta_high < RESISTANCE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_5; } - if( ( conductivitySensorCoefficients[ sensorId ].eta_low <= RESISTANCE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].eta_low >= RESISTANCE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].eta_low > RESISTANCE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].eta_low < RESISTANCE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_6; } - if( ( conductivitySensorCoefficients[ sensorId ].zeta_high <= RESISTANCE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].zeta_high >= RESISTANCE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].zeta_high > RESISTANCE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].zeta_high < RESISTANCE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_7; } - if( ( conductivitySensorCoefficients[ sensorId ].zeta_low <= RESISTANCE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].zeta_low >= RESISTANCE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].zeta_low > RESISTANCE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].zeta_low < RESISTANCE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_8; } - if( ( conductivitySensorCoefficients[ sensorId ].beta <= TEMPERATURE_SCALE_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].beta >= TEMPERATURE_SCALE_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].beta > TEMPERATURE_SCALE_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].beta < TEMPERATURE_SCALE_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_9; } - if( ( conductivitySensorCoefficients[ sensorId ].delta <= TEMPERATURE_OFFSET_HIGH_BOUNDS ) && - ( conductivitySensorCoefficients[ sensorId ].delta >= TEMPERATURE_OFFSET_LOW_BOUNDS ) ) + if( ( conductivitySensorCoefficients[ sensorId ].delta > TEMPERATURE_OFFSET_HIGH_BOUNDS ) || + ( conductivitySensorCoefficients[ sensorId ].delta < TEMPERATURE_OFFSET_LOW_BOUNDS ) ) { result = FALSE; idx = CAL_DATA_10; @@ -699,6 +693,7 @@ { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, sensorId, ( U32 )idx ) } + return result; } /*********************************************************************//** @@ -907,6 +902,7 @@ alpha = conductivitySensorCoefficients[ sensorNum ].alpha_high; k = conductivitySensorCoefficients[ sensorNum ].K_high; } + calculateResistance( sensorNum, isFPSensor ); calculateTemperature( sensorNum ); @@ -1050,5 +1046,47 @@ return result; } +/*********************************************************************//** + * @brief + * The testHandleConductivitySensorVersionRequest function sends + * the conductivity sensor version response + * @details \b Inputs: conductivitySensorRevisions[] + * @details \b Outputs: none + * @param message Override message from Dialin which includes an sensor + * ID. + * @return TRUE if response is successful, FALSE if not + *************************************************************************/ +BOOL testHandleConductivitySensorVersionRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + U32 condSensorId = 0; + U32 msgId = 0; + U32 channelId = 0; + if ( message->hdr.payloadLen == sizeof( U32 ) ) + { + CONDUCTIVITY_REVISIONS_T CondVersionRecord; + + memcpy( &condSensorId, &message->payload, sizeof( U32 ) ); + + // Build conductivity version record + if ( condSensorId < LAST_DD_COND_SENSOR ) + { + msgId = MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_RESPONSE; + channelId = COMM_BUFFER_OUT_CAN_DD_BROADCAST; + memcpy( &CondVersionRecord, &conductivitySensorRevisions[ condSensorId ], sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + else + { + msgId = MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_RESPONSE; + channelId = COMM_BUFFER_OUT_CAN_FP_BROADCAST; + memcpy( &CondVersionRecord, &conductivitySensorRevisions[ condSensorId ], sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + result = sendMessage( (MSG_ID_T)msgId, (COMM_BUFFER_T)channelId, (U08*)&CondVersionRecord, sizeof( CONDUCTIVITY_REVISIONS_T ) ); + } + + return result; +} + + /**@}*/