joy-con-webhid
Version:
Joy-Con over WebHID
157 lines (156 loc) • 3.77 kB
TypeScript
export type ParsedPacketData = {
_raw: Uint8Array;
_hex: string | Uint8Array;
};
export type RingConDataPacket = {
strain: number;
};
export type AccelerometerData = {
x: ParsedPacketData & AccelerometerPacket;
y: ParsedPacketData & AccelerometerPacket;
z: ParsedPacketData & AccelerometerPacket;
};
export type JoyConLastValues = {
timestamp: number | null;
alpha: number;
beta: number;
gamma: number;
};
type RawJoyConDataPacket = {
inputReportID: ParsedPacketData;
filter: ParsedPacketData;
timer: ParsedPacketData;
connectionInfo: ParsedPacketData;
vibrator: ParsedPacketData;
ack: ParsedPacketData;
subcommandID: ParsedPacketData;
subcommandReplyData: ParsedPacketData;
};
type CompleteJoyConData = {
accelerometers: AccelerometerData[];
actualAccelerometer: {
x: number;
y: number;
z: number;
};
actualOrientationQuaternion: {
alpha: string;
beta: string;
gamma: string;
};
quaternion: Quaternion;
actualGyroscope: {
dps: {
x: number;
y: number;
z: number;
};
rps: {
x: number;
y: number;
z: number;
};
};
actualOrientation: {
alpha: string;
beta: string;
gamma: string;
};
ringCon: RingConDataPacket & ParsedPacketData;
deviceInfo: DeviceInfo & ParsedPacketData;
};
export type CompleteJoyConDataPacket = {
buttonStatus: CompleteButtonStatus;
analogStick: AnalogStick;
batteryLevel: BatteryLevel;
analogStickLeft: AnalogStick;
analogStickRight: AnalogStick;
gyroscopes: GyroscopePacket[][];
} & RawJoyConDataPacket & CompleteJoyConData;
export type ParsedJoyConPacketData = {
buttonStatus: ParsedPacketData;
analogStick: ParsedPacketData;
batteryLevel: ParsedPacketData;
analogStickLeft: ParsedPacketData;
analogStickRight: ParsedPacketData;
gyroscopes: ParsedPacketData[][];
} & RawJoyConDataPacket & CompleteJoyConData;
export type Gyroscope = {
x: number;
y: number;
z: number;
};
export type Accelerometer = {
x: number;
y: number;
z: number;
};
export type Quaternion = {
w: number;
x: number;
y: number;
z: number;
};
export type ControllerTypeKey = 0x1 | 0x2 | 0x3;
export interface SendReportAsyncFunctionOptions {
subcommand: number[];
expectedReport: Record<number, number>;
timeoutErrorMessage?: string;
}
export type JoyConEvents = {
hidinput: CustomEvent<ParsedJoyConPacketData | CompleteJoyConDataPacket>;
deviceinfo: CustomEvent<ParsedJoyConPacketData | CompleteJoyConDataPacket>;
batterylevel: CustomEvent<ParsedJoyConPacketData | CompleteJoyConDataPacket>;
};
export type CompleteButtonStatus = {
y: boolean;
x: boolean;
b: boolean;
a: boolean;
r: boolean;
zr: boolean;
down: boolean;
up: boolean;
right: boolean;
left: boolean;
l: boolean;
zl: boolean;
sr: boolean;
sl: boolean;
minus: boolean;
plus: boolean;
rightStick: boolean;
leftStick: boolean;
home: boolean;
capture: boolean;
chargingGrip: boolean;
};
export type DeviceInfo = {
firmwareVersion: {
major: number;
minor: number;
};
type: string;
macAddress: string;
spiColorInUse: boolean;
};
export type BatteryLevel = {
level: string;
};
export type AccelerometerPacket = {
acc: number;
};
export type GyroscopePacket = {
dps: number;
rps: number;
};
export type AnalogStick = {
horizontal: string;
vertical: string;
};
export type HomeLEDPattern = {
intensity: number;
fadeDuration: number;
duration: number;
};
export {};