Blame libusb/os/haiku_usb_raw.h

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_