Ticket #3500: httpstatus.diff

File httpstatus.diff, 6.5 KB (added by anonymous, 13 years ago)
  • programs/mythbackend/httpstatus.cpp

     
    44// Purpose - Html & XML status HttpServerExtension
    55//                                                                           
    66// Created By  : David Blain                    Created On : Oct. 24, 2005
    7 // Modified By :                                Modified On:                  
     7// Modified By : Pinguin                        Modified On: Jun. 24, 2007                 
    88//                                                                           
    99//////////////////////////////////////////////////////////////////////////////
    1010
     
    372372    //temperature -----------------
    373373    // Try ACPI first, then lmsensor 2nd
    374374    QDir dir("/proc/acpi/thermal_zone");
    375     bool found_acpi = false;
    376375    QString acpiTempDir;
    377376    if (dir.exists())
    378377    {
     
    398397                temp = rxp.cap(1);
    399398                temp += " ℃"; // print degress Celsius 
    400399                mInfo.appendChild(thermal);
    401                 thermal.setAttribute("temperature", temp); 
    402                 found_acpi = true;
     400                thermal.setAttribute("temperature", temp);
     401                thermal.setAttribute("temp_source", "ACPI");
    403402            }
    404403        } 
    405404        acpiTempFile.close();
     
    408407#ifdef HAVE_LMSENSORS
    409408    m_settingLock.lock();
    410409
    411     if (!found_acpi)
    412     {
    413         int chip_nr, a, b;
    414         char *label = NULL;
    415         double value;
    416         const sensors_chip_name *chip;
    417         const sensors_feature_data *data;
    418         char* lmsensorConfigName = LMSENSOR_DEFAULT_CONFIG_FILE;
    419         a = b = 0;
    420         FILE *lmsensorConfigFile = fopen(lmsensorConfigName, "r");
    421         sensors_init(lmsensorConfigFile);
    422         fclose(lmsensorConfigFile);
    423         for (chip_nr = 0 ; (chip = sensors_get_detected_chips(&chip_nr)) ; )
    424         {
    425             while ((data = sensors_get_all_features(*chip, &a, &b)))
    426             {
    427                 if ((!sensors_get_label(*chip, data->number, &label)) && 
    428                     (!sensors_get_feature(*chip, data->number, &value)))
    429                 {
    430                     // Find label matching "CPU Temp" or "Temp/CPU"
    431                     QRegExp rxp = QRegExp ("(CPU.+Temp)|(Temp.+CPU)", FALSE, FALSE);
    432                     if (rxp.search(QString(label)) != -1  && value > 0)
    433                     {
    434                         QString temp = QString("%1").arg(value);
    435                         temp += " ℃";
    436                         mInfo.appendChild(thermal);
    437                         thermal.setAttribute("temperature", temp);
    438                     }
    439                 }
    440             }
    441         } 
    442         sensors_cleanup();
    443     }
     410    int chip_nr, a, b;
     411    char *label = NULL;
     412    double value;
     413    const sensors_chip_name *chip;
     414    const sensors_feature_data *data;
     415    char* lmsensorConfigName = LMSENSOR_DEFAULT_CONFIG_FILE;
     416    a = b = 0;
     417    FILE *lmsensorConfigFile = fopen(lmsensorConfigName, "r");
     418    sensors_init(lmsensorConfigFile);
     419    fclose(lmsensorConfigFile);
     420    for (chip_nr = 0 ; (chip = sensors_get_detected_chips(&chip_nr)) ; )
     421    {
     422        while ((data = sensors_get_all_features(*chip, &a, &b)))
     423        {
     424            if ((!sensors_get_label(*chip, data->number, &label)) &&
     425                (!sensors_get_feature(*chip, data->number, &value)))
     426            {
     427                // Find label matching "CPU Temp" or "Temp/CPU"
     428                QRegExp rxp = QRegExp ("(CPU.+Temp)|(Temp.+CPU)", FALSE, FALSE);
     429                if (rxp.search(QString(label)) != -1  && value > 0)
     430                {
     431                    QString temp = QString("%1").arg(value);
     432                    temp += " ℃";
     433                    mInfo.appendChild(thermal);
     434                    thermal.setAttribute("cpu_temp", temp);
     435                    thermal.setAttribute("temp_source", "LMSENSORS");
     436                }
     437                rxp = QRegExp ("CPU.+Fan", FALSE, FALSE);
     438                if (rxp.search(QString(label)) != -1  && value >= 0)
     439                {
     440                    QString temp = QString("%1").arg(value);
     441                    temp += " RPM";
     442                    thermal.setAttribute("cpu_fan_speed", temp);
     443                }
     444                rxp = QRegExp ("M/B.+Temp", FALSE, FALSE);
     445                if (rxp.search(QString(label)) != -1  && value >= 0)
     446                {
     447                    QString temp = QString("%1").arg(value);
     448                    temp += " ℃";
     449                    thermal.setAttribute("mb_temp", temp);
     450                }
     451            }
     452        }
     453    }
     454    sensors_cleanup();
    444455    m_settingLock.unlock();
    445456#endif
    446457
     
    11511162        }
    11521163    }
    11531164
    1154    // ACPI temperature ------------------
     1165   // Temperature ------------------
    11551166
    11561167    node = info.namedItem( "Thermal" );
    11571168
     
    11611172
    11621173        if (!e.isNull())
    11631174        {
    1164             QString temperature = e.attribute( "temperature" , "0" );
     1175            //Get temperature source.
     1176            QString temp_source = e.attribute("temp_source","");
    11651177
    1166             os << "      Current CPU temperature: "
    1167                << temperature
    1168                << ".<br />\r\n";
     1178            if(temp_source == "ACPI")
     1179            {
     1180                QString temperature = e.attribute("temperature","0");
     1181
     1182                os << "      Hardware Monitor:<br />\r\n";
     1183                os << "      <ul>\r\n";
     1184                os << "        <li>Current CPU temperature: " << temperature << "</li>\r\n";
     1185                os << "      </ul>\r\n";
     1186            }
     1187            else if(temp_source == "LMSENSORS")
     1188            {
     1189                QString cpu_temp = e.attribute("cpu_temp","0");
     1190                QString cpu_fan_speed = e.attribute("cpu_fan_speed","");
     1191                QString mb_temp = e.attribute("mb_temp","");
     1192
     1193                os << "      Hardware Monitor:<br />\r\n";
     1194                os << "      <ul>\r\n";
     1195                os << "        <li>Current CPU temperature: " << cpu_temp << "</li>\r\n";
     1196
     1197                if(cpu_fan_speed != "")
     1198                {
     1199                    os << "        <li>Current CPU fan speed: " << cpu_fan_speed << "</li>\r\n";
     1200                }
     1201
     1202                if(mb_temp != "")
     1203                {
     1204                    os << "        <li>Current motherboard temperature: " << mb_temp << "</li>\r\n";
     1205                }
     1206
     1207                os << "      </ul>\r\n";
     1208            }
    11691209        }
    11701210    }
    11711211