Index: firmware/App/Services/NVRecordsDD.c =================================================================== diff -u -rb50ce33669efe6dfcf5f8a211c78a6c2c309adf3 -rac72b3fa86015b2c60c7687a4597dd4ae5c24dc8 --- firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision b50ce33669efe6dfcf5f8a211c78a6c2c309adf3) +++ firmware/App/Services/NVRecordsDD.c (.../NVRecordsDD.c) (revision ac72b3fa86015b2c60c7687a4597dd4ae5c24dc8) @@ -63,6 +63,7 @@ #define DEFAULT_UF_TEMP_TAU_C_PER_MIN -0.6F ///< Ultrafilter temperature time constant C/min. #define DEFAULT_UF_VOLUME_ML 700 ///< Ultrafilter volume in milliliters. #define DEFAULT_BLOOD_LEAK_SET_POINT 20 ///< Blood leak default set point. +#define DEFAULT_CONDUCTIVITY_COEFFICIENT 0.0F ///< Default Conductivity Coefficient Value #define MAX_NUM_OF_WRITE_TRIES 3U ///< Max number of write tries. @@ -110,6 +111,13 @@ { CRITICAL_DATA_TYPE_U32, { {.uInt=0}, {.uInt=1}, {.uInt=0} } }, ///< INSTIT_PARAM_DIALYSATE_POST_TREAT_DRAIN_OPTION { CRITICAL_DATA_TYPE_U32, { {.uInt=0}, {.uInt=2}, {.uInt=2} } }, ///< INSTIT_PARAM_BICARB_POST_TREAT_DRAIN_OPTION }; + +/// Institutional Additional parameter properties including data type, range limits and default values. +static const INSTIT_PARAMS_PROPERTIES_T INSTIT_ADDITIONAL_PROP[ NUM_OF_INSTIT_ADDITIONAL ] = +{ + // type min max default + { CRITICAL_DATA_TYPE_U32, { {.uInt=0}, {.uInt=0}, {.uInt=0} } }, ///< INSTIT_ADDITIONAL_PARAM +}; #pragma pack(push, 1) // ********** DD record structures ********** @@ -213,17 +221,23 @@ static BOOL isDDSystemRecordValid( void ); static BOOL isDDServiceRecordValid( void ); static BOOL isDDInstitutionalRecordValid( void ); -static BOOL isDDUsageRecordValid( void ); +static BOOL isDDInstitBasicRecordValid( void ); +static BOOL isDDInstitAdvancedRecordValid( void ); +static BOOL isDDInstitAdditionalRecordValid( void ); static BOOL isDDCalibrationRecordValid( void ); static BOOL isDDPumpD12RecordValid( DD_D12_DIALYSATE_PUMP_RECORD_T* record ); static BOOL isDDAcidConcentrateRecordValid( DD_ACID_CONCENTRATE_T* record ); static BOOL isDDBicarbConcentrateRecordValid( DD_BICARB_CONCENTRATE_T* record ); static BOOL isDDAccelerometerSensorRecordValid( DD_ACCEL_SENSOR_CAL_RECORD_T* record ); -static BOOL isDDBloodLeakSesnorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ); +static BOOL isDDBloodLeakSensorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ); +static BOOL isDDConductivitySensorValid( CONDUCTIVITY_COEFFICIENTS_T* record ); +static BOOL isDDUsageRecordValid( void ); static void initDDSystemRecord( void ); static void initDDServiceRecord( void ); -static void initDDInstitutionalRecord( void ); +static void initDDInstitBasicRecord( void ); +static void initDDInstitAdvancedRecord( void ); +static void initDDInstitAdditionalRecord( void ); static void initDDUsageRecord( void ); static void updateRecordPadding( NVM_RECORD_TYPE_T recType ); @@ -473,9 +487,9 @@ // Recalculate the CRC with the default values updateRecordCRC( NVM_SYSTEM_RECORD ); - status = FALSE; - activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_SYSTEM_RECORD_CRC ); + + status = FALSE; } else { @@ -518,10 +532,10 @@ // Recalculate the CRC with the default values updateRecordCRC( NVM_SERVICE_RECORD ); - status = FALSE; - // Service record failure activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_SERVICE_RECORD_CRC ); + + status = FALSE; } return status; @@ -540,60 +554,125 @@ *************************************************************************/ static BOOL isDDInstitutionalRecordValid( void ) { - BOOL status = TRUE; - U16 calcCRC = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord, sizeof( DD_INSTITUTIONAL_RECORD_T ) - sizeof( U16 ) ); - U16 recordCRC = ddInstitutionalGroup.ddInstitutionalRecord.crc; + BOOL isRecordValid = TRUE; + U16 calcCRC = crc16( (U08*)&ddInstitutionalGroup.crc, + sizeof( DD_INSTITUTIONAL_GROUP_T ) - sizeof( U16 ) ); + U16 recordCRC = ddInstitutionalGroup.crc; - if ( calcCRC != recordCRC ) - { - // CRC did not pass so set all values to default - initDDInstitutionalRecord(); + isRecordValid = ( isRecordValid == FALSE ) ? FALSE : isDDInstitBasicRecordValid(); + isRecordValid = ( isRecordValid == FALSE ) ? FALSE : isDDInstitAdvancedRecordValid(); + isRecordValid = ( isRecordValid == FALSE ) ? FALSE : isDDInstitAdditionalRecordValid(); + // If the sub groups failed, they are all updated to their benign values + // so the main CRC of the institutional group is calculated again + if ( ( FALSE == isRecordValid ) || ( calcCRC != recordCRC ) ) + { // Initialize the padding updateRecordPadding( NVM_INSTITUTIONAL_RECORD ); // Recalculate the CRC with the default values updateRecordCRC( NVM_INSTITUTIONAL_RECORD ); - status = FALSE; - - // Institutional record failure is also considered as RTC RAM failure + // // Activate alarm for Institutional record failure activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_INSTITUTIONAL_RECORD_CRC ); + + isRecordValid = FALSE; } + return isRecordValid; +} + +/*********************************************************************//** + * @brief + * The isDDInstitBasicRecordValid function checks the validity of the DD + * basic institutional record. It verifies CRC and updates the record + * with default values if invalid. + * @details \b Alarms: ALARM_ID_DD_NVM_INVALID_INSTIT_BASIC_RECORD_CRC if CRC + * check fails + * @details \b Inputs: ddInstitutionalGroup + * @details \b Outputs: ddInstitutionalGroup + * @return TRUE if the DD Basic Institutional record is valid otherwise FALSE + *************************************************************************/ +static BOOL isDDInstitBasicRecordValid( void ) +{ + BOOL status = TRUE; + U16 calcCRC = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.basicRecord, + sizeof( DD_INSTIT_BASIC_RECORD_T ) - sizeof( U16 ) ); + U16 recordCRC = ddInstitutionalGroup.ddInstitutionalRecord.basicRecord.crc; + + if ( calcCRC != recordCRC ) + { + // CRC did not pass so set all values to default + initDDInstitBasicRecord(); + + // Activate alarm for basic Institutional record failure + activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_INSTIT_BASIC_RECORD_CRC ); + + status = FALSE; + } + return status; } /*********************************************************************//** * @brief - * The isDDUsageRecordValid function checks the validity of the DD - * usage information record. It verifies CRC and updates the record + * The isDDInstitAdvancedRecordValid function checks the validity of the DD + * advanced institutional record. It verifies CRC and updates the record * with default values if invalid. - * @details \b Alarms: ALARM_ID_DD_NVM_INVALID_USAGE_RECORD_CRC if CRC + * @details \b Alarms: ALARM_ID_DD_NVM_INVALID_INSTIT_ADVANCED_RECORD_CRC if CRC * check fails - * @details \b Inputs: ddUsageInfoGroup - * @details \b Outputs: ddUsageInfoGroup - * @return TRUE if the DD usage record is valid otherwise FALSE + * @details \b Inputs: ddInstitutionalGroup + * @details \b Outputs: ddInstitutionalGroup + * @return TRUE if the DD Advanced Institutional record is valid otherwise FALSE *************************************************************************/ -static BOOL isDDUsageRecordValid( void ) +static BOOL isDDInstitAdvancedRecordValid( void ) { BOOL status = TRUE; - U16 calcCRC = crc16( (U08*)&ddUsageInfoGroup.ddUsageInfoRecord, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); - U16 recordCRC = ddUsageInfoGroup.ddUsageInfoRecord.crc; + U16 calcCRC = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord, + sizeof( DD_INSTIT_ADVANCED_RECORD_T ) - sizeof( U16 ) ); + U16 recordCRC = ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.crc; if ( calcCRC != recordCRC ) { // CRC did not pass so set all values to default - initDDUsageRecord(); + initDDInstitAdvancedRecord(); - // Initialize the padding - updateRecordPadding( NVM_USAGE_INFO_RECORD ); + // Activate alarm for advanced Institutional record failure + activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_INSTIT_ADVANCED_RECORD_CRC ); - // Recalculate the CRC with the default values - updateRecordCRC( NVM_USAGE_INFO_RECORD ); status = FALSE; + } - activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_USAGE_RECORD_CRC ); + return status; +} + +/*********************************************************************//** + * @brief + * The isDDInstitAdditionalRecordValid function checks the validity of the DD + * addtional institutional record. It verifies CRC and updates the record + * with default values if invalid. + * @details \b Alarms: ALARM_ID_DD_NVM_INVALID_INSTIT_ADDITIONAL_RECORD_CRC if CRC + * check fails + * @details \b Inputs: ddInstitutionalGroup + * @details \b Outputs: ddInstitutionalGroup + * @return TRUE if the DD Addtional Institutional record is valid otherwise FALSE + *************************************************************************/ +static BOOL isDDInstitAdditionalRecordValid( void ) +{ + BOOL status = TRUE; + U16 calcCRC = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord, + sizeof( DD_INSTIT_ADDITIONAL_RECORD_T ) - sizeof( U16 ) ); + U16 recordCRC = ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord.crc; + + if ( calcCRC != recordCRC ) + { + // CRC did not pass so set all values to default + initDDInstitAdditionalRecord(); + + // Activate alarm for additional Institutional record failure + activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_INSTIT_ADDITIONAL_RECORD_CRC ); + + status = FALSE; } return status; @@ -637,23 +716,23 @@ // valid, the values should be set to benign values. This variable is used to decide // whether a write should be scheduled or not so it should not be overwritten with a TRUE // once a record set it to FALSE - isHardwareRecordValid = isPolynomialRecordValid( record ); + isHardwareRecordValid = isLinearRecordValid( record ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; } DD_TEMP_SENSORS_CAL_RECORD_T* temperature = &ddCalibrationGroup.ddCalibrationRecord.tempSensorsCalRecord; for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; i++ ) { record = (LINEAR_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; - isHardwareRecordValid = isPolynomialRecordValid( record ); + isHardwareRecordValid = isLinearRecordValid( record ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; } DD_CONC_PUMPS_CAL_RECORD_T* concPump = &ddCalibrationGroup.ddCalibrationRecord.concentratePumpsRecord; for ( i = 0; i < NUM_OF_CONCENTRATE_PUMPS; i++ ) { record = (LINEAR_CAL_PAYLOAD_T*)&concPump->concentratePumps[ i ]; - isHardwareRecordValid = isPolynomialRecordValid( record ); + isHardwareRecordValid = isLinearRecordValid( record ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; } @@ -663,7 +742,7 @@ DD_D48_DIALYSATE_PUMP_RECORD_T* d48Pump = &ddCalibrationGroup.ddCalibrationRecord.d48DialysatePumpRecord; record = (LINEAR_CAL_PAYLOAD_T*)&d48Pump->d48DialysatePump; - isHardwareRecordValid = isPolynomialRecordValid( record ); + isHardwareRecordValid = isLinearRecordValid( record ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; DD_ACID_CONCENTRATES_RECORD_T* acidConc = &ddCalibrationGroup.ddCalibrationRecord.acidConcentratesRecord; @@ -685,20 +764,33 @@ isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* bloodLeak = &ddCalibrationGroup.ddCalibrationRecord.bloodLeakSensorCalRecord; - isHardwareRecordValid = isDDBloodLeakSesnorValid( bloodLeak ); + isHardwareRecordValid = isDDBloodLeakSensorValid( bloodLeak ); isCalRecordValid = ( isCalRecordValid == FALSE ) ? FALSE : isHardwareRecordValid; +// CONDUCTIVITY_COEFFICIENTS_T *conductivity = getConductivityCalibrationData(); +// for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) +// { +// isHardwareRecordValid = isDDConductivitySensorValid( &conductivity->condSensors[ i ] ); +// +// if( FALSE == isHardwareRecordValid ) +// { +// setConductivityCalibrationData( &conductivity->condSensors[ i ] ); +// } +// +// activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_CALIBRATION_RECORD_CRC ); +// } + // If the sub groups failed, they are all updated to their benign values // so the main CRC of the calibration group is calculated again if ( ( FALSE == isCalRecordValid ) || ( recordCRC != ddCalibrationGroup.crc ) ) { - isCalRecordValid = FALSE; + isCalRecordValid = FALSE; // Initialize the padding - updateRecordPadding( NVM_USAGE_INFO_RECORD ); + updateRecordPadding( NVM_CALIBRATION_RECORD ); // Recalculate the CRC - ddCalibrationGroup.crc = crc16 ( (U08*)&ddCalibrationGroup, sizeof( DD_CALIBRATION_GROUP_T ) - sizeof( U16 ) ); + updateRecordCRC( NVM_CALIBRATION_RECORD ); activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_CALIBRATION_RECORD_CRC ); } @@ -830,15 +922,15 @@ /*********************************************************************//** * @brief - * The isDDBloodLeakSesnorValid function checks if the blood leak sensor + * The isDDBloodLeakSensorValid function checks if the blood leak sensor * calibration record is valid. It verifies CRC and updates the record * with default values if invalid. * @details \b Inputs: none * @details \b Outputs: none * @param record Pointer to blood leak sensor calibration record to check * @return TRUE if the record is valid otherwise FALSE *************************************************************************/ -static BOOL isDDBloodLeakSesnorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ) +static BOOL isDDBloodLeakSensorValid( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T* record ) { BOOL status = TRUE; U16 calcCRC = crc16 ( (U08*)record, sizeof( DD_BLOOD_LEAK_SENSOR_CAL_RECORD_T ) - sizeof( U16 ) ); @@ -859,6 +951,82 @@ /*********************************************************************//** * @brief + * The isDDConductivitySesnorValid function checks if the conductivity sensor + * calibration record is valid. It verifies CRC and updates the record + * with default values if invalid. + * @details \b Inputs: none + * @details \b Outputs: none + * @param record Pointer to conductivity sensor calibration record to check + * @return TRUE if the record is valid otherwise FALSE + *************************************************************************/ +static BOOL isDDConductivitySensorValid( CONDUCTIVITY_COEFFICIENTS_T* record ) +{ + BOOL status = TRUE; + U16 calcCRC = crc16 ( (U08*)record, sizeof( CONDUCTIVITY_COEFFICIENTS_T ) - sizeof( U16 ) ); + U16 recordCRC = record->crc; + + if ( calcCRC != recordCRC ) + { + record->K_high = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->alpha_high = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->eta_high = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->zeta_high = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->K_low = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->alpha_low = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->eta_low = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->zeta_low = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->beta = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->delta = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->reserved1 = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->reserved2 = DEFAULT_CONDUCTIVITY_COEFFICIENT; + record->calibrationTime = RECORD_DEFAULT_TIME; + record->crc = crc16 ( (U08*)record, + sizeof( CONDUCTIVITY_COEFFICIENTS_T ) - sizeof( U16 ) ); + + // Set the to FALSE since the record is not valid + status = FALSE; + } + + return status; +} + +/*********************************************************************//** + * @brief + * The isDDUsageRecordValid function checks the validity of the DD + * usage information record. It verifies CRC and updates the record + * with default values if invalid. + * @details \b Alarms: ALARM_ID_DD_NVM_INVALID_USAGE_RECORD_CRC if CRC + * check fails + * @details \b Inputs: ddUsageInfoGroup + * @details \b Outputs: ddUsageInfoGroup + * @return TRUE if the DD usage record is valid otherwise FALSE + *************************************************************************/ +static BOOL isDDUsageRecordValid( void ) +{ + BOOL status = TRUE; + U16 calcCRC = crc16( (U08*)&ddUsageInfoGroup.ddUsageInfoRecord, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); + U16 recordCRC = ddUsageInfoGroup.ddUsageInfoRecord.crc; + + if ( calcCRC != recordCRC ) + { + // CRC did not pass so set all values to default + initDDUsageRecord(); + + // Initialize the padding + updateRecordPadding( NVM_USAGE_INFO_RECORD ); + + // Recalculate the CRC with the default values + updateRecordCRC( NVM_USAGE_INFO_RECORD ); + status = FALSE; + + activateAlarmNoData( ALARM_ID_DD_NVM_INVALID_USAGE_RECORD_CRC ); + } + + return status; +} + +/*********************************************************************//** + * @brief * The initDDSystemRecord function initializes the DD system record * with default values. It resets configuration fields and fills * string fields with default characters. @@ -887,7 +1055,7 @@ *************************************************************************/ static void initDDServiceRecord( void ) { - ddServiceGroup.ddServiceRecord.isHDFOnlineFluid = FALSE; + ddServiceGroup.ddServiceRecord.isHDFOnlineFluidAvailable = FALSE; ddServiceGroup.ddServiceRecord.waterRecovery = 0; ddServiceGroup.ddServiceRecord.serviceLoc = 0; ddServiceGroup.ddServiceRecord.lastServiceEpochDate = 0; @@ -897,14 +1065,13 @@ /*********************************************************************//** * @brief - * The initDDInstitutionalRecord function initializes the DD - * institutional record with default values. It sets configuration - * limits, alarm thresholds, and treatment options to default values. + * The initDDInstitBasicRecord function initializes the DD basic + * institutional record with default values. * @details \b Inputs: none * @details \b Outputs: ddInstitutionalGroup.ddInstitutionalRecord * @return none *************************************************************************/ -static void initDDInstitutionalRecord( void ) +static void initDDInstitBasicRecord( void ) { U32 i; @@ -915,19 +1082,54 @@ ddInstitutionalGroup.ddInstitutionalRecord.basicRecord.param[ i ].def = INSTIT_BASIC_PROP[ i ].data.def; } + ddInstitutionalGroup.ddInstitutionalRecord.basicRecord.crc = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.basicRecord, + sizeof( DD_INSTIT_BASIC_RECORD_T ) - sizeof( U16 ) ); +} + +/*********************************************************************//** + * @brief + * The initDDInstitAdvancedRecord function initializes the DD advanced + * institutional record with default values. + * @details \b Inputs: none + * @details \b Outputs: ddInstitutionalGroup.ddInstitutionalRecord + * @return none + *************************************************************************/ +static void initDDInstitAdvancedRecord( void ) +{ + U32 i; + for ( i = FIRST_INSTIT_ADVANCED_PARAM; i < NUM_OF_INSTIT_ADVANCED; i++ ) { ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].min = INSTIT_ADVANCED_PROP[ i ].data.min; ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].max = INSTIT_ADVANCED_PROP[ i ].data.max; ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].def = INSTIT_ADVANCED_PROP[ i ].data.def; } + ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.crc = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord, + sizeof( DD_INSTIT_ADVANCED_RECORD_T ) - sizeof( U16 ) ); +} + +/*********************************************************************//** + * @brief + * The initDDInstitAdditionalRecord function initializes the DD additional + * institutional record with default values. + * @details \b Inputs: none + * @details \b Outputs: ddInstitutionalGroup.ddInstitutionalRecord + * @return none + *************************************************************************/ +static void initDDInstitAdditionalRecord( void ) +{ + U32 i; + for ( i = FIRST_INSTIT_ADDITIONAL_PARAM; i < NUM_OF_INSTIT_ADDITIONAL; i++ ) { - ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].min = INSTIT_ADVANCED_PROP[ i ].data.min; - ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].max = INSTIT_ADVANCED_PROP[ i ].data.max; - ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord.param[ i ].def = INSTIT_ADVANCED_PROP[ i ].data.def; + ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord.param[ i ].min = INSTIT_ADDITIONAL_PROP[ i ].data.min; + ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord.param[ i ].max = INSTIT_ADDITIONAL_PROP[ i ].data.max; + ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord.param[ i ].def = INSTIT_ADDITIONAL_PROP[ i ].data.def; } + + ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord.crc = crc16( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord.additionalRecord, + sizeof( DD_INSTIT_ADDITIONAL_RECORD_T ) - sizeof( U16 ) ); } /*********************************************************************//** @@ -1027,45 +1229,35 @@ switch ( recType ) { case NVM_SYSTEM_RECORD: - { ddSystemGroup.ddSystemRecord.crc = crc16 ( (U08*)&ddSystemGroup.ddSystemRecord, sizeof( DD_SYSTEM_RECORD_T ) - sizeof( U16 ) ); ddSystemGroup.crc = crc16 ( (U08*)&ddSystemGroup, sizeof( DD_SYSTEM_GROUP_T ) - sizeof( U16 ) ); - } - break; + break; + case NVM_SERVICE_RECORD: - { ddServiceGroup.ddServiceRecord.crc = crc16 ( (U08*)&ddServiceGroup.ddServiceRecord, sizeof( DD_SERVICE_RECORD_T ) - sizeof( U16 ) ); ddServiceGroup.crc = crc16 ( (U08*)&ddServiceGroup, sizeof( DD_SERVICE_GROUP_T ) - sizeof( U16 ) ); - } break; + case NVM_CALIBRATION_RECORD: - { ddCalibrationGroup.crc = crc16 ( (U08*)&ddCalibrationGroup, sizeof( DD_CALIBRATION_GROUP_T ) - sizeof( U16 ) ); - } - break; + break; case NVM_INSTITUTIONAL_RECORD: - { - ddInstitutionalGroup.ddInstitutionalRecord.crc = crc16 ( (U08*)&ddInstitutionalGroup.ddInstitutionalRecord, - sizeof( DD_INSTITUTIONAL_RECORD_T ) - sizeof( U16 ) ); - ddInstitutionalGroup.crc = crc16 ( (U08*)&ddInstitutionalGroup, - sizeof( DD_INSTITUTIONAL_GROUP_T ) - sizeof( U16 ) ); - } - break; + ddInstitutionalGroup.crc = crc16 ( (U08*)&ddInstitutionalGroup, + sizeof( DD_INSTITUTIONAL_GROUP_T ) - sizeof( U16 ) ); + break; case NVM_USAGE_INFO_RECORD: - { ddUsageInfoGroup.ddUsageInfoRecord.crc = crc16 ( (U08*)&ddUsageInfoGroup.ddUsageInfoRecord, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); ddUsageInfoGroup.crc = crc16 ( (U08*)&ddUsageInfoGroup, sizeof( DD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); - } - break; + break; default: break; @@ -1181,7 +1373,7 @@ *************************************************************************/ U32 getMinRORejectionRatioInInstitRecordPCT( void ) { - return ddInstitutionalGroup.ddInstitutionalRecord.minRORejectionRatioPCT; +// return ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord[ INSTIT_PARAM_RO_REJECTION_RATIO_ALRAM ].min; } /*********************************************************************//** @@ -1197,7 +1389,7 @@ F32 getMinInletWaterConductivityLimitInstitRecordUSPCM( void ) { - return ddInstitutionalGroup.ddInstitutionalRecord.minInletWaterCondAlarmLimitUSPCM; +// return ddInstitutionalGroup.ddInstitutionalRecord.advancedRecord[ INSTIT_PARAM_INLET_WATER_COND_LOW_ALARM ].min; } /*********************************************************************//** @@ -1284,7 +1476,7 @@ isNVDataInvalid |= ( 0 == ddCalibrationGroup.ddCalibrationRecord.bicarbConcentratesRecord.bicarbConcentrate[ i ].calibrationTime ? TRUE : FALSE ); break; - case NV_DD_DATA_CAL_ACCEL_SENSOR: + case NV_DD_DATA_CAL_ACCELEROMETER_SENSOR: nvDataStartPtr = (U08*)&ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord; isNVDataInvalid = ( 0 == ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord.calibrationTime ? TRUE : FALSE ); break; @@ -1427,7 +1619,7 @@ recTypeGroup = NVM_CALIBRATION_RECORD; break; - case NV_DD_DATA_CAL_ACCEL_SENSOR: + case NV_DD_DATA_CAL_ACCELEROMETER_SENSOR: destPtr = (U08*)&ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord; dataSize = sizeof( ddCalibrationGroup.ddCalibrationRecord.accelerometerSensorCalRecord ); recTypeGroup = NVM_CALIBRATION_RECORD; @@ -1577,7 +1769,7 @@ break; case NVM_INSTITUTIONAL_RECORD: - ddInstitutionalGroup.ddInstitutionalRecord.crc = crc; + ddInstitutionalGroup.crc = crc; break; case NVM_USAGE_INFO_RECORD: