| /* | 
 |  * 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 |