src/HidDevice.cpp
author sl
Tue, 27 May 2014 17:49:33 +0200
changeset 27 ee1305f3a6bf
parent 15 e5b84f315be7
permissions -rw-r--r--
Experimenting with our bitmap to bitarray convertion.
sl@14
     1
//
sl@14
     2
//
sl@14
     3
//
sl@14
     4
sl@14
     5
#include "HidDevice.h"
sl@14
     6
sl@14
     7
sl@14
     8
sl@14
     9
//
sl@14
    10
// class HidDevice
sl@14
    11
//
sl@14
    12
sl@15
    13
HidDevice::HidDevice():iHidDevice(NULL)
sl@15
    14
    {
sl@16
    15
    Close();
sl@15
    16
    }
sl@15
    17
sl@14
    18
/**
sl@14
    19
*/
sl@14
    20
int HidDevice::Open(const char* aPath)
sl@14
    21
	{
sl@14
    22
	Close();
sl@14
    23
sl@14
    24
	iHidDevice =  hid_open_path(aPath);
sl@14
    25
sl@14
    26
	if (!iHidDevice)
sl@14
    27
		{
sl@14
    28
		//Fail to connect our device
sl@14
    29
		return 0;
sl@14
    30
		}
sl@14
    31
sl@16
    32
    FetchStrings();
sl@16
    33
sl@14
    34
	return 1;
sl@14
    35
	}
sl@14
    36
sl@14
    37
/**
sl@14
    38
See hidapi documentation.
sl@14
    39
*/
sl@14
    40
int HidDevice::Open(unsigned short aVendorId, unsigned short aProductId, const wchar_t* aSerialNumber)
sl@14
    41
	{
sl@16
    42
    Close();
sl@16
    43
sl@14
    44
	iHidDevice = hid_open(aVendorId, aProductId, aSerialNumber);
sl@14
    45
sl@14
    46
	if (!iHidDevice)
sl@14
    47
		{
sl@14
    48
		//Fail to connect our device
sl@14
    49
		return 0;
sl@14
    50
		}
sl@14
    51
sl@16
    52
    FetchStrings();
sl@16
    53
sl@14
    54
	return 1;
sl@14
    55
	}
sl@14
    56
sl@14
    57
/**
sl@14
    58
*/
sl@14
    59
void HidDevice::Close()
sl@14
    60
	{
sl@14
    61
	hid_close(iHidDevice);
sl@14
    62
	iHidDevice=NULL;
sl@16
    63
    //
sl@16
    64
    memset(iVendor,0,sizeof(iVendor));
sl@16
    65
    memset(iProduct,0,sizeof(iProduct));
sl@16
    66
    memset(iSerialNumber,0,sizeof(iSerialNumber));
sl@14
    67
	}
sl@14
    68
sl@14
    69
/**
sl@14
    70
*/
sl@14
    71
bool HidDevice::IsOpen()
sl@14
    72
    {
sl@14
    73
    return iHidDevice!=NULL;
sl@14
    74
    }
sl@14
    75
sl@14
    76
sl@14
    77
/**
sl@14
    78
*/
sl@14
    79
const wchar_t* HidDevice::Error()
sl@14
    80
	{
sl@14
    81
	return hid_error(iHidDevice);
sl@14
    82
	}
sl@14
    83
sl@14
    84
/**
sl@14
    85
*/
sl@14
    86
int HidDevice::SetNonBlocking(int aNonBlocking)
sl@14
    87
	{
sl@14
    88
	//Success we are now connected to our HID device
sl@14
    89
	//Set read operation as non blocking
sl@14
    90
	return hid_set_nonblocking(iHidDevice, aNonBlocking);
sl@14
    91
	}
sl@16
    92
sl@16
    93
/**
sl@16
    94
*/
sl@16
    95
wchar_t* HidDevice::Vendor()
sl@16
    96
    {
sl@16
    97
    return iVendor;
sl@16
    98
    }
sl@16
    99
sl@16
   100
/**
sl@16
   101
*/
sl@16
   102
wchar_t* HidDevice::Product()
sl@16
   103
    {
sl@16
   104
    return iProduct;
sl@16
   105
    }
sl@16
   106
sl@16
   107
/**
sl@16
   108
*/
sl@16
   109
wchar_t* HidDevice::SerialNumber()
sl@16
   110
    {
sl@16
   111
    return iSerialNumber;
sl@16
   112
    }
sl@16
   113
sl@16
   114
/**
sl@16
   115
sl@16
   116
*/
sl@16
   117
void HidDevice::FetchStrings()
sl@16
   118
    {
sl@16
   119
    hid_get_manufacturer_string(iHidDevice,iVendor,sizeof(iVendor));
sl@16
   120
    hid_get_product_string(iHidDevice,iProduct,sizeof(iProduct));
sl@16
   121
    hid_get_serial_number_string(iHidDevice,iSerialNumber,sizeof(iSerialNumber));
sl@16
   122
    }