tethr
Version:
Controlls USB-connected cameras, webcam, and smartphone camera from browser
51 lines (50 loc) • 1.52 kB
TypeScript
/// <reference types="w3c-web-usb" />
import EventEmitter from 'eventemitter3';
interface PTPSendCommandOption {
label?: string;
opcode: number;
parameters?: number[];
expectedResCodes?: number[];
}
type PTPSendDataOption = PTPSendCommandOption & {
data: ArrayBuffer;
};
type PTPReceiveDataOption = PTPSendCommandOption & {
maxByteLength?: number;
};
interface PTPResponse {
resCode: number;
parameters: number[];
}
type PTPDataResponse = PTPResponse & {
data: ArrayBuffer;
};
export interface PTPEvent {
eventCode: number;
parameters: number[];
}
type PTPEventCallback = (event: PTPEvent) => void;
interface EventTypes {
[name: `ptpevent:${string}`]: PTPEvent;
idle: void;
disconnect: void;
}
interface PTPDeviceOptions {
log?: boolean;
}
export declare class PTPDevice extends EventEmitter<EventTypes> {
#private;
readonly usb: USBDevice;
constructor(usb: USBDevice, { log }?: PTPDeviceOptions);
open: () => Promise<void>;
close: () => Promise<void>;
get opened(): boolean;
setLog(log: boolean): void;
onEventCode(eventCode: number, callback: PTPEventCallback): void;
offEventCode(eventCode: number, callback?: PTPEventCallback): void;
sendCommand: (option: PTPSendCommandOption) => Promise<PTPResponse | void>;
sendData: (option: PTPSendDataOption) => Promise<PTPResponse>;
receiveData: (option: PTPReceiveDataOption) => Promise<PTPDataResponse>;
waitEvent: (code: number) => Promise<PTPEvent>;
}
export {};