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; } Index: NVDataMgmtHDRecords.h =================================================================== diff -u -r087ae6de4dd6ffb50cf272e9d0aefaed062305ff -r3a57b1955aa7516898e4c2c855978bbf01c8ec62 --- NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 087ae6de4dd6ffb50cf272e9d0aefaed062305ff) +++ NVDataMgmtHDRecords.h (.../NVDataMgmtHDRecords.h) (revision 3a57b1955aa7516898e4c2c855978bbf01c8ec62) @@ -147,6 +147,14 @@ NUM_OF_CAL_DATA_HD_TEMP_SENSORS, ///< Number of HD temperature sensors. } CAL_DATA_HD_TEMEPERATURE_SENSORS_T; +/// HD usage info items +typedef enum hd_usage_items +{ + USAGE_INFO_TX_HOURS_SINCE_LAST_SRVC = 0, ///< Usage info Tx hours since last service. + USAGE_INFO_START_TX_TIME, ///< Usage info Tx start time. + NUM_OF_USAGE_INFO_ITEMS ///< Number of usage info items. +} HD_USAGE_INFO_ITEMS_T; + #pragma pack(push, 1) /// Polynomial calibration structure typedef struct