# HG changeset patch # User sl # Date 1400741114 -7200 # Node ID 21033ded8f8634ff7c03770e845ba49deb2396ef # Parent e5b84f315be743add4f658cd3fbbb4b510002a2f Adding vendor/product/serial number strings support to our HidDevice. diff -r e5b84f315be7 -r 21033ded8f86 inc/HidDevice.h --- a/inc/HidDevice.h Thu May 22 08:17:14 2014 +0200 +++ b/inc/HidDevice.h Thu May 22 08:45:14 2014 +0200 @@ -8,6 +8,7 @@ #include "HidReport.h" #include "hidapi.h" +const int KMaxHidStringChar=256; /** TODO: move to another header @@ -27,10 +28,21 @@ int Write(const HidReport& aOutputReport); // const wchar_t* Error(); + // + wchar_t* Vendor(); + wchar_t* Product(); + wchar_t* SerialNumber(); + +private: + void FetchStrings(); private: ///Our USB HID device hid_device* iHidDevice; + // + wchar_t iVendor[KMaxHidStringChar]; + wchar_t iProduct[KMaxHidStringChar]; + wchar_t iSerialNumber[KMaxHidStringChar]; }; diff -r e5b84f315be7 -r 21033ded8f86 src/HidDevice.cpp --- a/src/HidDevice.cpp Thu May 22 08:17:14 2014 +0200 +++ b/src/HidDevice.cpp Thu May 22 08:45:14 2014 +0200 @@ -12,7 +12,7 @@ HidDevice::HidDevice():iHidDevice(NULL) { - + Close(); } /** @@ -29,6 +29,8 @@ return 0; } + FetchStrings(); + return 1; } @@ -37,6 +39,8 @@ */ int HidDevice::Open(unsigned short aVendorId, unsigned short aProductId, const wchar_t* aSerialNumber) { + Close(); + iHidDevice = hid_open(aVendorId, aProductId, aSerialNumber); if (!iHidDevice) @@ -45,6 +49,8 @@ return 0; } + FetchStrings(); + return 1; } @@ -54,6 +60,10 @@ { hid_close(iHidDevice); iHidDevice=NULL; + // + memset(iVendor,0,sizeof(iVendor)); + memset(iProduct,0,sizeof(iProduct)); + memset(iSerialNumber,0,sizeof(iSerialNumber)); } /** @@ -79,3 +89,34 @@ //Set read operation as non blocking return hid_set_nonblocking(iHidDevice, aNonBlocking); } + +/** +*/ +wchar_t* HidDevice::Vendor() + { + return iVendor; + } + +/** +*/ +wchar_t* HidDevice::Product() + { + return iProduct; + } + +/** +*/ +wchar_t* HidDevice::SerialNumber() + { + return iSerialNumber; + } + +/** + +*/ +void HidDevice::FetchStrings() + { + hid_get_manufacturer_string(iHidDevice,iVendor,sizeof(iVendor)); + hid_get_product_string(iHidDevice,iProduct,sizeof(iProduct)); + hid_get_serial_number_string(iHidDevice,iSerialNumber,sizeof(iSerialNumber)); + }