mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-21 12:03:02 +00:00
99 lines
2.5 KiB
Java
99 lines
2.5 KiB
Java
package com.limelight.nvstream.input;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.ByteOrder;
|
|
|
|
public class ControllerPacket extends InputPacket {
|
|
public static final byte[] HEADER =
|
|
{
|
|
0x0A,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x14
|
|
};
|
|
|
|
public static final byte[] TAIL =
|
|
{
|
|
(byte)0x9C,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x55,
|
|
0x00
|
|
};
|
|
|
|
public static final int PACKET_TYPE = 0x18;
|
|
|
|
public static final short A_FLAG = 0x1000;
|
|
public static final short B_FLAG = 0x2000;
|
|
public static final short X_FLAG = 0x4000;
|
|
public static final short Y_FLAG = (short)0x8000;
|
|
public static final short UP_FLAG = 0x0001;
|
|
public static final short DOWN_FLAG = 0x0002;
|
|
public static final short LEFT_FLAG = 0x0004;
|
|
public static final short RIGHT_FLAG = 0x0008;
|
|
public static final short LB_FLAG = 0x0100;
|
|
public static final short RB_FLAG = 0x0200;
|
|
public static final short PLAY_FLAG = 0x0010;
|
|
public static final short BACK_FLAG = 0x0020;
|
|
public static final short LS_CLK_FLAG = 0x0040;
|
|
public static final short RS_CLK_FLAG = 0x0080;
|
|
public static final short SPECIAL_BUTTON_FLAG = 0x0400;
|
|
|
|
public static final short PAYLOAD_LENGTH = 24;
|
|
public static final short PACKET_LENGTH = PAYLOAD_LENGTH +
|
|
InputPacket.HEADER_LENGTH;
|
|
|
|
// Set this flag if you want ControllerPacket to handle scaling for you
|
|
// You MUST properly handle deadzones to use this flag
|
|
//
|
|
// Note: This flag does nothing right now. It causes some controllers
|
|
// to behave badly.
|
|
public static boolean enableAxisScaling = false;
|
|
|
|
short buttonFlags;
|
|
byte leftTrigger;
|
|
byte rightTrigger;
|
|
short leftStickX;
|
|
short leftStickY;
|
|
short rightStickX;
|
|
short rightStickY;
|
|
|
|
public ControllerPacket(short buttonFlags, byte leftTrigger, byte rightTrigger,
|
|
short leftStickX, short leftStickY,
|
|
short rightStickX, short rightStickY)
|
|
{
|
|
super(PACKET_TYPE);
|
|
|
|
this.buttonFlags = buttonFlags;
|
|
this.leftTrigger = leftTrigger;
|
|
this.rightTrigger = rightTrigger;
|
|
|
|
this.leftStickX = leftStickX;
|
|
this.leftStickY = leftStickY;
|
|
|
|
this.rightStickX = rightStickX;
|
|
this.rightStickY = rightStickY;
|
|
}
|
|
|
|
@Override
|
|
public void toWirePayload(ByteBuffer bb) {
|
|
bb.order(ByteOrder.LITTLE_ENDIAN);
|
|
bb.put(HEADER);
|
|
bb.putShort(buttonFlags);
|
|
bb.put(leftTrigger);
|
|
bb.put(rightTrigger);
|
|
bb.putShort(leftStickX);
|
|
bb.putShort(leftStickY);
|
|
bb.putShort(rightStickX);
|
|
bb.putShort(rightStickY);
|
|
bb.put(TAIL);
|
|
}
|
|
|
|
@Override
|
|
public int getPacketLength() {
|
|
return PACKET_LENGTH;
|
|
}
|
|
} |