diff options
Diffstat (limited to 'software/rhmixxx')
-rw-r--r-- | software/rhmixxx/Makefile | 15 | ||||
-rw-r--r-- | software/rhmixxx/keypad.c | 37 | ||||
-rw-r--r-- | software/rhmixxx/keypad.h | 30 | ||||
-rw-r--r-- | software/rhmixxx/rhmixxx.c | 78 |
4 files changed, 85 insertions, 75 deletions
diff --git a/software/rhmixxx/Makefile b/software/rhmixxx/Makefile index cadfe65..231005b 100644 --- a/software/rhmixxx/Makefile +++ b/software/rhmixxx/Makefile @@ -1,28 +1,27 @@ ## -## spreadspace avr utils +## rhmidi ## +## Copyright (C) 2014 Christian Pointner <equinox@helsinki.at> ## -## Copyright (C) 2013 Christian Pointner <equinox@spreadspace.org> +## This file is part of rhmidi. ## -## This file is part of spreadspace avr utils. -## -## spreadspace avr utils is free software: you can redistribute it and/or modify +## rhmidi 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, either version 3 of the License, or ## any later version. ## -## spreadspace avr utils is distributed in the hope that it will be useful, +## rhmidi is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License -## along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>. +## along with rhmidi. If not, see <http://www.gnu.org/licenses/>. ## NAME := rhmixxx BOARD_TYPE := rhmixxx -OBJ := $(NAME).o +OBJ := $(NAME).o keypad.o LIBS := util led lufa-descriptor-midi EXTERNAL_LIBS := lufa diff --git a/software/rhmixxx/keypad.c b/software/rhmixxx/keypad.c new file mode 100644 index 0000000..96214e8 --- /dev/null +++ b/software/rhmixxx/keypad.c @@ -0,0 +1,37 @@ +/* + * rhmidi + * + * Copyright (C) 2014 Christian Pointner <equinox@helsinki.at> + * + * This file is part of rhmidi. + * + * rhmidi 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, either version 3 of the License, or + * any later version. + * + * rhmidi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with rhmidi. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "keypad.h" + +void keypad_init(void) +{ + +} + +void keypad_start_led_test(int cnt) +{ + +} + +void keypad_task(void) +{ + +} diff --git a/software/rhmixxx/keypad.h b/software/rhmixxx/keypad.h new file mode 100644 index 0000000..6f28b24 --- /dev/null +++ b/software/rhmixxx/keypad.h @@ -0,0 +1,30 @@ +/* + * rhmidi + * + * Copyright (C) 2014 Christian Pointner <equinox@helsinki.at> + * + * This file is part of rhmidi. + * + * rhmidi 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, either version 3 of the License, or + * any later version. + * + * rhmidi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with rhmidi. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef RHMIXXX_keypad_h_INCLUDED +#define RHMIXXX_keypad_h_INCLUDED + +void keypad_init(void); +void keypad_start_led_test(int cnt); + +void keypad_task(void); + +#endif diff --git a/software/rhmixxx/rhmixxx.c b/software/rhmixxx/rhmixxx.c index 91d65ec..20b523c 100644 --- a/software/rhmixxx/rhmixxx.c +++ b/software/rhmixxx/rhmixxx.c @@ -1,26 +1,24 @@ /*
- * spreadspace avr utils
+ * rhmidi
*
+ * Copyright (C) 2014 Christian Pointner <equinox@helsinki.at>
*
- * Copyright (C) 2013 Christian Pointner <equinox@spreadspace.org>
+ * This file is part of rhmidi.
*
- * This file is part of spreadspace avr utils.
- *
- * spreadspace avr utils is free software: you can redistribute it and/or modify
+ * rhmidi 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, either version 3 of the License, or
* any later version.
*
- * spreadspace avr utils is distributed in the hope that it will be useful,
+ * rhmidi is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
+ * along with rhmidi. If not, see <http://www.gnu.org/licenses/>.
*/
-
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
@@ -76,22 +74,7 @@ void EVENT_USB_Device_ControlRequest(void) /* end LUFA MIDI Class driver specific definitions*/
#include "util.h"
-#include "led.h"
-
-static FILE serial_stream;
-
-#define KEY_PIN PINA
-#define KEY_PORT PORTA
-#define KEY_DDR DDRA
-#define KEY_BIT 0
-
-#define KEY_LP_MAX 255
-
-void key_init(void)
-{
- KEY_DDR = 0x10;
- KEY_PORT = 0xEF;
-}
+#include "keypad.h"
int main(void)
{
@@ -99,58 +82,19 @@ int main(void) wdt_disable();
cpu_init();
- led_init();
- key_init();
-
- Serial_Init(38400, 0);
- Serial_CreateStream(&serial_stream);
- stdin = stdout = stderr = &serial_stream;
+ 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,
- };
-
- static uint8_t last_state = (1<<KEY_BIT);
- static uint8_t lp_cnt = 0;
for(;;) {
-
MIDI_EventPacket_t ReceivedMIDIEvent;
while(MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent)) {
- led_on();
- printf("%02X %02X %02X\r\n", ReceivedMIDIEvent.Data1, ReceivedMIDIEvent.Data2, ReceivedMIDIEvent.Data3);
- led_off();
+ // TODO: process incoming MIDI Events
}
+ keypad_task();
- uint8_t state = KEY_PIN & (1<<KEY_BIT);
- if(state != last_state)
- lp_cnt++;
- else
- lp_cnt += lp_cnt ? -1 : 0;
-
- if(lp_cnt >= KEY_LP_MAX) {
- MIDI_EventPacket_t* MIDIEvent = state ? &MIDIEventOff : &MIDIEventOn;
- MIDI_Device_SendEventPacket(&Keyboard_MIDI_Interface, MIDIEvent);
- MIDI_Device_Flush(&Keyboard_MIDI_Interface);
-
- last_state = state;
- lp_cnt = 0;
- }
+ // TODO: evaluate keypad and send out MIDI Events
MIDI_Device_USBTask(&Keyboard_MIDI_Interface);
USB_USBTask();
|