summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWojciech Piekutowski <wojciech@piekutowski.net>2011-04-11 23:16:56 +0200
committerWojciech Piekutowski <wojciech@piekutowski.net>2011-04-11 23:49:58 +0200
commitf75c8e5e4c53c15b9c5a4668334ec7fbc811867b (patch)
tree6c88cec1d076745a4107e631877a64a82cdcce53
parentcc6020505701c97c7feeedf9bd41abf1bddb54a2 (diff)
Display endurance-remaining as percentage decreasing from 100 to 0
-rw-r--r--atasmart.c11
-rw-r--r--atasmart.h1
2 files changed, 10 insertions, 2 deletions
diff --git a/atasmart.c b/atasmart.c
index a4b60c0..67ed183 100644
--- a/atasmart.c
+++ b/atasmart.c
@@ -1208,6 +1208,8 @@ static void make_pretty(SkSmartAttributeParsedData *a) {
else if (!strcmp(a->name, "reallocated-sector-count") ||
!strcmp(a->name, "current-pending-sector"))
a->pretty_value = fourtyeight & 0xFFFFFFFFU;
+ else if (!strcmp(a->name, "endurance-remaining"))
+ a->pretty_value = a->current_value;
else
a->pretty_value = fourtyeight;
}
@@ -1327,7 +1329,7 @@ static const SkSmartAttributeInfo const attribute_info[256] = {
[231] = { "temperature-celsius", SK_SMART_ATTRIBUTE_UNIT_MKELVIN, verify_temperature },
/* http://www.adtron.com/pdf/SMART_for_XceedLite_SATA_RevA.pdf */
- [232] = { "endurance-remaining", SK_SMART_ATTRIBUTE_UNIT_UNKNOWN, NULL },
+ [232] = { "endurance-remaining", SK_SMART_ATTRIBUTE_UNIT_PERCENT, NULL },
[233] = { "power-on-seconds-2", SK_SMART_ATTRIBUTE_UNIT_UNKNOWN, NULL },
[234] = { "uncorrectable-ecc-count", SK_SMART_ATTRIBUTE_UNIT_SECTORS, NULL },
[235] = { "good-block-rate", SK_SMART_ATTRIBUTE_UNIT_UNKNOWN, NULL },
@@ -1891,7 +1893,8 @@ const char* sk_smart_attribute_unit_to_string(SkSmartAttributeUnit unit) {
[SK_SMART_ATTRIBUTE_UNIT_NONE] = "",
[SK_SMART_ATTRIBUTE_UNIT_MSECONDS] = "ms",
[SK_SMART_ATTRIBUTE_UNIT_SECTORS] = "sectors",
- [SK_SMART_ATTRIBUTE_UNIT_MKELVIN] = "mK"
+ [SK_SMART_ATTRIBUTE_UNIT_MKELVIN] = "mK",
+ [SK_SMART_ATTRIBUTE_UNIT_PERCENT] = "%"
};
/* %STRINGPOOLSTOP% */
@@ -2228,6 +2231,10 @@ static char *print_value(char *s, size_t len, uint64_t pretty_value, SkSmartAttr
snprintf(s, len, "%llu sectors", (unsigned long long) pretty_value);
break;
+ case SK_SMART_ATTRIBUTE_UNIT_PERCENT:
+ snprintf(s, len, "%llu%%", (unsigned long long) pretty_value);
+ break;
+
case SK_SMART_ATTRIBUTE_UNIT_NONE:
snprintf(s, len, "%llu", (unsigned long long) pretty_value);
break;
diff --git a/atasmart.h b/atasmart.h
index aa4e339..dcb6408 100644
--- a/atasmart.h
+++ b/atasmart.h
@@ -133,6 +133,7 @@ typedef enum SkSmartAttributeUnit {
SK_SMART_ATTRIBUTE_UNIT_MSECONDS, /* milliseconds */
SK_SMART_ATTRIBUTE_UNIT_SECTORS,
SK_SMART_ATTRIBUTE_UNIT_MKELVIN, /* millikelvin */
+ SK_SMART_ATTRIBUTE_UNIT_PERCENT,
_SK_SMART_ATTRIBUTE_UNIT_MAX
/* This enum may be extended at any time without this being