lavva.webbluetooth
Version:
Library implementing WebBluetooth custom functionality if underlying platform does support it
88 lines (87 loc) • 3.42 kB
TypeScript
import { NativeTypedEvent } from "./ExtendedWebBluetooth";
export declare class LavvaBluetooth {
private receiveBuffer;
private _maxCharacteristicValueLength;
private serviceUuid;
private characteristicUuid;
private receiveSeparator;
private sendSeparator;
private static selectedDevice;
private static gattServer;
private static gattService;
private characteristic;
private notificationsStarted;
private pendingResponses;
OnGattServiceDisconnectedEvent: NativeTypedEvent<BluetoothRemoteGATTServer | undefined>;
OnCharacteristicValueChangedEvent: NativeTypedEvent<string>;
OnConnectedEvent: NativeTypedEvent<BluetoothDevice>;
OnDisconnectedEvent: NativeTypedEvent<BluetoothDevice>;
private filter;
private static instances;
private static globalGattDisconnectedHandlerInstalled;
private static globalGattDisconnectedHandler;
constructor();
/** Call when instance is no longer needed (prevents registry leak). */
Dispose(): void;
private WHITESPACE_NAMES;
private visualizeTrailingWhitespace;
private logTrailingWhitespaceDetail;
private updateMaxPayload;
SetFilter(filters: BluetoothLEScanFilter[]): void;
GetConnectedDevice(): BluetoothDevice | null;
private expectedUuidFrom16Bit;
private isExpectedCharacteristic;
/**
* Connects to device + primary service (shared statically).
* DOES NOT automatically connect this instance to a different characteristic than its default (0xffe1),
* but will connect this instance to its current characteristicUuid.
*/
RequestDeviceAndConnectAsync(): Promise<BluetoothDevice | DeviceConnectionError>;
/**
* Connects THIS instance to a given characteristic (notifications + listener).
* Use separate instance per characteristic.
*/
ConnectToGattCharacteristicAsync(characteristicUuid: number): Promise<BluetoothRemoteGATTCharacteristic | DeviceConnectionError>;
private AttachToCharacteristicInternal;
private handleCharacteristicValueChanged;
/**
* Disconnects the shared device connection AND cleans up ALL instance listeners/notifications.
* You can call it from any instance.
*/
DisconnectDeviceAsync(device: BluetoothDevice): Promise<DeviceDisconnectionStatus>;
private detachCharacteristic;
SendDataAsync(data: string): Promise<WriteDataStatus>;
SendAndWaitForResponseAsync<T>(data: any, timeout?: number): Promise<T>;
private WriteValueAsync;
private SplitByLength;
private serializeOutgoingData;
private normalizeFrame;
private dispatchPendingResponse;
private rejectPendingResponses;
private createResponseMatcher;
private tryParseJsonFrame;
private getCorrelationId;
private getStringField;
}
export declare enum DeviceConnectionError {
NoDeviceHasBeenSelected = 0,
AnotherDeviceIsAlreadyConnected = 1,
FailedToConnectToGattServer = 2,
FailedToGetPrimaryService = 3,
FailedToDiscoverService = 4,
FailedToGetCharacteristic = 5,
FailedToStartNotifications = 6
}
export declare enum DeviceDisconnectionStatus {
NoDeviceConnected = 0,
FailedToForgetDevice = 1,
FailedToDisconnect = 2,
FailedToStopNotifications = 3,
DisconnectedSuccesfully = 4
}
export declare enum WriteDataStatus {
Sucess = 0,
DataIsEmpty = 1,
NoDeviceConnected = 2,
FailedToWriteValue = 3
}