Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
56747e9
FULL_REPORT_TO_HOST_FEATURE
thinkyhead Sep 11, 2020
23250e3
Added the S000, P000 and R000 commands in the gcode Parser to avoid the
fedetony Sep 11, 2020
0c41837
Added number of character count for not recognizing S0 and S00 comman…
fedetony Sep 12, 2020
c4f4e20
Merge branch 'bugfix-2.0.x' into bugfix2.0.xautoreport
fedetony Oct 10, 2020
895fa2f
Merge remote-tracking branch 'upstream/bugfix-2.0.x' into pr/19330
thinkyhead Jan 29, 2021
76c5f49
Make new feature(s) optional, drop keepalive interval divider
thinkyhead Jan 29, 2021
117677b
Merge branch 'bugfix-2.0.x' into bugfix2.0.xautoreport
thinkyhead Feb 28, 2021
b0fd660
Merge branch 'bugfix-2.0.x' into bugfix2.0.xautoreport
fedetony Apr 14, 2021
2bb4f8b
Update G29.cpp
thinkyhead Apr 16, 2021
b1d038f
Update G29.cpp
thinkyhead Apr 16, 2021
4ee4023
Update gcode.cpp
thinkyhead Apr 16, 2021
c2d86d3
Update gcode.cpp
thinkyhead Apr 16, 2021
d8d3b11
clean up, add test
thinkyhead Apr 16, 2021
3d1de9d
patch Update parser.cpp
fedetony Apr 16, 2021
f3ede8d
Merge pull request #1 from fedetony/fedetony-patch-1
fedetony Apr 16, 2021
01aea13
Merge branch 'bugfix-2.0.x' into bugfix2.0.xautoreport
fedetony Apr 16, 2021
98a1591
Update parser.cpp
thinkyhead Apr 17, 2021
d1c5fc0
Changed information for Realtime Reporting in Configuration_adv.h
fedetony Apr 18, 2021
dde0e9d
adjustments
thinkyhead Apr 19, 2021
468e46d
edit comments
thinkyhead Apr 19, 2021
df7d55f
Merge remote-tracking branch 'upstream/bugfix-2.0.x' into pr/21652
thinkyhead Apr 19, 2021
14f050a
add tests
thinkyhead Apr 19, 2021
250d2aa
prettify
thinkyhead Apr 19, 2021
5efc6bb
Implement HAL_reboot
thinkyhead Apr 19, 2021
8221f5c
Require a Kill or Encoder Button
thinkyhead Apr 20, 2021
761f7e7
Add D10 (P) - as a kill test
thinkyhead Apr 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -3970,3 +3970,9 @@
* a crash from a remote location. Requires ~400 bytes of SRAM and 5Kb of flash.
*/
//#define POSTMORTEM_DEBUGGING

/**
* Software Reset options
*/
//#define SOFT_RESET_VIA_SERIAL // 'KILL' and '^X' commands will soft-reset the controller
//#define SOFT_RESET_ON_KILL // Use a digital button to soft-reset the controller after KILL
9 changes: 9 additions & 0 deletions Marlin/src/HAL/AVR/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ void HAL_init() {
#endif
}

void HAL_reboot() {
#if ENABLED(USE_WATCHDOG)
while (1) { /* run out the watchdog */ }
#else
void (*resetFunc)() = 0; // Declare resetFunc() at address 0
resetFunc(); // Jump to address 0
#endif
}

#if ENABLED(SDSUPPORT)

#include "../../sd/SdFatUtil.h"
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/AVR/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void HAL_init();
inline void HAL_clear_reset_source() { MCUSR = 0; }
inline uint8_t HAL_get_reset_source() { return MCUSR; }

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/DUE/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ uint8_t HAL_get_reset_source() {
}
}

void HAL_reboot() { rstc_start_software_reset(RSTC); }

void _delay_ms(const int delay_ms) {
// Todo: port for Due?
delay(delay_ms);
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/DUE/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

//
// ADC
Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/ESP32/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ void HAL_clear_reset_source() { }

uint8_t HAL_get_reset_source() { return rtc_get_reset_reason(1); }

void HAL_reboot() { ESP.restart(); }

void _delay_ms(int delay_ms) { delay(delay_ms); }

// return free memory between end of heap (or end bss) and whatever is current
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/ESP32/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ void HAL_clear_reset_source();
// reset reason
uint8_t HAL_get_reset_source();

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

void _delay_ms(int delay);

Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/LINUX/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,6 @@ void HAL_pwm_init() {

}

void HAL_reboot() { /* Reset the application state and GPIO */ }

#endif // __PLAT_LINUX__
2 changes: 1 addition & 1 deletion Marlin/src/HAL/LINUX/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ uint16_t HAL_adc_get_result();
inline void HAL_clear_reset_source(void) {}
inline uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; }

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot(); // Reset the application state and GPIO

/* ---------------- Delay in cycles */
FORCE_INLINE static void DELAY_CYCLES(uint64_t x) {
Expand Down
4 changes: 3 additions & 1 deletion Marlin/src/HAL/LPC1768/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ void flashFirmware(const int16_t) {
delay(500); // Give OS time to disconnect
USB_Connect(false); // USB clear connection
delay(1000); // Give OS time to notice
NVIC_SystemReset();
HAL_reboot();
}

void HAL_clear_reset_source(void) {
Expand All @@ -81,4 +81,6 @@ uint8_t HAL_get_reset_source(void) {
return RST_POWER_ON;
}

void HAL_reboot() { NVIC_SystemReset(); }

#endif // TARGET_LPC1768
2 changes: 1 addition & 1 deletion Marlin/src/HAL/LPC1768/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,4 @@ void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255,
void HAL_clear_reset_source(void);
uint8_t HAL_get_reset_source(void);

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();
2 changes: 2 additions & 0 deletions Marlin/src/HAL/SAMD51/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,8 @@ uint8_t HAL_get_reset_source() {
}
#pragma pop_macro("WDT")

void HAL_reboot() { NVIC_SystemReset(); }

extern "C" {
void * _sbrk(int incr);

Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/SAMD51/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ typedef int8_t pin_t;
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

//
// ADC
Expand Down
6 changes: 4 additions & 2 deletions Marlin/src/HAL/STM32/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ uint8_t HAL_get_reset_source() {
;
}

void HAL_reboot() { NVIC_SystemReset(); }

void _delay_ms(const int delay_ms) { delay(delay_ms); }

extern "C" {
Expand All @@ -147,8 +149,8 @@ extern "C" {
void HAL_adc_start_conversion(const uint8_t adc_pin) { HAL_adc_result = analogRead(adc_pin); }
uint16_t HAL_adc_get_result() { return HAL_adc_result; }

// Reset the system (to initiate a firmware flash)
void flashFirmware(const int16_t) { NVIC_SystemReset(); }
// Reset the system to initiate a firmware flash
void flashFirmware(const int16_t) { HAL_reboot(); }

// Maple Compatibility
volatile uint32_t systick_uptime_millis = 0;
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/STM32/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

void _delay_ms(const int delay);

Expand Down
4 changes: 3 additions & 1 deletion Marlin/src/HAL/STM32F1/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,8 @@ void analogWrite(pin_t pin, int pwm_val8) {
analogWrite(uint8_t(pin), pwm_val8);
}

void flashFirmware(const int16_t) { nvic_sys_reset(); }
void HAL_reboot() { nvic_sys_reset(); }

void flashFirmware(const int16_t) { HAL_reboot(); }

#endif // __STM32F1__
2 changes: 1 addition & 1 deletion Marlin/src/HAL/STM32F1/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

void _delay_ms(const int delay);

Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/TEENSY31_32/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ uint8_t HAL_get_reset_source() {
return 0;
}

void HAL_reboot() { _reboot_Teensyduino_(); }

extern "C" {
extern char __bss_end;
extern char __heap_start;
Expand Down
3 changes: 1 addition & 2 deletions Marlin/src/HAL/TEENSY31_32/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
#include "fastio.h"
#include "watchdog.h"


#include <stdint.h>

#define ST7920_DELAY_1 DELAY_NS(600)
Expand Down Expand Up @@ -93,7 +92,7 @@ void HAL_clear_reset_source();
// Get the reason for the reset
uint8_t HAL_get_reset_source();

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }

Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/TEENSY35_36/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ uint8_t HAL_get_reset_source() {
return 0;
}

void HAL_reboot() { _reboot_Teensyduino_(); }

extern "C" {
extern char __bss_end;
extern char __heap_start;
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/HAL/TEENSY35_36/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();

inline void HAL_reboot() {} // reboot the board or restart the bootloader
void HAL_reboot();

FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }

Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/TEENSY40_41/HAL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ uint8_t HAL_get_reset_source() {
return 0;
}

void HAL_reboot() { _reboot_Teensyduino_(); }

#define __bss_end _ebss

extern "C" {
Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/HAL/TEENSY40_41/HAL.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();

void HAL_reboot();

FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }

#if GCC_VERSION <= 50000
Expand Down
18 changes: 10 additions & 8 deletions Marlin/src/MarlinCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -863,20 +863,22 @@ void minkill(const bool steppers_off/*=false*/) {

TERN_(HAS_SUICIDE, suicide());

#if HAS_KILL
#if EITHER(HAS_KILL, SOFT_RESET_ON_KILL)

// Wait for kill to be released
while (kill_state()) watchdog_refresh();
// Wait for both KILL and ENC to be released
while (TERN0(HAS_KILL, !kill_state()) || TERN0(SOFT_RESET_ON_KILL, !ui.button_pressed()))
watchdog_refresh();

// Wait for kill to be pressed
while (!kill_state()) watchdog_refresh();
// Wait for either KILL or ENC press
while (TERN1(HAS_KILL, kill_state()) && TERN1(SOFT_RESET_ON_KILL, ui.button_pressed()))
watchdog_refresh();

void (*resetFunc)() = 0; // Declare resetFunc() at address 0
resetFunc(); // Jump to address 0
// Reboot the board
HAL_reboot();

#else

for (;;) watchdog_refresh(); // Wait for reset
for (;;) watchdog_refresh(); // Wait for RESET button or power-cycle

#endif
}
Expand Down
20 changes: 20 additions & 0 deletions Marlin/src/feature/e_parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ extern bool wait_for_user, wait_for_heatup;
void quickresume_stepper();
#endif

void HAL_reboot();

class EmergencyParser {

public:
Expand All @@ -62,6 +64,10 @@ class EmergencyParser {
EP_R, EP_R0, EP_R00, EP_GRBL_RESUME,
EP_P, EP_P0, EP_P00, EP_GRBL_PAUSE,
#endif
#if ENABLED(SOFT_RESET_VIA_SERIAL)
EP_ctrl,
EP_K, EP_KI, EP_KIL, EP_KILL,
#endif
EP_IGNORE // to '\n'
};

Expand Down Expand Up @@ -89,6 +95,10 @@ class EmergencyParser {
case 'P': state = EP_P; break;
case 'R': state = EP_R; break;
#endif
#if ENABLED(SOFT_RESET_VIA_SERIAL)
case '^': state = EP_ctrl; break;
case 'K': state = EP_K; break;
#endif
default: state = EP_IGNORE;
}
break;
Expand Down Expand Up @@ -121,6 +131,13 @@ class EmergencyParser {
case EP_P00: state = (c == '0') ? EP_GRBL_PAUSE : EP_IGNORE; break;
#endif

#if ENABLED(SOFT_RESET_VIA_SERIAL)
case EP_ctrl: state = (c == 'X') ? EP_KILL : EP_IGNORE; break;
case EP_K: state = (c == 'I') ? EP_KI : EP_IGNORE; break;
case EP_KI: state = (c == 'L') ? EP_KIL : EP_IGNORE; break;
case EP_KIL: state = (c == 'L') ? EP_KILL : EP_IGNORE; break;
#endif

case EP_M:
switch (c) {
case ' ': break;
Expand Down Expand Up @@ -189,6 +206,9 @@ class EmergencyParser {
case EP_GRBL_PAUSE: quickpause_stepper(); break;
case EP_GRBL_RESUME: quickresume_stepper(); break;
#endif
#if ENABLED(SOFT_RESET_VIA_SERIAL)
case EP_KILL: HAL_reboot(); break;
#endif
default: break;
}
state = EP_RESET;
Expand Down
7 changes: 6 additions & 1 deletion Marlin/src/gcode/gcode_d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include "../HAL/shared/eeprom_if.h"
#include "../HAL/shared/Delay.h"
#include "../sd/cardreader.h"
#include "../MarlinCore.h" // for kill

extern void dump_delay_accuracy_check();

Expand All @@ -44,12 +45,16 @@
switch (dcode) {

case -1:
for (;;); // forever
for (;;) { /* loop forever (watchdog reset) */ }

case 0:
HAL_reboot();
break;

case 10:
kill(PSTR("D10"), PSTR("KILL TEST"), parser.seen('P'));
break;

case 1: {
// Zero or pattern-fill the EEPROM data
#if ENABLED(EEPROM_SETTINGS)
Expand Down
9 changes: 8 additions & 1 deletion Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -2208,12 +2208,19 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
#endif

/**
* emergency-command parser
* Emergency Command Parser
*/
#if ENABLED(EMERGENCY_PARSER) && defined(__AVR__) && defined(USBCON)
#error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)."
#endif

/**
* Software Reset on Kill option
*/
#if ENABLED(SOFT_RESET_ON_KILL) && !BUTTON_EXISTS(ENC)
#error "An encoder button is required or SOFT_RESET_ON_KILL will reset the printer without notice!"
#endif

/**
* I2C bus
*/
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/lcd/marlinui.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
#include "tft_io/touch_calibration.h"
#endif

#if EITHER(HAS_LCD_MENU, ULTIPANEL_FEEDMULTIPLY)
#if ANY(HAS_LCD_MENU, ULTIPANEL_FEEDMULTIPLY, SOFT_RESET_ON_KILL)
#define HAS_ENCODER_ACTION 1
#endif

Expand Down
2 changes: 1 addition & 1 deletion buildroot/tests/LPC1768
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ADAPTIVE_FAN_SLOWING NO
Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \
HOST_KEEPALIVE_FEATURE HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT \
LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES \
SDSUPPORT SDCARD_SORT_ALPHA AUTO_REPORT_SD_STATUS EMERGENCY_PARSER
SDSUPPORT SDCARD_SORT_ALPHA AUTO_REPORT_SD_STATUS EMERGENCY_PARSER SOFT_RESET_ON_KILL SOFT_RESET_VIA_SERIAL
exec_test $1 $2 "Re-ARM with NOZZLE_AS_PROBE and many features." "$3"

# clean up
Expand Down