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_ /*********************************************************************//**