2009-02-27 19:43:04 -08:00
/*
2015-01-20 02:20:50 -06:00
* Line 6 Linux USB driver
2009-02-27 19:43:04 -08:00
*
2010-08-12 01:35:30 +02:00
* Copyright ( C ) 2004 - 2010 Markus Grabner ( grabner @ icg . tugraz . at )
2009-02-27 19:43:04 -08:00
*
* 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
2009-02-27 21:09:55 -08:00
struct snd_line6_midi {
2015-01-28 14:43:11 +01:00
/* Pointer back to the Line 6 driver data structure */
2009-02-27 19:43:04 -08:00
struct usb_line6 * line6 ;
2015-01-28 14:43:11 +01:00
/* MIDI substream for receiving (or NULL if not active) */
2009-02-27 19:43:04 -08:00
struct snd_rawmidi_substream * substream_receive ;
2015-01-28 14:43:11 +01:00
/* MIDI substream for transmitting (or NULL if not active) */
2009-02-27 19:43:04 -08:00
struct snd_rawmidi_substream * substream_transmit ;
2015-01-28 14:43:11 +01:00
/* Number of currently active MIDI send URBs */
2009-02-27 19:43:04 -08:00
int num_active_send_urbs ;
2015-01-28 14:43:11 +01:00
/* Spin lock to protect MIDI buffer handling */
2015-01-23 12:39:11 +01:00
spinlock_t lock ;
2009-02-27 19:43:04 -08:00
2015-01-28 14:43:11 +01:00
/* Wait queue for MIDI transmission */
2009-02-27 19:43:04 -08:00
wait_queue_head_t send_wait ;
2015-01-28 14:43:11 +01:00
/* Buffer for incoming MIDI stream */
2013-01-11 23:08:09 +01:00
struct midi_buffer midibuf_in ;
2009-02-27 19:43:04 -08:00
2015-01-28 14:43:11 +01:00
/* Buffer for outgoing MIDI stream */
2013-01-11 23:08:09 +01:00
struct midi_buffer midibuf_out ;
2009-02-27 19:43:04 -08:00
} ;
extern int line6_init_midi ( struct usb_line6 * line6 ) ;
2009-02-27 21:09:55 -08:00
extern void line6_midi_receive ( struct usb_line6 * line6 , unsigned char * data ,
int length ) ;
2009-02-27 19:43:04 -08:00
# endif