summaryrefslogblamecommitdiffstats
path: root/src/sysinfolibsysfs.cpp
blob: acfa014113097a169bb052656c65bcdc4a0be0e1 (plain) (tree)
1
2
3
4
5
6


                      


                                                                     





















                                                                                        
                                                                  










                                                          


                                     





                                                                    
                                                                          

                      
 
                                                        


























                                                                                             
                 
 


                                      




                                                              
 
/*
 * 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"

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::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;
}