esp-ble-prov
Version:
ESP32 provisioning with WebBluetooth
145 lines (144 loc) • 4.85 kB
TypeScript
import { constants } from './proto';
import Security from './security/security';
import Security0 from './security/security0';
import Security1 from './security/security1';
import Security2 from './security/security2';
import { ESPProvisionerOptions } from './types';
import type { ICmdScanResult, ICmdScanStart } from './prov/scan';
import { ICmdSetConfig } from './prov/config';
declare const WifiStationState: typeof constants.WifiStationState;
export { Security0, Security1, Security2, WifiStationState };
export type { Security2Options } from './security/security2';
export interface IWiFiScanResult {
/** WiFiScanResult ssid */
ssid?: Uint8Array | null;
/** WiFiScanResult channel */
channel?: number | null;
/** WiFiScanResult rssi */
rssi?: number | null;
/** WiFiScanResult bssid */
bssid?: Uint8Array | null;
/** WiFiScanResult auth */
auth?: constants.WifiAuthMode | null;
}
export declare class ESPProvisioner {
device: BluetoothDevice | null;
server: BluetoothRemoteGATTServer | null;
service: BluetoothRemoteGATTService | null;
endpoints: Map<string, BluetoothRemoteGATTCharacteristic>;
private _isConnected;
deviceNamePrefix: string;
serviceUUID: string;
security: Security;
constructor(options: ESPProvisionerOptions);
/**
* Checks if the provisioner is currently connected to a device
*/
get isConnected(): boolean;
/**
* Gets a characteristic by endpoint name
* @param ep_name Endpoint name
* @returns Bluetooth characteristic
*/
getCharacteristic(ep_name: string): BluetoothRemoteGATTCharacteristic;
/**
* Writes a value to a characteristic with timeout and retry logic
* @param ep_name Endpoint name
* @param data Data to write
*/
writeValue(ep_name: string, data: Uint8Array): Promise<void>;
/**
* Reads a value from a characteristic
* @param ep_name Endpoint name
* @returns Read data
*/
readValue(ep_name: string): Promise<Uint8Array<ArrayBufferLike>>;
/**
* Discovers and maps all device characteristics
*/
private discoverCharacteristics;
/**
* Connects to an ESP device
* @param options Connection options
* @returns Connected device
*/
connect(options?: {
filters: BluetoothLEScanFilter[];
}): Promise<BluetoothDevice>;
disconnect(): Promise<void>;
/**
* Checks if the provisioner is connected and throws an error if not
*/
private ensureConnected;
establishSession(): Promise<void>;
/**
* Resets the provisioning state of the device
*/
ctrlReset(): Promise<void>;
/**
* Re-provisions the device
*/
ctrlReprov(): Promise<void>;
/**
* Starts a Wi-Fi scan on the device
* @param options Scan options
*/
startScan(options: ICmdScanStart): Promise<void>;
/**
* Gets the current scan status
* @returns Number of networks found
*/
getScanStatus(): Promise<number>;
/**
* Gets scan results from the device
* @param options Result options
* @returns Array of Wi-Fi networks
*/
getScanResults(options: ICmdScanResult): Promise<IWiFiScanResult[]>;
/**
* Performs a complete Wi-Fi scan operation
* @param options Scan options
* @param timeout Maximum time to wait for scan completion (ms)
* @returns Array of Wi-Fi networks
*/
scan(options?: ICmdScanStart): Promise<IWiFiScanResult[]>;
/**
* Gets the current Wi-Fi status
* @returns Wi-Fi status
*/
getWiFiStatus(): Promise<import("./proto").config.IRespGetStatus>;
/**
* Sets Wi-Fi configuration on the device
* @param options Wi-Fi configuration
*/
setWiFiConfig(options: ICmdSetConfig): Promise<void>;
/**
* Applies the Wi-Fi configuration
*/
applyWiFiConfig(): Promise<void>;
/**
* Waits for Wi-Fi connection status to change
* @param timeout Maximum time to wait (ms)
* @returns Wi-Fi status
*/
waitForWiFiStatus(timeout?: number): Promise<void>;
/**
* Complete process to send Wi-Fi credentials and connect
* @param config Wi-Fi configuration
* @param timeout Maximum time to wait for connection (ms)
* @returns Wi-Fi status
*/
sendCredentials({ ssid, passphrase, bssid, channel }: ICmdSetConfig, timeout?: number): Promise<void>;
/**
* Writes a value to a custom endpoint
* @param ep_name Endpoint name
* @param value Value to write
*/
writeValueToEndpoint(ep_name: string, value: Uint8Array): Promise<void>;
/**
* Reads a value from a custom endpoint
* @param ep_name Endpoint name
* @returns Decrypted value
*/
readValueFromEndpoint(ep_name: string): Promise<Uint8Array<ArrayBufferLike>>;
}