UNPKG

ive-connect

Version:

A universal haptic device control library for interactive experiences

77 lines (76 loc) 2.67 kB
/** * 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; }