b4add9b745
Without this patch, "adb devices" will say "no permissions" when it sees a device it can't write to, but "fastboot devices" will silently ignore it. This is confusing to n00bs, especially since it doesn't seem to be widely known that a device's USB id might be different in the bootloader (meaning two udev rules are needed). It can also be confusing if you're sshed in, when you can't access the device because you won't be in the "plugdev" group, but "fastboot devices" won't make this clear. I'm not sure about the Mac OS and Windows changes. AIUI, devices are always writable on those platforms, but I don't use either, so I can't test this. This patch shouldn't alter the behavior on either of those platforms.
66 lines
2.2 KiB
C
66 lines
2.2 KiB
C
/*
|
|
* Copyright (C) 2008 The Android Open Source Project
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef _USB_H_
|
|
#define _USB_H_
|
|
|
|
typedef struct usb_handle usb_handle;
|
|
|
|
typedef struct usb_ifc_info usb_ifc_info;
|
|
|
|
struct usb_ifc_info
|
|
{
|
|
/* from device descriptor */
|
|
unsigned short dev_vendor;
|
|
unsigned short dev_product;
|
|
|
|
unsigned char dev_class;
|
|
unsigned char dev_subclass;
|
|
unsigned char dev_protocol;
|
|
|
|
unsigned char ifc_class;
|
|
unsigned char ifc_subclass;
|
|
unsigned char ifc_protocol;
|
|
|
|
unsigned char has_bulk_in;
|
|
unsigned char has_bulk_out;
|
|
|
|
unsigned char writable;
|
|
|
|
char serial_number[256];
|
|
};
|
|
|
|
typedef int (*ifc_match_func)(usb_ifc_info *ifc);
|
|
|
|
usb_handle *usb_open(ifc_match_func callback);
|
|
int usb_close(usb_handle *h);
|
|
int usb_read(usb_handle *h, void *_data, int len);
|
|
int usb_write(usb_handle *h, const void *_data, int len);
|
|
|
|
|
|
#endif
|