ladybird/Libraries/LibWeb/Serial/SerialPort.idl
2025-08-08 10:23:17 +02:00

65 lines
1.8 KiB
Text

#import <DOM/EventHandler.idl>
// 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<undefined> open(SerialOptions options);
Promise<undefined> setSignals(optional SerialOutputSignals signals = {});
Promise<SerialInputSignals> getSignals();
Promise<undefined> close();
Promise<undefined> 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"
};