diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index ae04ede85..248505ef0 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -764,10 +764,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); @@ -1101,16 +1099,16 @@ 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 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) @@ -1420,9 +1418,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); @@ -3956,7 +3952,6 @@ void process_commands() if (code_seen_P(PSTR("Ping"))) { // PRUSA Ping if (farm_mode) { PingTime = _millis(); - //MYSERIAL.print(farm_no); MYSERIAL.println(": OK"); } } else if (code_seen_P(PSTR("PRN"))) { // PRUSA PRN @@ -3966,14 +3961,6 @@ void process_commands() gcode_PRUSA_BadRAMBoFanTest(); }else if (code_seen_P(PSTR("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_P(PSTR("fn"))) { // PRUSA fn - if (farm_mode) { - printf_P(_N("%d"), farm_no); - } - else { - puts_P(_N("Not in farm mode.")); - } - } else if (code_seen_P(PSTR("thx"))) // PRUSA thx { @@ -3989,20 +3976,16 @@ void process_commands() mmu_reset(); } else if (code_seen_P(PSTR("RESET"))) { // PRUSA RESET - // careful! - if (farm_mode) { -#if (defined(WATCHDOG) && (MOTHERBOARD == BOARD_EINSY_1_0a)) - boot_app_magic = BOOT_APP_MAGIC; - boot_app_flags = BOOT_APP_FLG_RUN; - softReset(); -#else //WATCHDOG - asm volatile("jmp 0x3E000"); -#endif //WATCHDOG - } - else { - MYSERIAL.println("Not in farm mode."); // @@TODO - } - }else if (code_seen_P(PSTR("fv"))) { // PRUSA fv +#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(); +#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 + }else if (code_seen("fv")) { // PRUSA fv // get file version #ifdef SDSUPPORT card.openFile(strchr_pointer + 3,true); @@ -5629,10 +5612,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 @@ -8342,7 +8324,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 c33f47bed..e85d0ee9c 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,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(); @@ -671,39 +669,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_print(' '); - } - - } - else { -#ifdef SNMM - lcd_puts_P(PSTR(" E")); - lcd_print(get_ext_nr() + 1); - -#else - lcd_set_cursor(LCD_WIDTH - 8 - 2, 2); - lcd_print(' '); -#endif - } -*/ + lcd_printf_P(_N(" FRM ")); } #ifdef CMD_DIAGNOSTICS @@ -1479,7 +1445,6 @@ void lcd_commands() if (lcd_commands_step == 1 && !blocks_queued()) { - lcd_confirm_print(); lcd_commands_step = 0; lcd_commands_type = LcdCommands::Idle; } @@ -3994,7 +3959,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(); @@ -4079,7 +4044,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); @@ -4087,7 +4052,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); @@ -4095,22 +4060,21 @@ 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]"); + prusa_stat_farm_number(); status_number = 0; - SERIAL_ECHO(farm_no); - SERIAL_ECHO(']'); farm_timer = 2; break; case 20: // echo farm no @@ -4126,7 +4090,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; @@ -4145,12 +4109,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_ECHO(farm_no); - SERIAL_ECHO(']'); - + prusa_stat_farm_number(); break; } SERIAL_ECHOLN('}'); @@ -4159,47 +4120,45 @@ 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_ECHO(farm_no); - SERIAL_ECHO(']'); + SERIAL_ECHOPGM("[PFN:0]"); } 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); @@ -4208,8 +4167,8 @@ static void prusa_stat_printinfo() { SERIAL_ECHO(0); } - SERIAL_ECHO("][FWR:"); - SERIAL_ECHO(FW_VERSION); + SERIAL_ECHOPGM("][FWR:"); + SERIAL_ECHORPGM(FW_VERSION_STR_P()); SERIAL_ECHO(']'); prusa_stat_diameter(); } @@ -5795,7 +5754,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); } @@ -6397,74 +6355,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: @@ -6549,83 +6439,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_space(10); - lcd_set_cursor(0, 3); lcd_space(10); - lcd_puts_at_P(2, 2, _T(MSG_YES)); - lcd_puts_at_P(2, 3, _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 @@ -6818,6 +6631,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 } @@ -6906,14 +6721,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) { @@ -7104,7 +6912,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 diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index b23a66919..62aed6dff 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,7 +126,6 @@ extern CustomMsg custom_message_type; extern unsigned int custom_message_state; extern uint8_t farm_mode; -extern int farm_no; extern int farm_timer; extern uint8_t farm_status;