]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Initial code for USB cable detection
authorJacob Alexander <haata@kiibohd.com>
Mon, 9 Feb 2015 21:21:23 +0000 (13:21 -0800)
committerJacob Alexander <haata@kiibohd.com>
Mon, 9 Feb 2015 21:21:23 +0000 (13:21 -0800)
- Currently actual detection commented out due to issues

Output/pjrcUSB/arm/usb_dev.c
Output/pjrcUSB/arm/usb_dev.h
Output/pjrcUSB/avr/usb_keyboard_serial.c
Output/pjrcUSB/avr/usb_keyboard_serial.h
Output/pjrcUSB/output_com.c
Output/pjrcUSB/output_com.h
Output/uartOut/output_com.c
Output/uartOut/output_com.h
Output/usbMuxUart/output_com.c
Output/usbMuxUart/output_com.h
Scan/MD2/setup.cmake

index 651131021f4b5c0cc2ce66ac3103f6a87e1be372..c4c60b83c7b4dee9731c07d3b834458a9d40bd64 100644 (file)
@@ -1098,12 +1098,17 @@ restart:
 
 
 
-void usb_init()
+uint8_t usb_init()
 {
        #ifdef UART_DEBUG
        print("USB INIT"NL);
        #endif
 
+       // If no USB cable is attached, do not initialize usb
+       // XXX Test -HaaTa
+       //if ( USB0_OTGISTAT & USB_OTGSTAT_ID )
+       //      return 0;
+
        // Clear out endpoints table
        for ( int i = 0; i <= NUM_ENDPOINTS * 4; i++ )
        {
@@ -1147,6 +1152,8 @@ void usb_init()
 
        // enable d+ pullup
        USB0_CONTROL = USB_CONTROL_DPPULLUPNONOTG;
+
+       return 1;
 }
 
 // return 0 if the USB is not configured, or the configuration
index 01f98cb9b09ed16471fdc9b17cab49d2598139ed..ddfc6f392c2534831e5da6ddaaaee14b48b4c5ed 100644 (file)
@@ -61,8 +61,8 @@ extern volatile uint8_t usb_cdc_transmit_flush_timer;
 // ----- Functions -----
 
 uint8_t usb_configured(); // is the USB port configured
+uint8_t usb_init(); // Returns 1 on success, 0 if no cable is attached
 
-void usb_init();
 void usb_isr();
 void usb_tx( uint32_t endpoint, usb_packet_t *packet );
 void usb_tx_isr( uint32_t endpoint, usb_packet_t *packet );
index 54586801eee45f1927355aac2d9a900b63747212..1403c9ae3ca06d83d7a5f72f26cbdcff11c83fca 100644 (file)
@@ -590,8 +590,13 @@ void wdt_init()
 
 
 // initialize USB
-void usb_init()
+uint8_t usb_init()
 {
+       // Check to see if a usb cable has been plugged in
+       // XXX Not tested (also, not currently needed) -HaaTa
+       //if ( USB0_STAT & (1 << 1)
+       //      return 0;
+
        HW_CONFIG();
        USB_FREEZE();                           // enable USB
        PLL_CONFIG();                           // config PLL
@@ -604,6 +609,8 @@ void usb_init()
 
        // Disable watchdog timer after possible software reset
        //wdt_init(); // XXX Not working...seems to be ok without this, not sure though
+
+       return 1;
 }
 
 // return 0 if the USB is not configured, or the configuration
index 2e490d4e48c6f087b94b62319f9c4bea4e3a8741..0c5c5850b01844a4b101a8a72ad5f223e33a7aa5 100644 (file)
@@ -46,7 +46,7 @@
 // ----- Function Declarations -----
 
 // Basic USB Configuration
-void usb_init();                       // initialize everything
+uint8_t usb_init();                    // initialize everything
 uint8_t usb_configured();              // is the USB port configured
 
 // Keyboard HID Functions
index cc35eddac9b0744b8abb00dc9629dafca4bedb5c..1651222bdaa77fcaa0383a30c4b0a9380557df29 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2011-2014 by Jacob Alexander
+/* Copyright (C) 2011-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -124,6 +124,11 @@ USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None;
 // count until idle timeout
          uint8_t  USBKeys_Idle_Count = 0;
 
+// Indicates whether the Output module is fully functional
+// 0 - Not fully functional, 1 - Fully functional
+// 0 is often used to show that a USB cable is not plugged in (but has power)
+         uint8_t  Output_Available = 0;
+
 
 
 // ----- Capabilities -----
@@ -473,9 +478,11 @@ inline void Output_setup()
 {
        // Initialize the USB, and then wait for the host to set configuration.
        // This will hang forever if USB does not initialize
-       usb_init();
-
-       while ( !usb_configured() );
+       // If no USB cable is attached, does not try and initialize USB
+       if ( usb_init() )
+       {
+               while ( !usb_configured() );
+       }
 
        // Register USB Output CLI dictionary
        CLI_registerDictionary( outputCLIDict, outputCLIDictName );
index 793804059277ee2d7c8104eb10257cf048416446..22b38717f2febcf3d220abfee086990928105381 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2014 by Jacob Alexander
+/* Copyright (C) 2013-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -79,6 +79,8 @@ extern          uint8_t  USBKeys_Idle_Count;
 
 extern USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
index 083936085d57b8f9306d03fdc0530795cdf2e8cd..3b18ee299f90edefdd9612d8ef2a0328a87bcb1b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014 by Jacob Alexander
+/* Copyright (C) 2014-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -107,6 +107,11 @@ USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None;
 // count until idle timeout
          uint8_t  USBKeys_Idle_Count = 0;
 
+// Indicates whether the Output module is fully functional
+// 0 - Not fully functional, 1 - Fully functional
+// 0 is often used to show that a USB cable is not plugged in (but has power)
+         uint8_t  Output_Available = 0;
+
 
 
 // ----- Capabilities -----
index 983ab095645ea585bc58be25107292f5c3049bef..684d58a46fef3841525790ad523bc83eb80d5fec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2014 by Jacob Alexander
+/* Copyright (C) 2013-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -76,6 +76,8 @@ extern          uint8_t  USBKeys_Idle_Count;
 
 extern USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
index fd0f9b52060b5c9bf42f7d65c1d671d5af9cd056..5c883e7e982213199868751fdd155a718adb42cb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2014 by Jacob Alexander
+/* Copyright (C) 2014-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
 // USB Includes
 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
 #elif defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
-#include "../uartOut/arm/uart_serial.h"
-#include "../pjrcUSB/arm/usb_dev.h"
-#include "../pjrcUSB/arm/usb_keyboard.h"
-#include "../pjrcUSB/arm/usb_serial.h"
+#include <uartOut/arm/uart_serial.h>
+#include <pjrcUSB/arm/usb_dev.h>
+#include <pjrcUSB/arm/usb_keyboard.h>
+#include <pjrcUSB/arm/usb_serial.h>
 #endif
 
 // Local Includes
@@ -130,6 +130,11 @@ USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None;
 // count until idle timeout
          uint8_t  USBKeys_Idle_Count = 0;
 
+// Indicates whether the Output module is fully functional
+// 0 - Not fully functional, 1 - Fully functional
+// 0 is often used to show that a USB cable is not plugged in (but has power)
+         uint8_t  Output_Available = 0;
+
 
 
 // ----- Capabilities -----
index b76b525492c143497d32774d98c12d39e32718a8..b041ea738482f3d0c1f6d0d5fea075b2ec997f07 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2014 by Jacob Alexander
+/* Copyright (C) 2013-2015 by Jacob Alexander
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -78,6 +78,8 @@ extern          uint8_t  USBKeys_Idle_Count;
 
 extern USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
index 3b6ea0cc5ff13bf58f2dd4e9c4e641813687a8ea..375d2e7aad933622337b609d3a4aa0c625f40ba9 100644 (file)
@@ -1,6 +1,6 @@
 ###| CMake Kiibohd Controller Scan Module |###
 #
-# Written by Jacob Alexander in 2014 for the Kiibohd Controller
+# Written by Jacob Alexander in 2014-2015 for the Kiibohd Controller
 #
 # Released into the Public Domain
 #
@@ -8,27 +8,24 @@
 
 
 ###
-# Module C files
+# Required Sub-modules
 #
-
-set( SCAN_SRCS
-       scan_loop.c
-       ../MatrixARM/matrix_scan.c
-)
+AddModule ( Scan ISSILed )
+AddModule ( Scan MatrixARM )
 
 
 ###
-# Module Specific Options
+# Module C files
 #
-add_definitions(
-       -I${HEAD_DIR}/Scan/MatrixARM
+set( Module_SRCS
+       scan_loop.c
 )
 
 
 ###
 # Compiler Family Compatibility
 #
-set( ScanModuleCompatibility
+set( ModuleCompatibility
        arm
 )