diff options
Diffstat (limited to 'util/isensor.c')
-rw-r--r-- | util/isensor.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/util/isensor.c b/util/isensor.c index 9456613..7dd746e 100644 --- a/util/isensor.c +++ b/util/isensor.c @@ -168,6 +168,7 @@ extern int decode_sensor_dell(uchar *sdr,uchar *reading,char *pstring, int slen); /*see oem_dell.c*/ extern int decode_sensor_lenovo(uchar *sdr,uchar *reading,char *pstring, int slen); /*see oem_lenovo.c*/ +extern int decode_sensor_asus(uchar *sdr,uchar *reading,char *pstring,int slen); extern int decode_sensor_hp(uchar *sdr,uchar *reading,char *pstring, int slen); /*see oem_hp.c*/ extern void show_oemsdr_hp(uchar *sdr); @@ -254,7 +255,7 @@ char *decode_entity_id(int id) { * Global Data ************************/ static char *progname = "isensor"; -static char *progver = "3.01"; +static char *progver = "3.02"; #ifdef WIN32 static char savefile[] = "%ipmiutildir%\\thresholds.cmd"; #else @@ -1962,14 +1963,18 @@ int decode_oem_sensor(uchar *sdr,uchar *reading,char *pstring,int slen) case VENDOR_DELL: rv = decode_sensor_dell(sdr, reading, pstring, slen); break; + case VENDOR_IBM: case VENDOR_LENOVO: case VENDOR_LENOVO2: rv = decode_sensor_lenovo(sdr, reading, pstring, slen); break; + case VENDOR_ASUS: + rv = decode_sensor_asus(sdr, reading, pstring, slen); + break; default: break; } /*end-switch vend_id*/ - if (fdebug && rv == 0) + if (fdebug) // && rv == 0) printf("decode_oem_sensor rv=%d vend=%x string=%s\n",rv,vend_id,pstring); #endif return (rv); @@ -2363,7 +2368,7 @@ decode_comp_reading(uchar type, uchar evtype, uchar num, if (reading1 & 0x02) istr = 9; /*Present/Inserted*/ else if (reading1 & 0x01) istr = 10; /*Absent/Removed*/ else /*reading1==00*/ istr = 47; /*Unused*/ - } else { /* HSC slot status sensors (evtype==0x6f) */ + } else { /* HSC slot status sensors (evtype==0x6f)*/ /* usually reading2 == 0x82 or 0x8E if healthy */ if (reading2 & 0x01) istr = 12; /*state8=Rebuild stopped*/ else if (reading2 & 0x02) istr = 11; /*state9=Inserted/Ready */ @@ -2371,7 +2376,7 @@ decode_comp_reading(uchar type, uchar evtype, uchar num, else if (reading2 & 0x08) istr = 11; /*state11=Ready */ else if (reading2 == 0x80) istr = 47; /*no states, Unused*/ else istr = 12; /*faulty*/ - b = 8; /*if no bits set, no raid state */ + b = 8; /*if no bits set, no raid state */ if (reading1 & 0x01) { b = 0; } /*state0=Faulty*/ else if (reading1 & 0x02) b = 1; /*state1=Rebuilding*/ else if (reading1 & 0x04) b = 2; /*state2=InFailedArray*/ @@ -2380,15 +2385,15 @@ decode_comp_reading(uchar type, uchar evtype, uchar num, else if (reading1 & 0x20) b = 5; /*state5=PredictedFault*/ else if (reading1 & 0x40) b = 6; /*state6=Un-configured*/ else if (reading1 & 0x80) b = 7; /*state7=HotSpare*/ - if (b < 8) { + if (b < 8) { /* also include a raid_state, via custom string */ sprintf(customstr,"%s %s", sensor_dstatus[istr], raid_states[b]); istr = STR_CUSTOM; sensor_dstatus[istr] = customstr; if (fdebug) printf("dstatus=%s\n",sensor_dstatus[istr]); - } - } /*end-else HSC slot status*/ + } + } /*end-else-if HSC slot status (0x6f)*/ } break; case 0x10: /*Event Logging*/ @@ -2662,7 +2667,8 @@ ShowSDR(char *tag, uchar *sdr) } rc = decode_oem_sensor(sdr,sens,oem_string,sizeof(oem_string)); if (rc == 0) { - strncpy(rdgstr,oem_string,sizeof(rdgstr)); + if (fsimple) strncpy(rdgstr,oem_string,sizeof(rdgstr)); + else snprintf(rdgstr,sizeof(rdgstr),"%02x %s",sens[0],oem_string); } else { if (fsimple) snprintf(rdgstr,sizeof(rdgstr),"%s %c %.2f %s", |