Browse Source

Add special PS3 start command to HID parser

main
PaulStoffregen 7 years ago
parent
commit
356700d9d5
1 changed files with 11 additions and 4 deletions
  1. +11
    -4
      hid.cpp

+ 11
- 4
hid.cpp View File

// To decode hex dump to human readable HID report summary: // To decode hex dump to human readable HID report summary:
// http://eleccelerator.com/usbdescreqparser/ // http://eleccelerator.com/usbdescreqparser/
uint32_t mesg = transfer->setup.word1; uint32_t mesg = transfer->setup.word1;
//println(" mesg = ", mesg, HEX);
println(" mesg = ", mesg, HEX);
if (mesg == 0x22000681 && transfer->length == descsize) { // HID report descriptor if (mesg == 0x22000681 && transfer->length == descsize) { // HID report descriptor
println(" got report descriptor"); println(" got report descriptor");
parse(); parse();
queue_Data_Transfer(in_pipe, report, in_size, this); queue_Data_Transfer(in_pipe, report, in_size, this);
if (device->idVendor == 0x054C && device->idProduct == 0x0268) {
println("send special PS3 feature command");
mk_setup(setup, 0x21, 9, 0x03F4, 0, 4); // ps3 tell to send report 1?
static uint8_t ps3_feature_F4_report[] = {0x42, 0x0c, 0x00, 0x00};
queue_Control_Transfer(device, &setup, ps3_feature_F4_report, this);
}
} }
} }


p += 2; p += 2;
break; break;
case 2: val = p[1] | (p[2] << 8); case 2: val = p[1] | (p[2] << 8);
println("val16 = ", val, HEX);
p += 3; p += 3;
break; break;
case 3: val = p[1] | (p[2] << 8) | (p[3] << 16) | (p[4] << 24); case 3: val = p[1] | (p[2] << 8) | (p[3] << 16) | (p[4] << 24);
reset_local = true; reset_local = true;
break; break;


case 0xA4: // Push (yikes! Hope nobody really uses this?!)
case 0xB4: // Pop (yikes! Hope nobody really uses this?!)
case 0x34: // Physical Minimum (global) case 0x34: // Physical Minimum (global)
case 0x44: // Physical Maximum (global) case 0x44: // Physical Maximum (global)
case 0x54: // Unit Exponent (global) case 0x54: // Unit Exponent (global)
case 0x64: // Unit (global) case 0x64: // Unit (global)
break; // Ignore these commonly used tags. Hopefully not needed?

case 0xA4: // Push (yikes! Hope nobody really uses this?!)
case 0xB4: // Pop (yikes! Hope nobody really uses this?!)
case 0x38: // Designator Index (local) case 0x38: // Designator Index (local)
case 0x48: // Designator Minimum (local) case 0x48: // Designator Minimum (local)
case 0x58: // Designator Maximum (local) case 0x58: // Designator Maximum (local)

Loading…
Cancel
Save