From f6619f221a79604c5b7cbf37731a02453d185681 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Mon, 2 Jun 2014 14:19:52 +0000
Subject: code cleanups


diff --git a/software/rhmixxx/gpio.c b/software/rhmixxx/gpio.c
index 4b3171a..bd4906a 100644
--- a/software/rhmixxx/gpio.c
+++ b/software/rhmixxx/gpio.c
@@ -26,8 +26,6 @@
 #define GPIO_PIN PINE
 #define GPIO_PORT PORTE
 #define GPIO_DDR DDRE
-#define GPIO_NUM_INPUTS 4
-#define GPIO_NUM_OUTPUTS 4
 
 uint8_t input_last_sent[GPIO_NUM_INPUTS];
 
@@ -45,18 +43,24 @@ void gpio_out_on(uint8_t num)
 {
   if(num < GPIO_NUM_OUTPUTS)
     GPIO_PORT |= (1 << num);
+  else
+    GPIO_PORT |= 0x0F;
 }
 
 void gpio_out_off(uint8_t num)
 {
   if(num < GPIO_NUM_OUTPUTS)
     GPIO_PORT &= ~(1 << num);
+  else
+    GPIO_PORT &= 0xF0;
 }
 
 void gpio_out_toggle(uint8_t num)
 {
   if(num < GPIO_NUM_OUTPUTS)
     GPIO_PORT ^= (1 << num);
+  else
+    GPIO_PORT ^= 0x0F;
 }
 
 void gpio_task(void)
@@ -66,7 +70,7 @@ void gpio_task(void)
     uint8_t current_state = GPIO_PIN & (1<<(i+4));
     if(current_state != input_last_sent[i]) {
       input_last_sent[i] = current_state;
-      eventqueue_push(i + 64, ((current_state) ? 0 : 1)); // TODO: offset should be defined somewhere
+      eventqueue_push(i + GPIO_MIDI_NOTE_OFFSET, ((current_state) ? 0 : 1));
     }
   }
 }
diff --git a/software/rhmixxx/gpio.h b/software/rhmixxx/gpio.h
index 3c27d78..710c4e0 100644
--- a/software/rhmixxx/gpio.h
+++ b/software/rhmixxx/gpio.h
@@ -22,6 +22,11 @@
 #ifndef RHMIXXX_gpio_h_INCLUDED
 #define RHMIXXX_gpio_h_INCLUDED
 
+#define GPIO_NUM_INPUTS 4
+#define GPIO_NUM_OUTPUTS 4
+#define GPIO_MIDI_NOTE_OFFSET 32
+#define GPIO_MIDI_NOTE_ALL_OUTPUTS GPIO_MIDI_NOTE_OFFSET + 31
+
 void gpio_init(void);
 
 void gpio_out_on(uint8_t num);
diff --git a/software/rhmixxx/keypad.c b/software/rhmixxx/keypad.c
index f27c711..57a6380 100644
--- a/software/rhmixxx/keypad.c
+++ b/software/rhmixxx/keypad.c
@@ -28,9 +28,6 @@
 #define KEYPAD_PIN PINA
 #define KEYPAD_PORT PORTA
 #define KEYPAD_DDR DDRA
-#define KEYPAD_NUM_COLS 4
-#define KEYPAD_NUM_ROWS 4
-#define KEYPAD_NUM_KEYS KEYPAD_NUM_COLS * KEYPAD_NUM_ROWS
 
 #define KEYPAD_LP_CNT_MAX 200
 static struct {
@@ -84,7 +81,7 @@ void keypad_led_on(uint8_t led)
     case 13:
     case 14:
     case 15: PORTD |= (1 << (led - 12 + 4)); break;
-    case 127: PORTC = 0xFF; PORTB |= 0xF0; PORTD |= 0xF0; break;
+    case KEYPAD_MIDI_NOTE_ALL - KEYPAD_MIDI_NOTE_OFFSET: PORTC = 0xFF; PORTB |= 0xF0; PORTD |= 0xF0; break;
   }
   keypad_led_blink(led, 0);
 }
@@ -108,7 +105,7 @@ void keypad_led_off(uint8_t led)
     case 13:
     case 14:
     case 15: PORTD &= ~(1 << (led - 12 + 4)); break;
-    case 127: PORTC = 0x00; PORTB &= 0x0F; PORTD &= 0x0F; break;
+    case KEYPAD_MIDI_NOTE_ALL - KEYPAD_MIDI_NOTE_OFFSET: PORTC = 0x00; PORTB &= 0x0F; PORTD &= 0x0F; break;
   }
   keypad_led_blink(led, 0);
 }
@@ -132,7 +129,7 @@ void keypad_led_toggle(uint8_t led)
     case 13:
     case 14:
     case 15: PORTD ^= (1 << (led - 12 + 4)); break;
-    case 127: PORTC ^= 0xFF; PORTB ^= 0xF0; PORTD ^= 0xF0; break;
+    case KEYPAD_MIDI_NOTE_ALL - KEYPAD_MIDI_NOTE_OFFSET: PORTC ^= 0xFF; PORTB ^= 0xF0; PORTD ^= 0xF0; break;
   }
 }
 
@@ -160,7 +157,7 @@ static inline void keypad_key_lowpass(uint8_t key_idx, uint8_t current_state)
 
     if(current_state != keypad_state[key_idx].last_sent) {
       keypad_state[key_idx].last_sent = current_state;
-      eventqueue_push(key_idx, ((current_state) ? 0 : 1));
+      eventqueue_push(KEYPAD_MIDI_NOTE_OFFSET + key_idx, ((current_state) ? 0 : 1));
     }
   }
 }
diff --git a/software/rhmixxx/keypad.h b/software/rhmixxx/keypad.h
index 92c4188..87ab9c8 100644
--- a/software/rhmixxx/keypad.h
+++ b/software/rhmixxx/keypad.h
@@ -22,6 +22,12 @@
 #ifndef RHMIXXX_keypad_h_INCLUDED
 #define RHMIXXX_keypad_h_INCLUDED
 
+#define KEYPAD_NUM_COLS 4
+#define KEYPAD_NUM_ROWS 4
+#define KEYPAD_NUM_KEYS KEYPAD_NUM_COLS * KEYPAD_NUM_ROWS
+#define KEYPAD_MIDI_NOTE_OFFSET 0
+#define KEYPAD_MIDI_NOTE_ALL KEYPAD_MIDI_NOTE_OFFSET + 31
+
 void keypad_init(void);
 
 void keypad_led_on(uint8_t led);
diff --git a/software/rhmixxx/rhmixxx.c b/software/rhmixxx/rhmixxx.c
index d5ac080..f94b67b 100644
--- a/software/rhmixxx/rhmixxx.c
+++ b/software/rhmixxx/rhmixxx.c
@@ -83,24 +83,23 @@ static void process_incoming_midi(void)
     uint8_t cmd = ReceivedMIDIEvent.Data1 & 0xF0;
     uint8_t note = ReceivedMIDIEvent.Data2;
     uint8_t value = ReceivedMIDIEvent.Data3 & 0x7F;
-    if(note < 16 || note == 0x7F) { // KEYPAD
+    if((note >= KEYPAD_MIDI_NOTE_OFFSET && note < KEYPAD_MIDI_NOTE_OFFSET + KEYPAD_NUM_KEYS) ||     // KEYPAD
+       note == KEYPAD_MIDI_NOTE_ALL) {
       if(cmd == MIDI_COMMAND_NOTE_ON) {
-        if(value <= 2) {
-          switch(value) {
-            case 0: keypad_led_off(note); break;
-            case 1: keypad_led_on(note); break;
-            case 2: keypad_led_toggle(note); break;
-          }
-        } else if(value <= 0x7F) {
-          keypad_led_blink(note, value);
+        switch(value) {
+          case 0: keypad_led_off(note - KEYPAD_MIDI_NOTE_OFFSET); break;
+          case 1: keypad_led_on(note - KEYPAD_MIDI_NOTE_OFFSET); break;
+          case 2: keypad_led_toggle(note - KEYPAD_MIDI_NOTE_OFFSET); break;
+          default: keypad_led_blink(note, value); break;
         }
       }
-    } else if(note >= 64 && note <= 68) { // GPIO
+    } else if((note >= GPIO_MIDI_NOTE_OFFSET && note < GPIO_MIDI_NOTE_OFFSET + GPIO_NUM_OUTPUTS) ||   // GPIO
+              note == GPIO_MIDI_NOTE_ALL_OUTPUTS) {
       if(cmd == MIDI_COMMAND_NOTE_ON) {
         switch(value) {
-          case 0: gpio_out_off(note - 64); break;
-          case 1: gpio_out_on(note - 64); break;
-          case 2: gpio_out_toggle(note - 64); break;
+          case 0: gpio_out_off(note - GPIO_MIDI_NOTE_OFFSET); break;
+          case 1: gpio_out_on(note - GPIO_MIDI_NOTE_OFFSET); break;
+          case 2: gpio_out_toggle(note - GPIO_MIDI_NOTE_OFFSET); break;
         }
       }
     }
-- 
cgit v0.10.2