Procházet zdrojové kódy

using pjrc hid UP to communicate with toolbox

Jack Humbert před 8 roky
rodič
revize
07e68b2240

+ 1 - 1
keyboards/planck/config.h

@@ -23,7 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
 #define PRODUCT_ID      0x6060
-#define MANUFACTURER    Ortholinear Keyboards
+#define MANUFACTURER    OLKB
 #define PRODUCT         The Planck Keyboard
 #define DESCRIPTION     A compact ortholinear keyboard
 

+ 1 - 1
keyboards/planck/keymaps/default/keymap.c

@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_ADJUST] = {
-  {_______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL },
+  {_______, RESET,   DEBUG,   _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL },
   {_______, _______, MU_MOD,  AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  PLOVER,  _______},
   {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  _______, _______, _______, _______, _______},
   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}

+ 3 - 3
keyboards/planck/rules.mk

@@ -53,11 +53,11 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
 BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
 MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
 EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = no         # Console for debug(+400)
+CONSOLE_ENABLE = yes         # Console for debug(+400)
 COMMAND_ENABLE = no        # Commands for debug and configuration
 NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-MIDI_ENABLE = yes            # MIDI controls
+BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = yes           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID

+ 3 - 2
quantum/audio/audio.c

@@ -186,7 +186,7 @@ void audio_init()
 
 void stop_all_notes()
 {
-    dprintf("audio stop all notes");
+    dprintf("audio stop all notes\n");
 
     if (!audio_initialized) {
         audio_init();
@@ -219,7 +219,7 @@ void stop_all_notes()
 
 void stop_note(float freq)
 {
-    dprintf("audio stop note freq=%d", (int)freq);
+    dprintf("audio stop note freq=%d\n", (int)freq);
 
     if (playing_note) {
         if (!audio_initialized) {
@@ -717,6 +717,7 @@ void audio_toggle(void) {
 }
 
 void audio_on(void) {
+    PLAY_SONG(startup_song);
     audio_config.enable = 1;
     eeconfig_update_audio(audio_config.raw);
     audio_on_user();

+ 3 - 3
quantum/quantum.c

@@ -134,11 +134,11 @@ void reset_keyboard(void) {
   clear_keyboard();
 #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_ENABLE_BASIC))
   music_all_notes_off();
-  uint16_t timer_start = timer_read();
+  // uint16_t timer_start = timer_read();
   PLAY_SONG(goodbye_song);
   shutdown_user();
-  while(timer_elapsed(timer_start) < 250) 
-    wait_ms(1);
+  // while(timer_elapsed(timer_start) < 500) 
+  wait_ms(250);
   stop_all_notes();
 #else
   wait_ms(250);

+ 2 - 2
tmk_core/protocol/lufa/descriptor.h

@@ -205,8 +205,8 @@ typedef struct
 
 #ifdef CONSOLE_ENABLE
 #   define CONSOLE_IN_EPNUM         (RAW_OUT_EPNUM + 1)
-//#   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 2)
-#   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 1)
+#   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 2)
+//#   define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 1)
 #else
 #   define CONSOLE_OUT_EPNUM        RAW_OUT_EPNUM
 #endif

+ 59 - 30
tmk_core/protocol/lufa/lufa.c

@@ -260,19 +260,52 @@ static void raw_hid_task(void)
 }
 #endif
 
+__attribute__ ((weak))
+void ProcessConsoleHIDReport(uint8_t * data, uint8_t length) {
+
+  // print("Received message:\n  ");
+  // while (*data) {
+  //   sendchar(*data);
+  //   data++;
+  // }
+  switch (data[0]) {
+    case 0xFE:
+      print("Entering bootloader\n");
+      reset_keyboard();
+      break;
+    case 0x01:
+      print("Saying hello\n");
+      audio_on();
+      break;
+  }
+}
+
 /*******************************************************************************
  * Console
  ******************************************************************************/
 #ifdef CONSOLE_ENABLE
+
+static bool console_flush = false;
+#define CONSOLE_FLUSH_SET(b)   do { \
+  ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {\
+    console_flush = b; \
+  } \
+} while (0)
+
+
 static void Console_Task(void)
 {
+
     /* Device must be connected and configured for the task to run */
     if (USB_DeviceState != DEVICE_STATE_Configured)
         return;
 
+
+    /* Create a temporary buffer to hold the read in report from the host */
+    uint8_t ConsoleData[CONSOLE_EPSIZE];
+    bool data_read = false;
     uint8_t ep = Endpoint_GetCurrentEndpoint();
 
-#if 0
     // TODO: impl receivechar()/recvchar()
     Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM);
 
@@ -282,38 +315,43 @@ static void Console_Task(void)
         /* Check to see if the packet contains data */
         if (Endpoint_IsReadWriteAllowed())
         {
-            /* Create a temporary buffer to hold the read in report from the host */
-            uint8_t ConsoleData[CONSOLE_EPSIZE];
 
             /* Read Console Report Data */
             Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
-
-            /* Process Console Report Data */
-            //ProcessConsoleHIDReport(ConsoleData);
+            data_read = true;
         }
 
         /* Finalize the stream transfer to send the last packet */
         Endpoint_ClearOUT();
-    }
-#endif
 
-    /* IN packet */
-    Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM);
-    if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) {
-        Endpoint_SelectEndpoint(ep);
-        return;
+        if (data_read) {
+          /* Process Console Report Data */
+          ProcessConsoleHIDReport(ConsoleData, sizeof(ConsoleData));
+        }
+
     }
 
-    // fill empty bank
-    while (Endpoint_IsReadWriteAllowed())
-        Endpoint_Write_8(0);
+    if (console_flush) {
+      /* IN packet */
+      Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM);
+      if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) {
+          Endpoint_SelectEndpoint(ep);
+          return;
+      }
 
-    // flash senchar packet
-    if (Endpoint_IsINReady()) {
-        Endpoint_ClearIN();
+      // fill empty bank
+      while (Endpoint_IsReadWriteAllowed())
+          Endpoint_Write_8(0);
+
+      // flash senchar packet
+      if (Endpoint_IsINReady()) {
+          Endpoint_ClearIN();
+      }
+      // CONSOLE_FLUSH_SET(false);
     }
 
     Endpoint_SelectEndpoint(ep);
+
 }
 #endif
 
@@ -381,13 +419,6 @@ void EVENT_USB_Device_WakeUp()
 
 
 #ifdef CONSOLE_ENABLE
-static bool console_flush = false;
-#define CONSOLE_FLUSH_SET(b)   do { \
-  ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {\
-    console_flush = b; \
-  } \
-} while (0)
-
 // called every 1ms
 void EVENT_USB_Device_StartOfFrame(void)
 {
@@ -395,9 +426,9 @@ void EVENT_USB_Device_StartOfFrame(void)
     if (++count % 50) return;
     count = 0;
 
-    if (!console_flush) return;
+    //if (!console_flush) return;
     Console_Task();
-    console_flush = false;
+    //console_flush = false;
 }
 
 #endif
@@ -440,11 +471,9 @@ void EVENT_USB_Device_ConfigurationChanged(void)
     /* Setup Console HID Report Endpoints */
     ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
                                      CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
-#if 0
     ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
                                      CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
 #endif
-#endif
 
 #ifdef NKRO_ENABLE
     /* Setup NKRO HID Report Endpoints */