Index: NVDataMgmt.c =================================================================== diff -u -r40a953067e13f6479b0ea85dd760d903ea66612e -r3a57b1955aa7516898e4c2c855978bbf01c8ec62 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 40a953067e13f6479b0ea85dd760d903ea66612e) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 3a57b1955aa7516898e4c2c855978bbf01c8ec62) @@ -1369,11 +1369,16 @@ hdUsageInfoGroup.hdUsageInfo.txTimeTotalHrs += hdUsageInfoGroup.hdUsageInfo.txTimeSinceLastSrvcHrs; hdUsageInfoGroup.hdUsageInfo.crc = crc16( (U08*)&hdUsageInfoGroup.hdUsageInfo, sizeof( HD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); hdUsageInfoGroup.crc = crc16( (U08*)&hdUsageInfoGroup, sizeof( HD_USAGE_INFO_GROUP_T ) - sizeof( U16 ) ); + usageWriteTries = 0; + status = TRUE; enqueue( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, HD_USAGE_INFO_START_ADDRESS, (U08*)&hdUsageInfoGroup, 0, sizeof( HD_USAGE_INFO_GROUP_T ) ); SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ) - status = TRUE; } + else if ( ++usageWriteTries > MAX_NUM_OF_WRITE_TRIES ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_WRITE_USAGE_INFO_TO_NV_FAILURE, USAGE_INFO_TX_HOURS_SINCE_LAST_SRVC ); + } return status; } @@ -1394,11 +1399,16 @@ hdUsageInfoGroup.hdUsageInfo.txLastStartTimeEpoch = epoch; hdUsageInfoGroup.hdUsageInfo.crc = crc16 ( (U08*)&hdUsageInfoGroup.hdUsageInfo, sizeof( HD_USAGE_INFO_RECORD_T ) - sizeof( U16 ) ); hdUsageInfoGroup.crc = crc16 ( (U08*)&hdUsageInfoGroup, sizeof( HD_USAGE_INFO_GROUP_T ) - sizeof( U16 ) ); + usageWriteTries = 0; + status = TRUE; enqueue( NVDATAMGMT_WRITE, NVDATAMGMT_RTC, HD_USAGE_INFO_START_ADDRESS, (U08*)&hdUsageInfoGroup, 0, sizeof( HD_USAGE_INFO_GROUP_T ) ); SEND_EVENT_WITH_2_U32_DATA( RECORDS_SPECS[ NVDATAMGMT_USAGE_INFO_RECORD ].nvEvent, 0, 0 ) - status = TRUE; } + else if ( ++usageWriteTries > MAX_NUM_OF_WRITE_TRIES ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_WRITE_USAGE_INFO_TO_NV_FAILURE, USAGE_INFO_START_TX_TIME ); + } return status; }