Add SRAM command injection (#17459)
This commit is contained in:
@ -438,22 +438,6 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
||||
|
||||
#endif // BABYSTEP_ZPROBE_OFFSET
|
||||
|
||||
#if ANY(AUTO_BED_LEVELING_UBL, PID_AUTOTUNE_MENU, ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
void lcd_enqueue_one_now(const char * const cmd) {
|
||||
no_reentry = true;
|
||||
queue.enqueue_one_now(cmd);
|
||||
no_reentry = false;
|
||||
}
|
||||
|
||||
void lcd_enqueue_one_now_P(PGM_P const cmd) {
|
||||
no_reentry = true;
|
||||
queue.enqueue_now_P(cmd);
|
||||
no_reentry = false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
void lcd_store_settings() {
|
||||
const bool saved = settings.save();
|
||||
|
@ -547,11 +547,6 @@ void _lcd_draw_homing();
|
||||
void line_to_z(const float &z);
|
||||
#endif
|
||||
|
||||
#if ANY(AUTO_BED_LEVELING_UBL, PID_AUTOTUNE_MENU, ADVANCED_PAUSE_FEATURE)
|
||||
void lcd_enqueue_one_now(const char * const cmd);
|
||||
void lcd_enqueue_one_now_P(PGM_P const cmd);
|
||||
#endif
|
||||
|
||||
#if HAS_GRAPHICAL_LCD && EITHER(BABYSTEP_ZPROBE_GFX_OVERLAY, MESH_EDIT_GFX_OVERLAY)
|
||||
void _lcd_zoffset_overlay_gfx(const float zvalue);
|
||||
#endif
|
||||
|
@ -178,18 +178,18 @@ void menu_cancelobject();
|
||||
int16_t autotune_temp_bed = 70;
|
||||
#endif
|
||||
|
||||
#include "../../gcode/queue.h"
|
||||
|
||||
void _lcd_autotune(const int16_t e) {
|
||||
char cmd[30];
|
||||
sprintf_P(cmd, PSTR("M303 U1 E%i S%i"), e,
|
||||
#if HAS_PID_FOR_BOTH
|
||||
e < 0 ? autotune_temp_bed : autotune_temp[e]
|
||||
#elif ENABLED(PIDTEMPBED)
|
||||
autotune_temp_bed
|
||||
#else
|
||||
autotune_temp[e]
|
||||
TERN(PIDTEMPBED, autotune_temp_bed, autotune_temp[e])
|
||||
#endif
|
||||
);
|
||||
lcd_enqueue_one_now(cmd);
|
||||
queue.inject(cmd);
|
||||
}
|
||||
|
||||
#endif // PID_AUTOTUNE_MENU
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "menu.h"
|
||||
#include "../../module/temperature.h"
|
||||
#include "../../feature/pause.h"
|
||||
#include "../../gcode/queue.h"
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
#include "../../feature/runout.h"
|
||||
#endif
|
||||
@ -60,7 +61,7 @@ static void _change_filament_temp(const uint16_t temperature) {
|
||||
char cmd[11];
|
||||
sprintf_P(cmd, _change_filament_temp_command(), _change_filament_temp_extruder);
|
||||
thermalManager.setTargetHotend(temperature, _change_filament_temp_extruder);
|
||||
lcd_enqueue_one_now(cmd);
|
||||
queue.inject(cmd);
|
||||
}
|
||||
|
||||
//
|
||||
@ -121,7 +122,7 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
|
||||
ACTION_ITEM_N_P(s, msg, []{
|
||||
char cmd[13];
|
||||
sprintf_P(cmd, PSTR("M600 B0 T%i"), int(MenuItemBase::itemIndex));
|
||||
lcd_enqueue_one_now(cmd);
|
||||
queue.inject(cmd);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -145,7 +146,7 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
|
||||
ACTION_ITEM_N_P(s, msg_load, []{
|
||||
char cmd[12];
|
||||
sprintf_P(cmd, PSTR("M701 T%i"), int(MenuItemBase::itemIndex));
|
||||
lcd_enqueue_one_now(cmd);
|
||||
queue.inject(cmd);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -181,7 +182,7 @@ void _menu_temp_filament_op(const PauseMode mode, const int8_t extruder) {
|
||||
ACTION_ITEM_N_P(s, msg_unload, []{
|
||||
char cmd[12];
|
||||
sprintf_P(cmd, PSTR("M702 T%i"), int(MenuItemBase::itemIndex));
|
||||
lcd_enqueue_one_now(cmd);
|
||||
queue.inject(cmd);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +29,8 @@
|
||||
#if HAS_LCD_MENU && ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
|
||||
#include "menu.h"
|
||||
#include "../../gcode/gcode.h"
|
||||
#include "../../gcode/queue.h"
|
||||
#include "../../module/planner.h"
|
||||
#include "../../module/configuration_store.h"
|
||||
#include "../../feature/bedlevel/bedlevel.h"
|
||||
@ -106,15 +108,13 @@ void lcd_z_offset_edit_setup(const float &initial) {
|
||||
* UBL Build Custom Mesh Command
|
||||
*/
|
||||
void _lcd_ubl_build_custom_mesh() {
|
||||
char ubl_lcd_gcode[20];
|
||||
queue.inject_P(G28_STR);
|
||||
char ubl_lcd_gcode[64];
|
||||
#if HAS_HEATED_BED
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("M190 S%i"), custom_bed_temp);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G28\nM190 S%i\nM109 S%i\nG29 P1"), custom_bed_temp, custom_hotend_temp);
|
||||
#else
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G28\nM109 S%i\nG29 P1"), custom_hotend_temp);
|
||||
#endif
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("M109 S%i"), custom_hotend_temp);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
queue.inject_P(PSTR("G29 P1"));
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -144,7 +144,7 @@ void _lcd_ubl_adjust_height_cmd() {
|
||||
const int ind = ubl_height_amount > 0 ? 9 : 10;
|
||||
strcpy_P(ubl_lcd_gcode, PSTR("G29 P6 C -"));
|
||||
sprintf_P(&ubl_lcd_gcode[ind], PSTR(".%i"), ABS(ubl_height_amount));
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -187,16 +187,9 @@ void _lcd_ubl_edit_mesh() {
|
||||
*/
|
||||
void _lcd_ubl_validate_custom_mesh() {
|
||||
char ubl_lcd_gcode[24];
|
||||
const int temp =
|
||||
#if HAS_HEATED_BED
|
||||
custom_bed_temp
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
;
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G26 C B%i H%i P"), temp, custom_hotend_temp);
|
||||
lcd_enqueue_one_now_P(G28_STR);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
const int temp = TERN(HAS_HEATED_BED, custom_bed_temp, 0);
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G28\nG26 C B%i H%i P"), temp, custom_hotend_temp);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -237,7 +230,7 @@ void _lcd_ubl_grid_level() {
|
||||
ACTION_ITEM(MSG_UBL_MESH_LEVEL, []{
|
||||
char ubl_lcd_gcode[12];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 J%i"), side_points);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
});
|
||||
END_MENU();
|
||||
}
|
||||
@ -265,7 +258,7 @@ void _lcd_ubl_mesh_leveling() {
|
||||
void _lcd_ubl_fillin_amount_cmd() {
|
||||
char ubl_lcd_gcode[18];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 P3 R C.%i"), ubl_fillin_amount);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
gcode.process_subcommands_now(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -355,22 +348,20 @@ void _lcd_ubl_build_mesh() {
|
||||
* UBL Load Mesh Command
|
||||
*/
|
||||
void _lcd_ubl_load_mesh_cmd() {
|
||||
char ubl_lcd_gcode[25];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 L%i"), ubl_storage_slot);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_LOADED), ubl_storage_slot);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
char ubl_lcd_gcode[40];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 L%i\nM117 "), ubl_storage_slot);
|
||||
sprintf_P(&ubl_lcd_gcode[strlen(ubl_lcd_gcode)], GET_TEXT(MSG_MESH_LOADED), ubl_storage_slot);
|
||||
gcode.process_subcommands_now(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
* UBL Save Mesh Command
|
||||
*/
|
||||
void _lcd_ubl_save_mesh_cmd() {
|
||||
char ubl_lcd_gcode[25];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 S%i"), ubl_storage_slot);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
sprintf_P(ubl_lcd_gcode, GET_TEXT(MSG_MESH_SAVED), ubl_storage_slot);
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
char ubl_lcd_gcode[40];
|
||||
sprintf_P(ubl_lcd_gcode, PSTR("G29 S%i\nM117 "), ubl_storage_slot);
|
||||
sprintf_P(&ubl_lcd_gcode[strlen(ubl_lcd_gcode)], GET_TEXT(MSG_MESH_SAVED), ubl_storage_slot);
|
||||
gcode.process_subcommands_now(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -418,7 +409,7 @@ void _lcd_ubl_map_lcd_edit_cmd() {
|
||||
dtostrf(ubl.mesh_index_to_xpos(x_plot), 0, 2, str);
|
||||
dtostrf(ubl.mesh_index_to_ypos(y_plot), 0, 2, str2);
|
||||
snprintf_P(ubl_lcd_gcode, sizeof(ubl_lcd_gcode), PSTR("G29 P4 X%s Y%s R%i"), str, str2, int(n_edit_pts));
|
||||
lcd_enqueue_one_now(ubl_lcd_gcode);
|
||||
queue.inject(ubl_lcd_gcode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user