Index: NVDataMgmt.c =================================================================== diff -u -r13b5486513f908e115fbcb590e020be56d86199a -r153215cc72cbd5b4738f20561041ea3c81bea701 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 13b5486513f908e115fbcb590e020be56d86199a) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 153215cc72cbd5b4738f20561041ea3c81bea701) @@ -2965,31 +2965,68 @@ U16 calcCRC; U16 recordCRC; PROCESS_RECORD_SPECS_T spec; - BOOL status = TRUE; - BOOL isCheckRequired = TRUE; + BOOL status; + BOOL isCheckRequired; for ( i = 0; i < NUM_OF_NVDATMGMT_RECORDS_JOBS; i++ ) { + status = TRUE; + #ifdef _DG_ // Scheduled runs are not part this phase but it is part of the enums // so they are ignored during checking isCheckRequired = ( NVDATAMGMT_SCHEDULED_RUNS_RECORD == i ? FALSE : TRUE ); #endif + if ( TRUE == isCheckRequired ) { - spec = RECORDS_SPECS [ i ]; + spec = RECORDS_SPECS [ i ]; calcCRC = crc16 ( spec.structAddressPtr, spec.sizeofJob - sizeof(U16) ); recordCRC = *(U16*)spec.structCRCPtr; // If the CRCs do not match, break out of loop since POST will be failed // regardless of the rest of the results if ( calcCRC != recordCRC ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_NVDATAMGMT_GROUP_RECORD_CRC_INVALID, i ); + ALARM_ID_T alarm; + + switch ( i ) + { + case NVDATAMGMT_CALIBRATION_RECORD: +#ifdef _DG_ + alarm = ALARM_ID_DG_NVDATAMGMT_CAL_GROUP_RECORD_CRC_INVALID; +#endif + activateAlarmNoData( alarm ); + break; + + case NVDATAMGMT_SYSTEM_RECORD: +#ifdef _DG_ + alarm = ALARM_ID_DG_NVDATAMGMT_SYSTEM_GROUP_RECORD_CRC_INVALID; +#endif + activateAlarmNoData( alarm ); + break; + + case NVDATAMGMT_SERVICE_RECORD: +#ifdef _DG_ + alarm = ALARM_ID_DG_NVDATAMGMT_SERVICE_GROUP_RECORD_CRC_INVALID; +#endif + activateAlarmNoData( alarm ); + break; + +#ifdef _DG_ + case NVDATAMGMT_SCHEDULED_RUNS_RECORD: + activateAlarmNoData( ALARM_ID_DG_SCHEDULED_RUNS_GROUP_RECORD_CRC_INVALID ); + break; +#endif + default: +#ifdef _DG_ + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_DG_INVALID_NVDATAMGMT_GROUP_RECORD_SELECTED ); +#endif + break; + } status = FALSE; } } - } return status; @@ -3105,7 +3142,7 @@ // Recalculate the CRC with the default values dgSystemGroup.dgSystemRecord.crc = crc16 ( (U08*)&dgSystemGroup.dgSystemRecord, sizeof(DG_SYSTEM_RECORD_T) - sizeof(U16) ); - activateAlarmNoData( ALARM_ID_DG_INVALID_SYSTEM_RECORD ); + activateAlarmNoData( ALARM_ID_DG_INVALID_SYSTEM_RECORD_CRC ); // Set the to FALSE since the record is not valid status = FALSE; @@ -3137,7 +3174,7 @@ 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 ); + activateAlarmNoData( ALARM_ID_DG_INVALID_SERVICE_RECORD_CRC ); // Set the to FALSE since the record is not valid status = FALSE; @@ -3563,9 +3600,6 @@ record->calibrationTime = RECORD_DEFAULT_TIME; record->crc = crc16 ( (U08*)record, sizeof(DG_BICARB_CONCENTRATE_T) - sizeof(U16) ); - // Alarm if the CRC did not pass - activateAlarmNoData( ALARM_ID_NVDATAMGMT_INDIVIDUAL_RECORD_CRC_INVALID ); - // Set the to FALSE since the record is not valid status = FALSE; }