UNPKG

esp-ble-prov

Version:
151 lines (150 loc) 4.95 kB
import { constants, config } from "./proto"; import Security from "./security/security"; import Security0 from "./security/security0"; import Security1 from "./security/security1"; import Security2 from "./security/security2"; import type { ICmdScanResult, ICmdScanStart } from "./prov/scan"; import { ICmdSetConfig } from "./prov/config"; declare const WifiStationState: typeof constants.WifiStationState; export { Security0, Security1, Security2, WifiStationState }; 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 ProvisionerError extends Error { constructor(message: string); } interface ESPProvisionerOptions { deviceNamePrefix?: string; serviceUUID: string; security?: Security; } export default 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<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>>; }