Add an emergency-command parser to MarlinSerial's RX interrupt.
The parser tries to find and execute M108,M112,M410 before the commands disappear in the RX-buffer.
To avoid false positives for M117, comments and commands followed by filenames (M23, M28, M30, M32, M33) are filtered.
This enables Marlin to receive and react on the Emergency command at all times - regardless of whether the buffers are full or not. It remains to convince hosts to send the commands. To inform the hosts about the new feature a new entry in the M115-report was made. "`EMERGENCY_CODES:M112,M108,M410;`".
The parser is fast. It only ever needs two switch decisions and one assignment of the new state for every character.
One problem remains. If the host has sent an incomplete line before sending an emergency command the emergency command could be omitted when the parser is in `state_IGNORE`.
In that case the host should send "\ncommand\n"
Also introduces M108 to break the waiting for the heaters in M109, M190 and M303.
Rename `cancel_heatup` to `wait_for_heatup` to better see the purpose.
Includes:
*firmware version / branch / date.
*extruder count
*board information (name, serial details, power supply type)
*thermistors (names, min/max temperatures)
*printer statistics (PRINTCOUNTER details)
Thanks to @thinkyhead for contributions.
When setting the bed temp via M140/M190 if the thermistor does not read an increase of WATCH_BED_TEMP_INCREASE degrees by WATCH_BED_TEMP_PERIOD seconds then it will throw "Error:Heating failed, system stopped! Heater_ID: bed" and call the kill() function.
Conflicts:
Marlin/Configuration_adv.h
* Configuration.h:
* updated header comment
* new UUID feature used
* sync to default config
* typos fixed
* changes better documented
* reflect change in SDSUPPORT feature
* Configuration_adv.h
* updated header comment
* thermal protection tuned to work with K8200
* homing tuned
* sync to default config
* typos fixed
* changes better documented
* reflect change in LCD features
* use long filenames
* use Watchdog
* use Babystepping
* use Auto Filament Change
- `SD_DETECT_PIN` replaces `SDCARDDETECT`
- `SD_DETECT_INVERTED` replaces `SDCARDDETECTINVERTED`
- Revise the description of `SD_DETECT_INVERTED`
- Add a note about the override of `SD_DETECT_INVERTED` in
`Conditionals.h`
As suggested in #2521
- Move `ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED` because `SDSUPPORT` is
also required.
- Add a note that endstops must be enabled for the feature to have any
effect
- Make thermal protection for all hotends and/or bed into simple
switches
- Now enable `WATCH_TEMP_PERIOD` when `THERMAL_PROTECTION_HOTENDS` is
enabled
- Move detailed thermal parameters to `Configuration_adv.h`
- Add sanity checks to warn about old configurations
- Change `WATCH_TEMP_PERIOD` to seconds instead of milliseconds
- Add “Level Bed” menu item for auto bed leveling
- Hide the option if homing has not been done yet
- Arrange the Prepare submenu more logically (?)
- Add documentation comments, some white-space
- Apply some coding standards here and there
- Move old encoder multiplier debug option to `ultralcd.cpp`
This addresses comments in #1956 and #1079. In particular, this is useful
when both endstops are stationary on a CoreXY system, and the Y axis needs
to be homed before the X so the flags are aligned.
With these changes the output of `M503 S0` is all you need to restore
the EEPROM. Building on this it is straightforward to save and restore
the EEPROM state using the SD card or external GCode file.
- Added `M145` to set “heatup states” for the LCD menu
- Added `M420` to toggle Mesh Bed Leveling
- Added `M421` to set a single Mesh coordinate
- Extended `Config_PrintSettings` with added M codes
- Cleaned up some comments here and there
- Add `Conditionals.h` with calculated configuration values
- Add `SanityCheck.h` with checks for configuration errors
- Remove equivalent code from all configurations
- Move error checks from some sources to `SanityCheck.h` also
- Fix initialization of count_direction in stepper.cpp
# Add: Example Configuration for Vellemann K8200 - based on new
BOARD_K8200 #1391
* K8200: new folder in example_configurations for Vellemann K8200 (3Drag
clone - should work with 3Drag http://reprap.org/wiki/3drag, too. Please
report)
* K8200/Configuration.h/Configuration_adv.h: updated manually with
parameters form genuine Vellemann Firmware "firmware_k8200_marlinv2"
based on the recent development branch
I tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for
Windows (SD library added to IDE manually) - everything works well
* K8200: new folder in example_configurations for Vellemann K8200 (3Drag
clone - should work with 3Drag too, please report)
* K8200/language.h: updated machine name and URL for K8200
* K8200/Configuration.h/Configuration_adv.h: updated manually with
parameters
form genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the
recent development branch
* K8200/files by Vellemann: added folder with original files from
Vellemann homepage, since there is no GitHub fork you could link to by
them
I tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for
Windows - everything works well