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