Merge pull request from DRracer/farm-patch1

Farmers' requests
This commit is contained in:
DRracer 2021-01-25 11:15:44 +01:00 committed by GitHub
commit 58351fb27a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 260 deletions

View file

@ -763,10 +763,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);
@ -1100,16 +1098,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)
@ -1419,9 +1417,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<int>(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<int>(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);
@ -3957,7 +3953,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
@ -3967,14 +3962,6 @@ 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
{
@ -3990,19 +3977,15 @@ void process_commands()
mmu_reset();
}
else if (code_seen("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.");
}
#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
@ -5630,10 +5613,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 <a href="https://reprap.org/wiki/G-code#G99:_Deactivate_farm_mode">G99: Deactivate farm mode</a>
@ -8344,7 +8326,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'))

View file

@ -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_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(" FRM "));
}
#ifdef CMD_DIAGNOSTICS
@ -1486,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;
}
@ -4043,7 +4008,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();
@ -4128,7 +4093,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);
@ -4136,7 +4101,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);
@ -4144,22 +4109,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
@ -4175,7 +4139,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;
@ -4194,12 +4158,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('}');
@ -4208,47 +4169,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);
@ -4257,8 +4216,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();
}
@ -5844,7 +5803,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);
}
@ -6476,74 +6434,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:
@ -6628,85 +6518,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
@ -6899,6 +6710,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
}
@ -6987,14 +6800,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)
{
@ -7185,7 +6991,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

View file

@ -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;