UNPKG

ive-connect

Version:

A universal haptic device control library for interactive experiences

88 lines (87 loc) 2.64 kB
/** * Autoblow Device Implementation * * Implements the HapticDevice interface for Autoblow devices (Ultra and Vacuglide) * Focused on sync script playback functionality */ import { DeviceCapability, DeviceInfo, DeviceScriptLoadResult, Funscript, HapticDevice } from '../../core/device-interface'; import { EventEmitter } from '../../core/events'; import { AutoblowSettings, AutoblowDeviceType } from './types'; import type * as AutoblowSdkTypes from '@xsense/autoblow-sdk'; /** * Autoblow device implementation */ export declare class AutoblowDevice extends EventEmitter implements HapticDevice { private _config; private _connectionState; private _deviceInfo; private _device; private _deviceType; private _isPlaying; private _scriptPrepared; readonly id: string; readonly name: string; readonly type: string; readonly capabilities: DeviceCapability[]; constructor(config?: Partial<AutoblowSettings>); /** * Get connected state */ get isConnected(): boolean; /** * Get playing state */ get isPlaying(): boolean; /** * Get the device type (ultra or vacuglide) */ get deviceType(): AutoblowDeviceType | null; /** * Connect to the Autoblow device */ connect(config?: Partial<AutoblowSettings>): Promise<boolean>; /** * Disconnect from the device */ disconnect(): Promise<boolean>; /** * Get current configuration */ getConfig(): AutoblowSettings; /** * Update configuration */ updateConfig(config: Partial<AutoblowSettings>): Promise<boolean>; /** * Prepare a script for playback (upload to device) * The funscript is already parsed - we just need to upload it * * @param funscript The parsed funscript content */ prepareScript(funscript: Funscript): Promise<DeviceScriptLoadResult>; /** * Start playback at the specified time */ play(timeMs: number, _playbackRate?: number, _loop?: boolean): Promise<boolean>; /** * Stop playback */ stop(): Promise<boolean>; /** * Sync time - Autoblow handles this via syncScriptStart * We restart playback at the new time position */ syncTime(timeMs: number, _filter?: number): Promise<boolean>; /** * Set the sync script offset */ setOffset(offsetMs: number): Promise<boolean>; /** * Get device state */ getState(): Promise<AutoblowSdkTypes.UltraDeviceState | AutoblowSdkTypes.VacuglideDeviceState | null>; /** * Get device information */ getDeviceInfo(): DeviceInfo | null; }