Changed temperature readout and filter out wrong iMac values

This commit is contained in:
Hendrik Holtmann
2014-10-22 22:23:54 +02:00
parent d4dee3b02f
commit 052664221c
2 changed files with 24 additions and 16 deletions

View File

@ -32,31 +32,39 @@ NSArray *allSensors;
+(void)init{ +(void)init{
SMCOpen(&conn); SMCOpen(&conn);
allSensors = [NSArray arrayWithObjects:@"TC0D",@"TC0P",@"TCAD",@"TC0H",@"TC0F",@"TCAH",@"TCBH",nil];
} }
+(void)cleanUp{ +(void)cleanUp{
SMCClose(conn); SMCClose(conn);
} }
+(float) get_maintemp{ +(float) get_maintemp{
float c_temp; float retValue;
SMCVal_t val; NSRange range_pro=[[MachineDefaults computerModel] rangeOfString:@"MacPro"];
NSString *sensor = [[NSUserDefaults standardUserDefaults] objectForKey:@"TSensor"]; if (range_pro.length > 0) {
SMCReadKey2((char*)[sensor UTF8String], &val,conn); retValue = [smcWrapper get_mptemp];
c_temp= ((val.bytes[0] * 256 + val.bytes[1]) >> 2)/64; } else {
if (c_temp<=0) { SMCVal_t val;
for (NSString *sensor in allSensors) { NSString *sensor = [[NSUserDefaults standardUserDefaults] objectForKey:@"TSensor"];
SMCReadKey2((char*)[sensor UTF8String], &val,conn); SMCReadKey2((char*)[sensor UTF8String], &val,conn);
c_temp= ((val.bytes[0] * 256 + val.bytes[1]) >> 2)/64; retValue= ((val.bytes[0] * 256 + val.bytes[1]) >> 2)/64;
if (c_temp>0) { allSensors = [NSArray arrayWithObjects:@"TC0D",@"TC0P",@"TCAD",@"TC0H",@"TC0F",@"TCAH",@"TCBH",nil];
[[NSUserDefaults standardUserDefaults] setObject:sensor forKey:@"TSensor"]; if (retValue<=0 || floor(retValue) == 129 ) { //workaround for some iMac Models
[[NSUserDefaults standardUserDefaults] synchronize]; for (NSString *sensor in allSensors) {
break; SMCReadKey2((char*)[sensor UTF8String], &val,conn);
} retValue= ((val.bytes[0] * 256 + val.bytes[1]) >> 2)/64;
if (retValue>0 && floor(retValue) != 129 ) {
[[NSUserDefaults standardUserDefaults] setObject:sensor forKey:@"TSensor"];
[[NSUserDefaults standardUserDefaults] synchronize];
break;
}
}
} }
} }
return c_temp;
return retValue;
} }