Had to increase size of HID report to 512. Allow HAT to work 10039 Mouse Example prints out Z, Rz, Ry, Rx and Hat valuesmain
@@ -521,7 +521,7 @@ private: | |||
uint16_t in_size; | |||
uint16_t out_size; | |||
setup_t setup; | |||
uint8_t descriptor[256]; | |||
uint8_t descriptor[512]; | |||
uint8_t report[64]; | |||
uint16_t descsize; | |||
bool use_report_id; | |||
@@ -745,7 +745,7 @@ public: | |||
bool available() { return joystickEvent; } | |||
void joystickDataClear(); | |||
uint32_t getButtons() { return buttons; } | |||
int getAxis(uint32_t index) { return (index < 8) ? axis[index] : 0; } | |||
int getAxis(uint32_t index) { return (index < (sizeof(axis)/sizeof(axis[0]))) ? axis[index] : 0; } | |||
protected: | |||
virtual bool claim_collection(Device_t *dev, uint32_t topusage); | |||
virtual void hid_input_begin(uint32_t topusage, uint32_t type, int lgmin, int lgmax); | |||
@@ -758,7 +758,7 @@ private: | |||
bool anychange = false; | |||
volatile bool joystickEvent = false; | |||
uint32_t buttons = 0; | |||
int16_t axis[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | |||
int16_t axis[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | |||
}; | |||
#endif |
@@ -52,7 +52,16 @@ void loop() | |||
Serial.print(joystick1.getAxis(0)); | |||
Serial.print(", Y = "); | |||
Serial.print(joystick1.getAxis(1)); | |||
Serial.print(", Z = "); | |||
Serial.print(joystick1.getAxis(2)); | |||
Serial.print(", Rz = "); | |||
Serial.print(joystick1.getAxis(5)); | |||
Serial.print(", Rx = "); | |||
Serial.print(joystick1.getAxis(3)); | |||
Serial.print(", Ry = "); | |||
Serial.print(joystick1.getAxis(4)); | |||
Serial.print(", Hat = "); | |||
Serial.print(joystick1.getAxis(9)); | |||
Serial.println(); | |||
joystick1.joystickDataClear(); | |||
} |
@@ -68,7 +68,7 @@ void JoystickController::hid_input_data(uint32_t usage, int32_t value) | |||
anychange = true; | |||
} | |||
} | |||
} else if (usage_page == 1 && usage >= 0x30 && usage <= 0x37) { | |||
} else if (usage_page == 1 && usage >= 0x30 && usage <= 0x39) { | |||
// TODO: need scaling of value to consistent API, 16 bit signed? | |||
// TODO: many joysticks repeat slider usage. Detect & map to axes? | |||
uint32_t i = usage - 0x30; |