X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Output%2FpjrcUSB%2Foutput_com.c;h=dc6bfcd0a4e7b47f1c736b01ba42f7e06ae81812;hb=55d03f448e42ea581810bef3d55eb9c017572665;hp=eb25b83ba30e65a5975922c4ca705b248b553dac;hpb=595319c511e0a852219f8b174a259145f581e1b5;p=kiibohd-controller.git diff --git a/Output/pjrcUSB/output_com.c b/Output/pjrcUSB/output_com.c index eb25b83..dc6bfcd 100644 --- a/Output/pjrcUSB/output_com.c +++ b/Output/pjrcUSB/output_com.c @@ -93,20 +93,20 @@ CLIDict_Def( outputCLIDict, "USB Module Commands" ) = { // Which modifier keys are currently pressed // 1=left ctrl, 2=left shift, 4=left alt, 8=left gui // 16=right ctrl, 32=right shift, 64=right alt, 128=right gui - uint8_t USBKeys_Modifiers = 0; - uint8_t USBKeys_ModifiersCLI = 0; // Separate CLI send buffer +uint8_t USBKeys_Modifiers = 0; +uint8_t USBKeys_ModifiersCLI = 0; // Separate CLI send buffer // Currently pressed keys, max is defined by USB_MAX_KEY_SEND - uint8_t USBKeys_Keys [USB_NKRO_BITFIELD_SIZE_KEYS]; - uint8_t USBKeys_KeysCLI[USB_NKRO_BITFIELD_SIZE_KEYS]; // Separate CLI send buffer +uint8_t USBKeys_Keys [USB_NKRO_BITFIELD_SIZE_KEYS]; +uint8_t USBKeys_KeysCLI[USB_NKRO_BITFIELD_SIZE_KEYS]; // Separate CLI send buffer // System Control and Consumer Control 1KRO containers - uint8_t USBKeys_SysCtrl; - uint16_t USBKeys_ConsCtrl; +uint8_t USBKeys_SysCtrl; +uint16_t USBKeys_ConsCtrl; // The number of keys sent to the usb in the array - uint8_t USBKeys_Sent = 0; - uint8_t USBKeys_SentCLI = 0; +uint8_t USBKeys_Sent = 0; +uint8_t USBKeys_SentCLI = 0; // 1=num lock, 2=caps lock, 4=scroll lock, 8=compose, 16=kana volatile uint8_t USBKeys_LEDs = 0; @@ -122,20 +122,20 @@ USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None; // the idle configuration, how often we send the report to the // host (ms * 4) even when it hasn't changed - uint8_t USBKeys_Idle_Config = 125; +uint8_t USBKeys_Idle_Config = 125; // count until idle timeout - uint8_t USBKeys_Idle_Count = 0; +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; +volatile uint8_t Output_Available = 0; // Debug control variable for Output modules // 0 - Debug disabled (default) // 1 - Debug enabled - uint8_t Output_DebugMode = 0; +uint8_t Output_DebugMode = 0; @@ -229,6 +229,21 @@ void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t * } +// Ignores the given key status update +// Used to prevent fall-through, this is the None keyword in KLL +void Output_noneSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) +{ + // Display capability name + if ( stateType == 0xFF && state == 0xFF ) + { + print("Output_noneSend()"); + return; + } + + // Nothing to do, because that's the point :P +} + + // Sends a System Control code to the USB Output buffer void Output_sysCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) { @@ -490,13 +505,11 @@ void Output_flushBuffers() // USB Module Setup 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 - // If no USB cable is attached, does not try and initialize USB - if ( usb_init() ) - { - while ( !usb_configured() ); - } + // Initialize the USB + // If a USB connection does not exist, just ignore it + // All usb related functions will non-fatally fail if called + // If the USB initialization is delayed, then functionality will just be delayed + usb_init(); // Register USB Output CLI dictionary CLI_registerDictionary( outputCLIDict, outputCLIDictName );