summaryrefslogblamecommitdiffstats
path: root/src/sysinfolibsysfs.cpp
blob: 90301553988ee95c4be92d5d62b49f4fd0b4f839 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12


                      


                                                                     





                            


                                                                                                         
                                    
                                           



                                     
                                          

 













                                                                            

 





























                                                                            

 





















                                                                            

 


















































                                                                             
 
/*
 * sysinfolibsysfs.cpp
 *
 * This class uses the libsysfs library to collect informations about
 * the hardware devices of the client machine.
 *
 *  Created on: Mar 23, 2011
 *      Author: niklas
 */

#include "sysinfolibsysfs.h"

//-------------------------------------------------------------------------------------------------------
//                                         Initialisation
//-------------------------------------------------------------------------------------------------------
SysInfoLibsysfs::SysInfoLibsysfs() {
    // TODO Auto-generated constructor stub

}

SysInfoLibsysfs::~SysInfoLibsysfs() {
    // TODO Auto-generated destructor stub
}

void SysInfoLibsysfs::getInfoAboutNetworkInterface() {
    struct sysfs_class_device *class_device = sysfs_open_class_device("net",
            "eth0");
    struct dlist *attrlist = sysfs_get_classdev_attributes(class_device);
    struct sysfs_device *device = sysfs_get_classdev_device(class_device);
    //struct sysfs_driver *driver = sysfs_get_classdev_driver(class_device);
    if (device == NULL) {
        //qxtLog->debug() << "[libsysfs] device is NULL!";
    } else {
        qDebug() << "--- print eth0 device path:";
        qDebug() << QString(device->path);
    }

    sysfs_close_class_device(class_device);
}

void SysInfoLibsysfs::getInfoMbSerial() {
    QJson::Serializer serializer;
    QVariantList listOfDevices;

    struct sysfs_class_device *class_device = sysfs_open_class_device("dmi",
            "id");
    struct dlist *attrlist = sysfs_get_classdev_attributes(class_device);
    struct sysfs_device *device = sysfs_get_classdev_device(class_device);

    if (attrlist != NULL) {
        struct sysfs_attribute *attr = NULL;
        QVariantList list;
        dlist_for_each_data(attrlist, attr, struct sysfs_attribute) {
            QVariantMap a;
            if(QString(attr->name) == QString("board_serial")) {
                a.insert("name", QString(attr->name));
                a.insert("value", QString(attr->value));
                a.insert("len", QString(attr->len));
                a.insert("path", QString(attr->path));
                a.insert("method", QString(attr->method));
                list << a;
            }
        }
        QByteArray json = serializer.serialize(list);

        qDebug() << json;
        return;
    }
    qDebug() << "attrlist is null!";
    sysfs_close_class_device(class_device);
}

QString SysInfoLibsysfs::getInfoMainboardSerial() {
    QString out = "";
    struct sysfs_class_device *class_device = sysfs_open_class_device("dmi",
            "id");
    struct dlist *attrlist = sysfs_get_classdev_attributes(class_device);
    struct sysfs_device *device = sysfs_get_classdev_device(class_device);

    if (attrlist != NULL) {
        struct sysfs_attribute *attr = NULL;
        dlist_for_each_data(attrlist, attr, struct sysfs_attribute) {
            QVariantMap a;
            if(QString(attr->name) == QString("board_serial")) {
                out = QString(attr->value);
            }
        }

        qDebug() << out;
        return out;
    }
    qDebug() << "attrlist is null!";
    sysfs_close_class_device(class_device);
    return NULL;
}

void SysInfoLibsysfs::getInfoAboutClassNet() {
    QJson::Serializer serializer;
    QVariantList listOfDevices;

    struct sysfs_class *sysfsclass = sysfs_open_class("net");
    struct dlist *devices = sysfs_get_class_devices(sysfsclass);
    struct sysfs_device *dev = NULL;
    dlist_for_each_data(devices,dev, struct sysfs_device) {
        if(dev == NULL) {
            qDebug() << "device is NULL!";
            //qxtLog->debug() << "[libsysfs] device is NULL!";
        }
        else {

            qDebug() << "--- print device:";

            QVariantMap infos;
            infos.insert("name", QString(dev->name));
            infos.insert("bus", QString(dev->bus));
            infos.insert("bus_id", QString(dev->bus_id));
            infos.insert("driver_name", QString(dev->driver_name));
            infos.insert("path", QString(dev->path));
            infos.insert("subsystem", QString(dev->subsystem));
            struct dlist *attrlist = dev->attrlist;
            if (attrlist != NULL) {
                struct sysfs_attribute *attr = NULL;
                QVariantList list;
                dlist_for_each_data(attrlist, attr, struct sysfs_attribute) {
                    QVariantMap a;
                    a.insert("name", QString(attr->name));
                    a.insert("value", QString(attr->value));
                    a.insert("len", QString(attr->len));
                    a.insert("path", QString(attr->path));
                    a.insert("method", QString(attr->method));
                    list << a;
                }
                QByteArray json = serializer.serialize(list);

                qDebug() << json;
                infos.insert("attrlist", list);
            }
            listOfDevices << infos;
        }

    }

    sysfs_close_class(sysfsclass);

    QByteArray json = serializer.serialize(listOfDevices);

    qDebug() << json;
}