UNPKG

ive-connect

Version:

A universal haptic device control library for interactive experiences

97 lines (96 loc) 2.61 kB
/** * Handy Device Implementation */ import { DeviceCapability, DeviceInfo, HapticDevice, ScriptData } from "../../core/device-interface"; import { EventEmitter } from "../../core/events"; import { HandySettings } from "./types"; /** * Handy configuration options */ export interface HandyConfig { connectionKey?: string; baseV3Url?: string; baseV2Url?: string; applicationId?: string; } /** * Handy device implementation */ export declare class HandyDevice extends EventEmitter implements HapticDevice { private _api; private _config; private _connectionState; private _deviceInfo; private _isPlaying; private _eventSource; readonly id: string; readonly name: string; readonly type: string; readonly capabilities: DeviceCapability[]; /** * Create a new Handy device instance * @param config Optional configuration */ constructor(config?: HandyConfig); /** * Get device connection state */ get isConnected(): boolean; /** * Get device playback state */ get isPlaying(): boolean; /** * Connect to the device * @param config Optional configuration override */ connect(config?: Partial<HandySettings>): Promise<boolean>; /** * Disconnect from the device */ disconnect(): Promise<boolean>; /** * Get current device configuration */ getConfig(): HandySettings; /** * Update device configuration * @param config Partial configuration to update */ updateConfig(config: Partial<HandySettings>): Promise<boolean>; /** * Load a script for playback * @param scriptData Script data to load */ loadScript(scriptData: ScriptData): Promise<{ success: boolean; }>; /** * Play the loaded script at the specified time * @param timeMs Current time in milliseconds * @param playbackRate Playback rate (1.0 = normal speed) * @param loop Whether to loop the script */ play(timeMs: number, playbackRate?: number, loop?: boolean): Promise<boolean>; /** * Stop playback */ stop(): Promise<boolean>; /** * Synchronize device time with provided time * @param timeMs Current time in milliseconds */ syncTime(timeMs: number): Promise<boolean>; /** * Get device-specific information */ getDeviceInfo(): DeviceInfo | null; /** * Set up event handlers for the device */ private _setupEventHandlers; /** * Load device settings after connection */ private _loadDeviceSettings; }