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 [2024/06/09 01:16] – [Developer Commands (use at own risk)] darkgrue | en:dev:tailcontrol-command-protocol [2024/06/28 15:43] (current) – darkgrue | ||
---|---|---|---|
Line 10: | Line 10: | ||
===== Bluetooth Low Energy (BLE) ===== | ===== Bluetooth Low Energy (BLE) ===== | ||
- | The hardware platform uses the "Just Works" Bluetooth Low Energy (BLE) pairing method to connect. | + | The hardware platform uses the "Just Works" Bluetooth Low Energy (BLE) pairing method to connect. If Conference Mode ([[# |
Line 150: | Line 150: | ||
| **AUTOMODE** | **AUTO**nomous **MO**de; [[# | | **AUTOMODE** | **AUTO**nomous **MO**de; [[# | ||
| **DSSP** | **D**irectly **S**et **S**ervo **P**osition; | | **DSSP** | **D**irectly **S**et **S**ervo **P**osition; | ||
- | | **HWVER** | Returns **H**ard**W**are **VER**sion; | + | | **HWVER** | Returns **H**ard**W**are **VER**sion; |
| **PING** | Keepalive heartbeat (from application), | | **PING** | Keepalive heartbeat (from application), | ||
- | | **SETPUSSKEY** | **SET** **P**a**SSKEY**, | + | | **SETPUSSKEY** | **SET** **P**a**SSKEY**, |
| **SHUTDOWN** | **SHUT DOWN** the unit (will lose the BLE connection), | | **SHUTDOWN** | **SHUT DOWN** the unit (will lose the BLE connection), | ||
| **STOPAUTO** | **STOP AUTO**nomous Mode, returns '' | | **STOPAUTO** | **STOP AUTO**nomous Mode, returns '' | ||
Line 160: | Line 160: | ||
| **USERLEDS** | [[# | | **USERLEDS** | [[# | ||
| **VER** | Returns the firmware **VER**sion number; '' | | **VER** | Returns the firmware **VER**sion number; '' | ||
- | | **VERA** | Returns the firmware **VER**sion number for use by the iOS app; '' | ||
Line 168: | Line 167: | ||
| **FORMATNVS** | **FORMAT** **NVS** (erase all contents of the default NVS partition, including BLE bonds) and reboot | | | **FORMATNVS** | **FORMAT** **NVS** (erase all contents of the default NVS partition, including BLE bonds) and reboot | | ||
| **OTA** | Starts firmware **O**ver **T**he **A**ir update process (e.g., '' | | **OTA** | Starts firmware **O**ver **T**he **A**ir update process (e.g., '' | ||
- | | **READCONF** | **READ** running **CONF**iguration; | + | | **READCONF** | **READ** running **CONF**iguration; |
- | | **READNVS** | **READ** **CONF**iguration from NVS; returns space-delimited configuration parameters (e.g., '' | + | | **READNVS** | **READ** **CONF**iguration from NVS; returns space-delimited configuration parameters |
| **REBOOT** | **REBOOT** after 3 seconds, returns '' | | **REBOOT** | **REBOOT** after 3 seconds, returns '' | ||
| **SETHOME** | **SET** **HOME** position (0 through 8) for each servo (e.g., '' | | **SETHOME** | **SET** **HOME** position (0 through 8) for each servo (e.g., '' | ||
| **TASKU** | Prints to the hardware serial console the minimum amount in words of remaining stack space that was available to the task since the task started executing, returns '' | | **TASKU** | Prints to the hardware serial console the minimum amount in words of remaining stack space that was available to the task since the task started executing, returns '' | ||
- | | **WRITECONF** | **WRITE** **CONF**iguration to NVS and set running configuration to match (e.g., '' | + | | **WRITECONF** | **WRITE** **CONF**iguration to NVS and set running configuration to match (e.g., '' |
- | returns '' | + | |
===== Directly Set Servo Position ===== | ===== Directly Set Servo Position ===== | ||
Line 190: | Line 188: | ||
| **B** | Point for Servo 2 | (Same as **A**) | | | **B** | Point for Servo 2 | (Same as **A**) | | ||
| **L** | Time between the current Servo 1 point and the next in ticks (in 20 ms increments)\\ **L** will move from the current position to the next, over the time specified | 0 ... 127 (time * 20 ms) | | | **L** | Time between the current Servo 1 point and the next in ticks (in 20 ms increments)\\ **L** will move from the current position to the next, over the time specified | 0 ... 127 (time * 20 ms) | | ||
- | | **M** | Time between the current Servo 1 point and the next in ticks (in 20 ms increments)\\ **L** will move from the current position to the next, over the time specified | (Same as **L**) | | + | | **M** | Time between the current Servo 2 point and the next in ticks (in 20 ms increments)\\ **M** will move from the current position to the next, over the time specified | (Same as **L**) | |
| **H** | Move to home position at end of move | 0 = false (default), 1 = true | | | **H** | Move to home position at end of move | 0 = false (default), 1 = true | | ||
Line 196: | Line 194: | ||
* Parameters of type **A**, **B**, **E**, **F**, **H**, **L**, and **M** can appear in any order (e.g., '' | * Parameters of type **A**, **B**, **E**, **F**, **H**, **L**, and **M** can appear in any order (e.g., '' | ||
* Parameters can be separated by any character that is not a number or a letter (e.g., space, comma, semicolon). However, the letters themselves act as separators, and it is recommended that no additional characters are used, as the serial buffer has a limited capacity and may not be able to store the whole instruction. | * Parameters can be separated by any character that is not a number or a letter (e.g., space, comma, semicolon). However, the letters themselves act as separators, and it is recommended that no additional characters are used, as the serial buffer has a limited capacity and may not be able to store the whole instruction. | ||
- | * Depending on the tail and position, it can sag out of the commanded position when servo power is released at the end of the DSSP move. This may cause a visual defect jerking back into position when the next move starts. | + | * Depending on the tail and position, it can sag out of the commanded position when servo power is released at the end of the DSSP move. This may cause a visual defect |
==== DSSP Example ==== | ==== DSSP Example ==== | ||
Line 214: | Line 212: | ||
**USERMOVE U< | **USERMOVE U< | ||
+ | |||
+ | ^ Prefix ^ Parameter Type ^ Range of Values for Moves ^ | ||
+ | | **U** | User preset number | <1 ... 4> | | ||
+ | | **E** | Easing function to apply to Servo 1 | Default is Linear, if not specified.\\ As per [[https:// | ||
+ | | **F** | Easing function to apply to Servo 2 | (Same as **E**) | | ||
+ | | **A** | Point for Servo 1 | <0 ... 8>\\ 0 -> 25 degrees\\ 1 -> 41 degrees\\ 2 -> 58 degrees\\ ...\\ 8 -> 160 degrees | | ||
+ | | **B** | Point for Servo 2 | (Same as **A**) | | ||
+ | | **L** | Time between the current Servo 1 point and the next in ticks (in 20 ms increments)\\ **L** will move from the current position to the next, over the time specified | 0 ... 127 (time * 20 ms) | | ||
+ | | **M** | Time between the current Servo 2 point and the next in ticks (in 20 ms increments)\\ **M** will move from the current position to the next, over the time specified | (Same as **L**) | | ||
+ | | **H** | Move to home position at end of move | 0 = false (default), 1 = true | | ||
**USERLEDS U< | **USERLEDS U< | ||
- | ^ Prefix | + | ^ Prefix |
- | | **U** | User preset number | + | | **U** | User preset number | <1 ... 4> | |
- | | **E** | Easing type [MiTail FW \>= 4.0.0, TailCoNTROL >= 5.0.0] | 0 = Linear (no easing), 1 = Quadratic, 2 = Cubic, | + | | **P** | Number of points in the Glow Tip pattern | <1 ... 32> | |
- | | **P** | Number of points in the move or Glow Tip pattern | + | | **N** | Number of cycles (times the pattern will be repeated) | <0 ... 255> | |
- | | **N** | Number of cycles (times the pattern will be repeated) | + | | **A** | Brightness |
- | | **A** | Point for Servo 1 or brightness | + | | **S/L** | Time between the current point and the next (in 20 ms increments)\\ **S** will wait in the current position, then move to the next when the time has elapsed\\ **L** will gradually move from the current position to the next, over the time specified | 0 ... 127 (time * 20 ms) | |
- | | **B** | Point for Servo 2 | <0 ... 8> | (same as **A**) | N/A | | + | |
- | | **S/L** | Time between the current point and the next (in 20 ms increments)\\ **S** will wait in the current position, then move to the next when the time has elapsed\\ **L** will gradually move from the current position to the next, over the time specified | 0 ... 127 (time * 20 ms) | 0 ... 127 (time * 20 ms) | | + | |
- | | **H** | Move to home position at end of move | 0 = false, 1 = true (default) | N/A | | + | |
**Notes:** | **Notes:** | ||
Line 233: | Line 238: | ||
* There is a **128-character limit** on the serial input buffer. | * There is a **128-character limit** on the serial input buffer. | ||
+ | ==== USERMOVE Examples ==== | ||
- | ===== USERMOVE Examples ===== | + | === Example 1 – Slow Wag 1 (same as the '' |
- | + | ||
- | ==== Example 1 – Slow Wag 1 (same as the '' | + | |
Both servos move from 143° to 41° (position 7 to 1) and back, for 3 times; each cycle is (75 + 75) * 20 ms = 3 s long. | Both servos move from 143° to 41° (position 7 to 1) and back, for 3 times; each cycle is (75 + 75) * 20 ms = 3 s long. | ||
Line 253: | Line 257: | ||
* **H1** Home at end of move | * **H1** Home at end of move | ||
- | ==== Example 2 – Test Servos | + | === Example 2 – Test Servos === |
Moves servos in steps of 90° every 2 seconds; Servo 2 is delayed by 90°. | Moves servos in steps of 90° every 2 seconds; Servo 2 is delayed by 90°. | ||
Line 269: | Line 273: | ||
* **H1** Home at end of move | * **H1** Home at end of move | ||
+ | ==== USERLEDS Examples ==== | ||
- | ===== USERLEDS Examples ===== | + | === Example 1 – Beacon (same as the '' |
- | + | ||
- | ==== Example 1 – Beacon (same as the '' | + | |
The Glow Tip LEDs light up for 100 ms every 1 s (Airbus A320 tail strobe). | The Glow Tip LEDs light up for 100 ms every 1 s (Airbus A320 tail strobe). | ||
Line 285: | Line 288: | ||
* **S5S95** On for 5 * 20 ms = 100 ms; off for 50 * 20ms = 1 s | * **S5S95** On for 5 * 20 ms = 100 ms; off for 50 * 20ms = 1 s | ||
- | ==== Example 2 – Fade in/out (similar to '' | + | === Example 2 – Fade in/out (similar to '' |
The Glow Tip LEDs light up slowly, then dim until completely off; this is repeated 3 times. | The Glow Tip LEDs light up slowly, then dim until completely off; this is repeated 3 times. | ||
Line 350: | Line 353: | ||
The device will then reboot in 3 seconds. If the bond needs to be removed or reset, see [[en: | The device will then reboot in 3 seconds. If the bond needs to be removed or reset, see [[en: | ||
+ | |||
==== Unbinding ==== | ==== Unbinding ==== | ||
Line 368: | Line 372: | ||
- | ==== iOS Casual Mode ==== | + | ===== iOS Casual Mode ===== |
[This feature is pending removal in a future release.] | [This feature is pending removal in a future release.] | ||
Line 379: | Line 383: | ||
Important! The minimum random pause cannot be less that 15 seconds. | Important! The minimum random pause cannot be less that 15 seconds. | ||
- | |||
==== iOS Casual Mode Example ==== | ==== iOS Casual Mode Example ==== |