From d3c162af0ca0110ce715c1e364194475f2eee3ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Sat, 18 Jan 2014 13:59:27 +0200
Subject: [PATCH] Try attribute 190 if 194 doesn't exist
---
src/ata.c | 2 ++
src/db.c | 1 +
src/db.h | 1 +
src/hddtemp.c | 1 +
src/hddtemp.h | 1 +
src/sata.c | 2 ++
src/scsi.c | 1 +
7 files changed, 9 insertions(+)
diff --git a/src/ata.c b/src/ata.c
index 1d908ac..742129a 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -141,6 +141,8 @@ static enum e_gettemp ata_get_temperature(struct disk *dsk) {
/* temperature */
field = ata_search_temperature(values, dsk->db_entry->attribute_id);
+ if(!field && dsk->db_entry->attribute_id2 != 0)
+ field = ata_search_temperature(values, dsk->db_entry->attribute_id2);
if(field)
dsk->value = *(field+3);
diff --git a/src/db.c b/src/db.c
index 5aed8e8..f8a1822 100644
--- a/src/db.c
+++ b/src/db.c
@@ -196,6 +196,7 @@ static int parse_db_line(char *line) {
new_entry->regexp = strdup(regexp);
new_entry->description = strdup(description);
new_entry->attribute_id = value;
+ new_entry->attribute_id2 = 0;
new_entry->unit = unit;
new_entry->next = NULL;
*last_entry = new_entry;
diff --git a/src/db.h b/src/db.h
index 6c08e87..dccb21c 100644
--- a/src/db.h
+++ b/src/db.h
@@ -26,6 +26,7 @@
struct harddrive_entry {
char *regexp;
short int attribute_id;
+ short int attribute_id2;
char *description;
unsigned char unit;
struct harddrive_entry *next;
diff --git a/src/hddtemp.c b/src/hddtemp.c
index 300cb0e..bce5e91 100644
--- a/src/hddtemp.c
+++ b/src/hddtemp.c
@@ -528,6 +528,7 @@ int main(int argc, char* argv[]) {
dsk->db_entry->regexp = "";
dsk->db_entry->description = "";
dsk->db_entry->attribute_id = DEFAULT_ATTRIBUTE_ID;
+ dsk->db_entry->attribute_id2 = DEFAULT_ATTRIBUTE_ID2;
dsk->db_entry->unit = 'C';
dsk->db_entry->next = NULL;
}
diff --git a/src/hddtemp.h b/src/hddtemp.h
index ed4ed5d..2460639 100644
--- a/src/hddtemp.h
+++ b/src/hddtemp.h
@@ -30,6 +30,7 @@ typedef __u16 u16;
#define MAX_ERRORMSG_SIZE 128
#define DEFAULT_ATTRIBUTE_ID 194
+#define DEFAULT_ATTRIBUTE_ID2 190
#define F_to_C(val) (int)(((double)(val)-32.0)/1.8)
#define C_to_F(val) (int)(((double)(val)*(double)1.8) + (double)32.0)
diff --git a/src/sata.c b/src/sata.c
index d67621f..0afe13c 100644
--- a/src/sata.c
+++ b/src/sata.c
@@ -166,6 +166,8 @@ static enum e_gettemp sata_get_temperature(struct disk *dsk) {
/* temperature */
field = sata_search_temperature(values, dsk->db_entry->attribute_id);
+ if(!field && dsk->db_entry->attribute_id2 != 0)
+ field = sata_search_temperature(values, dsk->db_entry->attribute_id2);
if(field)
dsk->value = *(field+3);
diff --git a/src/scsi.c b/src/scsi.c
index 71c9b82..b92b235 100644
--- a/src/scsi.c
+++ b/src/scsi.c
@@ -84,6 +84,7 @@ static enum e_gettemp scsi_get_temperature(struct disk *dsk) {
dsk->db_entry->regexp = "";
dsk->db_entry->description = "";
dsk->db_entry->attribute_id = 0;
+ dsk->db_entry->attribute_id2 = 0;
dsk->db_entry->unit = 'C';
dsk->db_entry->next = NULL;
--
1.8.3.1