From a5eb4ba1296c6279e5535bf3bcc1f1796707f6c6 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 5 Jul 2012 16:53:55 +0200 Subject: Initial import --- src/usb.h | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/usb.h (limited to 'src/usb.h') diff --git a/src/usb.h b/src/usb.h new file mode 100644 index 0000000..9b093d0 --- /dev/null +++ b/src/usb.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2012 + * Lars-Dominik Braun + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef _USB_H +#define _USB_H + +#include + +#include "device.h" +#include "common.h" + +typedef enum { + HIDPP_PERROR_OK = 0, /* not an error */ + HIDPP_PERROR_UNKNOWN = 1, + HIDPP_PERROR_INVALID_ARGUMENT = 2, + HIDPP_PERROR_OUT_OF_RANGE = 3, + HIDPP_PERROR_HWERROR = 4, + HIDPP_PERROR_LOGITECH_INTERNAL = 5, + HIDPP_PERROR_INVALID_FEATURE = 6, + HIDPP_PERROR_INVALID_FUNCTION = 7, + HIDPP_PERROR_BUSY = 8, + HIDPP_PERROR_UNSUPPORTED = 9, +} hidppPacketError_t; + +#define HIDPP_MAX_PACKETLEN 32 + +/* HID++ packet sent over USB */ +typedef struct { + uint8_t id; + hidppDeviceId_t devId; + uint8_t featureIdx; + uint8_t function; + uint8_t softwareId; + /* make sure we have enough room for at least one \0 too */ + uint8_t args[HIDPP_MAX_PACKETLEN]; + hidppPacketError_t error; +} hidppPacket_t; + +void hidppUsbDeviceOpen (libusb_device * const dev, libusb_device_handle **handle); +void hidppUsbDeviceClose (libusb_device_handle *handle); +hidppReturn_t hidppUsbRequest (hidppDevice_t * const d, + const hidppFeatureId_t feature, const uint8_t function, + const uint8_t * const args, const size_t argsCount, + hidppPacket_t * const rp); + +#endif /* _USB_H */ + -- cgit v1.2.3