summaryrefslogtreecommitdiff
path: root/software/rhmixxx/rhmixxx.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/rhmixxx/rhmixxx.c')
-rw-r--r--software/rhmixxx/rhmixxx.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/software/rhmixxx/rhmixxx.c b/software/rhmixxx/rhmixxx.c
index 1817c0e..07a139e 100644
--- a/software/rhmixxx/rhmixxx.c
+++ b/software/rhmixxx/rhmixxx.c
@@ -60,9 +60,7 @@ USB_ClassInfo_MIDI_Device_t MIDI_Interface =
/** Event handler for the library USB Configuration Changed event. */
void EVENT_USB_Device_ConfigurationChanged(void)
{
- bool ConfigSuccess = true;
-
- ConfigSuccess &= MIDI_Device_ConfigureEndpoints(&MIDI_Interface);
+ MIDI_Device_ConfigureEndpoints(&MIDI_Interface);
}
/** Event handler for the library USB Control Request reception event. */
@@ -75,6 +73,7 @@ void EVENT_USB_Device_ControlRequest(void)
#include "util.h"
#include "keypad.h"
+#include "eventqueue.h"
int main(void)
{
@@ -82,11 +81,29 @@ int main(void)
wdt_disable();
cpu_init();
+ eventqueue_init();
keypad_init();
USB_Init();
sei();
+ MIDI_EventPacket_t MIDIEventOn = (MIDI_EventPacket_t)
+ {
+ .CableNumber = 0,
+ .Command = (MIDI_COMMAND_NOTE_ON >> 4),
+ .Data1 = MIDI_COMMAND_NOTE_ON | 0,
+ .Data2 = 0,
+ .Data3 = 0x7F,
+ };
+ MIDI_EventPacket_t MIDIEventOff = (MIDI_EventPacket_t)
+ {
+ .CableNumber = 0,
+ .Command = (MIDI_COMMAND_NOTE_OFF >> 4),
+ .Data1 = MIDI_COMMAND_NOTE_OFF | 0,
+ .Data2 = 0,
+ .Data3 = 0,
+ };
+
for(;;) {
MIDI_EventPacket_t ReceivedMIDIEvent;
while(MIDI_Device_ReceiveEventPacket(&MIDI_Interface, &ReceivedMIDIEvent)) {
@@ -94,7 +111,16 @@ int main(void)
}
keypad_task();
- // TODO: send out MIDI Events
+ uint8_t key, state;
+ while(eventqueue_pop(&key, &state)) {
+ if (USB_DeviceState == DEVICE_STATE_Configured) {
+ MIDI_EventPacket_t* MIDIEvent = state ? &MIDIEventOn : &MIDIEventOff;
+ MIDIEvent->Data2 = key;
+ MIDI_Device_SendEventPacket(&MIDI_Interface, MIDIEvent);
+ }
+ }
+ if (USB_DeviceState == DEVICE_STATE_Configured)
+ MIDI_Device_Flush(&MIDI_Interface);
MIDI_Device_USBTask(&MIDI_Interface);
USB_USBTask();