Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:dev:tailcontrol-command-protocol [2026/03/05 17:51] – [Unbinding] darkgrue | en:dev:tailcontrol-command-protocol [2026/05/16 04:42] (current) – darkgrue | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| - | Command list for the Tail Company TailControl firmware. TailControl is the unified firmware platform (version 5.// | + | Command list for the Tail Company TailControl firmware. TailControl is the unified firmware platform (version 5.// |
| All commands are case-sensitive. Trailing whitespace (e.g., `NULL`, `CR`, etc.) are ignored. The space between a command keyword and the parameters is mandatory. | All commands are case-sensitive. Trailing whitespace (e.g., `NULL`, `CR`, etc.) are ignored. The space between a command keyword and the parameters is mandatory. | ||
| Line 20: | Line 20: | ||
| Device name is one of the following: | Device name is one of the following: | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| + | * '' | ||
| - | The BLE Device | + | TailControl will uses the same Service and Characteristics UUIDs across all supported products: '' |
| - | * RX Characteristic is '' | + | |
| - | * TX Characteristic is '' | + | |
| - | * Battery Voltage is '' | + | |
| - | The BLE Device Service for the EarGear 2 is '' | + | |
| - | * RX Characteristic is '' | + | * TX Characteristic is '' |
| - | * TX Characteristic is '' | + | |
| - | * Battery Voltage is '' | + | |
| - | + | ||
| - | <WRAP round todo 90%> | + | |
| - | TailControl will use a new Service and Characteristics UUIDs going forward, to distinguish it from previous firmwares (and to further enforce the “forklift upgrade” required). | + | |
| - | + | ||
| - | The BLE Device Service for TailControl is '' | + | |
| - | | + | |
| - | * TX Characteristic is '' | + | |
| * Battery Voltage is '' | * Battery Voltage is '' | ||
| - | </ | ||
| <WRAP round important 90%> | <WRAP round important 90%> | ||
| Line 105: | Line 93: | ||
| - | ===== Move Commands | + | ===== Servo-Based Moves (ClawGear, EarGear 2, MiTail, MiTail Mini, FlutterWings) |
| - | Move commands return ''< | + | Move commands return ''< |
| A command will return '' | A command will return '' | ||
| Line 131: | Line 119: | ||
| | **TAILU3** | **U**ser defined **3** | | | **TAILU3** | **U**ser defined **3** | | ||
| | **TAILU4** | **U**ser defined **4** | | | **TAILU4** | **U**ser defined **4** | | ||
| + | |||
| + | |||
| + | ===== Stepper-Based Moves (Not Currently Used) ===== | ||
| + | |||
| + | Move commands return ''< | ||
| + | |||
| + | A command will return '' | ||
| + | |||
| + | A new command that is received before the currently executing command is finished will immediately end the current command and start the new one. | ||
| + | |||
| + | | **TAILHM** | **H**o**M**e position | | ||
| + | | **MOVE1** | **MOVE** **1** | | ||
| + | | **MOVE2** | **MOVE** **2** | | ||
| + | | **MOVE3** | **MOVE** **3** | | ||
| + | | **MOVE4** | **MOVE** **4** | | ||
| + | | **MOVE5** | **MOVE** **5** | | ||
| + | | **MOVE6** | **MOVE** **6** | | ||
| + | | **MOVE7** | **MOVE** **7** | | ||
| + | | **MOVEU1** | **MOVE** **U**ser defined **1** | | ||
| + | | **MOVEU2** | **MOVE** **U**ser defined **2** | | ||
| + | | **MOVEU3** | **MOVE** **U**ser defined **3** | | ||
| + | | **MOVEU4** | **MOVE** **U**ser defined **4** | | ||
| + | |||
| + | |||
| + | ===== ClawGear-only Commands ===== | ||
| + | |||
| + | | **CLAPMODE** | Starts Clap Mode (and disables Tilt Mode, if enabled), returns '' | ||
| + | | **STOPCLAP** | Stops Clap Mode, returns '' | ||
| + | | **STOPTILT** | Stops Tilt Mode, returns '' | ||
| + | | **TILTMODE** | Starts Tilt Mode (and disables Clap Mode, if enabled), returns '' | ||
| + | |||
| + | ===== EarGear 2-only Commands ===== | ||
| + | |||
| + | | **LISTENMODE** | Starts Listen Mode ([[#Listen Mode|see below]]), returns '' | ||
| + | | **STOPLISTEN** | Stops Listen Mode ([[#Listen Mode|see below]]), returns '' | ||
| + | | **STOPTILT** | Stops Tilt Mode ([[#Tilt Mode|see below]]), returns '' | ||
| + | | **TILTMODE** | Starts Tilt Mode ([[#Tilt Mode|see below]]), returns '' | ||
| Line 155: | Line 180: | ||
| - | ===== EarGear 2-only | + | ===== RGB LED Commands ===== |
| - | | **LISTENMODE** (or **LISTEN FULL**) | Starts Listen Mode ([[#Listen Mode|see below]]), returns '' | + | RGB support is experimental, and not included in production firmware. |
| - | | **STOPLISTEN** (or **ENDLISTEN**) | Stops Listen Mode ([[#Listen Mode|see below]]), returns '' | + | |
| - | | **STOPTILT** (or **ENDTILTMODE**) | Stops Tilt Mode ([[#Tilt Mode|see below]]), returns '' | + | |
| - | | **TILTMODE** (or **TILTMODE START**) | Starts Tilt Mode ([[#Tilt Mode|see below]]), returns '' | + | |
| - | + | ||
| - | + | ||
| - | ===== RGB LED Commands ===== | + | |
| | **RGBOFF** | **RGB** LEDs **OFF**, returns '' | | **RGBOFF** | **RGB** LEDs **OFF**, returns '' | ||
| Line 188: | Line 207: | ||
| | **STOPNPM** | **STOP** **N**o-**P**hone **M**ode and disables it in NVS configuration; | | **STOPNPM** | **STOP** **N**o-**P**hone **M**ode and disables it in NVS configuration; | ||
| | **USERMOVE** | Set user-defined move ([[# | | **USERMOVE** | Set user-defined move ([[# | ||
| - | | **STOPPUSSKEY** | **STOP** **P**a**SSKEY**; | + | | **STOPPUSSKEY** | **STOP** **P**a**SSKEY**; |
| | **USERLEDS** | Set user-defined Glow Tip pattern ([[# | | **USERLEDS** | Set user-defined Glow Tip pattern ([[# | ||
| | **VER** | Returns the firmware **VER**sion number; (e.g., '' | | **VER** | Returns the firmware **VER**sion number; (e.g., '' | ||
| Line 201: | Line 220: | ||
| | **SETHOLDONSTOP** | **SET** servo **HOLD** is maintained when the servos **STOP** (maintains servo PWM when not moving, default for EarGear 2); returns '' | | **SETHOLDONSTOP** | **SET** servo **HOLD** is maintained when the servos **STOP** (maintains servo PWM when not moving, default for EarGear 2); returns '' | ||
| | **UNSETHOLDONSTOP** | **UNSET** servo **HOLD** when the servos **STOP** (servo PWM is dropped when not moving, default for tail-based devices); returns '' | | **UNSETHOLDONSTOP** | **UNSET** servo **HOLD** when the servos **STOP** (servo PWM is dropped when not moving, default for tail-based devices); returns '' | ||
| - | | **SETHOME** | **SET** **HOME** position (0 through 8) for each servo (e.g., '' | + | | **SETHOME** | **SET** **HOME** position (0 through 8) for eac2h servo (e.g., '' |
| | **SETLISTENMOVES** | **SET** internal **LISTEN** Mode **MOVES** to play on a listen event in addition to sending event notifications; | | **SETLISTENMOVES** | **SET** internal **LISTEN** Mode **MOVES** to play on a listen event in addition to sending event notifications; | ||
| | **UNSETLISTENMOVES** | **UNSET** internal **LISTEN** Mode **MOVES** to play on a listen event, only an event notification will be sent and it is the responsibility of the connected application to send commands to react to events; returns '' | | **UNSETLISTENMOVES** | **UNSET** internal **LISTEN** Mode **MOVES** to play on a listen event, only an event notification will be sent and it is the responsibility of the connected application to send commands to react to events; returns '' | ||
| Line 381: | Line 400: | ||
| **STOPPUSSKEY** | **STOPPUSSKEY** | ||
| - | The device will then reboot after 3 seconds. If the bond needs to be removed or reset, see [[en: | + | The device will then reboot after 3 seconds. If the bond needs to be removed or reset, see [[en: |
| Line 466: | Line 485: | ||
| - | == Copyright 2024-2025 © The Mechanical Tail Company Limited contact@thetailcompany.com. All Rights Reserved. The Mechanical Tail Company Limited also claims trademark rights in the following: TailControl, | + | == Copyright 2024-2026 © The Mechanical Tail Company Limited contact@thetailcompany.com. All Rights Reserved. The Mechanical Tail Company Limited also claims trademark rights in the following: TailControl, |
