From 3cb89665b7ce92e163a0b0321000527810c8189d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 26 Oct 2017 09:59:10 -0400 Subject: [PATCH] Compress the batteryInfo function into a single "apm" process call instead of 3 of them. --- src/server/library/sysadm-systemmanager.cpp | 40 ++++++++++++--------- src/server/library/sysadm-systemmanager.h | 3 ++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/server/library/sysadm-systemmanager.cpp b/src/server/library/sysadm-systemmanager.cpp index e8938a4..a72b5e7 100644 --- a/src/server/library/sysadm-systemmanager.cpp +++ b/src/server/library/sysadm-systemmanager.cpp @@ -12,30 +12,24 @@ using namespace sysadm; -//PLEASE: Keep the functions in the same order as listed in pcbsd-general.h - //Battery Availability QJsonObject SysMgmt::batteryInfo(){ QJsonObject retObject; bool ok; + QString tmp; //temporary string for use later - int val = General::RunCommand("apm -l").toInt(&ok); - if ( ok && (val >= 0 && val <= 100) ) { - retObject.insert("battery", "true"); - } else { + //Battery Charging State + QStringList vals = General::RunCommand("apm -alt").split("\n"); + int state =-1; + if(vals.length()>=1){ state = vals[0].toInt(&ok); } + //Battery Charge State is 255 if no battery available + if (ok && state == 255 ){ retObject.insert("battery", "false"); return retObject; } - - // We have a battery, return info about it - //Battery Charge Level - QString tmp; - tmp.setNum(val); - retObject.insert("level", tmp); - - //Battery Charging State - int state = General::RunCommand("apm -a").toInt(&ok); + retObject.insert("battery", "true"); + // Charging state if ( ok && state == 0 ) retObject.insert("status", "offline"); else if ( ok && state == 1 ) @@ -44,8 +38,20 @@ QJsonObject SysMgmt::batteryInfo(){ retObject.insert("status", "backup"); else retObject.insert("status", "unknown"); - - int timeleft = General::RunCommand("apm -t").toInt(&ok); + // Charging Level + int level = -1; + ok = false; + if(vals.length()>=2){ level = vals[1].toInt(&ok); } + if ( ok ) { + tmp.setNum(level); + retObject.insert("level", tmp); + } else { + retObject.insert("level", "-1"); + } + // Time Left (seconds) + int timeleft = -1; + ok = false; + if(vals.length()>=3){ timeleft= vals[2].toInt(&ok); } if ( ok ) { tmp.setNum(timeleft); retObject.insert("timeleft", tmp); diff --git a/src/server/library/sysadm-systemmanager.h b/src/server/library/sysadm-systemmanager.h index b685f7a..df0fd88 100644 --- a/src/server/library/sysadm-systemmanager.h +++ b/src/server/library/sysadm-systemmanager.h @@ -22,9 +22,12 @@ public: static QJsonObject killProc(QJsonObject); static QJsonObject memoryStats(); static QJsonObject procInfo(); + + //sysctl management static QJsonObject getSysctl(QJsonObject); static QJsonObject setSysctl(QJsonObject); static QJsonObject sysctlList(); + static QJsonObject systemInfo(); static QJsonObject systemReboot(); static QJsonObject systemHalt();