From 107852452a3f9fe7ad2816d8366a1158da103f93 Mon Sep 17 00:00:00 2001 From: Niklas Goby Date: Fri, 8 Apr 2011 17:54:05 +0200 Subject: some changes in the sysinfolibfs clas. we can now get the mainboard serial number for the hardware hash --- src/fbgui.cpp | 2 +- src/sysinfolibsysfs.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ src/sysinfolibsysfs.h | 2 ++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/fbgui.cpp b/src/fbgui.cpp index 5527601..494c4e8 100644 --- a/src/fbgui.cpp +++ b/src/fbgui.cpp @@ -24,7 +24,7 @@ fbgui::fbgui() // test for libsys function SysInfoLibsysfs* sil = new SysInfoLibsysfs(); //sil->getInfoAboutNetworkInterface(); - sil->getInfoAboutClassNet(); + sil->getInfoMainboardSerial(); setupLayout(); createActions(); diff --git a/src/sysinfolibsysfs.cpp b/src/sysinfolibsysfs.cpp index 71d0aec..d9bbac8 100644 --- a/src/sysinfolibsysfs.cpp +++ b/src/sysinfolibsysfs.cpp @@ -39,6 +39,61 @@ void SysInfoLibsysfs::getInfoAboutNetworkInterface() 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; diff --git a/src/sysinfolibsysfs.h b/src/sysinfolibsysfs.h index d473843..3da58ce 100644 --- a/src/sysinfolibsysfs.h +++ b/src/sysinfolibsysfs.h @@ -47,6 +47,8 @@ public: virtual ~SysInfoLibsysfs(); void getInfoAboutNetworkInterface(); void getInfoAboutClassNet(); + void getInfoMbSerial(); + QString getInfoMainboardSerial(); }; -- cgit v1.2.3-55-g7522