ns-joycon
Version:
Extract data from connected Jon-Con of Nintendo Switch.
97 lines (85 loc) • 2.19 kB
text/typescript
interface IPacketBuffer {
_raw: Buffer;
_hex: String | String[];
};
export type BatteryLevel = 'full' | 'medium' | 'low' | 'critical' | 'empty' | 'charging';
interface IBatteryLevel extends IPacketBuffer {
level: BatteryLevel;
};
interface IButtonStatus extends IPacketBuffer {
// Byte 3 (Right Joy-Con)
y: Boolean;
x: Boolean;
b: Boolean;
a: Boolean;
r: Boolean;
zr: Boolean;
// Byte 5 (Left Joy-Con)
down: Boolean;
up: Boolean;
right: Boolean;
left: Boolean;
l: Boolean;
zl: Boolean;
// Byte 3,5 (Shared)
sr: Boolean;
sl: Boolean;
// Byte 4 (Shared)
minus: Boolean;
plus: Boolean;
rightStick: Boolean;
leftStick: Boolean;
home: Boolean;
caputure: Boolean;
chargingGrip: Boolean;
}
interface IAnalogStick extends IPacketBuffer {
horizontal: number;
vertical: number;
}
interface IStandardInputReport {
inputReportID: IPacketBuffer;
timer: IPacketBuffer;
batteryLevel: IBatteryLevel;
connectionInfo: IPacketBuffer;
buttonStatus: IButtonStatus;
analogStickLeft: IAnalogStick;
analogStickRight: IAnalogStick;
vibrator: IPacketBuffer;
};
export type Accelerometer = {
x: IPacketBuffer & { acc: number };
y: IPacketBuffer & { acc: number };
z: IPacketBuffer & { acc: number };
};
export type Gyroscope = Array<IPacketBuffer & {
dps: number;
rps: number;
}>;
export interface IInputReport0x21 extends IStandardInputReport {
ack: IPacketBuffer;
subcommandID: IPacketBuffer;
subcommandReplyData: IPacketBuffer;
};
export interface IInputReport0x30 extends IStandardInputReport {
accelerometers: Accelerometer[];
gyroscopes: Gyroscope[];
actualAccelerometer: {
acc: {
x: number;
y: number;
z: number;
};
};
actualGyroscope: {
dps: number[];
rps: number[];
};
};
export interface IInputReport0x3f {
inputReportID: IPacketBuffer;
buttonStatus: IPacketBuffer;
analogStick: IPacketBuffer;
filter: IPacketBuffer;
};
export type InputReport = IInputReport0x3f | IInputReport0x21 | IInputReport0x30;