Commit | Line | Data |
---|---|---|
705ececd | 1 | /* |
e1a164d7 | 2 | * Line6 Linux USB driver - 0.9.1beta |
705ececd | 3 | * |
1027f476 | 4 | * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at) |
705ececd MG |
5 | * |
6 | * This program is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU General Public License as | |
8 | * published by the Free Software Foundation, version 2. | |
9 | * | |
10 | */ | |
11 | ||
12 | #ifndef MIDI_H | |
13 | #define MIDI_H | |
14 | ||
705ececd MG |
15 | #include <sound/rawmidi.h> |
16 | ||
17 | #include "midibuf.h" | |
18 | ||
705ececd MG |
19 | #define MIDI_BUFFER_SIZE 1024 |
20 | ||
a49e4838 | 21 | struct snd_line6_midi { |
705ececd MG |
22 | /** |
23 | Pointer back to the Line6 driver data structure. | |
24 | */ | |
25 | struct usb_line6 *line6; | |
26 | ||
27 | /** | |
28 | MIDI substream for receiving (or NULL if not active). | |
29 | */ | |
30 | struct snd_rawmidi_substream *substream_receive; | |
31 | ||
32 | /** | |
33 | MIDI substream for transmitting (or NULL if not active). | |
34 | */ | |
35 | struct snd_rawmidi_substream *substream_transmit; | |
36 | ||
37 | /** | |
38 | Number of currently active MIDI send URBs. | |
39 | */ | |
40 | int num_active_send_urbs; | |
41 | ||
42 | /** | |
43 | Spin lock to protect updates of send_urb. | |
44 | */ | |
45 | spinlock_t send_urb_lock; | |
46 | ||
47 | /** | |
48 | Spin lock to protect MIDI buffer handling. | |
49 | */ | |
50 | spinlock_t midi_transmit_lock; | |
51 | ||
52 | /** | |
53 | Wait queue for MIDI transmission. | |
54 | */ | |
55 | wait_queue_head_t send_wait; | |
56 | ||
57 | /** | |
58 | Bit mask for output MIDI channels. | |
59 | */ | |
4d85fae0 | 60 | unsigned short midi_mask_transmit; |
705ececd MG |
61 | |
62 | /** | |
63 | Bit mask for input MIDI channels. | |
64 | */ | |
251c3948 | 65 | unsigned short midi_mask_receive; |
705ececd MG |
66 | |
67 | /** | |
68 | Buffer for incoming MIDI stream. | |
69 | */ | |
70 | struct MidiBuffer midibuf_in; | |
71 | ||
72 | /** | |
73 | Buffer for outgoing MIDI stream. | |
74 | */ | |
75 | struct MidiBuffer midibuf_out; | |
76 | }; | |
77 | ||
705ececd | 78 | extern int line6_init_midi(struct usb_line6 *line6); |
a49e4838 GKH |
79 | extern void line6_midi_receive(struct usb_line6 *line6, unsigned char *data, |
80 | int length); | |
705ececd | 81 | |
705ececd | 82 | #endif |