import type {TurboModule} from 'react-native'; import {TurboModuleRegistry} from 'react-native'; // UsbSerialPort.ControlLine enum export type ControlLine = 'RTS' | 'CTS' | 'DTR' | 'DSR' | 'CD' | 'RI'; // UsbSerialPort.FlowControl enum export type FlowControl = | 'NONE' | 'RTS_CTS' | 'DTR_DSR' | 'XON_XOFF' | 'XON_XOFF_INLINE'; export type PortId = { deviceId: number; portNumber: number; usbVendorId: number; usbProductId: number; /** * Whether the app currently holds Android USB permission to access this * device (via the system attach dialog or a prior permission request). */ hasPermission: boolean; }; export type PortPickerLabels = { titleSelectPort?: string; titleNoPortsAvailable?: string; messageNoPortsAvailable?: string; }; export type PortFilter = { usbVendorId?: number; usbProductId?: number; }; export interface Spec extends TurboModule { // UsbSerialProber findAllDrivers(): Promise>; // Port picker dialog — shows available ports filtered by filters, requests permission for selected port showPortPicker( filters: ReadonlyArray, labels?: PortPickerLabels, ): Promise; // UsbSerialPort lifecycle open( deviceId: number, portNumber: number, baudRate: number, dataBits: number, stopBits: number, parity: number, ): Promise; close(deviceId: number, portNumber: number): Promise; isOpen(deviceId: number, portNumber: number): boolean; // Read/Write write( deviceId: number, portNumber: number, data: ReadonlyArray, timeout: number, ): Promise; startReading(deviceId: number, portNumber: number): Promise; stopReading(deviceId: number, portNumber: number): Promise; // Parameters setParameters( deviceId: number, portNumber: number, baudRate: number, dataBits: number, stopBits: number, parity: number, ): Promise; // Control lines setDTR(deviceId: number, portNumber: number, value: boolean): Promise; setRTS(deviceId: number, portNumber: number, value: boolean): Promise; getDTR(deviceId: number, portNumber: number): Promise; getRTS(deviceId: number, portNumber: number): Promise; getCD(deviceId: number, portNumber: number): Promise; getCTS(deviceId: number, portNumber: number): Promise; getDSR(deviceId: number, portNumber: number): Promise; getRI(deviceId: number, portNumber: number): Promise; getControlLines( deviceId: number, portNumber: number, ): Promise>; getSupportedControlLines( deviceId: number, portNumber: number, ): Promise>; // Flow control setFlowControl( deviceId: number, portNumber: number, flowControl: string, ): Promise; getFlowControl(deviceId: number, portNumber: number): Promise; getSupportedFlowControl( deviceId: number, portNumber: number, ): Promise>; // Misc setBreak(deviceId: number, portNumber: number, value: boolean): Promise; purgeHwBuffers( deviceId: number, portNumber: number, purgeWriteBuffers: boolean, purgeReadBuffers: boolean, ): Promise; getSerial(deviceId: number, portNumber: number): Promise; // USB permission requestPermission(deviceId: number): Promise; // NativeEventEmitter addListener(eventName: string): void; removeListeners(count: number): void; } export default TurboModuleRegistry.get('NativeUsbSerial');