changeset 275:d5bf41d7f7ef

Initial code for USB cable detection - Currently actual detection commented out due to issues
author Jacob Alexander <haata@kiibohd.com>
date Mon, 09 Feb 2015 13:21:23 -0800
parents 6816f4ec783e
children 2a3468f5d8be
files 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
diffstat 11 files changed, 62 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/Output/pjrcUSB/arm/usb_dev.c	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/arm/usb_dev.c	Mon Feb 09 13:21:23 2015 -0800
@@ -1098,12 +1098,17 @@
 
 
 
-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 @@
 
 	// enable d+ pullup
 	USB0_CONTROL = USB_CONTROL_DPPULLUPNONOTG;
+
+	return 1;
 }
 
 // return 0 if the USB is not configured, or the configuration
--- a/Output/pjrcUSB/arm/usb_dev.h	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/arm/usb_dev.h	Mon Feb 09 13:21:23 2015 -0800
@@ -61,8 +61,8 @@
 // ----- 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 );
--- a/Output/pjrcUSB/avr/usb_keyboard_serial.c	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/avr/usb_keyboard_serial.c	Mon Feb 09 13:21:23 2015 -0800
@@ -590,8 +590,13 @@
 
 
 // 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 @@
 
 	// 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
--- a/Output/pjrcUSB/avr/usb_keyboard_serial.h	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/avr/usb_keyboard_serial.h	Mon Feb 09 13:21:23 2015 -0800
@@ -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
--- a/Output/pjrcUSB/output_com.c	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/output_com.c	Mon Feb 09 13:21:23 2015 -0800
@@ -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 @@
 // 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 @@
 {
 	// 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 );
--- a/Output/pjrcUSB/output_com.h	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/pjrcUSB/output_com.h	Mon Feb 09 13:21:23 2015 -0800
@@ -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 USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
--- a/Output/uartOut/output_com.c	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/uartOut/output_com.c	Mon Feb 09 13:21:23 2015 -0800
@@ -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 @@
 // 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 -----
--- a/Output/uartOut/output_com.h	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/uartOut/output_com.h	Mon Feb 09 13:21:23 2015 -0800
@@ -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 USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
--- a/Output/usbMuxUart/output_com.c	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/usbMuxUart/output_com.c	Mon Feb 09 13:21:23 2015 -0800
@@ -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
@@ -33,10 +33,10 @@
 // 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 @@
 // 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 -----
--- a/Output/usbMuxUart/output_com.h	Mon Feb 09 13:15:25 2015 -0800
+++ b/Output/usbMuxUart/output_com.h	Mon Feb 09 13:21:23 2015 -0800
@@ -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 USBKeyChangeState USBKeys_Changed;
 
+extern          uint8_t  Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
 
 
 // ----- Capabilities -----
--- a/Scan/MD2/setup.cmake	Mon Feb 09 13:15:25 2015 -0800
+++ b/Scan/MD2/setup.cmake	Mon Feb 09 13:21:23 2015 -0800
@@ -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
 )