| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- // Type definitions for Web Bluetooth
- // Project: https://webbluetoothcg.github.io/web-bluetooth/
- // Definitions by: Uri Shaked <https://github.com/urish>
- // Xavier Lozinguez <https://github.com/xlozinguez>
- // Rob Moran <https://github.com/thegecko>
- // David Bjerremose <https://github.com/DaBs>
- // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
- type BluetoothServiceUUID = number | string;
- type BluetoothCharacteristicUUID = number | string;
- type BluetoothDescriptorUUID = number | string;
- type BluetoothManufacturerData = Map<number, DataView>;
- type BluetoothServiceData = Map<BluetoothServiceUUID, DataView>;
- interface BluetoothDataFilter {
- readonly dataPrefix?: BufferSource | undefined;
- readonly mask?: BufferSource | undefined;
- }
- interface BluetoothManufacturerDataFilter extends BluetoothDataFilter {
- companyIdentifier: number;
- }
- interface BluetoothServiceDataFilter extends BluetoothDataFilter {
- service: BluetoothServiceUUID;
- }
- interface BluetoothLEScanFilter {
- readonly name?: string | undefined;
- readonly namePrefix?: string | undefined;
- readonly services?: BluetoothServiceUUID[] | undefined;
- readonly manufacturerData?: BluetoothManufacturerDataFilter[] | undefined;
- readonly serviceData?: BluetoothServiceDataFilter[] | undefined;
- }
- interface BluetoothLEScanOptions {
- readonly filters?: BluetoothLEScanFilter[] | undefined;
- readonly keepRepeatedDevices?: boolean | undefined;
- readonly acceptAllAdvertisements?: boolean | undefined;
- }
- interface BluetoothLEScan extends BluetoothLEScanOptions {
- active: boolean;
- stop: () => void;
- }
- type RequestDeviceOptions = {
- filters: BluetoothLEScanFilter[];
- optionalServices?: BluetoothServiceUUID[] | undefined;
- optionalManufacturerData?: number[] | undefined;
- } | {
- acceptAllDevices: boolean;
- optionalServices?: BluetoothServiceUUID[] | undefined;
- optionalManufacturerData?: number[] | undefined;
- };
- interface BluetoothAdvertisingEvent extends Event {
- readonly device: BluetoothDevice;
- readonly uuids: BluetoothServiceUUID[];
- readonly manufacturerData: BluetoothManufacturerData;
- readonly serviceData: BluetoothServiceData;
- readonly name?: string | undefined;
- readonly appearance?: number | undefined;
- readonly rssi?: number | undefined;
- readonly txPower?: number | undefined;
- }
- interface BluetoothRemoteGATTDescriptor {
- readonly characteristic: BluetoothRemoteGATTCharacteristic;
- readonly uuid: string;
- readonly value?: DataView | undefined;
- readValue(): Promise<DataView>;
- writeValue(value: BufferSource): Promise<void>;
- }
- interface BluetoothCharacteristicProperties {
- readonly broadcast: boolean;
- readonly read: boolean;
- readonly writeWithoutResponse: boolean;
- readonly write: boolean;
- readonly notify: boolean;
- readonly indicate: boolean;
- readonly authenticatedSignedWrites: boolean;
- readonly reliableWrite: boolean;
- readonly writableAuxiliaries: boolean;
- }
- interface CharacteristicEventHandlers {
- oncharacteristicvaluechanged: (this: this, ev: Event) => any;
- }
- interface BluetoothRemoteGATTCharacteristic extends EventTarget, CharacteristicEventHandlers {
- readonly service: BluetoothRemoteGATTService;
- readonly uuid: string;
- readonly properties: BluetoothCharacteristicProperties;
- readonly value?: DataView | undefined;
- getDescriptor(descriptor: BluetoothDescriptorUUID): Promise<BluetoothRemoteGATTDescriptor>;
- getDescriptors(descriptor?: BluetoothDescriptorUUID): Promise<BluetoothRemoteGATTDescriptor[]>;
- readValue(): Promise<DataView>;
- writeValue(value: BufferSource): Promise<void>;
- writeValueWithResponse(value: BufferSource): Promise<void>;
- writeValueWithoutResponse(value: BufferSource): Promise<void>;
- startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
- stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
- addEventListener(type: "characteristicvaluechanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
- }
- interface ServiceEventHandlers {
- onserviceadded: (this: this, ev: Event) => any;
- onservicechanged: (this: this, ev: Event) => any;
- onserviceremoved: (this: this, ev: Event) => any;
- }
- interface BluetoothRemoteGATTService extends EventTarget, CharacteristicEventHandlers, ServiceEventHandlers {
- readonly device: BluetoothDevice;
- readonly uuid: string;
- readonly isPrimary: boolean;
- getCharacteristic(characteristic: BluetoothCharacteristicUUID): Promise<BluetoothRemoteGATTCharacteristic>;
- getCharacteristics(characteristic?: BluetoothCharacteristicUUID): Promise<BluetoothRemoteGATTCharacteristic[]>;
- getIncludedService(service: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService>;
- getIncludedServices(service?: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService[]>;
- addEventListener(type: "serviceadded", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: "servicechanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: "serviceremoved", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
- }
- interface BluetoothRemoteGATTServer {
- readonly device: BluetoothDevice;
- readonly connected: boolean;
- connect(): Promise<BluetoothRemoteGATTServer>;
- disconnect(): void;
- getPrimaryService(service: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService>;
- getPrimaryServices(service?: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService[]>;
- }
- interface BluetoothDeviceEventHandlers {
- onadvertisementreceived: (this: this, ev: BluetoothAdvertisingEvent) => any;
- ongattserverdisconnected: (this: this, ev: Event) => any;
- }
- interface WatchAdvertisementsOptions {
- signal?: AbortSignal;
- }
- interface BluetoothDevice extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers {
- readonly id: string;
- readonly name?: string | undefined;
- readonly gatt?: BluetoothRemoteGATTServer | undefined;
- forget(): Promise<void>;
- watchAdvertisements(options?: WatchAdvertisementsOptions): Promise<void>;
- readonly watchingAdvertisements: boolean;
- addEventListener(type: "gattserverdisconnected", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void;
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
- }
- interface Bluetooth extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers {
- getDevices(): Promise<BluetoothDevice[]>;
- getAvailability(): Promise<boolean>;
- onavailabilitychanged: (this: this, ev: Event) => any;
- readonly referringDevice?: BluetoothDevice | undefined;
- requestDevice(options?: RequestDeviceOptions): Promise<BluetoothDevice>;
- requestLEScan(options?: BluetoothLEScanOptions): Promise<BluetoothLEScan>;
- addEventListener(type: "availabilitychanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
- addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void;
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
- }
- interface Navigator {
- bluetooth: Bluetooth;
- }
|