Index: Accel.c =================================================================== diff -u -rb5a078a245783d10796592bd7e96ff36a5fb5a03 -r6e948bace1cb93579a09c9e5571c06ccce29a170 --- Accel.c (.../Accel.c) (revision b5a078a245783d10796592bd7e96ff36a5fb5a03) +++ Accel.c (.../Accel.c) (revision 6e948bace1cb93579a09c9e5571c06ccce29a170) @@ -593,13 +593,15 @@ // then the accelerometer data is not stored in the NV memory or it was corrupted. if ( 0 == calData.calibrationTime ) { +#ifndef SKIP_CAL_CHECK #ifdef _HD_ activateAlarmNoData( ALARM_ID_HD_ACCELEROMETERS_INVALID_CAL_RECORD ); #endif #ifdef _DG_ activateAlarmNoData( ALARM_ID_DG_ACCELEROMETERS_INVALID_CAL_RECORD ); #endif status = FALSE; +#endif } // The calibration data was valid, update the local copy Index: NVDataMgmt.c =================================================================== diff -u -r35a837869c3833e3c80aa7e68d5efcf46f82fdaf -r6e948bace1cb93579a09c9e5571c06ccce29a170 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 35a837869c3833e3c80aa7e68d5efcf46f82fdaf) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 6e948bace1cb93579a09c9e5571c06ccce29a170) @@ -402,6 +402,7 @@ {DG_SCHEDULED_RUNS_START_ADDRESS, sizeof(DG_SCHEDULED_RUNS_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&dgScheduledRunsGroup, (U08*)&dgScheduledRunsGroup.crc} // NVDATAMGMT_SCHEDULER_RECORD }; #endif + #ifdef _HD_ static HD_CALIBRATION_RECORD_T hdCalibrationRecord; ///< HD calibration record structure. static HD_SYSTEM_GROUP_T hdSystemGroup; ///< HD system group structure (including padding and final CRC). @@ -414,6 +415,7 @@ {SERVICE_RECORD_START_ADDRESS, sizeof(HD_SERVICE_GROUP_T), MAX_RTC_RAM_OPS_BUFFER_BYTES, MAX_RTC_RAM_OPS_BUFFER_BYTES, (U08*)&hdServiceGroup, (U08*)&hdServiceGroup.crc}, // NVDATAMGMT_PROCESS_LAST_SERVICE_RECORD }; #endif + static RECORD_JOBS_STATE_T recordToPublish; ///< Record to publish (i.e. calibration, system) static PROCESS_RECORD_STATE_T nvDataMgmtExecProcessRecordState = NVDATAMGMT_PROCESS_RECORD_STATE_IDLE; ///< NVDataMgmt exec process record state. static RECEIVE_RECORD_STATE_T nvDataMgmtExecReceiveRecordState = NVDATAMGMT_RECEIVE_RECORD_IDLE; ///< NVDataMgmt exec receive record state. @@ -527,6 +529,7 @@ static BOOL isDGFanRecordValid( DG_FAN_CAL_RECORD_T* record ); static BOOL isDGAccelerometerSensorRecordValid( DG_ACCELEROMETER_SENSOR_CAL_RECORD_T* record ); #endif + #ifdef _HD_ static BOOL isHDSystemRecordValid( void ); static BOOL isHDServiceRecordValid( void ); @@ -684,6 +687,7 @@ case NVDATAMGMT_SELF_TEST_STATE_READ_LOG_RECORD: nvDataMgmtSelfTestState = handleSelfTestReadLogRecord(); break; + #ifdef _HD_ case NVDATAMGMT_SELF_TEST_STATE_READ_TREATMENT_TIME: nvDataMgmtSelfTestState = handleSelfTestReadHDTreatmentTime(); @@ -694,6 +698,7 @@ nvDataMgmtSelfTestState = handleSelfTestReadDGWaterConsumption(); break; #endif + case NVDATAMGMT_SELF_TEST_STATE_CHECK_CRC: nvDataMgmtSelfTestState = handleSelfTestCheckCRC(); break; @@ -1777,9 +1782,9 @@ NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_SYS_RECORD; BOOL timeoutStatus = didCommandTimeout ( ALARM_ID_NVDATA_EEPROM_OPS_FAILURE, (U08*)&state ); - if ( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmReady || timeoutStatus == TRUE ) + if ( ( Fapi_Status_FsmReady == FAPI_CHECK_FSM_READY_BUSY ) || ( TRUE == timeoutStatus ) ) { - if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + if ( RTC_RAM_STATE_READY == getRTCRAMState() ) { PROCESS_RECORD_SPECS_T specs = RECORDS_SPECS [ NVDATAMGMT_SERVICE_RECORD ]; U32 startAddress = specs.startAddress; @@ -1808,7 +1813,7 @@ NVDATAMGMT_SELF_TEST_STATE_T state = NVDATAMGMT_SELF_TEST_STATE_READ_SERVICE_RECORD; BOOL timeoutStatus = didCommandTimeout ( ALARM_ID_RTC_RAM_OPS_ERROR, (U08*)&state ); - if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE || timeoutStatus == TRUE ) + if ( ( RTC_RAM_STATUS_IDLE == getRTCRAMStatus() ) || ( TRUE == timeoutStatus ) ) { PROCESS_RECORD_SPECS_T specs = RECORDS_SPECS [ NVDATAMGMT_SERVICE_RECORD ]; U08* bufferAddress = specs.structAddressPtr; @@ -1817,7 +1822,7 @@ getDataFromRAM( bufferAddress, maxBufferLength ); #ifdef _DG_ - if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + if ( RTC_RAM_STATE_READY == getRTCRAMState() ) { PROCESS_RECORD_SPECS_T specs = RECORDS_SPECS [ NVDATAMGMT_SCHEDULED_RUNS_RECORD ]; U32 startAddress = specs.startAddress; @@ -1910,10 +1915,10 @@ BOOL timeoutStatus = didCommandTimeout ( ALARM_ID_RTC_RAM_OPS_ERROR, (U08*)&state ); // If the RAM is ready, request a read for water consumption - if ( getRTCRAMStatus() == RTC_RAM_STATUS_IDLE || timeoutStatus == TRUE ) + if ( ( RTC_RAM_STATUS_IDLE == getRTCRAMStatus() ) || ( TRUE == timeoutStatus ) ) { getDataFromRAM ( (U08*)&dgUsageInfoGroup, sizeof(DG_USAGE_INFO_RECORD_T) ); - if ( getRTCRAMState() == RTC_RAM_STATE_READY ) + if ( RTC_RAM_STATE_READY == getRTCRAMState() ) { readFromRAM ( LOG_RECORD_START_ADDRESS, sizeof(LOG_RECORD_T) ); currentTime = getMSTimerCount(); @@ -1947,7 +1952,7 @@ currentTime = getMSTimerCount(); // Get ready for reading the manufacturing record - // TODO uncomment. currently not working + // TODO uncomment. currently not working This section is for phase 1B //Fapi_doMarginRead( (U32*)BANK7_SECTOR0_START_ADDRESS, addr, len, Fapi_NormalRead ); state = NVDATAMGMT_SELF_TEST_STATE_READ_SYS_RECORD; } @@ -2946,7 +2951,7 @@ *************************************************************************/ static void monitorNewCalSignal( void ) { - if ( didTimeout( newCalStartTimer, NEW_CAL_AVAILABLE_SIGNAL_TIMEOUT_MS ) && ( TRUE == isNewCalAvailable ) ) + if ( ( TRUE == didTimeout( newCalStartTimer, NEW_CAL_AVAILABLE_SIGNAL_TIMEOUT_MS ) ) && ( TRUE == isNewCalAvailable ) ) { isNewCalAvailable = FALSE; } @@ -2978,10 +2983,8 @@ // regardless of the rest of the results if ( calcCRC != recordCRC ) { -#ifndef DISABLE_CAL_CHECK SET_ALARM_WITH_1_U32_DATA( ALARM_ID_NVDATAMGMT_GROUP_RECORD_CRC_INVALID, i ); status = FALSE; -#endif } } @@ -3023,13 +3026,6 @@ status = FALSE; } -#ifdef IGNORE_CAL_TIMESTAMP - if ( 0 == record->calibrationTime ) - { - record->calibrationTime = getRTCTimestamp(); - } -#endif - return status; } #ifdef _DG_ @@ -3054,32 +3050,29 @@ for ( i = 0; i < 6; i++ ) { record = (POLYNOMIAL_CAL_PAYLOAD_T*)&pressure->reservedSpace[ i ]; - memset( record, 0x0, sizeof( POLYNOMIAL_CAL_PAYLOAD_T ) ); + 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 ) ); + 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 ) ); + 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 ) ); + memset( record, 0x0, sizeof(POLYNOMIAL_CAL_PAYLOAD_T) ); } - - DG_PRE_RO_PURGE_VOLUME_T* preROPurge = &dgCalibrationRecord.dgCalibrationGroups.preROPurgeVolumeRecord; - memset( preROPurge, 0x0, sizeof( DG_PRE_RO_PURGE_VOLUME_T ) ); } #endif @@ -3095,7 +3088,7 @@ static BOOL isDGSystemRecordValid( void ) { BOOL status = TRUE; - U16 calcCRC = crc16( (U08*)&dgSystemGroup.dgSystemRecord, sizeof( DG_SYSTEM_RECORD_T ) - sizeof( U16 ) ); + U16 calcCRC = crc16( (U08*)&dgSystemGroup.dgSystemRecord, sizeof(DG_SYSTEM_RECORD_T) - sizeof(U16) ); U16 recordCRC = dgSystemGroup.dgSystemRecord.crc; if ( calcCRC != recordCRC ) @@ -3106,7 +3099,7 @@ memset( dgSystemGroup.dgSystemRecord.topLevelPN, RECORD_DEFAULT_CHARACTER, sizeof( dgSystemGroup.dgSystemRecord.topLevelPN ) ); memset( dgSystemGroup.dgSystemRecord.topLevelPN, RECORD_DEFAULT_CHARACTER, sizeof( dgSystemGroup.dgSystemRecord.topLevelPN ) ); // Recalculate the CRC with the default values - dgSystemGroup.dgSystemRecord.crc = crc16 ( (U08*)&dgSystemGroup.dgSystemRecord, sizeof( DG_SYSTEM_RECORD_T ) - sizeof( U16 ) ); + dgSystemGroup.dgSystemRecord.crc = crc16 ( (U08*)&dgSystemGroup.dgSystemRecord, sizeof(DG_SYSTEM_RECORD_T) - sizeof(U16) ); activateAlarmNoData( ALARM_ID_DG_INVALID_SYSTEM_RECORD ); @@ -3128,7 +3121,7 @@ static BOOL isDGServiceRecordValid( void ) { BOOL status = TRUE; - U16 calcCRC = crc16( (U08*)&dgServiceGroup.dgServiceRecord, sizeof( DG_SERVICE_RECORD_T ) - sizeof( U16 ) ); + U16 calcCRC = crc16( (U08*)&dgServiceGroup.dgServiceRecord, sizeof(DG_SERVICE_RECORD_T) - sizeof(U16) ); U16 recordCRC = dgServiceGroup.dgServiceRecord.crc; if ( calcCRC != recordCRC ) @@ -3137,8 +3130,9 @@ dgServiceGroup.dgServiceRecord.lastServiceEpochDate = 0; dgServiceGroup.dgServiceRecord.serviceIntervalSeconds = RECORD_DEFAULT_SERVICE_INTERVAL_S; // Recalculate the CRC with the default values - dgServiceGroup.dgServiceRecord.crc = crc16 ( (U08*)&dgServiceGroup.dgServiceRecord, sizeof( DG_SERVICE_RECORD_T ) - sizeof( U16 ) ); + dgServiceGroup.dgServiceRecord.crc = crc16 ( (U08*)&dgServiceGroup.dgServiceRecord, sizeof(DG_SERVICE_RECORD_T) - sizeof(U16) ); + // Service record failure is also considered as RTC RAM failure activateAlarmNoData( ALARM_ID_DG_INVALID_SERVICE_RECORD ); // Set the to FALSE since the record is not valid @@ -3315,11 +3309,7 @@ { // CRC did not pass so set all values to default record->stepSpeed2FlowRatio = RECORD_DEFAULT_RATIO; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_CONC_PUMPS_CAL_DATA_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3349,11 +3339,7 @@ // CRC did not pass so set all values to default record->stepSpeed2FlowRatio = RECORD_DEFAULT_RATIO; record->voltage2SpeedRatio = RECORD_DEFAULT_RATIO; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_DRAIN_PUMP_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3384,11 +3370,7 @@ record->gain1Ratio = RECORD_DEFAULT_RATIO; record->gain2Ratio = RECORD_DEFAULT_RATIO; record->gain3Ratio = RECORD_DEFAULT_RATIO; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_RO_PUMP_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3418,11 +3400,7 @@ // CRC did not pass so set all values to default record->pressure2FlowRatio = RECORD_DEFAULT_RATIO; record->volume = RECORD_DEFAULT_CONST; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_PRE_RO_PURGE_VOLUME_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3451,11 +3429,7 @@ { // CRC did not pass so set all values to default record->volume = FLUSH_LINES_DEFAULT_VOLUME_L; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_DRAIN_LINE_VOLUME_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3487,11 +3461,7 @@ record->normalFillVolume = RECORD_DEFAULT_CONST; record->rsrvrUnfilledWeight = RECORD_DEFAULT_CONST; record->rsrvrVolume = RECORD_DEFAULT_CONST; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_RESERVOIR_VOLUME_DATA_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3520,12 +3490,7 @@ { // CRC did not pass so set all values to default record->volume = RECORD_DEFAULT_CONST; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif - record->crc = crc16 ( (U08*)record, sizeof(DG_GENERIC_VOLUME_DATA_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid status = FALSE; @@ -3555,11 +3520,7 @@ record->startVolume = RECORD_DEFAULT_CONST; record->reserverdSpace = RECORD_DEFAULT_CONST; record->acidConcMixRatio = ACID_CONC_DEFAULT_MIXING_RATIO; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_ACID_CONCENTRATE_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3590,11 +3551,7 @@ record->startVolume = RECORD_DEFAULT_CONST; record->reservedSpace = RECORD_DEFAULT_CONST; record->bicarbConcMixRatio = BICARB_CONC_DEFAULT_MIXING_RATIO; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_BICARB_CONCENTRATE_T) - sizeof(U16) ); // Alarm if the CRC did not pass @@ -3628,11 +3585,7 @@ record->reservedSpace1 = RECORD_DEFAULT_CONST; record->reservedSpace2 = RECORD_DEFAULT_CONST; record->reservedSpace3 = RECORD_DEFAULT_CONST; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_FILTER_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3662,11 +3615,7 @@ // CRC did not pass so set all values to default record->reservedSpace1 = RECORD_DEFAULT_CONST; record->reservedSpace2 = RECORD_DEFAULT_CONST; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_FAN_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3697,11 +3646,7 @@ record->accelXOffset = RECORD_DEFAULT_OFFSET; record->accelYOffset = RECORD_DEFAULT_OFFSET; record->accelZOffset = RECORD_DEFAULT_OFFSET; -#ifdef IGNORE_CAL_TIMESTAMP record->calibrationTime = RECORD_DEFAULT_TIME; -#else - record->calibrationTime = getRTCTimestamp(); -#endif record->crc = crc16 ( (U08*)record, sizeof(DG_ACCELEROMETER_SENSOR_CAL_RECORD_T) - sizeof(U16) ); // Set the to FALSE since the record is not valid @@ -3767,6 +3712,7 @@ // Recalculate the CRC with the default values hdServiceGroup.hdServiceRecord.crc = crc16 ( (U08*)&hdServiceGroup.hdServiceRecord, sizeof( HD_SERVICE_RECORD_T ) - sizeof( U16 ) ); + // Service record failure is also considered as RTC RAM failure activateAlarmNoData( ALARM_ID_HD_INVALID_SERVICE_RECORD ); // Set the to FALSE since the record is not valid @@ -3884,13 +3830,6 @@ status = FALSE; } -#ifdef IGNORE_CAL_TIMESTAMP - if ( 0 == record->calibrationTime ) - { - record->calibrationTime = getRTCTimestamp(); - } -#endif - return status; } @@ -3920,13 +3859,6 @@ status = FALSE; } -#ifdef IGNORE_CAL_TIMESTAMP - if ( 0 == record->calibrationTime ) - { - record->calibrationTime = getRTCTimestamp(); - } -#endif - return status; } @@ -3958,13 +3890,6 @@ status = FALSE; } -#ifdef IGNORE_CAL_TIMESTAMP - if ( 0 == record->calibrationTime ) - { - record->calibrationTime = getRTCTimestamp(); - } -#endif - return status; } #endif