blob: 093466d213c23ad90212ffd132b2561f6facb7b7 [file] [log] [blame]
/**
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/** @see https://wicg.github.io/serial/#paritytype-enum */
type ParityType = 'none' | 'even' | 'odd';
/** @see https://wicg.github.io/serial/#serialoptions-dictionary */
interface SerialOptions {
baudrate: number;
databits?: number;
stopbits?: number;
parity?: ParityType;
buffersize?: number;
rtscts?: boolean;
}
/** @see https://wicg.github.io/serial/#serialport-interface */
declare class SerialPort {
readonly readable: ReadableStream<Uint8Array>;
readonly writable: WritableStream<Uint8Array>;
open(options?: SerialOptions): Promise<void>;
close(): void;
}
/** @see https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/modules/serial/serial_port_filter.idl */
interface SerialPortFilter {
usbVendorId?: number;
usbProductId?: number;
}
/** @see https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/modules/serial/serial_port_request_options.idl */
interface SerialPortRequestOptions {
filters?: SerialPortFilter[];
}
/** @see https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/modules/serial/serial_connection_event_init.idl */
interface SerialConnectionEventInit extends EventInit {
port: SerialPort;
}
/** @see https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/modules/serial/serial_connection_event.idl */
declare class SerialConnectionEvent extends Event {
constructor(type: string, eventInitDict: SerialConnectionEventInit);
readonly port: SerialPort;
}
/** @see https://wicg.github.io/serial/#serial-interface */
declare class Serial extends EventTarget {
onconnect(): ((this: this, ev: SerialConnectionEvent) => any) | null;
ondisconnect(): ((this: this, ev: SerialConnectionEvent) => any) | null;
getPorts(): Promise<SerialPort[]>;
requestPort(options?: SerialPortRequestOptions): Promise<SerialPort>;
addEventListener(
type: 'connect' | 'disconnect',
listener: (this: this, ev: SerialConnectionEvent) => any,
useCapture?: boolean): void;
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | AddEventListenerOptions): void;
removeEventListener(
type: 'connect' | 'disconnect',
callback: (this: this, ev: SerialConnectionEvent) => any,
useCapture?: boolean): void;
removeEventListener(
type: string,
callback: EventListenerOrEventListenerObject | null,
options?: EventListenerOptions | boolean): void;
}
/** @see https://wicg.github.io/serial/#extensions-to-the-navigator-interface */
interface Navigator {
readonly serial: Serial;
}
/** @see https://wicg.github.io/serial/#extensions-to-workernavigator-interface */
interface WorkerNavigator {
readonly serial: Serial;
}