diff options
author | Werner Almesberger <werner@almesberger.net> | 2012-02-29 11:08:44 -0500 |
---|---|---|
committer | Gedare Bloom <gedare@rtems.org> | 2012-02-29 11:08:44 -0500 |
commit | f7bb9f922dcebeca62fd13e4e7256f0de5296e23 (patch) | |
tree | ac14ef6eca71d403082c8b619056a34596a1266d /c/src | |
parent | Fix typo in comment. (diff) | |
download | rtems-f7bb9f922dcebeca62fd13e4e7256f0de5296e23.tar.bz2 |
PR2028: Milkymist USB: forward MIDI messages.
Forward MIDI messages from the softusb controller to the application.
Signed-off-by: Gedare Bloom <gedare@rtems.org>
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h index 538022b30d..40362b3f3f 100644 --- a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h +++ b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/comloc.h @@ -22,5 +22,7 @@ #define COMLOC_MEVT(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1102+offset) #define COMLOC_KEVT_PRODUCE COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1142) #define COMLOC_KEVT(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1143+offset) +#define COMLOC_MIDI_PRODUCE COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1183) +#define COMLOC_MIDI(offset) COMLOCV(MM_SOFTUSB_DMEM_BASE+0x1184+offset) #endif /* __COMLOC_H_ */ diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c index 022d7306f6..69317489a9 100644 --- a/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c +++ b/c/src/lib/libbsp/lm32/shared/milkymist_usbinput/usbinput.c @@ -35,6 +35,7 @@ static const unsigned char input_firmware[] = { static int mouse_consume; static int keyboard_consume; +static int midi_consume; static rtems_id event_q; @@ -58,6 +59,14 @@ static rtems_isr interrupt_handler(rtems_vector_number n) rtems_message_queue_send(event_q, msg, 8); keyboard_consume = (keyboard_consume + 1) & 0x07; } + + while(midi_consume != COMLOC_MIDI_PRODUCE) { + for(i=0;i<3;i++) + msg[i] = COMLOC_MIDI(4*midi_consume+i+1); + rtems_message_queue_send(event_q, msg, 3); + midi_consume = (midi_consume + 1) & 0x0f; + } + } rtems_device_driver usbinput_initialize( @@ -87,6 +96,7 @@ rtems_device_driver usbinput_initialize( mouse_consume = 0; keyboard_consume = 0; + midi_consume = 0; sc = rtems_io_register_name(DEVICE_NAME, major, 0); RTEMS_CHECK_SC(sc, "create USB input device"); |