# EggBot WiFi Serial Protocol ## Scope This transport exposes the same EggBot command protocol as serial, but over WiFi/WebSocket. - Protocol commands and responses are unchanged. - Framing is unchanged (`\r` command terminator, `\r\n` response lines). ## Transport Profile - Protocol endpoint: `ws://:1337/` - WebSocket message type: text or binary frames accepted - Payload: ASCII command bytes ## Data Model - Host writes command bytes to the WebSocket. - Firmware parses incoming bytes with the same EggBot parser used for USB serial and BLE. - Firmware sends responses as WebSocket text messages. - Hosts must treat inbound data as a stream and parse lines by `\r\n`. ## Compatibility Rules - A WiFi client must send commands exactly as serial hosts do. - Each command must end with `\r`. - Data-returning commands (`QP`, `QB`, `QN`, `QL`) return a value line before final status (`OK\r\n`). - Unknown/invalid command format returns `unknown CMD\r\n`. ## Example WiFi Transactions Version query: - Send: `v\r` - Receive: `EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6a\r\n` Move command: - Send: `SM,100,0,200\r` - Receive: `OK\r\n` Query layer: - Send: `QL\r` - Receive: `\r\n` - Receive: `OK\r\n` ## Operational Notes - The WiFi protocol endpoint is started only when ESP32 station WiFi is connected. - Incoming WiFi bytes are queued and parsed in the main loop. - If the WiFi RX queue overruns, excess bytes are dropped and a log entry is generated. - WiFi transport is single active client: first connected sender is accepted until disconnect. - USB serial, BLE, and WiFi can coexist; responses are routed to the transport that received each command.