diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp b/Marlin/src/lcd/extui/anycubic/Tunes.cpp
similarity index 71%
rename from Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp
rename to Marlin/src/lcd/extui/anycubic/Tunes.cpp
index d7f0e4b6d4c9c..118f049bc1f68 100644
--- a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.cpp
+++ b/Marlin/src/lcd/extui/anycubic/Tunes.cpp
@@ -21,7 +21,7 @@
*/
/**
- * lcd/extui/anycubic_vyper/Tunes.cpp
+ * lcd/extui/anycubic/Tunes.cpp
*/
/***********************************************************************
@@ -31,28 +31,23 @@
#include "../../../inc/MarlinConfigPre.h"
-#if ENABLED(ANYCUBIC_LCD_VYPER)
+#if EITHER(ANYCUBIC_LCD_CHIRON, ANYCUBIC_LCD_VYPER)
#include "Tunes.h"
+#include "../../../libs/buzzer.h"
#include "../ui_api.h"
namespace Anycubic {
- void PlayTune(const uint8_t beeperPin, const uint16_t *tune, const uint8_t speed=1) {
- uint8_t pos = 1;
- uint16_t wholenotelen = tune[0] / speed;
- do {
- uint16_t freq = tune[pos];
- uint16_t notelen = wholenotelen / tune[pos + 1];
-
- ::tone(beeperPin, freq, notelen);
- ExtUI::delay_ms(notelen);
- pos += 2;
-
- if (pos >= MAX_TUNE_LENGTH) break;
- } while (tune[pos] != n_END);
+ void PlayTune(const uint16_t *tune, const uint8_t speed=1) {
+ const uint16_t wholenotelen = tune[0] / speed;
+ for (uint8_t pos = 1; pos < MAX_TUNE_LENGTH; pos += 2) {
+ const uint16_t freq = tune[pos];
+ if (freq == n_END) break;
+ BUZZ(freq, wholenotelen / tune[pos + 1]);
+ }
}
}
-#endif // ANYCUBIC_LCD_VYPER
+#endif // ANYCUBIC_LCD_CHIRON || ANYCUBIC_LCD_VYPER
diff --git a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h b/Marlin/src/lcd/extui/anycubic/Tunes.h
similarity index 54%
rename from Marlin/src/lcd/extui/anycubic_vyper/Tunes.h
rename to Marlin/src/lcd/extui/anycubic/Tunes.h
index 9a06768ac6e05..a05107738d246 100644
--- a/Marlin/src/lcd/extui/anycubic_vyper/Tunes.h
+++ b/Marlin/src/lcd/extui/anycubic/Tunes.h
@@ -22,7 +22,7 @@
#pragma once
/**
- * lcd/extui/anycubic_vyper/Tunes.h
+ * lcd/extui/anycubic/Tunes.h
*/
/**************************************************************************
@@ -41,127 +41,23 @@
#define MAX_TUNE_LENGTH 128
-// Special notes!
-#define n_P 0 // silence or pause
-#define n_END 10000 // end of tune marker
-
// Note duration divisors
-#define l_T1 1
-#define l_T2 2
-#define l_T3 3
-#define l_T4 4
-#define l_T8 8
-#define l_T16 16
+enum { l_T1=1, l_T2 =2, l_T3=3, l_T4 =4, l_T8=8, l_T16=16 };
// Note Frequency
-#define n_C0 16
-#define n_CS0 17
-#define n_D0 18
-#define n_DS0 19
-#define n_E0 21
-#define n_F0 22
-#define n_FS0 23
-#define n_G0 25
-#define n_GS0 26
-#define n_A0 28
-#define n_AS0 29
-#define n_B0 31
-#define n_C1 33
-#define n_CS1 35
-#define n_D1 37
-#define n_DS1 39
-#define n_E1 41
-#define n_F1 44
-#define n_FS1 46
-#define n_G1 49
-#define n_GS1 52
-#define n_A1 55
-#define n_AS1 58
-#define n_B1 62
-#define n_C2 65
-#define n_CS2 69
-#define n_D2 73
-#define n_DS2 78
-#define n_E2 82
-#define n_F2 87
-#define n_FS2 93
-#define n_G2 98
-#define n_GS2 104
-#define n_A2 110
-#define n_AS2 117
-#define n_B2 123
-#define n_C3 131
-#define n_CS3 139
-#define n_D3 147
-#define n_DS3 156
-#define n_E3 165
-#define n_F3 175
-#define n_FS3 185
-#define n_G3 196
-#define n_GS3 208
-#define n_A3 220
-#define n_AS3 233
-#define n_B3 247
-#define n_C4 262
-#define n_CS4 277
-#define n_D4 294
-#define n_DS4 311
-#define n_E4 330
-#define n_F4 349
-#define n_FS4 370
-#define n_G4 392
-#define n_GS4 415
-#define n_A4 440
-#define n_AS4 466
-#define n_B4 494
-#define n_C5 523
-#define n_CS5 554
-#define n_D5 587
-#define n_DS5 622
-#define n_E5 659
-#define n_F5 698
-#define n_FS5 740
-#define n_G5 784
-#define n_GS5 831
-#define n_A5 880
-#define n_AS5 932
-#define n_B5 988
-#define n_C6 1047
-#define n_CS6 1109
-#define n_D6 1175
-#define n_DS6 1245
-#define n_E6 1319
-#define n_F6 1397
-#define n_FS6 1480
-#define n_G6 1568
-#define n_GS6 1661
-#define n_A6 1760
-#define n_AS6 1865
-#define n_B6 1976
-#define n_C7 2093
-#define n_CS7 2217
-#define n_D7 2349
-#define n_DS7 2489
-#define n_E7 2637
-#define n_F7 2794
-#define n_FS7 2960
-#define n_G7 3136
-#define n_GS7 3322
-#define n_A7 3520
-#define n_AS7 3729
-#define n_B7 3951
-#define n_C8 4186
-#define n_CS8 4435
-#define n_D8 4699
-#define n_DS8 4978
-#define n_E8 5274
-#define n_F8 5587
-#define n_FS8 5920
-#define n_G8 6272
-#define n_GS8 6645
-#define n_A8 7040
-#define n_AS8 7459
-#define n_B8 7902
+enum {
+n_P = 0, // silence or pause
+n_C0= 16, n_CS0= 17, n_D0= 18, n_DS0= 19, n_E0= 21, n_F0= 22, n_FS0= 23, n_G0= 25, n_GS0= 26, n_A0= 28, n_AS0= 29, n_B0= 31,
+n_C1= 33, n_CS1= 35, n_D1= 37, n_DS1= 39, n_E1= 41, n_F1= 44, n_FS1= 46, n_G1= 49, n_GS1= 52, n_A1= 55, n_AS1= 58, n_B1= 62,
+n_C2= 65, n_CS2= 69, n_D2= 73, n_DS2= 78, n_E2= 82, n_F2= 87, n_FS2= 93, n_G2= 98, n_GS2= 104, n_A2= 110, n_AS2= 117, n_B2= 123,
+n_C3= 131, n_CS3= 139, n_D3= 147, n_DS3= 156, n_E3= 165, n_F3= 175, n_FS3= 185, n_G3= 196, n_GS3= 208, n_A3= 220, n_AS3= 233, n_B3= 247,
+n_C4= 262, n_CS4= 277, n_D4= 294, n_DS4= 311, n_E4= 330, n_F4= 349, n_FS4= 370, n_G4= 392, n_GS4= 415, n_A4= 440, n_AS4= 466, n_B4= 494,
+n_C5= 523, n_CS5= 554, n_D5= 587, n_DS5= 622, n_E5= 659, n_F5= 698, n_FS5= 740, n_G5= 784, n_GS5= 831, n_A5= 880, n_AS5= 932, n_B5= 988,
+n_C6=1047, n_CS6=1109, n_D6=1175, n_DS6=1245, n_E6=1319, n_F6=1397, n_FS6=1480, n_G6=1568, n_GS6=1661, n_A6=1760, n_AS6=1865, n_B6=1976,
+n_C7=2093, n_CS7=2217, n_D7=2349, n_DS7=2489, n_E7=2637, n_F7=2794, n_FS7=2960, n_G7=3136, n_GS7=3322, n_A7=3520, n_AS7=3729, n_B7=3951,
+n_C8=4186, n_CS8=4435, n_D8=4699, n_DS8=4978, n_E8=5274, n_F8=5587, n_FS8=5920, n_G8=6272, n_GS8=6645, n_A8=7040, n_AS8=7459, n_B8=7902,
+n_END=10000 // end of tune marker
+};
namespace Anycubic {
@@ -194,8 +90,7 @@ namespace Anycubic {
const uint16_t Anycubic_PowerOn[] = {
1000,
n_F7,l_T8, n_P,l_T8, n_C7,l_T8, n_P,l_T8, n_D7,l_T8, n_P,l_T8,
- n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_G7,l_T4, n_P,l_T4,
- n_A7,l_T2, n_P,l_T1,
+ n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4,
n_END
};
diff --git a/Marlin/src/lcd/extui/anycubic/common_defs.h b/Marlin/src/lcd/extui/anycubic/common_defs.h
new file mode 100644
index 0000000000000..4257f1dabfb46
--- /dev/null
+++ b/Marlin/src/lcd/extui/anycubic/common_defs.h
@@ -0,0 +1,138 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+/**
+ * lcd/extui/anycubic/common_defs.h
+ */
+
+#include "../../../inc/MarlinConfigPre.h"
+
+#define ACDEBUGLEVEL 0 // 0: off, 255: all levels enabled
+
+#if ACDEBUGLEVEL
+ // Bit-masks for selective debug:
+ enum ACDebugMask : uint8_t {
+ AC_INFO = 1,
+ AC_ACTION = 2,
+ AC_FILE = 4,
+ AC_PANEL = 8,
+ AC_MARLIN = 16,
+ AC_SOME = 32,
+ AC_ALL = 64
+ };
+ #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro
+#else
+ #define ACDEBUG(mask) false
+#endif
+
+#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial
+#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path
+#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command
+#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path
+
+#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault
+#define AC_LOWEST_MESHPOINT_VAL Z_PROBE_LOW_POINT // The lowest value you can set for a single mesh point offset
+
+// TFT panel commands
+#define AC_msg_sd_card_inserted F("J00")
+#define AC_msg_sd_card_removed F("J01")
+#define AC_msg_no_sd_card F("J02")
+#define AC_msg_usb_connected F("J03")
+#define AC_msg_print_from_sd_card F("J04")
+#define AC_msg_pause F("J05")
+#define AC_msg_nozzle_heating F("J06")
+#define AC_msg_nozzle_heating_done F("J07")
+#define AC_msg_bed_heating F("J08")
+#define AC_msg_bed_heating_done F("J09")
+#define AC_msg_nozzle_temp_abnormal F("J10")
+#define AC_msg_kill_lcd F("J11")
+#define AC_msg_ready F("J12")
+#define AC_msg_low_nozzle_temp F("J13")
+#define AC_msg_print_complete F("J14")
+#define AC_msg_filament_out_alert F("J15")
+#define AC_msg_stop F("J16")
+#define AC_msg_main_board_has_reset F("J17")
+#define AC_msg_paused F("J18")
+#define AC_msg_j19_unknown F("J19")
+#define AC_msg_sd_file_open_success F("J20")
+#define AC_msg_sd_file_open_failed F("J21")
+#define AC_msg_level_monitor_finished F("J22")
+#define AC_msg_filament_out_block F("J23")
+#define AC_msg_probing_not_allowed F("J24")
+#define AC_msg_probing_complete F("J25")
+#define AC_msg_start_probing F("J26")
+#define AC_msg_version F("J27")
+
+// TFT panel messages
+#define MARLIN_msg_start_probing PSTR("Probing Point 1/25")
+#define MARLIN_msg_probing_failed PSTR("Probing Failed")
+#define MARLIN_msg_ready PSTR(" Ready.")
+#define MARLIN_msg_print_paused PSTR("Print Paused")
+#define MARLIN_msg_print_aborted PSTR("Print Aborted")
+#define MARLIN_msg_extruder_heating PSTR("E Heating...")
+#define MARLIN_msg_bed_heating PSTR("Bed Heating...")
+
+#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked")
+#define MARLIN_msg_heater_timeout PSTR("Heater Timeout")
+#define MARLIN_msg_reheating PSTR("Reheating...")
+#define MARLIN_msg_reheat_done PSTR("Reheat finished.")
+#define MARLIN_msg_filament_purging PSTR("Filament Purging...")
+
+#define MARLIN_msg_special_pause PSTR("PB") // AnyCubic
+
+#define AC_cmnd_auto_unload_filament F("M701") // Marlin unload routine
+#define AC_cmnd_auto_load_filament F("M702 M0 PB") // AnyCubic: Marlin load routine, pause for user to clean nozzle
+
+#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster
+#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82")
+#define AC_cmnd_enable_leveling F("M420SV")
+#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position
+
+namespace Anycubic {
+
+ enum heater_state_t : uint8_t {
+ AC_heater_off,
+ AC_heater_temp_set,
+ AC_heater_temp_reached
+ };
+
+ enum timer_event_t : uint8_t {
+ AC_timer_started,
+ AC_timer_paused,
+ AC_timer_stopped
+ };
+
+ enum media_event_t : uint8_t {
+ AC_media_inserted,
+ AC_media_removed,
+ AC_media_error
+ };
+
+ enum file_menu_t : uint8_t {
+ AC_menu_file,
+ AC_menu_command,
+ AC_menu_change_to_file,
+ AC_menu_change_to_command
+ };
+
+} // Anycubic
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp
index 90e3321252655..6e77b2b2fda62 100644
--- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp
+++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.cpp
@@ -63,7 +63,7 @@ FileNavigator filenavigator;
FileList FileNavigator::filelist; // Instance of the Marlin file API
uint16_t FileNavigator::lastpanelindex;
uint16_t FileNavigator::currentindex; // override the panel request
-uint8_t FileNavigator::currentfolderdepth;
+uint8_t FileNavigator::folderdepth;
uint16_t FileNavigator::currentfolderindex[MAX_FOLDER_DEPTH]; // track folder pos for iteration
char FileNavigator::currentfoldername[MAX_PATH_LEN + 1]; // Current folder path
@@ -71,7 +71,7 @@ FileNavigator::FileNavigator() { reset(); }
void FileNavigator::reset() {
currentfoldername[0] = '\0';
- currentfolderdepth = 0;
+ folderdepth = 0;
currentindex = 0;
lastpanelindex = 0;
ZERO(currentfolderindex);
@@ -84,25 +84,25 @@ void FileNavigator::reset() {
void FileNavigator::refresh() { filelist.refresh(); }
void FileNavigator::changeDIR(const char *folder) {
- if (currentfolderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth
- currentfolderindex[currentfolderdepth] = currentindex;
+ if (folderdepth >= MAX_FOLDER_DEPTH) return; // limit the folder depth
+ currentfolderindex[folderdepth] = currentindex;
strcat(currentfoldername, folder);
strcat(currentfoldername, "/");
filelist.changeDir(folder);
- currentfolderdepth++;
+ folderdepth++;
currentindex = 0;
}
void FileNavigator::upDIR() {
if (!filelist.isAtRootDir()) {
filelist.upDir();
- currentfolderdepth--;
- currentindex = currentfolderindex[currentfolderdepth]; // restore last position in the folder
+ folderdepth--;
+ currentindex = currentfolderindex[folderdepth]; // restore last position in the folder
filelist.seek(currentindex); // restore file information
}
// Remove the child folder from the stored path
- if (currentfolderdepth == 0)
+ if (folderdepth == 0)
currentfoldername[0] = '\0';
else {
char * const pos = strchr(currentfoldername, '/');
@@ -122,7 +122,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) {
changeDIR(filelist.shortFilename());
} // valid file
if (currentindex == filelist.count()) {
- if (currentfolderdepth > 0) {
+ if (folderdepth > 0) {
upDIR();
currentindex++;
}
@@ -147,7 +147,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) {
}
lastpanelindex = index;
- if (currentindex == 0 && currentfolderdepth > 0) { // Add a link to go up a folder
+ if (currentindex == 0 && folderdepth > 0) { // Add a link to go up a folder
// The new panel ignores entries that don't end in .GCO or .gcode so add and pad them.
if (paneltype <= AC_panel_new) {
TFTSer.println("<<.GCO");
@@ -186,7 +186,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) {
}
else { // Not DIR
TFTSer.write('/');
- if (currentfolderdepth > 0) TFTSer.print(currentfoldername);
+ if (folderdepth > 0) TFTSer.print(currentfoldername);
TFTSer.println(filelist.shortFilename());
TFTSer.print(filelist.longFilename());
@@ -221,7 +221,7 @@ void FileNavigator::skiptofileindex(uint16_t skip) {
} // valid file
if (currentindex == filelist.count()) {
- if (currentfolderdepth > 0) {
+ if (folderdepth > 0) {
upDIR();
currentindex++;
}
@@ -233,9 +233,9 @@ void FileNavigator::skiptofileindex(uint16_t skip) {
void FileNavigator::sendFile(panel_type_t paneltype) {
TFTSer.write('/');
- if (currentfolderdepth > 0) TFTSer.print(currentfoldername);
+ if (folderdepth > 0) TFTSer.print(currentfoldername);
TFTSer.println(filelist.shortFilename());
- if (currentfolderdepth > 0) TFTSer.print(currentfoldername);
+ if (folderdepth > 0) TFTSer.print(currentfoldername);
TFTSer.println(filelist.longFilename());
}
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h
index ca4283f54ba3a..71236c4df9575 100644
--- a/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h
+++ b/Marlin/src/lcd/extui/anycubic_chiron/FileNavigator.h
@@ -36,26 +36,26 @@ using namespace ExtUI;
namespace Anycubic {
-class FileNavigator {
- public:
- FileNavigator();
- static void reset();
- static void getFiles(uint16_t, panel_type_t, uint8_t filesneeded=4);
- static void upDIR();
- static void changeDIR(const char *);
- static void sendFile(panel_type_t);
- static void refresh();
- static void skiptofileindex(uint16_t);
-
- static FileList filelist;
- private:
- static uint16_t lastpanelindex;
- static uint16_t currentindex;
- static uint8_t currentfolderdepth;
- static uint16_t currentfolderindex[MAX_FOLDER_DEPTH];
- static char currentfoldername[MAX_PATH_LEN + 1];
-};
-
-extern FileNavigator filenavigator;
+ class FileNavigator {
+ public:
+ static FileList filelist;
+
+ FileNavigator();
+ static void reset();
+ static void getFiles(uint16_t, panel_type_t, uint8_t filesneeded=4);
+ static void upDIR();
+ static void changeDIR(const char *);
+ static void sendFile(panel_type_t);
+ static void refresh();
+ static void skiptofileindex(uint16_t);
+ private:
+ static uint16_t lastpanelindex;
+ static uint16_t currentindex;
+ static uint8_t folderdepth;
+ static uint16_t currentfolderindex[MAX_FOLDER_DEPTH];
+ static char currentfoldername[MAX_PATH_LEN + 1];
+ };
+
+ extern FileNavigator filenavigator;
}
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp b/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp
deleted file mode 100644
index adbf98e3bb820..0000000000000
--- a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-
-/**
- * lcd/extui/anycubic_chiron/Tunes.cpp
- *
- * Extensible_UI implementation for Anycubic Chiron
- * Written By Nick Wells, 2020 [https://github.com/SwiftNick]
- * (not affiliated with Anycubic, Ltd.)
- */
-
-/***********************************************************************
- * A Utility to play tunes using the buzzer in the printer controller. *
- * See Tunes.h for note and tune definitions. *
- ***********************************************************************/
-
-#include "../../../inc/MarlinConfigPre.h"
-
-// TODO: Use Marlin's built-in tone player instead.
-
-#if ENABLED(ANYCUBIC_LCD_CHIRON)
-
-#include "Tunes.h"
-#include "../ui_api.h"
-
-namespace Anycubic {
-
- void PlayTune(uint8_t beeperPin, const uint16_t *tune, uint8_t speed=1) {
- uint8_t pos = 1;
- const uint16_t wholenotelen = tune[0] / speed;
- do {
- const uint16_t freq = tune[pos], notelen = wholenotelen / tune[pos + 1];
- ::tone(beeperPin, freq, notelen);
- ExtUI::delay_ms(notelen);
- pos += 2;
- if (pos >= MAX_TUNE_LENGTH) break;
- } while (tune[pos] != n_END);
- }
-
-}
-
-#endif // ANYCUBIC_LCD_CHIRON
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h b/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h
deleted file mode 100644
index bf2e92d03e538..0000000000000
--- a/Marlin/src/lcd/extui/anycubic_chiron/Tunes.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- */
-#pragma once
-
-/**
- * lcd/extui/anycubic_chiron/Tunes.h
- *
- * Extensible_UI implementation for Anycubic Chiron
- * Written By Nick Wells, 2020 [https://github.com/SwiftNick]
- * (not affiliated with Anycubic, Ltd.)
- */
-
-/**************************************************************************
- * Notes definition from https://pages.mtu.edu/~suits/NoteFreqCalcs.html *
- * *
- * The format of a tune is: *
- * {,,, ,, ... } *
- * *
- * 1) The first value is the length of a whole note in milliseconds *
- * 2) Then a sequence of pitch and duration pairs *
- * 3) Finally the END marker so your tunes can be any length up to *
- * MAX_TUNE_LEN *
- *************************************************************************/
-
-#include
-
-#define MAX_TUNE_LENGTH 128
-
-// Special notes!
-#define n_P 0 // silence or pause
-#define n_END 10000 // end of tune marker
-
-// Note duration divisors
-#define l_T1 1
-#define l_T2 2
-#define l_T3 3
-#define l_T4 4
-#define l_T8 8
-#define l_T16 16
-
-// Note Frequency
-#define n_C0 16
-#define n_CS0 17
-#define n_D0 18
-#define n_DS0 19
-#define n_E0 21
-#define n_F0 22
-#define n_FS0 23
-#define n_G0 25
-#define n_GS0 26
-#define n_A0 28
-#define n_AS0 29
-#define n_B0 31
-#define n_C1 33
-#define n_CS1 35
-#define n_D1 37
-#define n_DS1 39
-#define n_E1 41
-#define n_F1 44
-#define n_FS1 46
-#define n_G1 49
-#define n_GS1 52
-#define n_A1 55
-#define n_AS1 58
-#define n_B1 62
-#define n_C2 65
-#define n_CS2 69
-#define n_D2 73
-#define n_DS2 78
-#define n_E2 82
-#define n_F2 87
-#define n_FS2 93
-#define n_G2 98
-#define n_GS2 104
-#define n_A2 110
-#define n_AS2 117
-#define n_B2 123
-#define n_C3 131
-#define n_CS3 139
-#define n_D3 147
-#define n_DS3 156
-#define n_E3 165
-#define n_F3 175
-#define n_FS3 185
-#define n_G3 196
-#define n_GS3 208
-#define n_A3 220
-#define n_AS3 233
-#define n_B3 247
-#define n_C4 262
-#define n_CS4 277
-#define n_D4 294
-#define n_DS4 311
-#define n_E4 330
-#define n_F4 349
-#define n_FS4 370
-#define n_G4 392
-#define n_GS4 415
-#define n_A4 440
-#define n_AS4 466
-#define n_B4 494
-#define n_C5 523
-#define n_CS5 554
-#define n_D5 587
-#define n_DS5 622
-#define n_E5 659
-#define n_F5 698
-#define n_FS5 740
-#define n_G5 784
-#define n_GS5 831
-#define n_A5 880
-#define n_AS5 932
-#define n_B5 988
-#define n_C6 1047
-#define n_CS6 1109
-#define n_D6 1175
-#define n_DS6 1245
-#define n_E6 1319
-#define n_F6 1397
-#define n_FS6 1480
-#define n_G6 1568
-#define n_GS6 1661
-#define n_A6 1760
-#define n_AS6 1865
-#define n_B6 1976
-#define n_C7 2093
-#define n_CS7 2217
-#define n_D7 2349
-#define n_DS7 2489
-#define n_E7 2637
-#define n_F7 2794
-#define n_FS7 2960
-#define n_G7 3136
-#define n_GS7 3322
-#define n_A7 3520
-#define n_AS7 3729
-#define n_B7 3951
-#define n_C8 4186
-#define n_CS8 4435
-#define n_D8 4699
-#define n_DS8 4978
-#define n_E8 5274
-#define n_F8 5587
-#define n_FS8 5920
-#define n_G8 6272
-#define n_GS8 6645
-#define n_A8 7040
-#define n_AS8 7459
-#define n_B8 7902
-
-namespace Anycubic {
-
- void PlayTune(uint8_t beeperPin, const uint16_t *tune, uint8_t speed);
-
- // Only uncomment the tunes you are using to save memory
- // This will help you write tunes!
- // https://www.apronus.com/music/flashpiano.htm
-
- const uint16_t SOS[] = {
- 250,
- n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1,
- n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T3, n_G6,l_T1, n_P,l_T1,
- n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T3, n_G6,l_T3, n_P,l_T1,
- n_END
- };
-
- const uint16_t BeepBeep[] = {
- 500,
- n_C7,l_T8, n_P,l_T16, n_C7,l_T8, n_P,l_T8,
- n_END
- };
-
- const uint16_t BeepBeepBeeep[] = {
- 1000,
- n_G7,l_T4, n_P,l_T16, n_G7,l_T4, n_P,l_T8, n_G7,l_T2,
- n_END
- };
-
- const uint16_t Anycubic_PowerOn[] = {
- 1000,
- n_F7,l_T8, n_P,l_T8, n_C7,l_T8, n_P,l_T8, n_D7,l_T8, n_P,l_T8,
- n_E7,l_T8, n_P,l_T8, n_D7,l_T4, n_P,l_T4, n_G7,l_T4, n_P,l_T4,
- n_A7,l_T2, n_P,l_T1,
- n_END
- };
-
- const uint16_t GB_PowerOn[] = {
- 500,
- n_C6,l_T4, n_P,l_T16, n_C7,l_T2, n_P,l_T8,
- n_END
- };
-
- const uint16_t Heater_Timedout[] = {
- 1000,
- n_C6,l_T1,
- n_END
- };
-
- const uint16_t FilamentOut[] = {
- 1000,
- n_AS7,l_T4, n_P,l_T16, n_FS7,l_T2,
- n_END
- };
-
-}
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp
index dce503776bcfd..45fb73c02f446 100644
--- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp
+++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft.cpp
@@ -33,7 +33,7 @@
#if ENABLED(ANYCUBIC_LCD_CHIRON)
#include "chiron_tft.h"
-#include "Tunes.h"
+#include "../anycubic/Tunes.h"
#include "FileNavigator.h"
#include "../../../gcode/queue.h"
@@ -104,7 +104,7 @@ void ChironTFT::Startup() {
injectCommands(AC_cmnd_enable_leveling);
// Startup tunes are defined in Tunes.h
- PlayTune(BEEPER_PIN, TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1);
+ PlayTune(TERN(AC_DEFAULT_STARTUP_TUNE, Anycubic_PowerOn, GB_PowerOn), 1);
#if ACDEBUGLEVEL
SERIAL_ECHOLNPGM("AC Debug Level ", ACDEBUGLEVEL);
@@ -192,7 +192,7 @@ void ChironTFT::FilamentRunout() {
// 1 Signal filament out
last_error = AC_error_filament_runout;
SendtoTFTLN(isPrintingFromMedia() ? AC_msg_filament_out_alert : AC_msg_filament_out_block);
- PlayTune(BEEPER_PIN, FilamentOut, 1);
+ PlayTune(FilamentOut, 1);
}
void ChironTFT::ConfirmationRequest(const char * const msg) {
@@ -253,7 +253,7 @@ void ChironTFT::StatusChange(const char * const msg) {
}
// If probing fails don't save the mesh raise the probe above the bad point
if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) {
- PlayTune(BEEPER_PIN, BeepBeepBeeep, 1);
+ PlayTune(BeepBeepBeeep, 1);
injectCommands(F("G1 Z50 F500"));
SendtoTFTLN(AC_msg_probing_complete);
printer_state = AC_printer_idle;
@@ -307,7 +307,7 @@ void ChironTFT::StatusChange(const char * const msg) {
void ChironTFT::PowerLossRecovery() {
printer_state = AC_printer_resuming_from_power_outage; // Play tune to notify user we can recover.
last_error = AC_error_powerloss;
- PlayTune(BEEPER_PIN, SOS, 1);
+ PlayTune(SOS, 1);
SERIAL_ECHOLNF(AC_msg_powerloss_recovery);
}
diff --git a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h
index e3609b5408dfe..6cad95e68d40a 100644
--- a/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h
+++ b/Marlin/src/lcd/extui/anycubic_chiron/chiron_tft_defs.h
@@ -29,116 +29,39 @@
* (not affiliated with Anycubic, Ltd.)
*/
-#include "../../../inc/MarlinConfigPre.h"
-//#define ACDEBUGLEVEL 4
+#include "../anycubic/common_defs.h"
-#if ACDEBUGLEVEL
- // Bit-masks for selective debug:
- enum ACDebugMask : uint8_t {
- AC_INFO = 1,
- AC_ACTION = 2,
- AC_FILE = 4,
- AC_PANEL = 8,
- AC_MARLIN = 16,
- AC_SOME = 32,
- AC_ALL = 64
- };
- #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro
-#else
- #define ACDEBUG(mask) false
-#endif
-
-#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial
-#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path
-#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command
-#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path
-
-#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault
-#define AC_LOWEST_MESHPOINT_VAL -10 // The lowest value you can set for a single mesh point offset
-
- // TFT panel commands
-#define AC_msg_sd_card_inserted F("J00")
-#define AC_msg_sd_card_removed F("J01")
-#define AC_msg_no_sd_card F("J02")
-#define AC_msg_usb_connected F("J03")
-#define AC_msg_print_from_sd_card F("J04")
-#define AC_msg_pause F("J05")
-#define AC_msg_nozzle_heating F("J06")
-#define AC_msg_nozzle_heating_done F("J07")
-#define AC_msg_bed_heating F("J08")
-#define AC_msg_bed_heating_done F("J09")
-#define AC_msg_nozzle_temp_abnormal F("J10")
-#define AC_msg_kill_lcd F("J11")
-#define AC_msg_ready F("J12")
-#define AC_msg_low_nozzle_temp F("J13")
-#define AC_msg_print_complete F("J14")
-#define AC_msg_filament_out_alert F("J15")
-#define AC_msg_stop F("J16")
-#define AC_msg_main_board_has_reset F("J17")
-#define AC_msg_paused F("J18")
-#define AC_msg_j19_unknown F("J19")
-#define AC_msg_sd_file_open_success F("J20")
-#define AC_msg_sd_file_open_failed F("J21")
-#define AC_msg_level_monitor_finished F("J22")
-#define AC_msg_filament_out_block F("J23")
-#define AC_msg_probing_not_allowed F("J24")
-#define AC_msg_probing_complete F("J25")
-#define AC_msg_start_probing F("J26")
-#define AC_msg_version F("J27")
-#define AC_msg_mesh_changes_abandoned F("Mesh changes abandoned, previous mesh restored.")
-#define AC_msg_mesh_changes_saved F("Mesh changes saved.")
-#define AC_msg_old_panel_detected F("Standard TFT panel detected!")
-#define AC_msg_new_panel_detected F("New TFT panel detected!")
-#define AC_msg_auto_panel_detection F("Auto detect panel type (assuming new panel)")
-#define AC_msg_old_panel_set F("Set for standard TFT panel.")
-#define AC_msg_new_panel_set F("Set for new TFT panel.")
+// TFT panel messages
+#define AC_msg_mesh_changes_abandoned F("Mesh changes abandoned, previous mesh restored.")
+#define AC_msg_mesh_changes_saved F("Mesh changes saved.")
+#define AC_msg_old_panel_detected F("Standard TFT panel detected!")
+#define AC_msg_new_panel_detected F("New TFT panel detected!")
+#define AC_msg_auto_panel_detection F("Auto detect panel type (assuming new panel)")
+#define AC_msg_old_panel_set F("Set for standard TFT panel.")
+#define AC_msg_new_panel_set F("Set for new TFT panel.")
-#define AC_msg_powerloss_recovery F("Resuming from power outage! select the same SD file then press resume")
+#define AC_msg_powerloss_recovery F("Resuming from power outage! select the same SD file then press resume")
// Error messages must not contain spaces
-#define AC_msg_error_bed_temp F("Abnormal_bed_temp")
-#define AC_msg_error_hotend_temp F("Abnormal_hotend_temp")
-#define AC_msg_error_sd_card F("SD_card_error")
-#define AC_msg_filament_out F("Filament_runout")
-#define AC_msg_power_loss F("Power_failure")
-#define AC_msg_eeprom_version F("EEPROM_ver_wrong")
+#define AC_msg_error_bed_temp F("Abnormal_bed_temp")
+#define AC_msg_error_hotend_temp F("Abnormal_hotend_temp")
+#define AC_msg_error_sd_card F("SD_card_error")
+#define AC_msg_filament_out F("Filament_runout")
+#define AC_msg_power_loss F("Power_failure")
+#define AC_msg_eeprom_version F("EEPROM_ver_wrong")
-#define MARLIN_msg_start_probing PSTR("Probing Point 1/25")
-#define MARLIN_msg_probing_failed PSTR("Probing Failed")
-#define MARLIN_msg_ready PSTR(" Ready.")
-#define MARLIN_msg_print_paused PSTR("Print Paused")
-#define MARLIN_msg_print_aborted PSTR("Print Aborted")
-#define MARLIN_msg_extruder_heating PSTR("E Heating...")
-#define MARLIN_msg_bed_heating PSTR("Bed Heating...")
-#define MARLIN_msg_EEPROM_version PSTR("EEPROM Version Error")
-#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked")
-#define MARLIN_msg_heater_timeout PSTR("Heater Timeout")
-#define MARLIN_msg_reheating PSTR("Reheating...")
-#define MARLIN_msg_reheat_done PSTR("Reheat finished.")
-#define MARLIN_msg_filament_purging PSTR("Filament Purging...")
-#define MARLIN_msg_special_pause PSTR("PB")
+#define MARLIN_msg_EEPROM_version PSTR("EEPROM Version Error")
-#define AC_cmnd_auto_unload_filament F("M701") // Use Marlin unload routine
-#define AC_cmnd_auto_load_filament F("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle
-
-#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster
-#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82")
-#define AC_cmnd_enable_leveling F("M420SV")
-#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position
-
-#define AC_Test_for_OldPanel F("SIZE") // An old panel will respond with 'SXY 480 320' a new panel wont respond.
-#define AC_Test_for_NewPanel F("J200") // A new panel will respond with '[0]=0 [1]=0' to '[19]=0 ' an old panel wont respond
+#define AC_Test_for_OldPanel F("SIZE") // An old panel will respond with 'SXY 480 320' a new panel wont respond.
+#define AC_Test_for_NewPanel F("J200") // A new panel will respond with '[0]=0 [1]=0' to '[19]=0 ' an old panel wont respond
namespace Anycubic {
- enum heater_state_t : uint8_t {
- AC_heater_off,
- AC_heater_temp_set,
- AC_heater_temp_reached
- };
+
enum paused_state_t : uint8_t {
AC_paused_heater_timed_out,
AC_paused_purging_filament,
AC_paused_idle
};
+
enum printer_state_t : uint8_t {
AC_printer_booting,
AC_printer_idle,
@@ -149,27 +72,13 @@ namespace Anycubic {
AC_printer_stopping,
AC_printer_resuming_from_power_outage
};
- enum timer_event_t : uint8_t {
- AC_timer_started,
- AC_timer_paused,
- AC_timer_stopped
- };
- enum media_event_t : uint8_t {
- AC_media_inserted,
- AC_media_removed,
- AC_media_error
- };
- enum file_menu_t : uint8_t {
- AC_menu_file,
- AC_menu_command,
- AC_menu_change_to_file,
- AC_menu_change_to_command
- };
+
enum panel_type_t : uint8_t { // order is important here as we assume new panel if type is unknown
AC_panel_unknown,
AC_panel_new,
AC_panel_standard
};
+
enum last_error_t : uint8_t {
AC_error_none,
AC_error_abnormal_temp_t0,
@@ -179,4 +88,5 @@ namespace Anycubic {
AC_error_filament_runout,
AC_error_EEPROM
};
-} // Anycubic namespace
+
+} // Anycubic
diff --git a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h
index c39e66b63ec33..dd4b0b0f7481f 100644
--- a/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h
+++ b/Marlin/src/lcd/extui/anycubic_vyper/FileNavigator.h
@@ -31,27 +31,26 @@
using namespace ExtUI;
namespace Anycubic {
+
class FileNavigator {
public:
- FileNavigator();
-
- static FileList filelist;
-
- void reset();
- void getFiles(uint16_t);
- void upDIR();
- void changeDIR(char *);
- void sendFile();
- void refresh();
- char * getCurrentFolderName();
- uint16_t getFileNum();
+ static FileList filelist;
+ FileNavigator();
+ static void reset();
+ static void getFiles(uint16_t);
+ static void upDIR();
+ static void changeDIR(char *);
+ static void sendFile();
+ static void refresh();
+ static char* getCurrentFolderName();
+ static uint16_t getFileNum();
private:
-
- static char currentfoldername[MAX_PATH_LEN];
- static uint16_t lastindex;
- static uint8_t folderdepth;
- static uint16_t currentindex;
+ static uint16_t lastindex;
+ static uint16_t currentindex;
+ static uint8_t folderdepth;
+ static char currentfoldername[MAX_PATH_LEN + 1];
};
+
extern FileNavigator filenavigator;
}
diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp
index 81af2e6e20450..e2bc343d67fa9 100644
--- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp
+++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft.cpp
@@ -29,7 +29,7 @@
#if ENABLED(ANYCUBIC_LCD_VYPER)
#include "dgus_tft.h"
-#include "Tunes.h"
+#include "../anycubic/Tunes.h"
#include "FileNavigator.h"
#include "../../../gcode/queue.h"
@@ -154,9 +154,6 @@ namespace Anycubic {
// as Z home places nozzle above the bed so we need to allow it past the end stops
injectCommands(AC_cmnd_enable_leveling);
- // Startup tunes are defined in Tunes.h
- //PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1);
- //PlayTune(BEEPER_PIN, GB_PowerOn, 1);
#if ACDEBUGLEVEL
DEBUG_ECHOLNPGM("Startup AC Debug Level ", ACDEBUGLEVEL);
#endif
@@ -466,7 +463,7 @@ namespace Anycubic {
pop_up_index = 15; // show filament lack.
if (READ(FIL_RUNOUT_PIN) == FIL_RUNOUT_STATE) {
- PlayTune(BEEPER_PIN, FilamentOut, 1);
+ PlayTune(FilamentOut, 1);
feedrate_back = getFeedrate_percent();
@@ -508,7 +505,7 @@ namespace Anycubic {
if (strcmp_P(msg, MARLIN_msg_heater_timeout) == 0) {
pause_state = AC_paused_heater_timed_out;
SendtoTFTLN(AC_msg_paused); // enable continue button
- PlayTune(BEEPER_PIN, Heater_Timedout, 1);
+ PlayTune(Heater_Timedout, 1);
}
// Reheat finished, send acknowledgement
else if (strcmp_P(msg, MARLIN_msg_reheat_done) == 0) {
@@ -579,7 +576,7 @@ namespace Anycubic {
// If probing fails don't save the mesh raise the probe above the bad point
if (strcmp_P(msg, MARLIN_msg_probing_failed) == 0) {
- PlayTune(BEEPER_PIN, BeepBeepBeeep, 1);
+ PlayTune(BeepBeepBeeep, 1);
injectCommands(F("G1 Z50 F500"));
ChangePageOfTFT(PAGE_CHS_ABNORMAL_LEVELING_SENSOR);
SendtoTFTLN(AC_msg_probing_complete);
@@ -1073,7 +1070,7 @@ namespace Anycubic {
#else
SendTxtToTFT(recovery.info.sd_filename, TXT_OUTAGE_RECOVERY_FILE);
#endif
- PlayTune(BEEPER_PIN, SOS, 1);
+ PlayTune(SOS, 1);
}
#else
constexpr bool is_outage = false;
@@ -1083,12 +1080,13 @@ namespace Anycubic {
}
else if (control_value == 0x010000) { // startup first gif
- PlayTune(BEEPER_PIN, Anycubic_PowerOn, 1); // takes 3500 ms
+ // Startup tunes are defined in Tunes.h
+ PlayTune(Anycubic_PowerOn, 1); // takes 3500 ms
}
}
/*
- else if ((control_index & 0xF000) == 0x2000) { // is TXT ADDRESS
+ else if ((control_index & 0xF000) == 0x2000) { // is TXT ADDRESS
tft_txt_index = control_index;
j = 0;
for (i = 4; ;i++) {
diff --git a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h
index 72e812b965cba..1133d670cde1c 100644
--- a/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h
+++ b/Marlin/src/lcd/extui/anycubic_vyper/dgus_tft_defs.h
@@ -19,106 +19,24 @@
* along with this program. If not, see .
*
*/
+#pragma once
/**
* lcd/extui/anycubic_vyper/dgus_defs.h
*/
-#pragma once
-#include "../../../inc/MarlinConfigPre.h"
-
-#define ACDEBUGLEVEL 0 // 0: off, 255: all levels enabled
-
-#if ACDEBUGLEVEL
- // Bit-masks for selective debug:
- enum ACDebugMask : uint8_t {
- AC_INFO = 1,
- AC_ACTION = 2,
- AC_FILE = 4,
- AC_PANEL = 8,
- AC_MARLIN = 16,
- AC_SOME = 32,
- AC_ALL = 64
- };
- #define ACDEBUG(mask) ( ((mask) & ACDEBUGLEVEL) == mask ) // Debug flag macro
-#else
- #define ACDEBUG(mask) false
-#endif
-
-#define TFTSer LCD_SERIAL // Serial interface for TFT panel now uses marlinserial
-#define MAX_FOLDER_DEPTH 4 // Limit folder depth TFT has a limit for the file path
-#define MAX_CMND_LEN 16 * MAX_FOLDER_DEPTH // Maximum Length for a Panel command
-#define MAX_PATH_LEN 16 * MAX_FOLDER_DEPTH // Maximum number of characters in a SD file path
-
-#define AC_HEATER_FAULT_VALIDATION_TIME 5 // number of 1/2 second loops before signalling a heater fault
-#define AC_LOWEST_MESHPOINT_VAL Z_PROBE_LOW_POINT // The lowest value you can set for a single mesh point offset
-
- // TFT panel commands
-#define AC_msg_sd_card_inserted F("J00")
-#define AC_msg_sd_card_removed F("J01")
-#define AC_msg_no_sd_card F("J02")
-#define AC_msg_usb_connected F("J03")
-#define AC_msg_print_from_sd_card F("J04")
-#define AC_msg_pause F("J05")
-#define AC_msg_nozzle_heating F("J06")
-#define AC_msg_nozzle_heating_done F("J07")
-#define AC_msg_bed_heating F("J08")
-#define AC_msg_bed_heating_done F("J09")
-#define AC_msg_nozzle_temp_abnormal F("J10")
-#define AC_msg_kill_lcd F("J11")
-#define AC_msg_ready F("J12")
-#define AC_msg_low_nozzle_temp F("J13")
-#define AC_msg_print_complete F("J14")
-#define AC_msg_filament_out_alert F("J15")
-#define AC_msg_stop F("J16")
-#define AC_msg_main_board_has_reset F("J17")
-#define AC_msg_paused F("J18")
-#define AC_msg_j19_unknown F("J19")
-#define AC_msg_sd_file_open_success F("J20")
-#define AC_msg_sd_file_open_failed F("J21")
-#define AC_msg_level_monitor_finished F("J22")
-#define AC_msg_filament_out_block F("J23")
-#define AC_msg_probing_not_allowed F("J24")
-#define AC_msg_probing_complete F("J25")
-#define AC_msg_start_probing F("J26")
-#define AC_msg_version F("J27")
-#define AC_msg_bed_temp_abnormal F("J28")
-
-#define MARLIN_msg_probing_point PSTR("Probing Point ")
-#define MARLIN_msg_start_probing PSTR("Probing Point 1/25")
-#define MARLIN_msg_probing_failed PSTR("Probing Failed")
-#define MARLIN_msg_ready PSTR(" Ready.")
-#define MARLIN_msg_print_paused PSTR("Print Paused")
-#define MARLIN_msg_print_aborted PSTR("Print Aborted")
-#define MARLIN_msg_extruder_heating PSTR("E Heating...")
-#define MARLIN_msg_bed_heating PSTR("Bed Heating...")
+#include "../anycubic/common_defs.h"
-#define MARLIN_msg_probe_preheat_start PSTR("Probe preheat start")
-#define MARLIN_msg_probe_preheat_stop PSTR("Probe preheat stop")
+// TFT panel commands
+#define AC_msg_bed_temp_abnormal F("J28")
-
-#define MARLIN_msg_nozzle_parked PSTR("Nozzle Parked")
-#define MARLIN_msg_heater_timeout PSTR("Heater Timeout")
-#define MARLIN_msg_reheating PSTR("Reheating...")
-#define MARLIN_msg_reheat_done PSTR("Reheat finished.")
-#define MARLIN_msg_filament_purging PSTR("Filament Purging...")
-#define MARLIN_msg_media_removed PSTR("Media Removed")
-#define MARLIN_msg_special_pause PSTR("PB")
-
-#define AC_cmnd_auto_unload_filament F("M701") // Use Marlin unload routine
-#define AC_cmnd_auto_load_filament F("M702 M0 PB") // Use Marlin load routing then pause for user to clean nozzle
-
-#define AC_cmnd_manual_load_filament F("M83\nG1 E50 F700\nM82") // replace the manual panel commands with something a little faster
-#define AC_cmnd_manual_unload_filament F("M83\nG1 E-50 F1200\nM82")
-#define AC_cmnd_enable_leveling F("M420SV")
-#define AC_cmnd_power_loss_recovery F("G28XYR5\nG28Z") // Lift, home X and Y then home Z when in 'safe' position
+// TFT panel messages
+#define MARLIN_msg_probing_point PSTR("Probing Point ")
+#define MARLIN_msg_probe_preheat_start PSTR("Probe preheat start")
+#define MARLIN_msg_probe_preheat_stop PSTR("Probe preheat stop")
+#define MARLIN_msg_media_removed PSTR("Media Removed")
namespace Anycubic {
- enum heater_state_t : uint8_t {
- AC_heater_off,
- AC_heater_temp_set,
- AC_heater_temp_reached
- };
enum paused_state_t : uint8_t {
AC_paused_heater_timed_out,
@@ -138,21 +56,4 @@ namespace Anycubic {
AC_printer_resuming_from_power_outage
};
- enum timer_event_t : uint8_t {
- AC_timer_started,
- AC_timer_paused,
- AC_timer_stopped
- };
-
- enum media_event_t : uint8_t {
- AC_media_inserted,
- AC_media_removed,
- AC_media_error
- };
- enum file_menu_t : uint8_t {
- AC_menu_file,
- AC_menu_command,
- AC_menu_change_to_file,
- AC_menu_change_to_command
- };
-}
+} // Anycubic
diff --git a/ini/features.ini b/ini/features.ini
index d8ba74f2db208..3c5eb1adecba9 100644
--- a/ini/features.ini
+++ b/ini/features.ini
@@ -80,6 +80,7 @@ HAS_MENU_TMC = src_filter=+
HAS_MENU_TOUCH_SCREEN = src_filter=+
HAS_MENU_TRAMMING_WIZARD = src_filter=+
HAS_MENU_UBL = src_filter=+
+ANYCUBIC_LCD_(CHIRON|VYPER) = src_filter=+
ANYCUBIC_LCD_CHIRON = src_filter=+
ANYCUBIC_LCD_VYPER = src_filter=+
ANYCUBIC_LCD_I3MEGA = src_filter=+
diff --git a/platformio.ini b/platformio.ini
index d5ac59bffd184..3216f7a3fa5e4 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -80,9 +80,7 @@ default_src_filter = + - - + -
-
-
- -
- -
- -
+ - - - -
- - - - -
-
-