QString WeatherPlugin::forecastReplace(const QString &text) { if (*getDay(m_day) == 0) return ""; QString res = text; QString temp; int minT = atol(getMinT(m_day)); int maxT = atol(getMaxT(m_day)); temp += QString::number(minT); temp += QChar((unsigned short)176); temp += getUT(); if ((strcmp(getMaxT(m_day), "N/A")) && (maxT != -255)) { temp += "/"; temp += QString::number(maxT); temp += QChar((unsigned short)176); temp += getUT(); } string dd = getDay(m_day); string mon = getToken(dd, ' '); QString day = dd.c_str(); day += ". "; day += i18n(mon.c_str()); res = res.replace(QRegExp("\\%n"), getDayIcon(m_day)); res = res.replace(QRegExp("\\%t"), temp); res = res.replace(QRegExp("\\%c"), i18n_conditions(getDayConditions(m_day))); res = res.replace(QRegExp("\\%w"), i18n(getWDay(m_day))); res = res.replace(QRegExp("\\%d"), day); return res; }
int PowerModel::updateFreqDVFS_T() { float dvfsFreq; int state = 0; float maxT = getMaxT(); // Decide on the actual turbo frequency based on temperature if (maxT > K(90)) { // Throttling should have been engaged! dvfsFreq = 0.7*getFreq(); state = 4; } else if (maxT > K(88.5)) { dvfsFreq = 0.7*getFreq(); state = 4; } else if (maxT > K(87.5)) { dvfsFreq = 0.8*getFreq(); state = 3; } else if (maxT > K(86)) { dvfsFreq = 0.9*getFreq(); state = 2; } else { dvfsFreq = getFreq(); state = 0; } float freqCoef = dvfsFreq/getFreq(); // Save the turbo frequency ratio in TaskHandler, other modules will read it from there. setTurboRatio(freqCoef); return (state); }
QString WeatherPlugin::forecastReplace(const QString &text) { if (*getDay(m_day) == 0) return ""; QString res = text; QString temp; int minT = atol(getMinT(m_day)); int maxT = atol(getMaxT(m_day)); if ((minT < 0) && (maxT < 0)){ int r = minT; minT = maxT; maxT = r; } if (minT < 0){ temp += "-"; minT = -minT; }else if (minT > 0){ temp += "+"; } temp += number((unsigned)minT).c_str(); temp += QChar((unsigned short)176); temp += getUT(); if (maxT < 0){ temp += "-"; maxT = -maxT; }else if (maxT >= 0){ temp += "+"; } temp += number((unsigned)maxT).c_str(); temp += QChar((unsigned short)176); temp += getUT(); string dd = getDay(m_day); string mon = getToken(dd, ' '); QString day = dd.c_str(); day += " "; day += i18n(mon.c_str()); res = res.replace(QRegExp("\\%n"), number(m_day).c_str()); res = res.replace(QRegExp("\\%t"), temp); res = res.replace(QRegExp("\\%c"), i18n_conditions(getDayConditions(m_day))); res = res.replace(QRegExp("\\%w"), i18n(getWDay(m_day))); res = res.replace(QRegExp("\\%d"), day); return res; }
int PowerModel::updateFreqTurbo() { float turboFreq; int state = 0; float maxT = getMaxT(); FlowID actvCores = getNumActiveCores(); // Get the maximum frequency based on the number of active cores float maxF = getFreq() + (ncores - actvCores + 1) * 500*1e6; //Mhz , FIXME: the step (e.g. 133) should be defined in the conf file // Decide on the actual turbo frequency based on temperature if (maxT > K(100)) { turboFreq = getFreq(); state = 4; } else if (maxT > K(90)) { turboFreq = maxF - 3*(maxF - getFreq())/4; state = 3; } else if (maxT > K(80)) { turboFreq = maxF - 2*(maxF - getFreq())/4; state = 2; } else if (maxT > K(70)) { turboFreq = maxF - (maxF - getFreq())/4; state = 1; } else { turboFreq = maxF; state = 0; } float freqCoef = turboFreq/getFreq(); // Save the turbo frequency ratio in TaskHandler, other modules will read it from there. setTurboRatio(freqCoef); return (state); }
void WeatherPlugin::element_end(const char *el) { if (!strcmp(el, "day")){ if ((*getMinT(m_day) == 0) || (*getMaxT(m_day) == 0)) m_day--; return; } if (!strcmp(el, "obst")){ setLocation(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "lsup")){ setUpdated(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "sunr") && (m_day == 0)){ setSun_raise(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "suns") && (m_day == 0)){ setSun_set(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "vis") && m_bCC){ setVisibility(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "tmp") && m_bCC){ setTemperature(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "flik") && m_bCC){ setFeelsLike(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "dewp") && m_bCC){ setDewPoint(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "ppcp") && (m_day == 1) ) { if (((m_bDayPart == 'd') && m_bDayForecastIsValid) || ((m_bDayPart == 'n') && ! m_bDayForecastIsValid )){ setPrecipitation(atol(m_data.c_str())); m_data = ""; return; } } if (!strcmp(el, "hmid") && m_bCC){ setHumidity(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "low") && m_day){ if (m_data == "N/A") m_data = ""; setMinT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "hi") && m_day){ if (m_data == "N/A") m_data = "-255"; setMaxT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "t")){ if (!m_bBar && !m_bWind && !m_bUv && !m_bMoon){ if (m_bCC){ setConditions(m_data.c_str()); }else{ setDayConditions(m_day, m_data.c_str()); if ((m_data == "N/A") && (m_bDayPart == 'd')) m_bDayForecastIsValid = false; } } if (m_bWind && m_bCC) setWind(m_data.c_str()); if (m_bUv && m_bCC) setUV_Description(m_data.c_str()); if (m_bMoon && m_bCC) setMoonPhase(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "i")) { if (m_bUv && m_bCC) setUV_Intensity(strtol(m_data.c_str(),NULL,10)); m_data = ""; return; } if (!strcmp(el, "icon")){ if (m_bMoon && m_bCC) { setMoonIcon(atol(m_data.c_str())); } else if (m_bCC){ setIcon(atoul(m_data.c_str())); }else{ setDayIcon(m_day, m_data.c_str()); } m_data = ""; return; } if (!strcmp(el, "ut")){ setUT(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "up")){ setUP(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "us")){ setUS(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "ud")){ setUD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "gust") && m_bCC){ setWindGust(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "bar")){ m_bBar = false; return; } if (!strcmp(el, "cc")){ m_bCC = false; return; } if (!strcmp(el, "r") && m_bBar && m_bCC){ unsigned long v = 0; for (const char *p = m_data.c_str(); *p; p++){ if (*p == '.') break; if (*p == ',') continue; v = (v * 10) + (*p - '0'); } setPressure(v); return; } if (!strcmp(el, "d") && m_bBar && m_bCC){ setPressureD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "wind")){ m_bWind = false; return; } if (!strcmp(el, "s") && m_bWind && m_bCC){ setWind_speed(atol(m_data.c_str())); return; } if (!strcmp(el, "uv")){ m_bUv = false; return; } if (!strcmp(el, "moon")){ m_bMoon = false; return; } }
void WeatherPlugin::element_end(const char *el) { if (!strcmp(el, "day")){ if ((*getMinT(m_day) == 0) || (*getMaxT(m_day) == 0)) m_day--; return; } if (!strcmp(el, "obst")){ setLocation(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "lsup")){ setUpdated(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "sunr") && (m_day == 0)){ setSun_raise(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "suns") && (m_day == 0)){ setSun_set(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "vis") && m_bCC){ setVisibility(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "tmp") && m_bCC){ setTemperature(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "flik") && m_bCC){ setFeelsLike(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "devp") && m_bCC){ setDewPoint(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "hmid") && m_bCC){ setHumidity(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "low") && m_day){ if (m_data != "N/A") setMinT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "hi") && m_day){ if (m_data != "N/A") setMaxT(m_day, m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "t")){ if (!m_bBar && !m_bWind && !m_bUv){ if (m_bCC){ setConditions(m_data.c_str()); }else{ setDayConditions(m_day, m_data.c_str()); } } if (m_bWind && m_bCC) setWind(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "icon")){ if (m_bCC){ setIcon(atol(m_data.c_str())); }else{ setDayIcon(m_day, m_data.c_str()); } m_data = ""; return; } if (!strcmp(el, "ut")){ setUT(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "up")){ setUP(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "us")){ setUS(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "ud")){ setUD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "gust") && m_bCC){ setWindGust(atol(m_data.c_str())); m_data = ""; return; } if (!strcmp(el, "bar")){ m_bBar = false; return; } if (!strcmp(el, "cc")){ m_bCC = false; return; } if (!strcmp(el, "r") && m_bBar && m_bCC){ unsigned long v = 0; for (const char *p = m_data.c_str(); *p; p++){ if (*p == '.') break; if (*p == ',') continue; v = (v * 10) + (*p - '0'); } setPressure(v); return; } if (!strcmp(el, "d") && m_bBar && m_bCC){ setPressureD(m_data.c_str()); m_data = ""; return; } if (!strcmp(el, "wind")){ m_bWind = false; return; } if (!strcmp(el, "s") && m_bWind && m_bCC){ setWind_speed(atol(m_data.c_str())); return; } if (!strcmp(el, "uv")){ m_bUv = false; return; } }