Firmware Capabilities Protocol

From RepRap
Revision as of 13:36, 1 November 2016 by Repetier (talk | contribs) (Created page with "==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. Espec...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.