# BLE Messages (BleProto) All BLE messages are serialized as `BleProto` protobuf, wrapped in the BLE packet format described in [02_ble_protocol.md](02_ble_protocol.md). ## Authentication & Configuration ### ReqGetconfig — Get Device Configuration (cmd=1) Authenticate and retrieve device WiFi/IP info. | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 1 = GetWiFiConfig | | `blePsd` | 2 | string | BLE password (default: "DWARF_12345678") | | `clientId` | 3 | string | Client identifier | ### ResGetconfig — Configuration Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code (0=success) | | `state` | 3 | int32 | Device state | | `wifiMode` | 4 | int32 | WiFi mode (0=off, 1=AP, 2=STA) | | `apMode` | 5 | int32 | AP mode | | `autoStart` | 6 | int32 | Auto-start flag | | `apCountryList` | 7 | int32 | AP country list | | `ssid` | 8 | string | Current SSID | | `psd` | 9 | string | WiFi password | | `ip` | 10 | string | Device IP (for WebSocket) | | `apCountry` | 11 | string | AP country code | ### ReqGetsysteminfo — Get System Info (cmd=7) | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 7 = GetDeviceInfo | | `clientId` | 2 | string | Client identifier | ### ResGetsysteminfo — System Info Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | | `protocolVersion` | 3 | int32 | Protocol version | | `macAddress` | 5 | string | MAC address | | `device` | 4 | string | Device name | | `dwarfOtaVersion` | 6 | string | OTA firmware version | ## WiFi Configuration ### ReqSta — Configure Station Mode (cmd=3) Connect the device to an existing WiFi network. | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 3 = SetSTAMode | | `autoStart` | 2 | int32 | Auto-start flag | | `blePsd` | 3 | string | BLE password | | `ssid` | 4 | string | Target SSID | | `psd` | 5 | string | Target WiFi password | | `clientId` | 6 | string | Client identifier | ### ResSta — Station Mode Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | | `ssid` | 3 | string | Connected SSID | | `psd` | 4 | string | Password | | `ip` | 5 | string | Obtained IP (for WebSocket) | ### ReqAp — Configure Access Point Mode (cmd=2) Configure the device as a WiFi hotspot. | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 2 = SetApMode | | `wifiType` | 2 | int32 | WiFi type | | `autoStart` | 3 | int32 | Auto-start flag | | `countryList` | 4 | int32 | Country list | | `country` | 5 | string | Country code | | `blePsd` | 6 | string | BLE password | | `clientId` | 7 | string | Client identifier | | `forceRestart` | 8 | bool | Force restart | ### ResAp — Access Point Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | | `mode` | 3 | int32 | Mode | | `ssid` | 4 | string | AP SSID | | `psd` | 5 | string | AP password | ## Utility Commands ### ReqSetblewifi — Set BLE/WiFi Name & Password (cmd=4) | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 4 = SetNamePwd | | `mode` | 2 | int32 | Mode (0/1) | | `blePsd` | 3 | string | BLE password | | `value` | 4 | string | New value | | `clientId` | 5 | string | Client identifier | ### ReqReset — Factory Reset (cmd=5) | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 5 = Reset | | `clientId` | 2 | string | Client identifier | ### ResReset — Reset Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | ### ReqGetwifilist — Scan WiFi Networks (cmd=6) | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code: 6 = GetWiFiList | | `clientId` | 2 | string | Client identifier | ### ReqCheckFile — OTA File Check | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `filePath` | 2 | string | File path | | `md5` | 3 | string | MD5 checksum | ### ResCheckFile — OTA Check Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | ## Keepalive: DwarfPing / DwarfEcho ### DwarfPing — Heartbeat from App | Field | # | Type | Description | |-------|---|------|-------------| | `vocaltype` | 1 | int32 | Type: 1=VT_PING | | `timestamp` | 2 | int64 | Unix timestamp | | `magic` | 3 | bytes | Session magic bytes | | `vocals` | 4 | repeated DwarfPing | Nested pings | | `mutes` | 5 | repeated NifAP | AP info list | ### DwarfEcho — Heartbeat Response from Device | Field | # | Type | Description | |-------|---|------|-------------| | `vocaltype` | 1 | int32 | Type: 2=VT_ECHO | | `timestamp` | 2 | int64 | Unix timestamp | | `magic` | 3 | bytes | Session magic bytes | | `tsPing` | 4 | int64 | Echo of ping timestamp | | `macAddress` | 5 | bytes | Device MAC address | | `model` | 6 | BleProto | Device model info | | `sn` | 7 | string | Serial number | | `name` | 8 | string | Device name | | `psw` | 9 | string | Password | | `fwVersion` | 10 | string | Firmware version | | `wsScheme` | 11 | string | WebSocket scheme ("ws") | | `session` | 12 | int32 | Session ID | | `ap` | 13 | BleProto | AP info | | `sta` | 14 | BleProto | STA info | ## Network Info Messages ### NifAP — Access Point Info | Field | # | Type | Description | |-------|---|------|-------------| | `ifname` | 1 | string | Interface name | | `mode` | 2 | int32 | AP mode | | `countryCode` | 3 | string | Country code | | `ssid` | 4 | string | SSID | | `sec` | 5 | string | Security type | | `psw` | 6 | string | Password | | `ipv4` | 7 | bytes | IPv4 address | | `ipv6` | 8 | bytes | IPv6 address | ### NifSTA — Station Info | Field | # | Type | Description | |-------|---|------|-------------| | `ifname` | 1 | string | Interface name | | `ssid` | 2 | string | Connected SSID | | `psw` | 3 | string | Password | | `rssi` | 4 | int32 | Signal strength | | `ipv4` | 5 | bytes | IPv4 address | | `ipv6` | 6 | bytes | IPv6 address | ## Common Messages ### ResCommon — Generic Response | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Status code | ### ResReceiveDataError — Receive Error | Field | # | Type | Description | |-------|---|------|-------------| | `cmd` | 1 | int32 | Command code | | `code` | 2 | int32 | Error code | ### VocalType — Enum | Value | Name | Description | |-------|------|-------------| | 0 | VT_UNKNOWN | Unknown | | 1 | VT_PING | Ping (app → device) | | 2 | VT_ECHO | Echo (device → app) |