|  | /* | 
|  | * Line 6 Linux USB driver | 
|  | * | 
|  | * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at) | 
|  | * | 
|  | *	This program is free software; you can redistribute it and/or | 
|  | *	modify it under the terms of the GNU General Public License as | 
|  | *	published by the Free Software Foundation, version 2. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #ifndef MIDI_H | 
|  | #define MIDI_H | 
|  |  | 
|  | #include <sound/rawmidi.h> | 
|  |  | 
|  | #include "midibuf.h" | 
|  |  | 
|  | #define MIDI_BUFFER_SIZE 1024 | 
|  |  | 
|  | struct snd_line6_midi { | 
|  | /* Pointer back to the Line 6 driver data structure */ | 
|  | struct usb_line6 *line6; | 
|  |  | 
|  | /* MIDI substream for receiving (or NULL if not active) */ | 
|  | struct snd_rawmidi_substream *substream_receive; | 
|  |  | 
|  | /* MIDI substream for transmitting (or NULL if not active) */ | 
|  | struct snd_rawmidi_substream *substream_transmit; | 
|  |  | 
|  | /* Number of currently active MIDI send URBs */ | 
|  | int num_active_send_urbs; | 
|  |  | 
|  | /* Spin lock to protect MIDI buffer handling */ | 
|  | spinlock_t lock; | 
|  |  | 
|  | /* Wait queue for MIDI transmission */ | 
|  | wait_queue_head_t send_wait; | 
|  |  | 
|  | /* Buffer for incoming MIDI stream */ | 
|  | struct midi_buffer midibuf_in; | 
|  |  | 
|  | /* Buffer for outgoing MIDI stream */ | 
|  | struct midi_buffer midibuf_out; | 
|  | }; | 
|  |  | 
|  | extern int line6_init_midi(struct usb_line6 *line6); | 
|  | extern void line6_midi_receive(struct usb_line6 *line6, unsigned char *data, | 
|  | int length); | 
|  |  | 
|  | #endif |