API CHANGE (new action):

sysadm/moused, "action"="list_devices_active": This will return a list of all the devices which are currently active.
-------------

REST Request (example):
-------------------------------
PUT /sysadm/moused
{
   "action" : "list_devices_active"
}

WebSocket Request:
-------------------------------
{
   "name" : "moused",
   "namespace" : "sysadm",
   "id" : "fooid",
   "args" : {
      "action" : "list_devices_active"
   }
}

Response:
-------------------------------
{
  "args": {
    "list_devices_active": {
      "active_devices": [
        "ums0"
      ]
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
This commit is contained in:
Ken Moore
2017-01-19 08:35:16 -05:00
parent abf0846b36
commit be87daf81d
3 changed files with 39 additions and 18 deletions

View File

@@ -1225,6 +1225,8 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmMousedRequest(const QJsonVal
QJsonObject outobj;
if(action == "list_devices"){
outobj = sysadm::moused::listDevices();
}else if(action == "list_devices_active"){
outobj = sysadm::moused::listActiveDevices();
}else if(action == "list_device_options"){
outobj = sysadm::moused::listOptions();
}else if(action == "read_device_options"){

View File

@@ -17,11 +17,16 @@ using namespace sysadm;
QJsonObject moused::listDevices(){
QJsonObject out;
//First find all the active devices
QDir dir("/var/run");
QStringList devs = dir.entryList(QStringList() << "moused-*.pid", QDir::Files, QDir::Name);
QStringList devsactive = dir.entryList(QStringList() << "moused-*.pid", QDir::Files, QDir::Name);
for(int i=0; i<devsactive.length(); i++){ devsactive[i] = devsactive[i].section("-",1,-1).section(".pid",0,0); }
//Now find *all* the devices
dir.cd("/dev");
QStringList devs = dir.entryList(QStringList() << "psm*" << "ums*" << "mse*", QDir::System, QDir::Name);
//qDebug() << "Found moused devices:" << devs;
for(int i=0; i<devs.length(); i++){
QString dev = devs[i].section("-",1,-1).section(".pid",0,0);
QString dev = devs[i];
QString sysctlprefix = "dev."+dev.left(dev.length()-1)+"."+dev.right(1)+".";
//qDebug() << " - Device:" << dev << "Sysctl Prefix:" << sysctlprefix;
QJsonObject devObj;
@@ -29,6 +34,7 @@ QJsonObject moused::listDevices(){
devObj.insert("description", General::sysctl(sysctlprefix+"%desc"));
devObj.insert("parent", General::sysctl(sysctlprefix+"%parent"));
devObj.insert("driver", General::sysctl(sysctlprefix+"%driver"));
devObj.insert("active", (devsactive.contains(dev)) ? "true" : "false");
out.insert(dev, devObj);
}
//qDebug() << "Device List:" << out;
@@ -127,19 +133,32 @@ QJsonObject moused::setOptions(QJsonObject obj){
return Cobj; //return the object for the settings we just used
}
//sysctl changes for classes of devices
/*QJsonObject moused::listSysctlDevices(){
//Service status for devices (enable/disable device)
QJsonObject moused::listActiveDevices(){
QDir dir("/var/run");
QJsonObject out;
QStringList devsactive = dir.entryList(QStringList() << "moused-*.pid", QDir::Files, QDir::Name);
for(int i=0; i<devsactive.length(); i++){
devsactive[i] = devsactive[i].section("-",1,-1).section(".pid",0,0);
}
out.insert("active_devices", QJsonArray::fromStringList(devsactive));
return out;
}
QJsonObject moused::listSysctls(QJsonObject){
QJsonObject moused::enableDevice(QJsonObject obj){
if(!obj.contains("device")){ return QJsonObject(); }
QString device = obj.value("device").toString();
General::RunQuickCommand("service moused."+device+" start");
QJsonObject out;
out.insert("started", device);
return out;
}
QJsonObject moused::readSysctls(QJsonObject){
QJsonObject moused::disableDevice(QJsonObject obj){
if(!obj.contains("device")){ return QJsonObject(); }
QString device = obj.value("device").toString();
General::RunQuickCommand("service moused."+device+" stop");
QJsonObject out;
out.insert("stopped", device);
return out;
}
QJsonObject moused::setSysctls(QJsonObject){
}*/

View File

@@ -21,11 +21,11 @@ public:
static QJsonObject readOptions(QJsonObject); //current values for device
static QJsonObject setOptions(QJsonObject); //change values for device
//sysctl changes for classes of devices
/*static QJsonObject listSysctlDevices();
static QJsonObject listSysctls(QJsonObject);
static QJsonObject readSysctls(QJsonObject);
static QJsonObject setSysctls(QJsonObject);*/
//Service status for devices (enable/disable device)
static QJsonObject listActiveDevices();
static QJsonObject enableDevice(QJsonObject);
static QJsonObject disableDevice(QJsonObject);
};
} //end of namespace