From a9d8ddc89caac0b8c64aaa94eedd9fd5ee05339b Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 19 Jan 2021 09:58:02 +0100 Subject: [PATCH 01/12] Farmers' requests 1 - remove the UI and related stuff to setting a farm number (the communication protocol must remain intact) - remove confirmation after print finished ("Print OK") Both requests are highly welcome, since they allow for lowering the code size by >1KB PFW-963, PFW-927 --- Firmware/Marlin_main.cpp | 22 +++++++-------- Firmware/ultralcd.cpp | 61 +++++++++------------------------------- Firmware/ultralcd.h | 5 ++-- 3 files changed, 28 insertions(+), 60 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 9da891d87..5929273db 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -714,10 +714,10 @@ static void factory_reset(char level) // Force the "Follow calibration flow" message at the next boot up. calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION); eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard - farm_no = 0; +// farm_no = 0; farm_mode = false; eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); - EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); +// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0); eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); @@ -1051,10 +1051,10 @@ void setup() setup_powerhold(); farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF && farm_no == 0) || ((uint16_t)farm_no == 0xFFFF)) +// EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); + if ((farm_mode == 0xFF /*&& farm_no == 0*/) /*|| ((uint16_t)farm_no == 0xFFFF)*/) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if ((uint16_t)farm_no == 0xFFFF) farm_no = 0; +// if ((uint16_t)farm_no == 0xFFFF) farm_no = 0; if (farm_mode) { no_response = true; //we need confirmation by recieving PRUSA thx @@ -1370,9 +1370,9 @@ void setup() #endif farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == static_cast(0xFFFF))) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if (farm_no == static_cast(0xFFFF)) farm_no = 0; +// EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); + if ((farm_mode == 0xFF /*&& farm_no == 0*/) /*|| (farm_no == static_cast(0xFFFF))*/) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode +// if (farm_no == static_cast(0xFFFF)) farm_no = 0; if (farm_mode) { prusa_statistics(8); @@ -3893,7 +3893,7 @@ void process_commands() gcode_PRUSA_BadRAMBoFanTest(); }else if (code_seen("FAN")) { // PRUSA FAN printf_P(_N("E0:%d RPM\nPRN0:%d RPM\n"), 60*fan_speed[0], 60*fan_speed[1]); - }else if (code_seen("fn")) { // PRUSA fn + }/*else if (code_seen("fn")) { // PRUSA fn if (farm_mode) { printf_P(_N("%d"), farm_no); } @@ -3901,7 +3901,7 @@ void process_commands() puts_P(_N("Not in farm mode.")); } - } + }*/ else if (code_seen("thx")) // PRUSA thx { no_response = false; @@ -5556,7 +5556,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT) farm_mode = 1; PingTime = _millis(); eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); - EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); +// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); SilentModeMenu = SILENT_MODE_OFF; eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); fCheckModeInit(); // alternatively invoke printer reset diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a12db7f48..62585c064 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -89,7 +89,6 @@ unsigned int custom_message_state = 0; bool isPrintPaused = false; uint8_t farm_mode = 0; -int farm_no = 0; int farm_timer = 8; uint8_t farm_status = 0; bool printer_connected = true; @@ -137,7 +136,7 @@ static void prusa_stat_farm_number(); static void prusa_stat_diameter(); static void prusa_stat_temperatures(); static void prusa_stat_printinfo(); -static void lcd_farm_no(); +//static void lcd_farm_no(); static void lcd_menu_xyz_y_min(); static void lcd_menu_xyz_skew(); static void lcd_menu_xyz_offset(); @@ -671,39 +670,7 @@ void lcdui_print_extruder(void) // Print farm number (5 chars total) void lcdui_print_farm(void) { - int chars = lcd_printf_P(_N(" F0 ")); -// lcd_space(5 - chars); -/* - // Farm number display - if (farm_mode) - { - lcd_set_cursor(6, 2); - lcd_puts_P(PSTR(" F")); - lcd_print(farm_no); - lcd_puts_P(PSTR(" ")); - - // Beat display - lcd_set_cursor(LCD_WIDTH - 1, 0); - if ( (_millis() - kicktime) < 60000 ) { - - lcd_puts_P(PSTR("L")); - - }else{ - lcd_puts_P(PSTR(" ")); - } - - } - else { -#ifdef SNMM - lcd_puts_P(PSTR(" E")); - lcd_print(get_ext_nr() + 1); - -#else - lcd_set_cursor(LCD_WIDTH - 8 - 2, 2); - lcd_puts_P(PSTR(" ")); -#endif - } -*/ + lcd_printf_P(_N(" F0 ")); } #ifdef CMD_DIAGNOSTICS @@ -1486,7 +1453,7 @@ void lcd_commands() if (lcd_commands_step == 1 && !blocks_queued()) { - lcd_confirm_print(); +// lcd_confirm_print(); lcd_commands_step = 0; lcd_commands_type = LcdCommands::Idle; } @@ -5833,7 +5800,7 @@ static void lcd_settings_menu() if (farm_mode) { - MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); +// MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); MENU_ITEM_FUNCTION_P(PSTR("Disable farm mode"), lcd_disable_farm_mode); } @@ -6465,7 +6432,7 @@ void unload_filament() } -static void lcd_farm_no() +/*static void lcd_farm_no() { char step = 0; int enc_dif = 0; @@ -6520,8 +6487,8 @@ static void lcd_farm_no() step++; if(step == 3) { _ret = 1; - farm_no = _farmno; - EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); +// farm_no = _farmno; +// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); prusa_statistics(20); lcd_return_to_status(); } @@ -6530,7 +6497,7 @@ static void lcd_farm_no() manage_heater(); } while (_ret == 0); -} +}*/ unsigned char lcd_choose_color() { @@ -6617,7 +6584,7 @@ unsigned char lcd_choose_color() { } -void lcd_confirm_print() +/*void lcd_confirm_print() { uint8_t filament_type; int enc_dif = 0; @@ -6694,7 +6661,7 @@ void lcd_confirm_print() } while (_ret == 0); -} +}*/ #include "w25x20cl.h" @@ -6978,10 +6945,10 @@ static void lcd_main_menu() if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) { - if (farm_mode) - { - MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); - } +// if (farm_mode) +// { +// MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); +// } } else { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index cca4eced3..6da57a918 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -47,7 +47,7 @@ void lcd_pause_print(); void lcd_resume_print(); void lcd_print_stop(); void prusa_statistics(int _message, uint8_t _col_nr = 0); -void lcd_confirm_print(); +//void lcd_confirm_print(); unsigned char lcd_choose_color(); void lcd_load_filament_color_check(); //void lcd_mylang(); @@ -127,7 +127,8 @@ extern CustomMsg custom_message_type; extern unsigned int custom_message_state; extern uint8_t farm_mode; -extern int farm_no; +// Farmers request removal of farm_no from the FW +constexpr const int farm_no = 0; extern int farm_timer; extern uint8_t farm_status; From 3f5cfc4e610e17db600382160ddd019f30096a55 Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Tue, 19 Jan 2021 13:06:23 +0200 Subject: [PATCH 02/12] Move the change filament button to the main menu when farm printing PFW-945 --- Firmware/ultralcd.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 62585c064..4ac781542 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6855,6 +6855,8 @@ static void lcd_main_menu() if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag) { + if (farm_mode) + MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8 MENU_ITEM_SUBMENU_P(_T(MSG_BABYSTEP_Z), lcd_babystep_z);//8 } @@ -7141,7 +7143,8 @@ static void lcd_tune_menu() MENU_ITEM_EDIT_advance_K();//7 #endif #ifdef FILAMENTCHANGEENABLE - MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8 + if (!farm_mode) + MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8 #endif #ifdef FILAMENT_SENSOR From 9b847715ac547c5798070facff5a356d0ba6ac18 Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Tue, 19 Jan 2021 13:11:25 +0200 Subject: [PATCH 03/12] Rename F0 to FRM on the status screen --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4ac781542..85b031a38 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -670,7 +670,7 @@ void lcdui_print_extruder(void) // Print farm number (5 chars total) void lcdui_print_farm(void) { - lcd_printf_P(_N(" F0 ")); + lcd_printf_P(_N(" FRM ")); } #ifdef CMD_DIAGNOSTICS From 542677c0804d46a65afadd491ee021ad50aae76e Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Tue, 19 Jan 2021 13:11:48 +0200 Subject: [PATCH 04/12] Prevent switching to serial port 1 on miniRambo and such --- Firmware/Marlin_main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5929273db..8b2b04781 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1060,7 +1060,9 @@ void setup() no_response = true; //we need confirmation by recieving PRUSA thx important_status = 8; prusa_statistics(8); +#ifdef HAS_SECOND_SERIAL_PORT selectedSerialPort = 1; +#endif //HAS_SECOND_SERIAL_PORT MYSERIAL.begin(BAUDRATE); #ifdef TMC2130 //increased extruder current (PFW363) From 48b4bdfe8e813e2271c900abee3af4fc65cbe6a0 Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Tue, 19 Jan 2021 13:36:08 +0200 Subject: [PATCH 05/12] Make the PRUSA RESET command functional on the miniRambo --- Firmware/Marlin_main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8b2b04781..07d3516ba 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3920,9 +3920,11 @@ void process_commands() else if (code_seen("RESET")) { // PRUSA RESET // careful! if (farm_mode) { -#if (defined(WATCHDOG) && (MOTHERBOARD == BOARD_EINSY_1_0a)) +#ifdef WATCHDOG +#if defined(W25X20CL) && defined(BOOTAPP) boot_app_magic = BOOT_APP_MAGIC; boot_app_flags = BOOT_APP_FLG_RUN; +#endif //defined(W25X20CL) && defined(BOOTAPP) softReset(); #else //WATCHDOG asm volatile("jmp 0x3E000"); From 70d254a1fc69d3ad08a82a94c3ec698e1b48a1f0 Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Tue, 19 Jan 2021 13:39:21 +0200 Subject: [PATCH 06/12] Allow resetting when not in farm mode --- Firmware/Marlin_main.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 07d3516ba..c403ac617 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3918,21 +3918,19 @@ void process_commands() mmu_reset(); } else if (code_seen("RESET")) { // PRUSA RESET - // careful! - if (farm_mode) { #ifdef WATCHDOG #if defined(W25X20CL) && defined(BOOTAPP) - boot_app_magic = BOOT_APP_MAGIC; - boot_app_flags = BOOT_APP_FLG_RUN; + boot_app_magic = BOOT_APP_MAGIC; + boot_app_flags = BOOT_APP_FLG_RUN; #endif //defined(W25X20CL) && defined(BOOTAPP) - softReset(); + softReset(); #else //WATCHDOG + // careful! + if (farm_mode) asm volatile("jmp 0x3E000"); + else + puts_P(PSTR("Not in farm mode.")); #endif //WATCHDOG - } - else { - MYSERIAL.println("Not in farm mode."); - } }else if (code_seen("fv")) { // PRUSA fv // get file version #ifdef SDSUPPORT From 9bfada94f0cbd4f2224852b2eedd4c5d68d9e156 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 25 Jan 2021 08:38:44 +0100 Subject: [PATCH 07/12] Remove commented code --- Firmware/Marlin_main.cpp | 28 ++----- Firmware/ultralcd.cpp | 159 +-------------------------------------- 2 files changed, 7 insertions(+), 180 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5929273db..907839434 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -714,10 +714,8 @@ static void factory_reset(char level) // Force the "Follow calibration flow" message at the next boot up. calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION); eeprom_write_byte((uint8_t*)EEPROM_WIZARD_ACTIVE, 1); //run wizard -// farm_no = 0; farm_mode = false; eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); -// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0); eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0); @@ -1051,10 +1049,8 @@ void setup() setup_powerhold(); farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); -// EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF /*&& farm_no == 0*/) /*|| ((uint16_t)farm_no == 0xFFFF)*/) + if (farm_mode == 0xFF) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode -// if ((uint16_t)farm_no == 0xFFFF) farm_no = 0; if (farm_mode) { no_response = true; //we need confirmation by recieving PRUSA thx @@ -1370,9 +1366,7 @@ void setup() #endif farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); -// EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF /*&& farm_no == 0*/) /*|| (farm_no == static_cast(0xFFFF))*/) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode -// if (farm_no == static_cast(0xFFFF)) farm_no = 0; + if (farm_mode == 0xFF) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode if (farm_mode) { prusa_statistics(8); @@ -3883,7 +3877,6 @@ void process_commands() if (code_seen("Ping")) { // PRUSA Ping if (farm_mode) { PingTime = _millis(); - //MYSERIAL.print(farm_no); MYSERIAL.println(": OK"); } } else if (code_seen("PRN")) { // PRUSA PRN @@ -3893,15 +3886,7 @@ void process_commands() gcode_PRUSA_BadRAMBoFanTest(); }else if (code_seen("FAN")) { // PRUSA FAN printf_P(_N("E0:%d RPM\nPRN0:%d RPM\n"), 60*fan_speed[0], 60*fan_speed[1]); - }/*else if (code_seen("fn")) { // PRUSA fn - if (farm_mode) { - printf_P(_N("%d"), farm_no); - } - else { - puts_P(_N("Not in farm mode.")); - } - - }*/ + } else if (code_seen("thx")) // PRUSA thx { no_response = false; @@ -5556,10 +5541,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT) farm_mode = 1; PingTime = _millis(); eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); -// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); - SilentModeMenu = SILENT_MODE_OFF; - eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); - fCheckModeInit(); // alternatively invoke printer reset + SilentModeMenu = SILENT_MODE_OFF; + eeprom_update_byte((unsigned char *)EEPROM_SILENT, SilentModeMenu); + fCheckModeInit(); // alternatively invoke printer reset break; /*! ### G99 - Deactivate farm mode G99: Deactivate farm mode diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 62585c064..ed9e6fc94 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -136,7 +136,6 @@ static void prusa_stat_farm_number(); static void prusa_stat_diameter(); static void prusa_stat_temperatures(); static void prusa_stat_printinfo(); -//static void lcd_farm_no(); static void lcd_menu_xyz_y_min(); static void lcd_menu_xyz_skew(); static void lcd_menu_xyz_offset(); @@ -1453,7 +1452,6 @@ void lcd_commands() if (lcd_commands_step == 1 && !blocks_queued()) { -// lcd_confirm_print(); lcd_commands_step = 0; lcd_commands_type = LcdCommands::Idle; } @@ -5800,7 +5798,6 @@ static void lcd_settings_menu() if (farm_mode) { -// MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); MENU_ITEM_FUNCTION_P(PSTR("Disable farm mode"), lcd_disable_farm_mode); } @@ -6432,74 +6429,6 @@ void unload_filament() } -/*static void lcd_farm_no() -{ - char step = 0; - int enc_dif = 0; - int _farmno = farm_no; - int _ret = 0; - lcd_clear(); - - lcd_set_cursor(0, 0); - lcd_print("Farm no"); - - do - { - - if (abs((enc_dif - lcd_encoder_diff)) > 2) { - if (enc_dif > lcd_encoder_diff) { - switch (step) { - case(0): if (_farmno >= 100) _farmno -= 100; break; - case(1): if (_farmno % 100 >= 10) _farmno -= 10; break; - case(2): if (_farmno % 10 >= 1) _farmno--; break; - default: break; - } - } - - if (enc_dif < lcd_encoder_diff) { - switch (step) { - case(0): if (_farmno < 900) _farmno += 100; break; - case(1): if (_farmno % 100 < 90) _farmno += 10; break; - case(2): if (_farmno % 10 <= 8)_farmno++; break; - default: break; - } - } - enc_dif = 0; - lcd_encoder_diff = 0; - } - - lcd_set_cursor(0, 2); - if (_farmno < 100) lcd_print("0"); - if (_farmno < 10) lcd_print("0"); - lcd_print(_farmno); - lcd_print(" "); - lcd_set_cursor(0, 3); - lcd_print(" "); - - - lcd_set_cursor(step, 3); - lcd_print("^"); - _delay(100); - - if (lcd_clicked()) - { - _delay(200); - step++; - if(step == 3) { - _ret = 1; -// farm_no = _farmno; -// EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); - prusa_statistics(20); - lcd_return_to_status(); - } - } - - manage_heater(); - } while (_ret == 0); - -}*/ - - unsigned char lcd_choose_color() { //function returns index of currently chosen item //following part can be modified from 2 to 255 items: @@ -6584,85 +6513,6 @@ unsigned char lcd_choose_color() { } -/*void lcd_confirm_print() -{ - uint8_t filament_type; - int enc_dif = 0; - int cursor_pos = 1; - int _ret = 0; - int _t = 0; - - enc_dif = lcd_encoder_diff; - lcd_clear(); - - lcd_set_cursor(0, 0); - lcd_print("Print ok ?"); - - do - { - if (abs(enc_dif - lcd_encoder_diff) > 12) { - if (enc_dif > lcd_encoder_diff) { - cursor_pos--; - } - - if (enc_dif < lcd_encoder_diff) { - cursor_pos++; - } - enc_dif = lcd_encoder_diff; - } - - if (cursor_pos > 2) { cursor_pos = 2; } - if (cursor_pos < 1) { cursor_pos = 1; } - - lcd_set_cursor(0, 2); lcd_print(" "); - lcd_set_cursor(0, 3); lcd_print(" "); - lcd_set_cursor(2, 2); - lcd_puts_P(_T(MSG_YES)); - lcd_set_cursor(2, 3); - lcd_puts_P(_T(MSG_NO)); - lcd_set_cursor(0, 1 + cursor_pos); - lcd_print(">"); - _delay(100); - - _t = _t + 1; - if (_t>100) - { - prusa_statistics(99); - _t = 0; - } - if (lcd_clicked()) - { - filament_type = FARM_FILAMENT_COLOR_NONE; - if (cursor_pos == 1) - { - _ret = 1; -// filament_type = lcd_choose_color(); - prusa_statistics(4, filament_type); - no_response = true; //we need confirmation by recieving PRUSA thx - important_status = 4; - saved_filament_type = filament_type; - NcTime = _millis(); - } - if (cursor_pos == 2) - { - _ret = 2; -// filament_type = lcd_choose_color(); - prusa_statistics(5, filament_type); - no_response = true; //we need confirmation by recieving PRUSA thx - important_status = 5; - saved_filament_type = filament_type; - NcTime = _millis(); - } - } - - manage_heater(); - manage_inactivity(); - proc_commands(); - - } while (_ret == 0); - -}*/ - #include "w25x20cl.h" #ifdef LCD_TEST @@ -6943,14 +6793,7 @@ static void lcd_main_menu() } - if (IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal)) - { -// if (farm_mode) -// { -// MENU_ITEM_SUBMENU_P(PSTR("Farm number"), lcd_farm_no); -// } - } - else + if ( ! ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LcdCommands::Layer1Cal) ) ) { if (mmu_enabled) { From 6a62674bd8a6640f7e25e82ad6f351deb8d839f4 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 25 Jan 2021 08:43:37 +0100 Subject: [PATCH 08/12] Keep PRUSA RESET available even in non-farm mode --- Firmware/Marlin_main.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 6e4bf1446..196e3a590 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3910,11 +3910,7 @@ void process_commands() #endif //defined(W25X20CL) && defined(BOOTAPP) softReset(); #else //WATCHDOG - // careful! - if (farm_mode) - asm volatile("jmp 0x3E000"); - else - puts_P(PSTR("Not in farm mode.")); + asm volatile("jmp 0x3E000"); #endif //WATCHDOG }else if (code_seen("fv")) { // PRUSA fv // get file version From 9fa9d6b0631c86875129b14a93ef84fc51cac55c Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Mon, 25 Jan 2021 09:48:17 +0200 Subject: [PATCH 09/12] Move farm strings to PROGMEM --- Firmware/ultralcd.cpp | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 6ca163dfd..905ce3112 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3997,7 +3997,7 @@ void lcd_menu_show_sensors_state() // NOT static due to using ins } void prusa_statistics_err(char c){ - SERIAL_ECHO("{[ERR:"); + SERIAL_ECHOPGM("{[ERR:"); SERIAL_ECHO(c); SERIAL_ECHO(']'); prusa_stat_farm_number(); @@ -4082,7 +4082,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { return; break; case 4: // print succesfull - SERIAL_ECHO("{[RES:1][FIL:"); + SERIAL_ECHOPGM("{[RES:1][FIL:"); MYSERIAL.print(int(_fil_nr)); SERIAL_ECHO(']'); prusa_stat_printerstatus(status_number); @@ -4090,7 +4090,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { farm_timer = 2; break; case 5: // print not succesfull - SERIAL_ECHO("{[RES:0][FIL:"); + SERIAL_ECHOPGM("{[RES:0][FIL:"); MYSERIAL.print(int(_fil_nr)); SERIAL_ECHO(']'); prusa_stat_printerstatus(status_number); @@ -4098,19 +4098,19 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { farm_timer = 2; break; case 6: // print done - SERIAL_ECHO("{[PRN:8]"); + SERIAL_ECHOPGM("{[PRN:8]"); prusa_stat_farm_number(); status_number = 8; farm_timer = 2; break; case 7: // print done - stopped - SERIAL_ECHO("{[PRN:9]"); + SERIAL_ECHOPGM("{[PRN:9]"); prusa_stat_farm_number(); status_number = 9; farm_timer = 2; break; case 8: // printer started - SERIAL_ECHO("{[PRN:0][PFN:"); + SERIAL_ECHOPGM("{[PRN:0][PFN:"); status_number = 0; SERIAL_ECHO(farm_no); SERIAL_ECHO(']'); @@ -4129,7 +4129,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { prusa_stat_printerstatus(status_number); break; case 22: // waiting for filament change - SERIAL_ECHO("{[PRN:5]"); + SERIAL_ECHOPGM("{[PRN:5]"); prusa_stat_farm_number(); status_number = 5; break; @@ -4148,9 +4148,9 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { break; case 99: // heartbeat - SERIAL_ECHO("{[PRN:99]"); + SERIAL_ECHOPGM("{[PRN:99]"); prusa_stat_temperatures(); - SERIAL_ECHO("[PFN:"); + SERIAL_ECHOPGM("[PFN:"); SERIAL_ECHO(farm_no); SERIAL_ECHO(']'); @@ -4162,47 +4162,47 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { static void prusa_stat_printerstatus(int _status) { - SERIAL_ECHO("[PRN:"); + SERIAL_ECHOPGM("[PRN:"); SERIAL_ECHO(_status); SERIAL_ECHO(']'); } static void prusa_stat_farm_number() { - SERIAL_ECHO("[PFN:"); + SERIAL_ECHOPGM("[PFN:"); SERIAL_ECHO(farm_no); SERIAL_ECHO(']'); } static void prusa_stat_diameter() { - SERIAL_ECHO("[DIA:"); + SERIAL_ECHOPGM("[DIA:"); SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM)); SERIAL_ECHO(']'); } static void prusa_stat_temperatures() { - SERIAL_ECHO("[ST0:"); + SERIAL_ECHOPGM("[ST0:"); SERIAL_ECHO(target_temperature[0]); - SERIAL_ECHO("][STB:"); + SERIAL_ECHOPGM("][STB:"); SERIAL_ECHO(target_temperature_bed); - SERIAL_ECHO("][AT0:"); + SERIAL_ECHOPGM("][AT0:"); SERIAL_ECHO(current_temperature[0]); - SERIAL_ECHO("][ATB:"); + SERIAL_ECHOPGM("][ATB:"); SERIAL_ECHO(current_temperature_bed); SERIAL_ECHO(']'); } static void prusa_stat_printinfo() { - SERIAL_ECHO("[TFU:"); + SERIAL_ECHOPGM("[TFU:"); SERIAL_ECHO(total_filament_used); - SERIAL_ECHO("][PCD:"); + SERIAL_ECHOPGM("][PCD:"); SERIAL_ECHO(itostr3(card.percentDone())); - SERIAL_ECHO("][FEM:"); + SERIAL_ECHOPGM("][FEM:"); SERIAL_ECHO(itostr3(feedmultiply)); - SERIAL_ECHO("][FNM:"); + SERIAL_ECHOPGM("][FNM:"); SERIAL_ECHO(longFilenameOLD); - SERIAL_ECHO("][TIM:"); + SERIAL_ECHOPGM("][TIM:"); if (starttime != 0) { SERIAL_ECHO(_millis() / 1000 - starttime / 1000); @@ -4211,7 +4211,7 @@ static void prusa_stat_printinfo() { SERIAL_ECHO(0); } - SERIAL_ECHO("][FWR:"); + SERIAL_ECHOPGM("][FWR:"); SERIAL_ECHO(FW_VERSION); SERIAL_ECHO(']'); prusa_stat_diameter(); From 4f769f0faa7487cb24d342e3baad9e3ac4196b8b Mon Sep 17 00:00:00 2001 From: Voinea Dragos Date: Mon, 25 Jan 2021 09:58:12 +0200 Subject: [PATCH 10/12] PRUSA RESET safety precaution --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 196e3a590..d57c6c55e 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3909,9 +3909,9 @@ void process_commands() boot_app_flags = BOOT_APP_FLG_RUN; #endif //defined(W25X20CL) && defined(BOOTAPP) softReset(); -#else //WATCHDOG +#elif defined(BOOTAPP) //this is a safety precaution. This is because the new bootloader turns off the heaters, but the old one doesn't. The watchdog should be used most of the time. asm volatile("jmp 0x3E000"); -#endif //WATCHDOG +#endif }else if (code_seen("fv")) { // PRUSA fv // get file version #ifdef SDSUPPORT From c1ff6242b07488cb6bf5811030a92fe439c0570c Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 25 Jan 2021 09:03:04 +0100 Subject: [PATCH 11/12] Avoid copying FW version number into RAM - use the PROGMEM string --- Firmware/Marlin_main.cpp | 2 +- Firmware/ultralcd.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index d57c6c55e..4c14cc3bf 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8218,7 +8218,7 @@ Sigma_Exit: if(code_seen('P')) fw_version_check(++strchr_pointer); else if(code_seen('Q')) - SERIAL_PROTOCOLLN(FW_VERSION); + SERIAL_PROTOCOLLNRPGM(FW_VERSION_STR_P()); break; case ClPrintChecking::_Gcode: // ~ .5 if(code_seen('P')) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 905ce3112..c7ebbbbe0 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4212,7 +4212,7 @@ static void prusa_stat_printinfo() SERIAL_ECHO(0); } SERIAL_ECHOPGM("][FWR:"); - SERIAL_ECHO(FW_VERSION); + SERIAL_ECHORPGM(FW_VERSION_STR_P()); SERIAL_ECHO(']'); prusa_stat_diameter(); } From 514321f2ce497cd8fffccf47a90f9905f1a76581 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 25 Jan 2021 11:09:28 +0100 Subject: [PATCH 12/12] Remove farm_no completely + reuse prusa_stat_farm_number() where applicable --- Firmware/ultralcd.cpp | 14 ++++---------- Firmware/ultralcd.h | 3 --- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c7ebbbbe0..2f4860afa 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4110,10 +4110,9 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { farm_timer = 2; break; case 8: // printer started - SERIAL_ECHOPGM("{[PRN:0][PFN:"); + SERIAL_ECHOPGM("{[PRN:0]"); + prusa_stat_farm_number(); status_number = 0; - SERIAL_ECHO(farm_no); - SERIAL_ECHO(']'); farm_timer = 2; break; case 20: // echo farm no @@ -4150,10 +4149,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { case 99: // heartbeat SERIAL_ECHOPGM("{[PRN:99]"); prusa_stat_temperatures(); - SERIAL_ECHOPGM("[PFN:"); - SERIAL_ECHO(farm_no); - SERIAL_ECHO(']'); - + prusa_stat_farm_number(); break; } SERIAL_ECHOLN('}'); @@ -4168,9 +4164,7 @@ static void prusa_stat_printerstatus(int _status) } static void prusa_stat_farm_number() { - SERIAL_ECHOPGM("[PFN:"); - SERIAL_ECHO(farm_no); - SERIAL_ECHO(']'); + SERIAL_ECHOPGM("[PFN:0]"); } static void prusa_stat_diameter() { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 6da57a918..e3e64fa53 100755 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -47,7 +47,6 @@ void lcd_pause_print(); void lcd_resume_print(); void lcd_print_stop(); void prusa_statistics(int _message, uint8_t _col_nr = 0); -//void lcd_confirm_print(); unsigned char lcd_choose_color(); void lcd_load_filament_color_check(); //void lcd_mylang(); @@ -127,8 +126,6 @@ extern CustomMsg custom_message_type; extern unsigned int custom_message_state; extern uint8_t farm_mode; -// Farmers request removal of farm_no from the FW -constexpr const int farm_no = 0; extern int farm_timer; extern uint8_t farm_status;