#import // https://wicg.github.io/serial/#serialport-interface [Exposed=(DedicatedWorker,Window), SecureContext] interface SerialPort : EventTarget { attribute EventHandler onconnect; attribute EventHandler ondisconnect; readonly attribute boolean connected; readonly attribute ReadableStream readable; readonly attribute WritableStream writable; SerialPortInfo getInfo(); Promise open(SerialOptions options); Promise setSignals(optional SerialOutputSignals signals = {}); Promise getSignals(); Promise close(); Promise forget(); }; // https://wicg.github.io/serial/#serialoptions-dictionary dictionary SerialOptions { [EnforceRange] unsigned long baudRate; [EnforceRange] octet dataBits = 8; [EnforceRange] octet stopBits = 1; ParityType parity = "none"; [EnforceRange] unsigned long bufferSize = 255; FlowControlType flowControl = "none"; }; // https://wicg.github.io/serial/#serialoutputsignals-dictionary dictionary SerialOutputSignals { boolean dataTerminalReady; boolean requestToSend; boolean break; }; // https://wicg.github.io/serial/#serialinputsignals-dictionary dictionary SerialInputSignals { required boolean dataCarrierDetect; required boolean clearToSend; required boolean ringIndicator; required boolean dataSetReady; }; // https://wicg.github.io/serial/#serialportinfo-dictionary dictionary SerialPortInfo { unsigned short usbVendorId; unsigned short usbProductId; // FIXME: Should be a BluetoothServiceUUID DOMString bluetoothServiceClassId; }; // https://wicg.github.io/serial/#paritytype-enum enum ParityType { "none", "even", "odd" }; // https://wicg.github.io/serial/#flowcontroltype-enum enum FlowControlType { "none", "hardware" };