UNPKG

esp-ble-prov

Version:
145 lines (144 loc) 4.85 kB
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>>; }