TEST(TestCPUInfo, getTemperature) { TemporarySetting command(CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_cpuTempCmd, "echo '50 c'"); CTemperature t; EXPECT_TRUE(g_cpuInfo.getTemperature(t)); EXPECT_TRUE(t.IsValid()); }
TEST(TestCPUInfo, getTemperature) { TemporarySetting command(g_advancedSettings.m_cpuTempCmd, "echo '50 c'"); CTemperature t; EXPECT_TRUE(g_cpuInfo.getTemperature(t)); EXPECT_TRUE(t.IsValid()); }
std::string CLangInfo::GetTemperatureAsString(const CTemperature& temperature) const { if (!temperature.IsValid()) return g_localizeStrings.Get(13205); // "Unknown" CTemperature::Unit temperatureUnit = GetTemperatureUnit(); return StringUtils::Format("%s%s", temperature.ToString(temperatureUnit).c_str(), GetTemperatureUnitString().c_str()); }
CTemperature CTemperature::operator /(const CTemperature& right) const { ASSERT(IsValid()); ASSERT(right.IsValid()); CTemperature temp(*this); if (!IsValid() || !right.IsValid()) temp.SetState(invalid); else temp.m_value/=right.m_value; return temp; }
CTemperature CTemperature::operator *(const CTemperature& right) const { assert(IsValid()); assert(right.IsValid()); CTemperature temp(*this); if (!IsValid() || !right.IsValid()) temp.SetState(invalid); else temp.m_value*=right.m_value; return temp; }
bool CTemperature::operator ==(const CTemperature& right) const { ASSERT(IsValid()); ASSERT(right.IsValid()); if (!IsValid() || !right.IsValid()) return false; if (this==&right) return true; return (m_value==right.m_value); }
bool CTemperature::operator <(const CTemperature& right) const { assert(IsValid()); assert(right.IsValid()); if (!IsValid() || !right.IsValid()) return false; if (this==&right) return false; return (m_value<right.m_value); }
bool CCPUInfo::getTemperature(CTemperature& temperature) { int value = 0; char scale = 0; #if defined(TARGET_DARWIN_OSX) value = SMCGetTemperature(SMC_KEY_CPU_TEMP); scale = 'c'; #else int ret = 0; FILE *p = NULL; CStdString cmd = g_advancedSettings.m_cpuTempCmd; temperature.SetState(CTemperature::invalid); if (cmd.IsEmpty() && m_fProcTemperature == NULL) return false; if (!cmd.IsEmpty()) { p = popen (cmd.c_str(), "r"); if (p) { ret = fscanf(p, "%d %c", &value, &scale); pclose(p); } } else { // procfs is deprecated in the linux kernel, we should move away from // using it for temperature data. It doesn't seem that sysfs has a // general enough interface to bother implementing ATM. rewind(m_fProcTemperature); fflush(m_fProcTemperature); ret = fscanf(m_fProcTemperature, "temperature: %d %c", &value, &scale); // read from the temperature file of the new kernels if (!ret) { ret = fscanf(m_fProcTemperature, "%d", &value); value = value / 1000; scale = 'c'; ret++; } } if (ret != 2) return false; #endif if (scale == 'C' || scale == 'c') temperature = CTemperature::CreateFromCelsius(value); else if (scale == 'F' || scale == 'f') temperature = CTemperature::CreateFromFahrenheit(value); else return false; return true; }
TEST(TestCPUInfo, getTemperature) { CTemperature t; EXPECT_TRUE(g_cpuInfo.getTemperature(t)); EXPECT_TRUE(t.IsValid()); }
void CWeatherJob::FormatTemperature(CStdString &text, int temp) { CTemperature temperature = CTemperature::CreateFromCelsius(temp); text.Format("%.0f", temperature.ToLocale()); }
void CWeatherJob::FormatTemperature(std::string &text, double temp) { CTemperature temperature = CTemperature::CreateFromCelsius(temp); text = StringUtils::Format("%.0f", temperature.To(g_langInfo.GetTemperatureUnit())); }