sl@4: // sl@4: // sl@4: // sl@4: sl@4: #include "HidDevice.h" sl@4: sl@4: sl@4: sl@4: // sl@4: // class HidDevice sl@4: // sl@4: sl@4: HidDevice::HidDevice():iHidDevice(NULL) sl@4: { sl@4: Close(); sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: int HidDevice::Open(const char* aPath) sl@4: { sl@4: Close(); sl@4: sl@4: iHidDevice = hid_open_path(aPath); sl@4: sl@4: if (!iHidDevice) sl@4: { sl@4: //Fail to connect our device sl@4: return 0; sl@4: } sl@4: sl@4: FetchStrings(); sl@4: sl@4: return 1; sl@4: } sl@4: sl@4: /** sl@4: See hidapi documentation. sl@4: */ sl@4: int HidDevice::Open(unsigned short aVendorId, unsigned short aProductId, const wchar_t* aSerialNumber) sl@4: { sl@4: Close(); sl@4: sl@4: iHidDevice = hid_open(aVendorId, aProductId, aSerialNumber); sl@4: sl@4: if (!iHidDevice) sl@4: { sl@4: //Fail to connect our device sl@4: return 0; sl@4: } sl@4: sl@4: FetchStrings(); sl@4: sl@4: return 1; sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: void HidDevice::Close() sl@4: { sl@4: hid_close(iHidDevice); sl@4: iHidDevice=NULL; sl@4: // sl@4: memset(iVendor,0,sizeof(iVendor)); sl@4: memset(iProduct,0,sizeof(iProduct)); sl@4: memset(iSerialNumber,0,sizeof(iSerialNumber)); sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: bool HidDevice::IsOpen() sl@4: { sl@4: return iHidDevice!=NULL; sl@4: } sl@4: sl@4: sl@4: /** sl@4: */ sl@4: const wchar_t* HidDevice::Error() sl@4: { sl@4: return hid_error(iHidDevice); sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: int HidDevice::SetNonBlocking(int aNonBlocking) sl@4: { sl@4: //Success we are now connected to our HID device sl@4: //Set read operation as non blocking sl@4: return hid_set_nonblocking(iHidDevice, aNonBlocking); sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: wchar_t* HidDevice::Vendor() sl@4: { sl@4: return iVendor; sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: wchar_t* HidDevice::Product() sl@4: { sl@4: return iProduct; sl@4: } sl@4: sl@4: /** sl@4: */ sl@4: wchar_t* HidDevice::SerialNumber() sl@4: { sl@4: return iSerialNumber; sl@4: } sl@4: sl@4: /** sl@4: sl@4: */ sl@4: void HidDevice::FetchStrings() sl@4: { sl@4: hid_get_manufacturer_string(iHidDevice,iVendor,sizeof(iVendor)); sl@4: hid_get_product_string(iHidDevice,iProduct,sizeof(iProduct)); sl@4: hid_get_serial_number_string(iHidDevice,iSerialNumber,sizeof(iSerialNumber)); sl@4: }