/* * 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 */