Browse Source

PS4 support

Had to increase size of HID report to 512.
Allow HAT to work 10039

Mouse Example prints out Z, Rz, Ry, Rx and Hat values
main
Kurt Eckhardt 7 years ago
parent
commit
d792ffd2e8
3 changed files with 14 additions and 5 deletions
  1. +3
    -3
      USBHost_t36.h
  2. +10
    -1
      examples/Mouse/Mouse.ino
  3. +1
    -1
      joystick.cpp

+ 3
- 3
USBHost_t36.h View File

uint16_t in_size; uint16_t in_size;
uint16_t out_size; uint16_t out_size;
setup_t setup; setup_t setup;
uint8_t descriptor[256];
uint8_t descriptor[512];
uint8_t report[64]; uint8_t report[64];
uint16_t descsize; uint16_t descsize;
bool use_report_id; bool use_report_id;
bool available() { return joystickEvent; } bool available() { return joystickEvent; }
void joystickDataClear(); void joystickDataClear();
uint32_t getButtons() { return buttons; } 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: protected:
virtual bool claim_collection(Device_t *dev, uint32_t topusage); 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); virtual void hid_input_begin(uint32_t topusage, uint32_t type, int lgmin, int lgmax);
bool anychange = false; bool anychange = false;
volatile bool joystickEvent = false; volatile bool joystickEvent = false;
uint32_t buttons = 0; 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 #endif

+ 10
- 1
examples/Mouse/Mouse.ino View File

Serial.print(joystick1.getAxis(0)); Serial.print(joystick1.getAxis(0));
Serial.print(", Y = "); Serial.print(", Y = ");
Serial.print(joystick1.getAxis(1)); 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(); Serial.println();
joystick1.joystickDataClear(); joystick1.joystickDataClear();
} }

+ 1
- 1
joystick.cpp View File

anychange = true; 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: need scaling of value to consistent API, 16 bit signed?
// TODO: many joysticks repeat slider usage. Detect & map to axes? // TODO: many joysticks repeat slider usage. Detect & map to axes?
uint32_t i = usage - 0x30; uint32_t i = usage - 0x30;

Loading…
Cancel
Save