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