TCode v0.3 specification

I don’t understand what @Tempest wrote in GitHub - multiaxis/TCode-Specification: the TCode specification & conventions (I do but I don’t want to), so here’s my BNF

# TCode v0.3

# commands are executed when newline is sent
<execute_command> ::= <command> "\n" | <command> " " <execute_command>
<command> ::= <basic_command> | <interval_command> | <speed_command>
    | <device_command> | <save_command> | <custom_command>

# Move to provided position on default speed
<basic_command> ::= <axis> <pos:mantissa>

# Linear, Rotation, Vibration, Auxillary
<axis> ::= "L" <digit> | "R" <digit> | "V" <digit> | "A" <digit>

# 1234 in 0.1234 - as values are always 0.0000-0.9999
# Digits after 4th are ignored
<mantissa> ::= <digit>+

# Move to provided position over provided milliseconds
<interval_command> ::= <basic_command> "I" <time:integer>

# Move to provided position with provided speed where 100 is 1/second
<speed_command> ::= <basic_command> "S" <speed:integer>

# D0 - device/firmvare info
# D1 - <tcode_version_response>
# D2 - <load_response> for each axis
# DSTOP - stop moving
<device_command> ::= "D" <digit> | "DSTOP"

# store user preferences
# Not used internally, it's intended for reading with D2
<save_command> ::= "$" <axis> "-" <min:mantissa> "-" <max:mantissa>

# custom commands outside this spec
<custom_command> ::= "#" <no_space_string> <custom_value>?
<custom_value> ::= "" | ":" <no_space_string> | ":\"" <no_quote_string> "\""

##################################################

<feedback_response> ::= "#" <tag> ":" <digit>+ "\n"
<tcode_version_response> ::= "TCode v0.3"
<load_response> ::= <axis> "-" <min:mantissa> "-" <max:mantissa> "\n"


Also I’m thinking on making a fork with Beziers for myself (not like I’ll use it but well)
Also we should make a .funscript JSONSchema spec as there is none

Not clear, but very interesting :wink:

The coordinate system in Tcode is the usual Cartesian coordinate system for the left hand, with interpretation of Euler angles.
The main problem is that many 3D programs use right handed coordinates. The translation is not complicated.

P.S. To broaden everyone’s horizons