diff --git a/src/HID-APIs/AbsoluteMouseAPI.h b/src/HID-APIs/AbsoluteMouseAPI.h index 6f117e6..a74c782 100644 --- a/src/HID-APIs/AbsoluteMouseAPI.h +++ b/src/HID-APIs/AbsoluteMouseAPI.h @@ -39,9 +39,9 @@ THE SOFTWARE. typedef union{ // Absolute mouse report: 8 buttons, 2 absolute axis, wheel - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; struct{ uint8_t buttons; int16_t xAxis; diff --git a/src/HID-APIs/ConsumerAPI.h b/src/HID-APIs/ConsumerAPI.h index 33558b6..a12c674 100644 --- a/src/HID-APIs/ConsumerAPI.h +++ b/src/HID-APIs/ConsumerAPI.h @@ -450,9 +450,9 @@ enum ConsumerKeycode : uint16_t { typedef union { // Every usable Consumer key possible, up to 4 keys presses possible - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; ConsumerKeycode keys[4]; struct { ConsumerKeycode key1; @@ -472,7 +472,7 @@ public: inline void press(ConsumerKeycode m); inline void release(ConsumerKeycode m); inline void releaseAll(void); - + // Sending is public in the base class for advanced users. virtual void SendReport(void* data, int length) = 0; @@ -482,4 +482,3 @@ protected: // Implementation is inline #include "ConsumerAPI.hpp" - diff --git a/src/HID-APIs/DefaultKeyboardAPI.h b/src/HID-APIs/DefaultKeyboardAPI.h index b586b09..e605f27 100644 --- a/src/HID-APIs/DefaultKeyboardAPI.h +++ b/src/HID-APIs/DefaultKeyboardAPI.h @@ -29,9 +29,9 @@ THE SOFTWARE. typedef union{ // Low level key report: up to 6 keys and shift, ctrl etc at once - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; struct{ uint8_t modifiers; uint8_t reserved; @@ -74,4 +74,3 @@ private: // Implementation is inline #include "DefaultKeyboardAPI.hpp" - diff --git a/src/HID-APIs/GamepadAPI.h b/src/HID-APIs/GamepadAPI.h index 13ea7b5..6a50018 100644 --- a/src/HID-APIs/GamepadAPI.h +++ b/src/HID-APIs/GamepadAPI.h @@ -41,9 +41,9 @@ THE SOFTWARE. typedef union { // 32 Buttons, 6 Axis, 2 D-Pads - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; uint32_t buttons; struct{ @@ -117,7 +117,7 @@ public: inline void rzAxis(int8_t a); inline void dPad1(int8_t d); inline void dPad2(int8_t d); - + // Sending is public in the base class for advanced users. virtual void SendReport(void* data, int length) = 0; @@ -127,4 +127,3 @@ protected: // Implementation is inline #include "GamepadAPI.hpp" - diff --git a/src/HID-APIs/MouseAPI.h b/src/HID-APIs/MouseAPI.h index 184a5ae..1ce85eb 100644 --- a/src/HID-APIs/MouseAPI.h +++ b/src/HID-APIs/MouseAPI.h @@ -39,9 +39,9 @@ THE SOFTWARE. typedef union{ // Mouse report: 8 buttons, position, wheel - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; struct{ uint8_t buttons; int8_t xAxis; @@ -53,9 +53,9 @@ typedef union{ typedef union{ // BootMouse report: 3 buttons, position // Wheel is not supported by boot protocol - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; struct{ uint8_t buttons; int8_t xAxis; diff --git a/src/HID-APIs/NKROKeyboardAPI.h b/src/HID-APIs/NKROKeyboardAPI.h index 7dafbd7..6ff0c1a 100644 --- a/src/HID-APIs/NKROKeyboardAPI.h +++ b/src/HID-APIs/NKROKeyboardAPI.h @@ -32,9 +32,9 @@ THE SOFTWARE. typedef union{ // Modifier + keymap + 1 custom key - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; struct{ uint8_t modifiers; uint8_t keys[NKRO_KEY_COUNT / 8]; @@ -43,7 +43,7 @@ typedef union{ uint8_t allkeys[2 + NKRO_KEY_COUNT / 8]; } HID_NKROKeyboardReport_Data_t; - + class NKROKeyboardAPI : public KeyboardAPI { public: @@ -62,4 +62,3 @@ private: // Implementation is inline #include "NKROKeyboardAPI.hpp" - diff --git a/src/HID-APIs/SystemAPI.h b/src/HID-APIs/SystemAPI.h index e27abac..b1d7d75 100644 --- a/src/HID-APIs/SystemAPI.h +++ b/src/HID-APIs/SystemAPI.h @@ -76,7 +76,7 @@ enum SystemKeycode : uint8_t { typedef union{ // Every usable system control key possible - uint8_t whole8[]; + uint8_t whole8[0]; uint8_t key; } HID_SystemControlReport_Data_t; @@ -89,7 +89,7 @@ public: inline void press(SystemKeycode s); inline void release(void); inline void releaseAll(void); - + // Sending is public in the base class for advanced users. virtual void SendReport(void* data, int length) = 0; }; diff --git a/src/SingleReport/RawHID.h b/src/SingleReport/RawHID.h index 9ccc43e..0382971 100644 --- a/src/SingleReport/RawHID.h +++ b/src/SingleReport/RawHID.h @@ -54,17 +54,17 @@ THE SOFTWARE. typedef union{ // a RAWHID_TX_SIZE byte buffer for tx - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; uint8_t buff[RAWHID_TX_SIZE]; } HID_RawKeyboardTXReport_Data_t; typedef union{ // a RAWHID_TX_SIZE byte buffer for rx - uint8_t whole8[]; - uint16_t whole16[]; - uint32_t whole32[]; + uint8_t whole8[0]; + uint16_t whole16[0]; + uint32_t whole32[0]; uint8_t buff[RAWHID_RX_SIZE]; } HID_RawKeyboardRXReport_Data_t; @@ -77,23 +77,23 @@ public: if(length > 0){ featureReport = (uint8_t*)report; featureLength = length; - + // Disable feature report by default disableFeatureReport(); } } - + int availableFeatureReport(void){ if(featureLength < 0){ return featureLength & ~0x8000; } return 0; } - + void enableFeatureReport(void){ featureLength &= ~0x8000; } - + void disableFeatureReport(void){ featureLength |= 0x8000; } @@ -110,22 +110,22 @@ public: disable(); dataLength = 0; } - + void enable(void){ dataAvailable = 0; } - + void disable(void){ dataAvailable = -1; } - + virtual int available(void){ if(dataAvailable < 0){ return 0; } return dataAvailable; } - + virtual int read(){ // Check if we have data available if(dataAvailable > 0) @@ -135,7 +135,7 @@ public: } return -1; } - + virtual int peek(){ // Check if we have data available if(dataAvailable > 0){ @@ -143,7 +143,7 @@ public: } return -1; } - + virtual void flush(void){ // Writing will always flush by the USB driver } @@ -157,24 +157,23 @@ public: virtual size_t write(uint8_t *buffer, size_t size){ return USB_Send(pluggedEndpoint | TRANSFER_RELEASE, buffer, size); } - + protected: // Implementation of the PUSBListNode int getInterface(uint8_t* interfaceCount); int getDescriptor(USBSetup& setup); bool setup(USBSetup& setup); - + uint8_t epType[1]; uint8_t protocol; uint8_t idle; - + // Buffer pointers to hold the received data int dataLength; int dataAvailable; uint8_t* data; - + uint8_t* featureReport; int featureLength; }; extern RawHID_ RawHID; -