Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » UppHub » [SysInfo - Improvement - Koldo] Better way to find distribution version & more
Re: [SysInfo - Improvement - Koldo] Better way to find distribution version & more [message #41002 is a reply to message #41001] Sat, 19 October 2013 00:37 Go to previous messageGo to previous message
Klugier is currently offline  Klugier
Messages: 1076
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
Hello Koldo,

Moreover, I wrote better handling for measuring cpu temperature on GNU/Linux (POSIX?). Now, SysInfo should use "hwmon" when "acpi" fails. Let's look at code:
static double GetCpuTemperatureViaAcpi() 
{
	FindFile ff;
	if(ff.Search("/proc/acpi/thermal_zone/*")) {
		do {
			if (ff.IsDirectory()) {
				String name = ff.GetName();
				if (name != "." && name != "..") {
					StringParse str = LoadFile_Safe(AppendFileName(AppendFileName("/proc/acpi/thermal_zone", name), "temperature"));			
					str.GoAfter("temperature:");
					return str.GetDouble();
				}
			}
		} while(ff.Next());
	}
	
	return Null;
}

static double GetCpuTemperatureViaHwmon() 
{
	Vector <double> temps;
	for (FindFile ff(AppendFileName("/sys/class/hwmon/hwmon0/device", "*input")); ff; ff.Next()) {
		if (!ff.IsHidden()) {
			String temp = LoadFile_Safe(ff.GetPath());
			if (!temp.IsEmpty())
				temps.Add((double)StrInt(temp) / 1000.0);
		}
	}
	
	double sumTemps = 0.0;
	for (int i = 0; i < temps.GetCount(); i++)
		sumTemps += temps[i];
	
	if (!temps.IsEmpty())
		return sumTemps / (double)temps.GetCount();
	else
		return Null;
}

double GetCpuTemperature() 
{
	double temp = Null;
	
	if (temp == (double)Null) temp = GetCpuTemperatureViaAcpi();
	if (temp == (double)Null) temp = GetCpuTemperatureViaHwmon();
	
	return temp;
}


* in this case "static" means that function should be use only in file where it was declared.

P.S.
Toomorow, I will enclose source file with above improvement.

Sincerely,
Klugier


U++ - one framework to rule them all.

[Updated on: Sat, 19 October 2013 00:50]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Problem with FileBrowser
Next Topic: AES for sqlite database
Goto Forum:
  


Current Time: Sun May 12 19:16:36 CEST 2024

Total time taken to generate the page: 0.02684 seconds