2
* Purpose: USB abstraction structures and functions used by OSS
4
* OS dependent wrappers for various USB related kernel interfaces. Each
5
* operating system will have it's private udi.c file which implements
6
* the services defined here.
10
* This file is part of Open Sound System.
12
* Copyright (C) 4Front Technologies 1996-2008.
14
* This this source file is released under GPL v2 license (no other versions).
15
* See the COPYING file included in the main directory of this source
16
* distribution for the license terms and conditions.
20
/* typedef struct udi_usb_devc udi_usb_devc; // Moved to os.h */
24
char *altsetting_labels;
25
int default_altsetting;
26
unsigned int altsetting_mask;
27
} ossusb_altsetting_def_t;
29
#define MAX_ALTSETTINGS 20
31
typedef struct udi_usb_devinfo
35
const ossusb_altsetting_def_t altsettings[MAX_ALTSETTINGS];
41
void *(*attach) (udi_usb_devc * devc, oss_device_t * osdev);
42
void (*disconnect) (void *devc);
45
extern int udi_attach_usbdriver (oss_device_t * osdev,
46
const udi_usb_devinfo * devlist,
47
udi_usb_driver * driver);
48
extern void udi_unload_usbdriver (oss_device_t * osdev);
50
extern int udi_usb_trace;
51
extern int udi_usbdev_get_class (udi_usb_devc * usbdev);
52
extern int udi_usbdev_get_subclass (udi_usb_devc * usbdev);
53
extern int udi_usbdev_get_vendor (udi_usb_devc * usbdev);
54
extern int udi_usbdev_get_product (udi_usb_devc * usbdev);
55
extern int udi_usbdev_get_inum (udi_usb_devc * usbdev);
56
extern unsigned char *udi_usbdev_get_endpoint (udi_usb_devc * usbdev,
57
int altsetting, int n,
61
extern char *udi_usbdev_get_name (udi_usb_devc * usbdev);
62
extern char *udi_usbdev_get_altsetting_labels (udi_usb_devc * usbdev, int if_num, int *default_alt, unsigned int *mask);
63
extern char *udi_usbdev_get_string (udi_usb_devc * usbdev, int ix);
64
extern char *udi_usbdev_get_devpath (udi_usb_devc * usbdev);
65
extern int udi_usbdev_get_num_altsettings (udi_usb_devc * usbdev);
66
extern int udi_usbdev_get_usb_version (udi_usb_devc * usbdev);
67
extern unsigned char *udi_usbdev_get_altsetting (udi_usb_devc * usbdev, int n,
69
extern int udi_usbdev_set_interface (udi_usb_devc * usbdev, int inum,
71
extern int udi_usb_snd_control_msg (udi_usb_devc * usbdev,
72
unsigned int endpoint, unsigned char rq,
75
unsigned short index, void *buf, int len,
77
extern int udi_usb_rcv_control_msg (udi_usb_devc * usbdev,
78
unsigned int endpoint, unsigned char rq,
81
unsigned short index, void *buf, int len,
84
typedef struct udi_usb_request udi_usb_request_t; /* Opaque type */
85
typedef struct _udi_endpoint_handle_t udi_endpoint_handle_t;
87
extern udi_endpoint_handle_t *udi_open_endpoint (udi_usb_devc * usbdev,
89
extern void udi_close_endpoint (udi_endpoint_handle_t * eph);
90
extern int udi_endpoint_get_num (udi_endpoint_handle_t * eph);
92
#define UDI_USBXFER_ISO_WRITE 1
93
#define UDI_USBXFER_ISO_READ 2
94
#define UDI_USBXFER_BULK_READ 3
95
#define UDI_USBXFER_BULK_WRITE 4
96
#define UDI_USBXFER_INTR_READ 5
97
typedef void (*udi_usb_complete_func_t) (udi_usb_request_t * request,
100
extern udi_usb_request_t *udi_usb_alloc_request (udi_usb_devc * usbdev,
101
udi_endpoint_handle_t * eph,
102
int nframes, int xfer_type);
103
extern void udi_usb_free_request (udi_usb_request_t * request);
104
extern int udi_usb_submit_request (udi_usb_request_t * request,
105
udi_usb_complete_func_t callback,
107
udi_endpoint_handle_t * eph, int xfer_type,
108
void *data, int data_len);
109
extern void udi_usb_cancel_request (udi_usb_request_t * request);
110
extern int udi_usb_request_actlen (udi_usb_request_t * request);
111
extern unsigned char *udi_usb_request_actdata (udi_usb_request_t * request);