import { StreamOutlet } from '@neurodevs/node-lsl'; import { XdfRecorder } from '@neurodevs/node-xdf'; import FTDI from 'ftdi-d2xx'; import { DeviceController } from '../BiosensorDeviceFactory.js'; export default class CgxDeviceController implements DeviceController { static Class?: CgxControllerConstructor; static FTDI: typeof FTDI; static readonly streamQueries: string[]; isRunning: boolean; protected numPacketsDropped: number; private eegOutlet; private accelOutlet; private xdfRecorder?; private infos; private device; private packetCounter; private readonly readTimeoutMs; private readonly writeTimeoutMs; private readonly latencyTimerMs; private readonly bytesPerSample; private readonly baudRate; private readonly seventeenInHex; private readonly nineteenInHex; private readonly ftdiFlowControlMode; private readonly ftdiReadBuffer; private readonly eightDataBits; private readonly oneStopBit; private readonly noParityBit; protected constructor(options: CgxControllerConstructorOptions); static Create(options?: CgxControllerOptions): Promise; connect(): Promise; startStreaming(): Promise; private startXdfRecorderIfExists; private setupFtdi; private loadFtdiDeviceInfos; private throwIfDeviceNotFound; private readonly notFoundError; private openDeviceBySerialNumber; private get serialNumber(); private configureFtdiDevice; private setReadAndWriteTimeouts; private purgeReadBuffer; private setFlowControl; private setBaudRate; private setDataCharacteristics; private setLatencyTimer; private turnOnImpedanceCheck; private startReadingPackets; private readPacket; private readPacketAndEnsureAlignment; private handlePacketCounter; private decode24BitEeg; private get numEegChannels(); private decode24BitAccelerometer; private get numAccelChannels(); stopStreaming(): Promise; private finishXdfRecorderIfExists; disconnect(): Promise; get outlets(): StreamOutlet[]; get streamQueries(): string[]; private get FTDI(); private static readonly eegCharacteristicNames; private static readonly eegOptions; private static readonly accelCharacteristicNames; private static readonly accelOptions; private static createXdfRecorderIfPath; private static EegOutlet; private static AccelOutlet; } export interface CgxControllerOptions { xdfRecordPath?: string; } export type CgxControllerConstructor = new (options: CgxControllerConstructorOptions) => DeviceController; export interface CgxControllerConstructorOptions { eegOutlet: StreamOutlet; accelOutlet: StreamOutlet; xdfRecorder?: XdfRecorder; xdfRecordPath?: string; }