Fix flexible array errors

This commit is contained in:
NicoHood 2017-01-27 12:22:02 +01:00
parent 12557b5489
commit 583718f453
No known key found for this signature in database
GPG key ID: 51DAE9B7C1AE9161
8 changed files with 46 additions and 51 deletions

View file

@ -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;

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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;

View file

@ -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"

View file

@ -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;
};

View file

@ -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;