소스 검색

an conditional for console in

Jack Humbert 8 년 전
부모
커밋
426ace718b
5개의 변경된 파일48개의 추가작업 그리고 34개의 파일을 삭제
  1. 2 0
      keyboards/planck/config.h
  2. 12 5
      quantum/quantum.c
  3. 1 1
      quantum/quantum.h
  4. 5 2
      tmk_core/protocol/lufa/descriptor.h
  5. 28 26
      tmk_core/protocol/lufa/lufa.c

+ 2 - 0
keyboards/planck/config.h

@@ -44,6 +44,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define AUDIO_VOICES
 #define C6_AUDIO
 
+#define CONSOLE_IN_ENABLE
+
 #define BACKLIGHT_PIN B7
 
 /* COL2ROW or ROW2COL */

+ 12 - 5
quantum/quantum.c

@@ -1297,7 +1297,7 @@ void shutdown_user() {}
 
 //------------------------------------------------------------------------------
 
-#ifdef CONSOLE_ENABLE
+#ifdef CONSOLE_IN_ENABLE
 
 __attribute__ ((weak))
 void process_console_data_user(uint8_t * data, uint8_t length) {
@@ -1309,19 +1309,26 @@ void process_console_data_kb(uint8_t * data, uint8_t length) {
 }
 
 void process_console_data_quantum(uint8_t * data, uint8_t length) {
+  // This can be used for testing - it echos back the information received
   // print("Received message:\n  ");
   // while (*data) {
   //   sendchar(*data);
   //   data++;
   // }
   switch (data[0]) {
+    case 0x01:
+      print("Saying hello\n");
+      #ifdef AUDIO_ENABLE
+        audio_on();
+      #endif
+      break;
     case 0xFE:
+    #ifdef CONSOLE_IN_BOOTLOADER
       print("Entering bootloader\n");
       reset_keyboard();
-      break;
-    case 0x01:
-      print("Saying hello\n");
-      audio_on();
+    #else
+      print("Unable to enter bootloader\n");
+    #endif
       break;
   }
   process_console_data_kb(data, length);

+ 1 - 1
quantum/quantum.h

@@ -193,7 +193,7 @@ void led_set_kb(uint8_t usb_led);
 
 void api_send_unicode(uint32_t unicode);
 
-#ifdef CONSOLE_ENABLE
+#ifdef CONSOLE_IN_ENABLE
 void process_console_data_user(uint8_t * data, uint8_t length);
 void process_console_data_kb(uint8_t * data, uint8_t length);
 void process_console_data_quantum(uint8_t * data, uint8_t length);

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

@@ -208,8 +208,11 @@ 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)
+#   ifdef CONSOLE_IN_ENABLE
+#       define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 2)
+#   else
+#       define CONSOLE_OUT_EPNUM        (RAW_OUT_EPNUM + 1)
+#   endif
 #else
 #   define CONSOLE_OUT_EPNUM        RAW_OUT_EPNUM
 #endif

+ 28 - 26
tmk_core/protocol/lufa/lufa.c

@@ -274,41 +274,43 @@ static bool console_flush = false;
 
 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();
 
-    // TODO: impl receivechar()/recvchar()
-    Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM);
+    #ifdef CONSOLE_IN_ENABLE
+      /* Create a temporary buffer to hold the read in report from the host */
+      uint8_t ConsoleData[CONSOLE_EPSIZE];
+      bool data_read = false;
 
-    /* Check to see if a packet has been sent from the host */
-    if (Endpoint_IsOUTReceived())
-    {
-        /* Check to see if the packet contains data */
-        if (Endpoint_IsReadWriteAllowed())
-        {
+      // TODO: impl receivechar()/recvchar()
+      Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM);
 
-            /* Read Console Report Data */
-            Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
-            data_read = true;
-        }
+      /* Check to see if a packet has been sent from the host */
+      if (Endpoint_IsOUTReceived())
+      {
+          /* Check to see if the packet contains data */
+          if (Endpoint_IsReadWriteAllowed())
+          {
 
-        /* Finalize the stream transfer to send the last packet */
-        Endpoint_ClearOUT();
+              /* Read Console Report Data */
+              Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
+              data_read = true;
+          }
 
-        if (data_read) {
-          /* Process Console Report Data */
-          process_console_data_quantum(ConsoleData, sizeof(ConsoleData));
-        }
+          /* Finalize the stream transfer to send the last packet */
+          Endpoint_ClearOUT();
 
-    }
+          if (data_read) {
+            /* Process Console Report Data */
+            process_console_data_quantum(ConsoleData, sizeof(ConsoleData));
+          }
+
+      }
+
+    #endif
 
     if (console_flush) {
       /* IN packet */
@@ -454,10 +456,10 @@ 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
+  #ifdef CONSOLE_IN_ENABLE
     ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
                                      CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
-// #endif
+  #endif
 #endif
 
 #ifdef NKRO_ENABLE