From d3c162af0ca0110ce715c1e364194475f2eee3ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= 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