-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++ )
{
// enable d+ pullup
USB0_CONTROL = USB_CONTROL_DPPULLUPNONOTG;
+
+ return 1;
}
// return 0 if the USB is not configured, or the configuration
// ----- 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 );
// 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
// 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
// ----- 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
-/* 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
// 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 -----
{
// 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 );
-/* 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
extern USBKeyChangeState USBKeys_Changed;
+extern uint8_t Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
// ----- Capabilities -----
-/* 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
// 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 -----
-/* 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
extern USBKeyChangeState USBKeys_Changed;
+extern uint8_t Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
// ----- Capabilities -----
-/* 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
// 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 -----
-/* 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
extern USBKeyChangeState USBKeys_Changed;
+extern uint8_t Output_Available; // 0 - Output module not fully functional, 1 - Output module working
+
// ----- Capabilities -----
###| 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
#
###
-# 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
)