Index: Accel.c =================================================================== diff -u -rb6bd8f77198ac10c9aaee6b83e41abe415edbd19 -racf23cc2f7d60625777583d890f0f1c936e7c3bf --- Accel.c (.../Accel.c) (revision b6bd8f77198ac10c9aaee6b83e41abe415edbd19) +++ Accel.c (.../Accel.c) (revision acf23cc2f7d60625777583d890f0f1c936e7c3bf) @@ -94,7 +94,7 @@ static HD_ACCELEROMETER_SENSOR_CAL_RECORD_T accelSensorCalRecord; ///< HD accelerometer calibration record. #endif #ifdef _DG_ -static DG_ACCELEROMETER_SENSOR_CAL_RECORD_T accelSensorCalRecord; ///< DG accelerometer calibration record. +static DG_ACCEL_SENSOR_CAL_RECORD_T accelSensorCalRecord; ///< DG accelerometer calibration record. #endif // ********** private function prototypes ********** @@ -598,7 +598,7 @@ #endif #ifdef _DG_ - DG_ACCELEROMETER_SENSOR_CAL_RECORD_T calData = getDGAccelerometerSensorCalibrationRecord(); + DG_ACCEL_SENSOR_CAL_RECORD_T calData = getDGAccelerometerSensorCalibrationRecord(); #endif // Check if the calibration data that was received from NVDataMgmt is legitimate @@ -664,7 +664,7 @@ HD_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getHDAccelerometerSensorCalibrationRecord(); #endif #ifdef _DG_ - DG_ACCELEROMETER_SENSOR_CAL_RECORD_T cal = getDGAccelerometerSensorCalibrationRecord(); + DG_ACCEL_SENSOR_CAL_RECORD_T cal = getDGAccelerometerSensorCalibrationRecord(); #endif BOOL calStatus = processCalibrationData(); Index: NVDataMgmt.c =================================================================== diff -u -rff0f72c6ed19d5b475cde4cb14c021dc1c550e18 -racf23cc2f7d60625777583d890f0f1c936e7c3bf --- NVDataMgmt.c (.../NVDataMgmt.c) (revision ff0f72c6ed19d5b475cde4cb14c021dc1c550e18) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision acf23cc2f7d60625777583d890f0f1c936e7c3bf) @@ -291,7 +291,7 @@ DG_BICARB_CONCENTRATES_RECORD_T bicarbConcentratesRecord; ///< DG bicarb concentrates. DG_FILTERS_CAL_RECORD_T filtersRecord; ///< DG filters. DG_FANS_CAL_RECORD_T fansRecord; ///< DG fans. - DG_ACCELEROMETER_SENSOR_CAL_RECORD_T accelerometerSensorCalRecord; ///< DG accelerometer sensor. + DG_ACCEL_SENSOR_CAL_RECORD_T accelerometerSensorCalRecord; ///< DG accelerometer sensor. } DG_CALIBRATION_GROUPS_T; /// DG calibration records structure @@ -526,9 +526,6 @@ // Record check helper functions static BOOL areRecordsValid( void ); static BOOL isPolynomialRecordValid( POLYNOMIAL_CAL_PAYLOAD_T* record ); -#ifdef _DG -static void setRsrvdCalibrationRecordsToZero( void ); -#endif #ifdef _DG_ static BOOL isDGSystemRecordValid( void ); @@ -545,7 +542,7 @@ static BOOL isDGBicarbConcentrateRecordValid( DG_BICARB_CONCENTRATE_T* record ); static BOOL isDGFilterRecordValid( DG_FILTER_CAL_RECORD_T* record ); static BOOL isDGFanRecordValid( DG_FAN_CAL_RECORD_T* record ); -static BOOL isDGAccelerometerSensorRecordValid( DG_ACCELEROMETER_SENSOR_CAL_RECORD_T* record ); +static BOOL isDGAccelerometerSensorRecordValid( DG_ACCEL_SENSOR_CAL_RECORD_T* record ); #endif #ifdef _HD_ @@ -1244,7 +1241,7 @@ /*********************************************************************//** * @brief - * The getCalibrationRecord2Driver function copies the requested non-volatile + * The getNVRecord2Driver function copies the requested non-volatile * data into the provided buffer by the caller. The function then checks if * the non-volatile data is valid. If the data is not valid, it raises the * provided alarm by the caller. @@ -1253,17 +1250,19 @@ * @param nvData the non-volatile data to be copied * @param bufferAddress the address of the provided buffer by the caller * @param bufferLength the length of the provided buffer by the caller + * @param numOfSnsrs2Check the number of sensors to check in a array of sensors called * @param nvAlarm the corresponding alarm of the non-volatile data to be raised * if the data is not valid * @return TRUE if the non-volatile data is valid otherwise, FALSE *************************************************************************/ -BOOL getCalibrationRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, ALARM_ID_T nvAlarm ) +BOOL getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ) { // TODO NOTE: This function is the replacement to the processCalibrationData functions in the drivers // Also, remove the get functions in this driver once this function is used instead of get functions in the NVDataMgmt.h U08 i; U08* nvDataStartPtr = 0; BOOL isNVDataValid = FALSE; + U32 nvDataLength = 0; switch ( nvData ) { @@ -1282,19 +1281,69 @@ #endif #ifdef _DG_ + case GET_CAL_PRESSURE_SENOSRS: + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord ); + for ( i = 0; i < numOfSnsrs2Check; i++ ) + isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord.pressureSensors[ i ].calibrationTime ? FALSE : TRUE ); + break; + case GET_CAL_LOAD_CELL_SENSORS: + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord ); + for ( i = 0; i < numOfSnsrs2Check; i++ ) + isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord.loadCells[ i ].calibrationTime ? FALSE : TRUE ); break; + + case GET_CAL_FLOW_SENSORS: + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord ); + for ( i = 0; i < numOfSnsrs2Check; i++ ) + isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord.flowSensors[ i ].calibrationTime ? FALSE : TRUE ); + break; + + case GET_CAL_ACID_CONCENTREATES: + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord ); + for ( i = 0; i < numOfSnsrs2Check; i++ ) + isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord.acidConcentrate[ i ].calibrationTime ? FALSE : TRUE ); + break; + + case GET_CAL_BICARB_CONCENTRATES: + nvDataStartPtr = (U08*)&dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord; + nvDataLength = sizeof( dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord ); + for ( i = 0; i < numOfSnsrs2Check; i++ ) + isNVDataValid |= ( 0 == dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord.bicarbConcentrate[ i ].calibrationTime ? FALSE : TRUE ); + break; + + case GET_INF_HEATERS_RECORD: + nvDataStartPtr = (U08*)&dgHeatersInfoGroup.dgHeatersInfo; + nvDataLength = sizeof( dgHeatersInfoGroup.dgHeatersInfo ); + break; #endif } - // Copy the data into the provided buffer - memcpy( bufferAddress, nvDataStartPtr, bufferLength ); + // Make sure the provided buffer length is >= NV Data Length in the NV data management so the memory of the other variables is not + // overridden. + if ( bufferLength >= nvDataLength ) + { + // Copy the data into the provided buffer + memcpy( bufferAddress, nvDataStartPtr, bufferLength ); + } #ifndef SKIP_CAL_CHECK // Check if the non-volatile data is valid and if not raise the alarm if ( FALSE == isNVDataValid ) { - activateAlarmNoData( nvAlarm ); + // If no alarm has been provided to raise, just set the variable as TRUE + if ( ALARM_ID_NO_ALARM == nvAlarm ) + { + isNVDataValid = TRUE; + } + else + { + activateAlarmNoData( nvAlarm ); + } } #else isNVDataValid = TRUE; @@ -1319,45 +1368,6 @@ /*********************************************************************//** * @brief - * The getDGFlowSensorsCalibrationRecord function returns the DG flow - * sensors record. - * @details Inputs: none - * @details Outputs: none - * @return DG flow sensors calibration record - *************************************************************************/ -DG_FLOW_SENSORS_CAL_RECORD_T getDGFlowSensorsCalibrationRecord( void ) -{ - return dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord; -} - -/*********************************************************************//** - * @brief - * The getDGLoadCellsCalibrationRecord function returns the DG load cells - * record. - * @details Inputs: none - * @details Outputs: none - * @return DG load cells calibration record - *************************************************************************/ -DG_LOAD_CELLS_CAL_RECORD_T getDGLoadCellsCalibrationRecord( void ) -{ - return dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord; -} - -/*********************************************************************//** - * @brief - * The getDGTemperatureSensorsCalibrationRecord function returns the DG - * temperature sensors calibration record. - * @details Inputs: none - * @details Outputs: none - * @return DG temperature sensors calibration record - *************************************************************************/ -DG_TEMP_SENSORS_CAL_RECORD_T getDGTemperatureSensorsCalibrationRecord( void ) -{ - return dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord; -} - -/*********************************************************************//** - * @brief * The getDGConducitivitySensorsCalibrationRecord function returns the DG * conductivity sensors calibration record. * @details Inputs: none @@ -1448,32 +1458,6 @@ /*********************************************************************//** * @brief - * The getDGAcidConcentratesRecord function returns the DG acid concentrates - * record. - * @details Inputs: none - * @details Outputs: none - * @return DG acid concentrates record - *************************************************************************/ -DG_ACID_CONCENTRATES_RECORD_T getDGAcidConcentratesRecord( void ) -{ - return dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord; -} - -/*********************************************************************//** - * @brief - * The getDGBicarbConcentratesRecord function returns the DG bicarb concentrates - * record. - * @details Inputs: none - * @details Outputs: none - * @return DG bicarb concentrates record - *************************************************************************/ -DG_BICARB_CONCENTRATES_RECORD_T getDGBicarbConcentratesRecord( void ) -{ - return dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord; -} - -/*********************************************************************//** - * @brief * The getDGFiltersRecord function returns the DG filters record. * @details Inputs: none * @details Outputs: none @@ -1504,9 +1488,9 @@ * @details Outputs: none * @return DG accelerometer sensor calibration record *************************************************************************/ -DG_ACCELEROMETER_SENSOR_CAL_RECORD_T getDGAccelerometerSensorCalibrationRecord( void ) +DG_ACCEL_SENSOR_CAL_RECORD_T getDGAccelerometerSensorCalibrationRecord( void ) { - return dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorsCalRecord; + return dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord; } /*********************************************************************//** @@ -1801,18 +1785,6 @@ /*********************************************************************//** * @brief - * The getHeatersInfoReocrd returns the DG heaters info. - * @details Inputs: none - * @details Outputs: none - * @return DG heaters information record - ******************************************************************/ -DG_HEATERS_RECORD_T getHeatersInfoReocrd( void ) -{ - return dgHeatersInfoGroup.dgHeatersInfo; -} - -/*********************************************************************//** - * @brief * The setHeatersInfoRecord sets a queue job to write the DG heaters info * back to the RTC RAM. * @details Inputs: none @@ -3139,10 +3111,12 @@ if ( calcCRC != recordCRC ) { #ifdef _DG_ - alarm = ALARM_ID_DG_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID; + alarm = ALARM_ID_DG_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID; + dgCalibrationRecord.crc = calcCRC; #endif #ifdef _HD_ - alarm = ALARM_ID_HD_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID; + alarm = ALARM_ID_HD_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID; + hdCalibrationRecord.crc = calcCRC; #endif activateAlarmNoData( alarm ); status = FALSE; @@ -3188,54 +3162,7 @@ return status; } -#ifdef _DG_ -/*********************************************************************//** - * @brief - * The setRsrvdCalibrationRecordsToZero function sets the calibration - * records reserved spaces to 0. This is to make sure they are not set - * to NaN. - * @details Inputs: none - * @details Outputs: none - * @return none - *************************************************************************/ -static void setRsrvdCalibrationRecordsToZero( void ) -{ - U32 i; - POLYNOMIAL_CAL_PAYLOAD_T* record; - // NOTE: the size of the reserved spaces in each calibration record do not have #define - // because they are based on assumptions and they may be reduced. - // Get the calibration record of the hardware (i.e. pressure sensor) - DG_PRES_SENSORS_CAL_RECORD_T* pressure = &dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord; - for ( i = 0; i < 6; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->reservedSpace[ i ]; - memset( record, 0x0, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) ); - } - - DG_FLOW_SENSORS_CAL_RECORD_T* flow = &dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord; - for ( i = 0; i < 3; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&flow->reservedSpace[ i ]; - memset( record, 0x0, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) ); - } - - DG_TEMP_SENSORS_CAL_RECORD_T* temperature = &dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord; - for ( i = 0; i < 5; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->reservedSpace[ i ]; - memset( record, 0x0, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) ); - } - - DG_COND_SENSORS_CAL_RECORD_T* conductivity = &dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord; - for ( i = 0; i < 2; i++ ) - { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&conductivity->reservedSpace[ i ]; - memset( record, 0x0, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) ); - } -} -#endif - #ifdef _DG_ /*********************************************************************//** * @brief @@ -3315,8 +3242,21 @@ U32 i; POLYNOMIAL_CAL_PAYLOAD_T* record; BOOL isHardwareRecordValid = TRUE; - BOOL isCalRecordValid = TRUE; + BOOL isCalRecordValid = TRUE; + // Create a benign polynomial calibration record. This record is used to + // clear the reserved calibration record. The reserved spaces are not used + // but this will prevent those records to be nan or a random number. + POLYNOMIAL_CAL_PAYLOAD_T tempRecord; + tempRecord.fourthOrderCoeff = RECORD_FOURTH_ORDER_COEFF; + tempRecord.thirdOrderCoeff = RECORD_THIRD_ORDER_COEFF; + tempRecord.secondOrderCoeff = RECORD_SECOND_ORDER_COEFF; + tempRecord.gain = RECORD_DEFAULT_GAIN; + tempRecord.offset = RECORD_DEFAULT_OFFSET; + tempRecord.calibrationTime = RECORD_DEFAULT_TIME; + // Recalculate the CRC with the default values + tempRecord.crc = crc16 ( (U08*)&tempRecord, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) - sizeof(U16) ); + // Get the calibration record of the hardware (i.e. pressure sensor) DG_PRES_SENSORS_CAL_RECORD_T* pressure = &dgCalibrationRecord.dgCalibrationGroups.presSensorsCalRecord; // The ones that are an array, are looped through @@ -3330,128 +3270,144 @@ // 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 ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } + for ( i = 0; i < 6; i++ ) + // Benign the pressures reserved spaces + memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); + DG_FLOW_SENSORS_CAL_RECORD_T* flow = &dgCalibrationRecord.dgCalibrationGroups.flowSensorsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_FLOW_SENSORS; i++ ) { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&flow->flowSensors[ i ]; + record = (POLYNOMIAL_CAL_PAYLOAD_T*)&flow->flowSensors[ i ]; isHardwareRecordValid = isPolynomialRecordValid( record ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } + for ( i = 0; i < 3; i++ ) + // Benign the the flow sensors reserved spaces + memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&flow->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); + DG_LOAD_CELLS_CAL_RECORD_T* load = &dgCalibrationRecord.dgCalibrationGroups.loadCellsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_LOAD_CELLS; i++ ) { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&load->loadCells[ i ]; + record = (POLYNOMIAL_CAL_PAYLOAD_T*)&load->loadCells[ i ]; isHardwareRecordValid = isPolynomialRecordValid( record ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } DG_TEMP_SENSORS_CAL_RECORD_T* temperature = &dgCalibrationRecord.dgCalibrationGroups.tempSensorsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_TEMP_SENSORS; i++ ) { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; + record = (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->tempSensors[ i ]; isHardwareRecordValid = isPolynomialRecordValid( record ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } + for ( i = 0; i < 5; i++ ) + // Benign the temperature sensors reserved spaces + memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&temperature->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); + DG_COND_SENSORS_CAL_RECORD_T* cond = &dgCalibrationRecord.dgCalibrationGroups.condSensorsCalRecord; for ( i = 0; i < NUM_OF_CAL_DATA_COND_SENSORS; i++ ) { - record = (POLYNOMIAL_CAL_PAYLOAD_T*)&cond->condSensors[ i ]; + record = (POLYNOMIAL_CAL_PAYLOAD_T*)&cond->condSensors[ i ]; isHardwareRecordValid = isPolynomialRecordValid( record ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } + for ( i = 0; i < 2; i++ ) + // Benign the conductivity sensors reserved spaces + memcpy( (POLYNOMIAL_CAL_PAYLOAD_T*)&cond->reservedSpace[ i ], &tempRecord, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); + DG_CONC_PUMPS_CAL_RECORD_T* concPump = &dgCalibrationRecord.dgCalibrationGroups.concentratePumpsRecord; for ( i = 0; i < NUM_OF_CAL_DATA_DG_CONC_PUMPS; i++ ) { isHardwareRecordValid = isDGConcPumpRecordValid( &concPump->concentratePumps[ i ] ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } - DG_DRAIN_PUMP_CAL_RECORD_T* drainPump = &dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord; - isCalRecordValid = isDGDrainPumpRecordValid( drainPump ) != TRUE ? FALSE : isCalRecordValid; - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_DRAIN_PUMP_CAL_RECORD_T* drainPump = &dgCalibrationRecord.dgCalibrationGroups.drainPumpRecord; + isHardwareRecordValid = isDGDrainPumpRecordValid( drainPump ) != TRUE ? FALSE : isCalRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_RO_PUMP_CAL_RECORD_T* roPump = &dgCalibrationRecord.dgCalibrationGroups.roPumpRecord; - isHardwareRecordValid = isDGROPumpRecordValid( roPump ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_RO_PUMP_CAL_RECORD_T* roPump = &dgCalibrationRecord.dgCalibrationGroups.roPumpRecord; + isHardwareRecordValid = isDGROPumpRecordValid( roPump ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; DG_PRE_RO_PURGE_VOLUME_T* preROPurgeVolume = &dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord; - isHardwareRecordValid = isDGPreROPurgeVolumeRecordValid( preROPurgeVolume ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isHardwareRecordValid = isDGPreROPurgeVolumeRecordValid( preROPurgeVolume ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_DRAIN_LINE_VOLUME_T* drainLineVol = &dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord; - isHardwareRecordValid = isDGDrainLineVolRecordValid( drainLineVol ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_DRAIN_LINE_VOLUME_T* drainLineVol = &dgCalibrationRecord.dgCalibrationGroups.drainLineVolumeRecord; + isHardwareRecordValid = isDGDrainLineVolRecordValid( drainLineVol ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; DG_RESERVOIR_VOLUME_RECORD_T* reservoirVol = &dgCalibrationRecord.dgCalibrationGroups.reservoirVolumesRecord; for ( i = 0; i < NUM_OF_CAL_DATA_RSRVRS; i++ ) { isHardwareRecordValid = isDGReservoirVolRecordValid( &reservoirVol->reservoir[ i ] ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } DG_GENERIC_VOLUME_RECORD_T* genericVol = &dgCalibrationRecord.dgCalibrationGroups.genericVolumeRecord; for ( i = 0; i < 4; i++ ) { isHardwareRecordValid = isDGGenericVolRecordValid( &genericVol->genericVolume[ i ] ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } DG_ACID_CONCENTRATES_RECORD_T* acidConc = &dgCalibrationRecord.dgCalibrationGroups.acidConcentratesRecord; for ( i = 0; i < NUM_OF_CAL_DATA_ACID_CONCENTRATES; i++ ) { isHardwareRecordValid = isDGAcidConcentrateRecordValid( &acidConc->acidConcentrate[ i ] ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } DG_BICARB_CONCENTRATES_RECORD_T* bicarbConc = &dgCalibrationRecord.dgCalibrationGroups.bicarbConcentratesRecord; for ( i = 0; i < NUM_OF_CAL_DATA_BICARB_CONCENTRATES; i++ ) { isHardwareRecordValid = isDGBicarbConcentrateRecordValid( &bicarbConc->bicarbConcentrate[ i ] ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; } - DG_FILTER_CAL_RECORD_T* roFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.roFilter; - isHardwareRecordValid = isDGFilterRecordValid( roFilter ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_FILTER_CAL_RECORD_T* roFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.roFilter; + isHardwareRecordValid = isDGFilterRecordValid( roFilter ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_FILTER_CAL_RECORD_T* ultraFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.ultraFilter; - isHardwareRecordValid = isDGFilterRecordValid( ultraFilter ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_FILTER_CAL_RECORD_T* ultraFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.ultraFilter; + isHardwareRecordValid = isDGFilterRecordValid( ultraFilter ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_FILTER_CAL_RECORD_T* sedimentFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.sedimentFilter; - isHardwareRecordValid = isDGFilterRecordValid( sedimentFilter ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_FILTER_CAL_RECORD_T* sedimentFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.sedimentFilter; + isHardwareRecordValid = isDGFilterRecordValid( sedimentFilter ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_FILTER_CAL_RECORD_T* carbonFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonFilter; - isHardwareRecordValid = isDGFilterRecordValid( carbonFilter ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_FILTER_CAL_RECORD_T* carbonFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonFilter; + isHardwareRecordValid = isDGFilterRecordValid( carbonFilter ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_FILTER_CAL_RECORD_T* carbonPolishFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonPolishFilter; - isHardwareRecordValid = isDGFilterRecordValid( carbonPolishFilter ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_FILTER_CAL_RECORD_T* carbonPolishFilter = &dgCalibrationRecord.dgCalibrationGroups.filtersRecord.carbonPolishFilter; + isHardwareRecordValid = isDGFilterRecordValid( carbonPolishFilter ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_FANS_CAL_RECORD_T* fan = &dgCalibrationRecord.dgCalibrationGroups.fansRecord; - isHardwareRecordValid = isDGFanRecordValid( &fan->fan1 ); + DG_FANS_CAL_RECORD_T* fan = &dgCalibrationRecord.dgCalibrationGroups.fansRecord; + isHardwareRecordValid = isDGFanRecordValid( &fan->fan1 ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - isHardwareRecordValid = isDGFanRecordValid( &fan->fan2 ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + isHardwareRecordValid = isDGFanRecordValid( &fan->fan2 ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; - DG_ACCELEROMETER_SENSOR_CAL_RECORD_T* accelerometer = &dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord; - isHardwareRecordValid = isDGAccelerometerSensorRecordValid( accelerometer ); - isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; + DG_ACCEL_SENSOR_CAL_RECORD_T* accelerometer = &dgCalibrationRecord.dgCalibrationGroups.accelerometerSensorCalRecord; + isHardwareRecordValid = isDGAccelerometerSensorRecordValid( accelerometer ); + isCalRecordValid = isCalRecordValid == FALSE ? FALSE : isHardwareRecordValid; // 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 ) { - U16 finalCRC = crc16 ( (U08*)&dgCalibrationRecord, sizeof(DG_CALIBRATION_RECORD_T) - sizeof(U16) ); + U16 finalCRC = crc16 ( (U08*)&dgCalibrationRecord, sizeof(DG_CALIBRATION_RECORD_T) - sizeof(U16) ); dgCalibrationRecord.crc = finalCRC; } @@ -3799,10 +3755,10 @@ * @param record: DG_ACCELEROMETER_SENSOR_CAL_RECORD_T pointer * @return TRUE if the record is valid otherwise FALSE *************************************************************************/ -static BOOL isDGAccelerometerSensorRecordValid( DG_ACCELEROMETER_SENSOR_CAL_RECORD_T* record ) +static BOOL isDGAccelerometerSensorRecordValid( DG_ACCEL_SENSOR_CAL_RECORD_T* record ) { BOOL status = TRUE; - U16 calcCRC = crc16 ( (U08*)record, sizeof(DG_ACCELEROMETER_SENSOR_CAL_RECORD_T) - sizeof(U16) ); + U16 calcCRC = crc16 ( (U08*)record, sizeof(DG_ACCEL_SENSOR_CAL_RECORD_T) - sizeof(U16) ); U16 recordCRC = record->crc; if ( calcCRC != recordCRC ) @@ -3812,7 +3768,7 @@ record->accelYOffset = RECORD_DEFAULT_OFFSET; record->accelZOffset = RECORD_DEFAULT_OFFSET; record->calibrationTime = RECORD_DEFAULT_TIME; - record->crc = crc16 ( (U08*)record, sizeof(DG_ACCELEROMETER_SENSOR_CAL_RECORD_T) - sizeof(U16) ); + record->crc = crc16 ( (U08*)record, sizeof(DG_ACCEL_SENSOR_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid status = FALSE; Index: NVDataMgmt.h =================================================================== diff -u -rd2ff6db64d23836f7e649c7c13240c3c93a8b5aa -racf23cc2f7d60625777583d890f0f1c936e7c3bf --- NVDataMgmt.h (.../NVDataMgmt.h) (revision d2ff6db64d23836f7e649c7c13240c3c93a8b5aa) +++ NVDataMgmt.h (.../NVDataMgmt.h) (revision acf23cc2f7d60625777583d890f0f1c936e7c3bf) @@ -92,12 +92,9 @@ BOOL isNewCalibrationRecordAvailable( void ); -BOOL getCalibrationRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, ALARM_ID_T nvAlarm ); +BOOL getNVRecord2Driver( NV_DATA_T nvData, U08* bufferAddress, U32 bufferLength, U08 numOfSnsrs2Check, ALARM_ID_T nvAlarm ); #ifdef _DG_ -DG_PRES_SENSORS_CAL_RECORD_T getDGPressureSensorsCalibrationRecord( void ); -DG_FLOW_SENSORS_CAL_RECORD_T getDGFlowSensorsCalibrationRecord( void ); -DG_LOAD_CELLS_CAL_RECORD_T getDGLoadCellsCalibrationRecord( void ); DG_TEMP_SENSORS_CAL_RECORD_T getDGTemperatureSensorsCalibrationRecord( void ); DG_COND_SENSORS_CAL_RECORD_T getDGConducitivitySensorsCalibrationRecord( void ); DG_RO_PUMP_CAL_RECORD_T getDGROPumpRecord( void ); @@ -106,17 +103,14 @@ DG_DRAIN_LINE_VOLUME_T getDGDrainLineVolumeRecord( void ); DG_PRE_RO_PURGE_VOLUME_T getDGPreROPurgeVolumeRecord( void ); DG_RESERVOIR_VOLUME_RECORD_T getDGReservoirsVolumeRecord( void ); -DG_ACID_CONCENTRATES_RECORD_T getDGAcidConcentratesRecord( void ); -DG_BICARB_CONCENTRATES_RECORD_T getDGBicarbConcentratesRecord( void ); DG_FILTERS_CAL_RECORD_T getDGFiltersRecord( void ); DG_FANS_CAL_RECORD_T getDGFansRecord( void ); -DG_ACCELEROMETER_SENSOR_CAL_RECORD_T getDGAccelerometerSensorCalibrationRecord( void ); +DG_ACCEL_SENSOR_CAL_RECORD_T getDGAccelerometerSensorCalibrationRecord( void ); DG_SYSTEM_RECORD_T getDGSystemRecord( void ); DG_SERVICE_RECORD_T getDGServiceRecord( void ); DG_SCHEDULED_RUN_RECORD_T getDGScheduledRunsRecord( void ); BOOL setWaterConsumption ( U32 liters ); U32 getWaterConsumption ( void ); -DG_HEATERS_RECORD_T getHeatersInfoReocrd( void ); BOOL setHeatersInfoRecord( U08 *addressPtr ); #endif #ifdef _HD_ @@ -134,8 +128,8 @@ U32 getTreatmentTime ( void ); #endif -BOOL writeLogData ( LOG_DATA_T* data ); -BOOL readLogData ( READ_DATA_T* buffer, U32 length ); +BOOL writeLogData( LOG_DATA_T* data ); +BOOL readLogData( READ_DATA_T* buffer, U32 length ); // From Dialin BOOL getCalibrationRecord( void ); Index: NVDataMgmtDGRecords.h =================================================================== diff -u -rff0f72c6ed19d5b475cde4cb14c021dc1c550e18 -racf23cc2f7d60625777583d890f0f1c936e7c3bf --- NVDataMgmtDGRecords.h (.../NVDataMgmtDGRecords.h) (revision ff0f72c6ed19d5b475cde4cb14c021dc1c550e18) +++ NVDataMgmtDGRecords.h (.../NVDataMgmtDGRecords.h) (revision acf23cc2f7d60625777583d890f0f1c936e7c3bf) @@ -37,7 +37,16 @@ /// DG available NV data to get typedef enum dg_nv_commands { - GET_CAL_LOAD_CELL_SENSORS = 0, ///< Get load cell sensors calibration data. + GET_CAL_PRESSURE_SENOSRS = 0, ///< Get pressure sensors calibration data. + GET_CAL_LOAD_CELL_SENSORS, ///< Get load cell sensors calibration data. + GET_CAL_FLOW_SENSORS, ///< Get flow sensors calibration data. + GET_CAL_ACID_CONCENTREATES, ///< Get acid concentrates calibration data. + GET_CAL_BICARB_CONCENTRATES, ///< Get bicarb concentrates calibration data. + GET_INF_HEATERS_RECORD, ///< Get heaters information form the the last run. + GET_MFG_RECORD, ///< Get manufacturing record. + GET_SYS_RECORD, ///< Get system record. + GET_SRV_RECORD, ///< Get service record. + GET_SRR_RECORD, ///< Get scheduled runs record. NUM_OF_NV_DG_DATA ///< Number of non-volatile data. } NV_DATA_T; @@ -359,7 +368,7 @@ F32 accelZOffset; ///< DG accelerometer Z axis offset. U32 calibrationTime; ///< Calibration time. U16 crc; ///< CRC for the DG accelerometer sensor. -} DG_ACCELEROMETER_SENSOR_CAL_RECORD_T; +} DG_ACCEL_SENSOR_CAL_RECORD_T; /// DG systems record structure typedef struct