From 733201d39bf1cb4b6be424310db019a4381f6bae Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Fri, 6 Mar 2015 23:37:09 -0800 Subject: [PATCH] Fixing compiler errors for usbMuxUart Output module - Removing (currently) redundant usbMuxUart capabilities.kll file - Issues were due to the recent AddModule cmake function addition --- Output/usbMuxUart/capabilities.kll | 14 ------ Output/usbMuxUart/output_com.c | 81 ++++++++++++++++++++++++++++-- Output/usbMuxUart/output_com.h | 8 +++ Output/usbMuxUart/setup.cmake | 6 +++ 4 files changed, 91 insertions(+), 18 deletions(-) delete mode 100644 Output/usbMuxUart/capabilities.kll diff --git a/Output/usbMuxUart/capabilities.kll b/Output/usbMuxUart/capabilities.kll deleted file mode 100644 index 8cfdc03..0000000 --- a/Output/usbMuxUart/capabilities.kll +++ /dev/null @@ -1,14 +0,0 @@ -Name = usbMuxUartCapabilities; -Version = 0.1; -Author = "HaaTa (Jacob Alexander) 2014"; -KLL = 0.3; - -# Modified Date -Date = 2014-09-28; - - -# Capabilties available to the usbMuxUart output module -consCtrlOut => Output_consCtrlSend_capability( consCode : 2 ); -sysCtrlOut => Output_sysCtrlSend_capability( sysCode : 1 ); -usbKeyOut => Output_usbCodeSend_capability( usbCode : 1 ); - diff --git a/Output/usbMuxUart/output_com.c b/Output/usbMuxUart/output_com.c index 5c883e7..d33d7e0 100644 --- a/Output/usbMuxUart/output_com.c +++ b/Output/usbMuxUart/output_com.c @@ -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 -#include -#include -#include +#include +#include +#include +#include #endif // Local Includes @@ -135,10 +135,69 @@ USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None; // 0 is often used to show that a USB cable is not plugged in (but has power) uint8_t Output_Available = 0; +// Debug control variable for Output modules +// 0 - Debug disabled (default) +// 1 - Debug enabled + uint8_t Output_DebugMode = 0; + // ----- Capabilities ----- +// Set Boot Keyboard Protocol +void Output_kbdProtocolBoot_capability( uint8_t state, uint8_t stateType, uint8_t *args ) +{ + // Display capability name + if ( stateType == 0xFF && state == 0xFF ) + { + print("Output_kbdProtocolBoot()"); + return; + } + + // Only set if necessary + if ( USBKeys_Protocol == 0 ) + return; + + // TODO Analog inputs + // Only set on key press + if ( stateType != 0x01 ) + return; + + // Flush the key buffers + Output_flushBuffers(); + + // Set the keyboard protocol to Boot Mode + USBKeys_Protocol = 0; +} + + +// Set NKRO Keyboard Protocol +void Output_kbdProtocolNKRO_capability( uint8_t state, uint8_t stateType, uint8_t *args ) +{ + // Display capability name + if ( stateType == 0xFF && state == 0xFF ) + { + print("Output_kbdProtocolNKRO()"); + return; + } + + // Only set if necessary + if ( USBKeys_Protocol == 1 ) + return; + + // TODO Analog inputs + // Only set on key press + if ( stateType != 0x01 ) + return; + + // Flush the key buffers + Output_flushBuffers(); + + // Set the keyboard protocol to NKRO Mode + USBKeys_Protocol = 1; +} + + // Sends a Consumer Control code to the USB Output buffer void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) { @@ -374,6 +433,20 @@ void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *a // ----- Functions ----- +// Flush Key buffers +void Output_flushBuffers() +{ + // Zero out USBKeys_Keys array + for ( uint8_t c = 0; c < USB_NKRO_BITFIELD_SIZE_KEYS; c++ ) + USBKeys_Keys[ c ] = 0; + + // Zero out other key buffers + USBKeys_ConsCtrl = 0; + USBKeys_Modifiers = 0; + USBKeys_SysCtrl = 0; +} + + // USB Module Setup inline void Output_setup() { diff --git a/Output/usbMuxUart/output_com.h b/Output/usbMuxUart/output_com.h index b041ea7..e73fd09 100644 --- a/Output/usbMuxUart/output_com.h +++ b/Output/usbMuxUart/output_com.h @@ -80,6 +80,8 @@ extern USBKeyChangeState USBKeys_Changed; extern uint8_t Output_Available; // 0 - Output module not fully functional, 1 - Output module working +extern uint8_t Output_DebugMode; // 0 - Debug disabled, 1 - Debug enabled + // ----- Capabilities ----- @@ -88,6 +90,10 @@ void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t * void Output_sysCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); +// Configuration capabilities +void Output_kbdProtocolBoot_capability( uint8_t state, uint8_t stateType, uint8_t *args ); +void Output_kbdProtocolNKRO_capability( uint8_t state, uint8_t stateType, uint8_t *args ); + // ----- Functions ----- @@ -95,6 +101,8 @@ void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *a void Output_setup(); void Output_send(); +void Output_flushBuffers(); + void Output_firmwareReload(); void Output_softReset(); diff --git a/Output/usbMuxUart/setup.cmake b/Output/usbMuxUart/setup.cmake index 32dfecc..bd07893 100644 --- a/Output/usbMuxUart/setup.cmake +++ b/Output/usbMuxUart/setup.cmake @@ -23,6 +23,12 @@ set( Module_SRCS output_com.c ) +# Remove duplicate output_com.c files from pjrcUSB and uartOut +list ( REMOVE_ITEM Output_SRCS + Output/pjrcUSB/output_com.c + Output/uartOut/output_com.c +) + ### # Compiler Family Compatibility