# HG changeset patch # User Jacob Alexander # Date 1425713829 28800 # Node ID 7119c2149abb8f044c9d51802ac5981ce414936e # Parent c856f826bd490d3b8ec09caf465ea81a11ee0e5e Fixing compiler errors for usbMuxUart Output module - Removing (currently) redundant usbMuxUart capabilities.kll file - Issues were due to the recent AddModule cmake function addition diff -r c856f826bd49 -r 7119c2149abb Output/usbMuxUart/capabilities.kll --- a/Output/usbMuxUart/capabilities.kll Fri Mar 06 22:18:15 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r c856f826bd49 -r 7119c2149abb Output/usbMuxUart/output_com.c --- a/Output/usbMuxUart/output_com.c Fri Mar 06 22:18:15 2015 -0800 +++ b/Output/usbMuxUart/output_com.c Fri Mar 06 23:37:09 2015 -0800 @@ -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 @@ // 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 @@ // ----- 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 -r c856f826bd49 -r 7119c2149abb Output/usbMuxUart/output_com.h --- a/Output/usbMuxUart/output_com.h Fri Mar 06 22:18:15 2015 -0800 +++ b/Output/usbMuxUart/output_com.h Fri Mar 06 23:37:09 2015 -0800 @@ -80,6 +80,8 @@ 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_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_setup(); void Output_send(); +void Output_flushBuffers(); + void Output_firmwareReload(); void Output_softReset(); diff -r c856f826bd49 -r 7119c2149abb Output/usbMuxUart/setup.cmake --- a/Output/usbMuxUart/setup.cmake Fri Mar 06 22:18:15 2015 -0800 +++ b/Output/usbMuxUart/setup.cmake Fri Mar 06 23:37:09 2015 -0800 @@ -23,6 +23,12 @@ 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