105 lines
3.3 KiB
Diff
105 lines
3.3 KiB
Diff
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
|
|
|