Firmware Capabilities Protocol
Idea
While it is nice if a firmware supports some special features, it would be even better if hosts would detect that these are available so they start using them. Especially with the wild growth of firmware forks and versions, no host can know which variant can handle what. So at least for Repetier-Firmware we introduce with version 1.0 a new simple protocol to tell hosts what features are available, so they can activate them.
Protocol definition
To make it easy to detect, a standard M115 report gets now extended by one or more lines, each line telling what capability. These lines have the following format:
Cap:<NameOfCapability>:<0 or 1>
Notice: no spaces allowed, Name is upper case with underline to separate words. Lines MUST start with "Cap:" so it can be parsed very quickly by hosts.
The last value indicates if that capability is supported or not. The simple absence of a message is not enough since it would be possible, that the firmware simply does not report capabilities at all and host has to make assumptions like showing eeprom editor even with the risk that it is not available. Whereas a 0 value shows that a function is known, but the functionality is not implemented/active.
Knowing different developers will add other capabilities is no real problem as long as all names differ, so hosts can distinguish them by name. Hosts not understanding a name simply ignore them.
Currently defined capabilities
Cap:EEPROM
Defines if firmware is compiled with eeprom support.
Cap:AUTOREPORT_TEMP
Defines if firmware can automatically report temperatures. This feature needs to be enabled by M155 S1 so older hosts do not get double responses from own M105 requests and auto report feature.
Cap:PROGRESS
Firmware supports the progress protocol: - M530 S<printing> L<layer> - Enables explicit printing mode (S1) or disables it (S0). L can set layer count - M531 filename - Define filename being printed - M532 X<percent> L<curLayer> - update current print state progress (X=0..100) and layer L
This allows a host to enable a special information mode on LCD display, so that users see progress in percent, model being printed and layer being printer and total layer. Hosts can also use M117 to send time remaining to status line.
This feature should onely be enabled if a lcd is available to show it, otherwise the extra commands are useless.
Cap:AUTOLEVEL
Firmware supports autoleveling.
Cap:Z_PROBE
Firmware supports z probing.
Cap:SOFTWARE_POWER
Supports enabling/disabling power with M80/M81
Cap:TOGGLE_LIGHTS
Supports toggling lights on/off with M355.