Index: NVDataMgmt.c =================================================================== diff -u -r9192f93aa3c31e33271632a0d3ecac299a5b33e0 -r7ed3b20ebef00822d18c70394a91e33798fb63d3 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 9192f93aa3c31e33271632a0d3ecac299a5b33e0) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 7ed3b20ebef00822d18c70394a91e33798fb63d3) @@ -141,6 +141,20 @@ #define DEFAULT_RSRVR_TEMP_TAU_C_PER_MIN -0.512F ///< Reservoir temperature time constant C/min. #define DEFAULT_UF_TEMP_TAU_C_PER_MIN -4.565F ///< Ultrafilter temperature time constant C/min. #define DEFAULT_UF_VOLUME_ML 700 ///< Ultrafilter volume in milliliters. + +#define DEFAULT_FILL_1251_1_ACID_SNSR_US_PER_CM 11518.05F ///< Fill acid 1251_1 acid sensor conductivity uS/cm. +#define DEFAULT_FILL_1251_1_BIC_SNSR_US_PER_CM 13616.23F ///< Fill acid 1251_1 bicarb sensor conductivity uS/cm. +#define DEFAULT_FILL_2251_0_ACID_SNSR_US_PER_CM 11645.05F ///< Fill acid 2251_0 acid sensor conductivity uS/cm. +#define DEFAULT_FILL_2251_0_BIC_SNSR_US_PER_CM 13734.88F ///< Fill acid 2251_0 bicarb sensor conductivity uS/cm. +#define DEFAULT_FILL_3251_9_ACID_SNSR_US_PER_CM 11773.1F ///< Fill acid 3251_9 acid sensor conductivity uS/cm. +#define DEFAULT_FILL_3251_9_BIC_SNSR_US_PER_CM 13854.49F ///< Fill acid 3251_9 bicarb sensor conductivity uS/cm. + +#define DEFAULT_ACID_TEST_1251_1_US_PER_CM 12118.71F ///< Acid test acid 1251_1 acid conductivity uS/cm. +#define DEFAULT_ACID_TEST_2251_0_US_PER_CM 12252.1F ///< Acid test acid 2251_0 acid conductivity uS/cm. +#define DEFAULT_ACID_TEST_3251_9_US_PER_CM 12386.57F ///< Acid acid 3251_9 acid conductivity uS/cm. + +#define DEFAULT_BIC_TEST_ACID_SNSR_US_PER_CM 0.0F ///< Bicarb test acid sensor conductivity uS/cm. +#define DEFAULT_BIC_TEST_BIC_SNSR_US_PER_CM 6820.91F ///< Bicarb test bicarb sensor conductivity uS/cm. #endif /// NVDataMgmt self-test states enumeration. @@ -429,6 +443,10 @@ static DG_HEATERS_INFO_GROUP_T dgHeatersInfoGroup; ///< DG heaters info structure (including padding and final CRC). #ifndef _RELEASE_ static DG_SW_CONFIG_GROUP_T dgSWConfigGroup; ///< DG Software configurations structure(including padding and final CRC). + +// TODO this is temporary until it is added to the cal records +static DG_CHEMICALS_FILL_COND_CAL_RECORD_T tempChemsRecordRemove; +// TODO this is temporary until it is added to the cal records #endif // Process records specifications @@ -572,6 +590,7 @@ static BOOL isDGFanRecordValid( DG_FAN_CAL_RECORD_T* record ); static BOOL isDGAccelerometerSensorRecordValid( DG_ACCEL_SENSOR_CAL_RECORD_T* record ); static BOOL isDGHeatingCalRecordValid( DG_HEATING_CAL_RECORD_T* record ); +static BOOL isDGFillConductiviesRecordValid( DG_ACID_BICARB_FILL_COND_VALUES_T* record, DG_FILL_COND_OPS_T test, DG_ACID_TYPES_T acidType ); #endif #ifdef _HD_ @@ -1179,6 +1198,22 @@ isNVDataInvalid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.filtersRecord.ultraFilter.calibrationTime ? TRUE : FALSE ); break; + case GET_CAL_FILL_CONDUCTIVITIES_RECORD: + nvDataStartPtr = (U08*)&tempChemsRecordRemove.fillCondValues; + nvDataLength = sizeof( tempChemsRecordRemove.fillCondValues ); + /* TODO un-comment when it is added to calibration record + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_1251_1 ][ FILL_COND_NORMAL_OP ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_1251_1 ][ FILL_COND_ACID_TEST ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_1251_1 ][ FILL_COND_BICARB_TEST ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_2251_0 ][ FILL_COND_NORMAL_OP ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_2251_0 ][ FILL_COND_ACID_TEST ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_2251_0 ][ FILL_COND_BICARB_TEST ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_3251_9 ][ FILL_COND_NORMAL_OP ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_3251_9 ][ FILL_COND_ACID_TEST ].calibrationTime ? TRUE : FALSE ); + isNVDataInvalid |= ( 0 == tempChemsRecordRemove.fillCondValues[ ACID_08_3251_9 ][ FILL_COND_BICARB_TEST ].calibrationTime ? TRUE : FALSE ); + */ + break; + case GET_INF_HEATERS_RECORD: nvDataStartPtr = (U08*)&dgHeatersInfoGroup.dgHeatersInfo; nvDataLength = sizeof( dgHeatersInfoGroup.dgHeatersInfo ); @@ -3061,11 +3096,25 @@ if ( ( FALSE == isCalRecordValid ) || ( recordCRC != dgCalibrationRecord.crc ) ) { isCalRecordValid = FALSE; - dgCalibrationRecord.crc = recordCRC; + dgCalibrationRecord.crc = crc16 ( (U08*)&dgCalibrationRecord, sizeof( DG_CALIBRATION_RECORD_T ) - sizeof( U16 ) ); activateAlarmNoData( ALARM_ID_DG_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID ); } + + // TODO add this check to the calibration records + // This record is not part of the calibration record yet + U08 j; + DG_CHEMICALS_FILL_COND_CAL_RECORD_T* acidBicarbTempRecord = &tempChemsRecordRemove; + for ( i = 0; i < NUM_OF_ACID_TYPE; i++ ) + { + for ( j = 0; j < NUM_OF_FILL_COND_TEST; j++ ) + { + isDGFillConductiviesRecordValid( &acidBicarbTempRecord->fillCondValues[ i ][ j ], (DG_FILL_COND_OPS_T)j, (DG_ACID_TYPES_T)i ); + } + } + // TODO add this check to the calibration records. this is temporary + return isCalRecordValid; } @@ -3459,6 +3508,97 @@ return status; } + +/*********************************************************************//** + * @brief + * The isDGFillConductiviesRecordValid function checks whether fill conductivity + * record is valid or not. + * @details Inputs: none + * @details Outputs: none + * @param record: DG_ACID_BICARB_FILL_COND_VALUES_T pointer containing the + * fill conductivities of acid and bicrab + * @param operation which is the type fill operation that is check (e.g. normal ops) + * @param acidType whcih is the type of acid that its values are checked (e.g. 0-1251-1) + * @return TRUE if the record is valid otherwise FALSE + *************************************************************************/ +static BOOL isDGFillConductiviesRecordValid( DG_ACID_BICARB_FILL_COND_VALUES_T* record, DG_FILL_COND_OPS_T operation, DG_ACID_TYPES_T acidType ) +{ + BOOL status = TRUE; + U16 calcCRC = crc16 ( (U08*)record, sizeof(DG_ACID_BICARB_FILL_COND_VALUES_T) - sizeof(U16) ); + U16 recordCRC = record->crc; + + if ( calcCRC != recordCRC ) + { + F32 acidSensorCond = 0.0F; + F32 bicarbSensorCond = 0.0F; + + switch ( operation ) + { + case FILL_COND_NORMAL_OP: + switch ( acidType ) + { + case ACID_08_1251_1: + acidSensorCond = DEFAULT_FILL_1251_1_ACID_SNSR_US_PER_CM; + bicarbSensorCond = DEFAULT_FILL_1251_1_BIC_SNSR_US_PER_CM; + break; + + case ACID_08_2251_0: + acidSensorCond = DEFAULT_FILL_2251_0_ACID_SNSR_US_PER_CM; + bicarbSensorCond = DEFAULT_FILL_2251_0_BIC_SNSR_US_PER_CM; + break; + + case ACID_08_3251_9: + acidSensorCond = DEFAULT_FILL_3251_9_ACID_SNSR_US_PER_CM; + bicarbSensorCond = DEFAULT_FILL_3251_9_BIC_SNSR_US_PER_CM; + break; + + default: + // TODO software fault + break; + } + break; + + case FILL_COND_ACID_TEST: + switch ( acidType ) + { + case ACID_08_1251_1: + acidSensorCond = DEFAULT_ACID_TEST_1251_1_US_PER_CM; + bicarbSensorCond = DEFAULT_ACID_TEST_1251_1_US_PER_CM; + break; + + case ACID_08_2251_0: + acidSensorCond = DEFAULT_ACID_TEST_2251_0_US_PER_CM; + bicarbSensorCond = DEFAULT_ACID_TEST_2251_0_US_PER_CM; + break; + + case ACID_08_3251_9: + acidSensorCond = DEFAULT_ACID_TEST_3251_9_US_PER_CM; + bicarbSensorCond = DEFAULT_ACID_TEST_3251_9_US_PER_CM; + break; + + default: + // TODO software fault + break; + } + break; + + case FILL_COND_BICARB_TEST: + acidSensorCond = DEFAULT_BIC_TEST_ACID_SNSR_US_PER_CM; + bicarbSensorCond = DEFAULT_BIC_TEST_BIC_SNSR_US_PER_CM; + break; + } + + // CRC did not pass so set all values to default + record->acidConduSPerCM = acidSensorCond; + record->bicarbConduSPerCM = bicarbSensorCond; + record->crc = crc16 ( (U08*)record, sizeof(DG_ACID_BICARB_FILL_COND_VALUES_T) - sizeof(U16) ); + + // Set the to FALSE since the record is not valid + status = FALSE; + } + + return status; +} #endif #ifdef _HD_ /*********************************************************************//** Index: NVDataMgmtDGRecords.h =================================================================== diff -u -re607e6333b39b9768de5185f8ef7e146a60485f4 -r7ed3b20ebef00822d18c70394a91e33798fb63d3 --- NVDataMgmtDGRecords.h (.../NVDataMgmtDGRecords.h) (revision e607e6333b39b9768de5185f8ef7e146a60485f4) +++ NVDataMgmtDGRecords.h (.../NVDataMgmtDGRecords.h) (revision 7ed3b20ebef00822d18c70394a91e33798fb63d3) @@ -91,6 +91,7 @@ GET_CAL_FANS_RECORD, ///< Get fans calibration record. GET_CAL_PRE_RO_PURGE_VOLUME_RECORD, ///< Get pre RO purge volume record. GET_CAL_FILTERS_RECORD, ///< Get filters record. + GET_CAL_FILL_CONDUCTIVITIES_RECORD, ///< Get fill conductivities record. GET_INF_HEATERS_RECORD, ///< Get heaters information form the the last run. GET_SYS_RECORD, ///< Get system record. GET_SRV_RECORD, ///< Get service record. @@ -237,6 +238,24 @@ NUM_OF_USAGE_INFO_ITEMS ///< Number of usage info items. } DG_USAGE_INFO_ITEMS_T; +/// DG acid types +typedef enum dg_acid_types +{ + ACID_08_1251_1 = 0, ///< Acid type 08-1251-1. + ACID_08_2251_0, ///< Acid type 08-2251-0. + ACID_08_3251_9, ///< ACid type 08-3251-9. + NUM_OF_ACID_TYPE ///< Number of acid types. +} DG_ACID_TYPES_T; + +/// DG fill conductivity tests +typedef enum dg_conductivity_ops +{ + FILL_COND_NORMAL_OP = 0, ///< Fill conductivity normal operation. + FILL_COND_ACID_TEST, ///< Fill conductivity acid test. + FILL_COND_BICARB_TEST, ///< Fill conductivity bicarb test. + NUM_OF_FILL_COND_TEST ///< Number of fill conductivity test. +} DG_FILL_COND_OPS_T; + #pragma pack(push, 1) /// Polynomial calibration structure typedef struct @@ -453,6 +472,21 @@ U16 crc; ///< CRC for the reservoirs and UF record. } DG_HEATING_CAL_RECORD_T; +/// DG acid and bicarb fill conductivity values +typedef struct +{ + F32 acidConduSPerCM; ///< Acid conductivity uS/cm. + F32 bicarbConduSPerCM; ///< Bicarb conductivity uS/cm. + U32 calibrationTime; ///< Calibration time. + U16 crc; ///< CRC for the acid/bicarb fill conductivity values. +} DG_ACID_BICARB_FILL_COND_VALUES_T; + +/// DG acid and bicarb fill conductivity record +typedef struct +{ + DG_ACID_BICARB_FILL_COND_VALUES_T fillCondValues[ NUM_OF_ACID_TYPE ][ NUM_OF_FILL_COND_TEST ]; ///< Acid and bicarb fill conductivity values. +} DG_CHEMICALS_FILL_COND_CAL_RECORD_T; + /// DG systems record structure typedef struct { @@ -489,7 +523,6 @@ U08 swConfigs[ NUM_OF_SW_CONFIGS ]; ///< Software configurations. } DG_SW_CONFIG_RECORD_T; #endif - #pragma pack(pop) /**@}*/