Skip to content

Tipos e Interfaces

Todos los tipos se exportan desde el punto de entrada principal de webserial-core.

SerialDeviceOptions<T>

Pasado a super() en tu subclase de AbstractSerialDevice.

ts
interface SerialDeviceOptions<T> {
  /** Velocidad en baudios (ej. 9600, 115200). */
  baudRate: number;

  /** Bits de datos por byte. Por defecto: 8 */
  dataBits?: 7 | 8;

  /** Bits de parada. Por defecto: 1 */
  stopBits?: 1 | 2;

  /** Modo de paridad. Por defecto: "none" */
  parity?: "none" | "even" | "odd";

  /** Control de flujo por hardware. Por defecto: "none" */
  flowControl?: "none" | "hardware";

  /** Tamaño del buffer de lectura interno en bytes. Por defecto: 255 */
  bufferSize?: number;

  /** Parser que transforma bytes sin procesar en valores de tipo T. */
  parser: SerialParser<T>;

  /** Timeout (ms) antes de que un comando en cola sea considerado fallido. Por defecto: 0 (deshabilitado) */
  commandTimeout?: number;

  /** Reconectar automáticamente en desconexión inesperada. Por defecto: false */
  autoReconnect?: boolean;

  /** Retardo (ms) entre intentos de auto-reconexión. Por defecto: 1000 */
  autoReconnectInterval?: number;

  /** Timeout (ms) permitido para que handshake() complete. Por defecto: 5000 */
  handshakeTimeout?: number;

  /** Filtros de vendor/product ID USB mostrados en el selector de puerto. Por defecto: [] */
  filters?: SerialPortFilter[];

  /**
   * Proveedor serial personalizado solo para ESTA instancia (ej. `WebUsbProvider`,
   * `createBluetoothProvider()`, `createWebSocketProvider(...)`).
   * Tiene precedencia sobre el proveedor global establecido mediante
   * `AbstractSerialDevice.setProvider()`.
   */
  provider?: SerialProvider;

  /**
   * Opciones de polyfill reenviadas al `provider` al solicitar o listar
   * puertos para ESTA instancia. Solo se usa cuando `provider` está definido.
   */
  polyfillOptions?: SerialPolyfillOptions;
}

SerialProvider

ts
interface SerialProvider {
  /**
   * Abre el selector de puerto del navegador (o equivalente) y devuelve el
   * objeto SerialPort compatible seleccionado.
   */
  requestPort(options?: { filters?: SerialPortFilter[] }): Promise<SerialPort>;

  /** Devuelve todos los puertos previamente autorizados (ya emparejados). */
  getPorts(): Promise<SerialPort[]>;
}

SerialParser<T>

ts
interface SerialParser<T> {
  transform(chunk: Uint8Array, push: (value: T) => void): void;
  flush?(push: (value: T) => void): void;
}

SerialEventMap<T>

ts
interface SerialEventMap<T> {
  "serial:connecting": () => void;
  "serial:connected": () => void;
  "serial:disconnected": () => void;
  "serial:data": (value: T) => void;
  "serial:sent": (data: Uint8Array) => void;
  "serial:error": (error: Error) => void;
  "serial:need-permission": () => void;
  "serial:timeout": (command: Uint8Array) => void;
  "serial:queue-empty": () => void;
  "serial:reconnecting": () => void;
}

SerialPortFilter

ts
interface SerialPortFilter {
  usbVendorId?: number;
  usbProductId?: number;
}

SerialPolyfillOptions

Opciones para WebUsbProvider. Controla qué clases de interfaz USB se usan para control y transferencia masiva.

ts
interface SerialPolyfillOptions {
  /** Clase de interfaz USB para mensajes de control. Por defecto: 10 (CDC) */
  usbControlInterfaceClass?: number;

  /** Clase de interfaz USB para transferencia masiva. Por defecto: 10 (CDC) */
  usbTransferInterfaceClass?: number;
}

CommandQueueOptions

Opciones aceptadas por el constructor de CommandQueue.

ts
interface CommandQueueOptions {
  /** Timeout (ms) por comando. 0 = sin timeout. Por defecto: 0 */
  timeout?: number;
}

Clases de error

ClaseCuándo se lanza
SerialPortConflictErrorDos dispositivos intentan abrir el mismo puerto
SerialPermissionErrorEl usuario deniega el acceso al puerto
SerialTimeoutErrorSe superó commandTimeout para un comando en cola
SerialReadErrorError al leer del ReadableStream del puerto
SerialWriteErrorError al escribir en el WritableStream del puerto

Todas extienden la clase Error integrada e incluyen name y message.

Publicado bajo la licencia MIT.