ive-connect
Version:
A universal haptic device control library for interactive experiences
97 lines (96 loc) • 2.61 kB
TypeScript
/**
* 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;
}