|
Packit Service |
b0a153 |
/*
|
|
Packit Service |
b0a153 |
* Copyright 2006-2008, Haiku Inc. All rights reserved.
|
|
Packit Service |
b0a153 |
* Distributed under the terms of the MIT License.
|
|
Packit Service |
b0a153 |
*/
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
#ifndef _USB_RAW_H_
|
|
Packit Service |
b0a153 |
#define _USB_RAW_H_
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
#include <USB3.h>
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
#define B_USB_RAW_PROTOCOL_VERSION 0x0015
|
|
Packit Service |
b0a153 |
#define B_USB_RAW_ACTIVE_ALTERNATE 0xffffffff
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
typedef enum {
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_VERSION = 0x1000,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_DEVICE_DESCRIPTOR = 0x2000,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_STRING_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_ALT_INTERFACE_COUNT,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_ACTIVE_ALT_INTERFACE_INDEX,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_INTERFACE_DESCRIPTOR_ETC,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_ENDPOINT_DESCRIPTOR_ETC,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_GENERIC_DESCRIPTOR_ETC,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_CONFIGURATION_DESCRIPTOR_ETC,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_SET_CONFIGURATION = 0x3000,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_SET_FEATURE,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_CLEAR_FEATURE,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_STATUS,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_GET_DESCRIPTOR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_SET_ALT_INTERFACE,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_CONTROL_TRANSFER = 0x4000,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_INTERRUPT_TRANSFER,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_BULK_TRANSFER,
|
|
Packit Service |
b0a153 |
B_USB_RAW_COMMAND_ISOCHRONOUS_TRANSFER
|
|
Packit Service |
b0a153 |
} usb_raw_command_id;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
typedef enum {
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_SUCCESS = 0,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_FAILED,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_ABORTED,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_STALLED,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_CRC_ERROR,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_TIMEOUT,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_INVALID_CONFIGURATION,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_INVALID_INTERFACE,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_INVALID_ENDPOINT,
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_INVALID_STRING,
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
B_USB_RAW_STATUS_NO_MEMORY
|
|
Packit Service |
b0a153 |
} usb_raw_command_status;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
typedef union {
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
} version;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_device_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
} device;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_configuration_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
} config;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_configuration_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} config_etc;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
uint32 alternate_info;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
} alternate;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_interface_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
} interface;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_interface_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
uint32 alternate_index;
|
|
Packit Service |
b0a153 |
} interface_etc;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_endpoint_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
uint32 endpoint_index;
|
|
Packit Service |
b0a153 |
} endpoint;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_endpoint_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
uint32 alternate_index;
|
|
Packit Service |
b0a153 |
uint32 endpoint_index;
|
|
Packit Service |
b0a153 |
} endpoint_etc;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
uint32 generic_index;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} generic;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 config_index;
|
|
Packit Service |
b0a153 |
uint32 interface_index;
|
|
Packit Service |
b0a153 |
uint32 alternate_index;
|
|
Packit Service |
b0a153 |
uint32 generic_index;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} generic_etc;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
usb_string_descriptor *descriptor;
|
|
Packit Service |
b0a153 |
uint32 string_index;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} string;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
uint8 type;
|
|
Packit Service |
b0a153 |
uint8 index;
|
|
Packit Service |
b0a153 |
uint16 language_id;
|
|
Packit Service |
b0a153 |
void *data;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} descriptor;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
uint8 request_type;
|
|
Packit Service |
b0a153 |
uint8 request;
|
|
Packit Service |
b0a153 |
uint16 value;
|
|
Packit Service |
b0a153 |
uint16 index;
|
|
Packit Service |
b0a153 |
uint16 length;
|
|
Packit Service |
b0a153 |
void *data;
|
|
Packit Service |
b0a153 |
} control;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
uint32 interface;
|
|
Packit Service |
b0a153 |
uint32 endpoint;
|
|
Packit Service |
b0a153 |
void *data;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
} transfer;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
struct {
|
|
Packit Service |
b0a153 |
status_t status;
|
|
Packit Service |
b0a153 |
uint32 interface;
|
|
Packit Service |
b0a153 |
uint32 endpoint;
|
|
Packit Service |
b0a153 |
void *data;
|
|
Packit Service |
b0a153 |
size_t length;
|
|
Packit Service |
b0a153 |
usb_iso_packet_descriptor *packet_descriptors;
|
|
Packit Service |
b0a153 |
uint32 packet_count;
|
|
Packit Service |
b0a153 |
} isochronous;
|
|
Packit Service |
b0a153 |
} usb_raw_command;
|
|
Packit Service |
b0a153 |
|
|
Packit Service |
b0a153 |
#endif // _USB_RAW_H_
|