summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNiklas Goby2011-04-11 00:51:09 +0200
committerNiklas Goby2011-04-11 00:51:09 +0200
commit3ae5d81d6ff7c51ad2fc107b838632648811fbb9 (patch)
treed65070df8a2eff5edb98025c0dd678de26e18f05 /src
parentinserted the sysinfolibsysfs methods intho the sysinfo class (diff)
downloadfbgui-3ae5d81d6ff7c51ad2fc107b838632648811fbb9.tar.gz
fbgui-3ae5d81d6ff7c51ad2fc107b838632648811fbb9.tar.xz
fbgui-3ae5d81d6ff7c51ad2fc107b838632648811fbb9.zip
added method into sysInfo class for receiving informations
about usb devices. name of the method is getVendorProductSerialNumber() call with: getInfos("usb") return json formated qstring [{"vendorid":"..", "productid":"..", "serialnumber":".."}, .. ]
Diffstat (limited to 'src')
-rw-r--r--src/fbgui.pro6
-rw-r--r--src/sysinfo.cpp56
-rw-r--r--src/sysinfo.h2
3 files changed, 62 insertions, 2 deletions
diff --git a/src/fbgui.pro b/src/fbgui.pro
index a6e60c6..d1c6bf7 100644
--- a/src/fbgui.pro
+++ b/src/fbgui.pro
@@ -11,11 +11,13 @@ LIBS += -L/usr/local/qjson/lib \
-L/usr/local/Qxt/lib \
-lQxtCore \
-L/usr/lib \
- -lsysfs
+ -lsysfs \
+ -lusb-1.0
INCLUDEPATH += /usr/local/qjson/include \
/usr/local/Qxt/include \
/usr/local/Qxt/include/QxtCore \
- /usr/include/sysfs
+ /usr/include/sysfs \
+ /usr/include/libusb-1.0
HEADERS += sysinfolibsysfs.h \
sysinfo.h \
loggerengine.h \
diff --git a/src/sysinfo.cpp b/src/sysinfo.cpp
index 57703ae..5440717 100644
--- a/src/sysinfo.cpp
+++ b/src/sysinfo.cpp
@@ -16,6 +16,8 @@ const QString SysInfo::getInfo(const QString& infoName){
return getAllInfos();
else if (infoName == QString("mbserial"))
return getMainboardSerial();
+ else if (infoName == QString("usb"))
+ return getUsbVendorIdProductIdSerialNumber();
else if (infoName == QString("json"))
return getNames();
/* unknown code */
@@ -106,7 +108,61 @@ const QString SysInfo::getMainboardSerial(){
sysfs_close_class_device(class_device);
return "mainboard_serial_error";
}
+// ------------------------------------------------------------------------------------------------
+const QString SysInfo::getUsbVendorIdProductIdSerialNumber()
+{
+ QString tag = "[sysinfo] Usb Serial:";
+ QString out = "";
+ QVariantList list;
+
+ libusb_device **devs;
+ libusb_context *ctx = NULL; //a libusb session
+ ssize_t cnt; //holding number of devices in list
+ int r = 1;
+ r = libusb_init(&ctx);
+ if(r<0){
+ qxtLog->debug()<< tag + "failed to initialise libusb";
+ return "error";
+ }
+ cnt = libusb_get_device_list(ctx, &devs); //get the list of devices
+ if(cnt < 0) {
+ qxtLog->debug()<< tag + "Get Device Error"; //there was an error
+ }
+ qxtLog->debug()<< tag + cnt + " Devices in list."; //print total number of usb devices
+ ssize_t i; //for iterating through the list#
+ for(i=0; i < cnt; i++){
+ //printdev(devs[i]); //print specs of this device
+ QVariantMap infos;
+ libusb_device *dev = devs[i];
+ libusb_device_descriptor desc;
+ int re = libusb_get_device_descriptor(dev, &desc);
+ if (re < 0) {
+ qxtLog->debug()<< tag + "failed to get device descriptor";
+ return "error";
+ }
+ infos.insert("vendorId",QString(desc.idVendor));
+ infos.insert("productId",QString(desc.idProduct));
+ unsigned char string[256];
+ libusb_device_handle *handle;
+ re = libusb_open(dev, &handle);
+ if (re != 0) {
+ qxtLog->debug()<< tag + "failed to get handler / fail to open device";
+ return "error";
+ }
+ re = libusb_get_string_descriptor_ascii(handle,desc.iSerialNumber, string, sizeof(string));
+ if (re < 0) {
+ qxtLog->debug()<< tag + "failed to get SerialNumber";
+ return "error";
+ }
+ infos.insert("serialnumber",QString((const char *)string));
+ list << infos;
+ }
+ libusb_free_device_list(devs, 1); //free the list, unref the devices in it
+ libusb_exit(ctx); //close the session
+ QByteArray json = serializer.serialize(list);
+ return json;
+}
// ------------------------------------------------------------------------------------------------
QString SysInfo::getScriptOutput(QString cmd)
diff --git a/src/sysinfo.h b/src/sysinfo.h
index d32d0f8..f4968e8 100644
--- a/src/sysinfo.h
+++ b/src/sysinfo.h
@@ -23,6 +23,7 @@ extern "C" {
#endif
#include "libsysfs.h"
+#include <libusb-1.0/libusb.h>
#ifdef __cplusplus
}
#endif
@@ -42,6 +43,7 @@ private:
const QString getMACAddress();
const QString getIPAddress();
const QString getMainboardSerial();
+ const QString getUsbVendorIdProductIdSerialNumber();
QString getAllInfos();
QString getScriptOutput(QString cmd);