ive-connect
Version:
A universal haptic device control library for interactive experiences
77 lines (76 loc) • 2.67 kB
TypeScript
/**
* Device Manager
*
* Central manager for all haptic devices
*/
import { EventEmitter } from "./events";
import { HapticDevice, ScriptData, ScriptOptions } from "./device-interface";
/**
* Device Manager class
* Handles registration and control of multiple haptic devices
*/
export declare class DeviceManager extends EventEmitter {
private devices;
private scriptData;
/**
* Register a device with the manager
* @param device Device to register
*/
registerDevice(device: HapticDevice): void;
/**
* Unregister a device from the manager
* @param deviceId Device ID to unregister
*/
unregisterDevice(deviceId: string): void;
/**
* Get all registered devices
*/
getDevices(): HapticDevice[];
/**
* Get a specific device by ID
* @param deviceId Device ID to retrieve
*/
getDevice(deviceId: string): HapticDevice | undefined;
/**
* Connect to all registered devices
* @returns Object with success status for each device
*/
connectAll(): Promise<Record<string, boolean>>;
/**
* Disconnect from all registered devices
* @returns Object with success status for each device
*/
disconnectAll(): Promise<Record<string, boolean>>;
/**
* Load a script to all connected devices
* @param scriptData Script data to load
* @param options Options for script loading (e.g., invertScript)
* @returns Object with success status for each device
*/
loadScriptAll(scriptData: ScriptData, options?: ScriptOptions): Promise<Record<string, boolean | ScriptData>>;
/**
* Start playback on all connected devices
* @param timeMs Current time in milliseconds
* @param playbackRate Playback rate (1.0 = normal speed)
* @param loop Whether to loop the script
* @returns Object with success status for each device
*/
playAll(timeMs: number, playbackRate?: number, loop?: boolean): Promise<Record<string, boolean>>;
/**
* Stop playback on all connected devices
* @returns Object with success status for each device
*/
stopAll(): Promise<Record<string, boolean>>;
/**
* Synchronize time on all connected and playing devices
* @param timeMs Current time in milliseconds
* @param filter Time filter for synchronization
* @returns Object with success status for each device
*/
syncTimeAll(timeMs: number, filter?: number): Promise<Record<string, boolean>>;
/**
* Set up event forwarding from a device to the manager
* @param device Device to forward events from
*/
private setupDeviceEventForwarding;
}