package andraus.bluetoothhidemu.sock.payload;
/**
* Payload for Sixaxis PS3 controller.
* Reference: http://wiki.ps2dev.org/ps3:hardware:sixaxis
*/
public class HidSixaxisPayload extends HidPayload {
private static final int SIZE = 50;
private static final int REPORT_ID_KEYBOARD = 0x01;
/**
*
*/
public HidSixaxisPayload() {
super(SIZE);
mPayload[0] = (byte)0xa1;
mPayload[1] = (byte)REPORT_ID_KEYBOARD; // report_id (keyboard)
mPayload[2] = (byte)0x00; // unknown
mPayload[3] = (byte)0x00; // b1 (simple button state)
mPayload[4] = (byte)0x00; // b2 (simple button state)
mPayload[5] = (byte)0x00; // b3 (simple button state)
mPayload[6] = (byte)0x00; // unknown
mPayload[7] = (byte)0x00; // left analog stick (horizontal axis - left = 0x00, right = 0xff)
mPayload[8] = (byte)0x00; // left analog stick (vertical axis - top = 0x00, bottom = 0xff)
mPayload[9] = (byte)0x00; // right analog stick (horizontal axis - left = 0x00, right = 0xff)
mPayload[10] = (byte)0x00; // right analog stick (vertical axis - top = 0x00, bottom = 0xff)
mPayload[11] = (byte)0x00; // unknown
mPayload[12] = (byte)0x00; // unknown
mPayload[13] = (byte)0x00; // unknown
mPayload[14] = (byte)0x00; // unknown
mPayload[15] = (byte)0x00; // press. sensitive up nav. pad
mPayload[16] = (byte)0x00; // press. sensitive right nav. pad
mPayload[17] = (byte)0x00; // press. sensitive down nav. pad
mPayload[18] = (byte)0x00; // press. sensitive left nav. pad
mPayload[19] = (byte)0x00; // press. sensitive L2
mPayload[20] = (byte)0x00; // press. sensitive R2
mPayload[21] = (byte)0x00; // press. sensitive L1
mPayload[22] = (byte)0x00; // press. sensitive R1
mPayload[23] = (byte)0x00; // press. sensitive triangle
mPayload[24] = (byte)0x00; // press. sensitive circle
mPayload[25] = (byte)0x00; // press. sensitive cross
mPayload[26] = (byte)0x00; // press. sensitive square
mPayload[27] = (byte)0x00; // unknown
mPayload[28] = (byte)0x00; // unknown
mPayload[29] = (byte)0x00; // unknown
mPayload[30] = (byte)0x03; // cable status (normal = 0x03, cable = 0x02)
mPayload[31] = (byte)0x05; // battery level
mPayload[32] = (byte)0x14; // op. status (bluetooth = 0x14, cable = 0x10; bluetooth + rumble = 0x16)
mPayload[33] = (byte)0xff; // unknown (values fluctuate)
mPayload[34] = (byte)0xb9; // unknown (values fluctuate)
mPayload[35] = (byte)0x00; // unknown (values fluctuate)
mPayload[36] = (byte)0x00; // unknown (values fluctuate)
mPayload[37] = (byte)0x23; // unknown (values fluctuate)
mPayload[38] = (byte)0x16; // unknown (values fluctuate)
mPayload[39] = (byte)0x77; // unknown (values fluctuate)
mPayload[40] = (byte)0x01; // unknown (values fluctuate)
mPayload[41] = (byte)0x81; // unknown (values fluctuate)
mPayload[42] = (byte)0x02; // accel
mPayload[43] = (byte)0x08; // accel
mPayload[44] = (byte)0x01; // accel
mPayload[45] = (byte)0xf2; // accel
mPayload[46] = (byte)0x01; // accel
mPayload[47] = (byte)0x93; // accel
mPayload[48] = (byte)0x00; // Z gyro
mPayload[49] = (byte)0x02; // Z gyro
}
/**
*
*/
@Override
public void resetBytes() {
// TODO Auto-generated method stub
releaseCircle();
}
/**
*
*/
public void pressCircle() {
mPayload[4] = (byte)0x20;
mPayload[24] = (byte)0xff;
}
/**
*
*/
public void releaseCircle() {
mPayload[4] = (byte)0x00;
mPayload[24] = (byte) 0x00;
}
}