From 3797549e7e873864f3cd11ab9185f01676c046e0 Mon Sep 17 00:00:00 2001
From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com>
Date: Tue, 13 Jul 2021 17:08:04 -0700
Subject: [PATCH 01/35] =?UTF-8?q?=F0=9F=90=9B=20Board=20Temp=20Sensor=20fo?=
=?UTF-8?q?llowup=20(#22350)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/Configuration.h | 1 +
Marlin/src/lcd/thermistornames.h | 2 +
.../src/module/thermistor/thermistor_2000.h | 60 +++++++++++++++++++
Marlin/src/module/thermistor/thermistors.h | 3 +
Marlin/src/pins/rambo/pins_EINSY_RAMBO.h | 2 +-
.../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h | 2 +-
6 files changed, 68 insertions(+), 2 deletions(-)
create mode 100644 Marlin/src/module/thermistor/thermistor_2000.h
diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index bdeb8d8501..4adc40a19f 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -451,6 +451,7 @@
* 67 : 500kΩ SliceEngineering 450°C Thermistor
* 70 : 100kΩ bq Hephestos 2
* 75 : 100kΩ Generic Silicon Heat Pad with NTC100K MGB18-104F39050L32
+ * 2000 : 100kΩ Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor
*
* Analog Thermistors - 1kΩ pullup - Atypical, and requires changing out the 4.7kΩ pullup for 1kΩ.
* ------- (but gives greater accuracy and more stable PID)
diff --git a/Marlin/src/lcd/thermistornames.h b/Marlin/src/lcd/thermistornames.h
index f9f91ac49a..4f6dd23ece 100644
--- a/Marlin/src/lcd/thermistornames.h
+++ b/Marlin/src/lcd/thermistornames.h
@@ -128,6 +128,8 @@
#define THERMISTOR_NAME "Pt100 1K"
#elif THERMISTOR_ID == 666
#define THERMISTOR_NAME "Einstart S"
+#elif THERMISTOR_ID == 2000
+ #define THERMISTOR_NAME "TDK NTCG104LH104JT1"
// High Temperature thermistors
#elif THERMISTOR_ID == 61
diff --git a/Marlin/src/module/thermistor/thermistor_2000.h b/Marlin/src/module/thermistor/thermistor_2000.h
new file mode 100644
index 0000000000..3815a6f256
--- /dev/null
+++ b/Marlin/src/module/thermistor/thermistor_2000.h
@@ -0,0 +1,60 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2021 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
+
+// R25 = 100 KOhm, beta25 = 4550 K, 4.7 kOhm pull-up, TDK NTCG104LH104KT1 https://product.tdk.com/en/search/sensor/ntc/chip-ntc-thermistor/info?part_no=NTCG104LH104KT1
+constexpr temp_entry_t temptable_2000[] PROGMEM = {
+{ OV(313), 125 },
+{ OV(347), 120 },
+{ OV(383), 115 },
+{ OV(422), 110 },
+{ OV(463), 105 },
+{ OV(506), 100 },
+{ OV(549), 95 },
+{ OV(594), 90 },
+{ OV(638), 85 },
+{ OV(681), 80 },
+{ OV(722), 75 },
+{ OV(762), 70 },
+{ OV(799), 65 },
+{ OV(833), 60 },
+{ OV(863), 55 },
+{ OV(890), 50 },
+{ OV(914), 45 },
+{ OV(934), 40 },
+{ OV(951), 35 },
+{ OV(966), 30 },
+{ OV(978), 25 },
+{ OV(988), 20 },
+{ OV(996), 15 },
+{ OV(1002), 10 },
+{ OV(1007), 5 },
+{ OV(1012), 0 },
+{ OV(1015), -5 },
+{ OV(1017), -10 },
+{ OV(1019), -15 },
+{ OV(1020), -20 },
+{ OV(1021), -25 },
+{ OV(1022), -30 },
+{ OV(1023), -35 },
+{ OV(1023), -40 }
+};
diff --git a/Marlin/src/module/thermistor/thermistors.h b/Marlin/src/module/thermistor/thermistors.h
index 9351fa6eb1..28a1e2f90f 100644
--- a/Marlin/src/module/thermistor/thermistors.h
+++ b/Marlin/src/module/thermistor/thermistors.h
@@ -201,6 +201,9 @@ typedef struct { int16_t value; celsius_t celsius; } temp_entry_t;
#if ANY_THERMISTOR_IS(1047) // Pt1000 with 4k7 pullup
#include "thermistor_1047.h"
#endif
+#if ANY_THERMISTOR_IS(2000) // "Ultimachine Rambo TDK NTCG104LH104KT1 NTC100K motherboard Thermistor" https://product.tdk.com/en/search/sensor/ntc/chip-ntc-thermistor/info?part_no=NTCG104LH104KT1
+ #include "thermistor_2000.h"
+#endif
#if ANY_THERMISTOR_IS(998) // User-defined table 1
#include "thermistor_998.h"
#endif
diff --git a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
index 5be2bba25c..78465dd7a8 100644
--- a/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
+++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
@@ -116,7 +116,7 @@
//
#define TEMP_0_PIN 0 // Analog Input, Header J2
#define TEMP_1_PIN 1 // Analog Input, Header J3
-#define TEMP_BOARD_PIN TEMP_1_PIN // Analog Input, Header J3
+#define TEMP_BOARD_PIN 91 // Onboard thermistor, 100k TDK NTCG104LH104JT1
#define TEMP_BED_PIN 2 // Analog Input, Header J6
#define TEMP_PROBE_PIN 3 // Analog Input, Header J15
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
index 866d94924a..2bfbb19427 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
@@ -161,7 +161,7 @@
//
#define TEMP_0_PIN PA2 // T0 <-> E0
#define TEMP_1_PIN PA0 // T1 <-> E1
-#define TEMP_BOARD_PIN TEMP_1_PIN // Onboard sensor shared with T1
+#define TEMP_BOARD_PIN PC2 // Onboard thermistor, NTC100K
#define TEMP_BED_PIN PA1 // T2 <-> Bed
#define TEMP_PROBE_PIN PC3 // Shares J4 connector with PD1
From 9a7727e61c76a9e30fda85d8ac33392be0e453c0 Mon Sep 17 00:00:00 2001
From: Katelyn Schiesser
Date: Tue, 13 Jul 2021 17:13:06 -0700
Subject: [PATCH 02/35] =?UTF-8?q?=F0=9F=8E=A8=20Define=20temp=20sensor=20c?=
=?UTF-8?q?onditionals=20earlier=20(#22342)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/inc/Conditionals_adv.h | 419 +++++++++++++++++++++++++++--
Marlin/src/inc/Conditionals_post.h | 392 +--------------------------
2 files changed, 402 insertions(+), 409 deletions(-)
diff --git a/Marlin/src/inc/Conditionals_adv.h b/Marlin/src/inc/Conditionals_adv.h
index c781ebb595..55ae6ec535 100644
--- a/Marlin/src/inc/Conditionals_adv.h
+++ b/Marlin/src/inc/Conditionals_adv.h
@@ -112,27 +112,9 @@
#undef STEALTHCHOP_E
#endif
-#if TEMP_SENSOR_BED == 0
- #undef THERMAL_PROTECTION_BED
- #undef THERMAL_PROTECTION_BED_PERIOD
-#endif
-
-#if TEMP_SENSOR_CHAMBER == 0
- #undef THERMAL_PROTECTION_CHAMBER
-#endif
-
-#if TEMP_SENSOR_COOLER == 0
- #undef THERMAL_PROTECTION_COOLER
-#endif
-
-// Usurp a sensor to do redundant readings
-#if TEMP_SENSOR_REDUNDANT
- #define _HEATER_ID(M) HID_##M
- #define HEATER_ID(M) _HEATER_ID(M)
- #define REDUNDANT_TEMP_MATCH(M,N) (HEATER_ID(TEMP_SENSOR_REDUNDANT_##M) == _HEATER_ID(N))
-#else
- #define REDUNDANT_TEMP_MATCH(...) 0
-#endif
+/**
+ * Temperature Sensors; define what sensor(s) we have.
+ */
// Temperature sensor IDs
#define HID_REDUNDANT -6
@@ -150,6 +132,401 @@
#define HID_E6 6
#define HID_E7 7
+#define ANY_TEMP_SENSOR_IS(n) (n == TEMP_SENSOR_0 || n == TEMP_SENSOR_1 || n == TEMP_SENSOR_2 || n == TEMP_SENSOR_3 \
+ || n == TEMP_SENSOR_4 || n == TEMP_SENSOR_5 || n == TEMP_SENSOR_6 || n == TEMP_SENSOR_7 \
+ || n == TEMP_SENSOR_BED \
+ || n == TEMP_SENSOR_PROBE \
+ || n == TEMP_SENSOR_CHAMBER \
+ || n == TEMP_SENSOR_COOLER \
+ || n == TEMP_SENSOR_REDUNDANT )
+#if ANY_TEMP_SENSOR_IS(1000)
+ #define HAS_USER_THERMISTORS 1
+#endif
+#undef ANY_TEMP_SENSOR_IS
+
+#if TEMP_SENSOR_REDUNDANT
+ #define _HEATER_ID(M) HID_##M
+ #define HEATER_ID(M) _HEATER_ID(M)
+ #define REDUNDANT_TEMP_MATCH(M,N) (HEATER_ID(TEMP_SENSOR_REDUNDANT_##M) == _HEATER_ID(N))
+#else
+ #define REDUNDANT_TEMP_MATCH(...) 0
+#endif
+
+#if TEMP_SENSOR_0 == -5 || TEMP_SENSOR_0 == -3 || TEMP_SENSOR_0 == -2
+ #define TEMP_SENSOR_0_IS_MAX_TC 1
+ #if TEMP_SENSOR_0 == -5
+ #define TEMP_SENSOR_0_IS_MAX31865 1
+ #define TEMP_SENSOR_0_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_0_MAX_TC_TMAX 1024
+ #ifndef MAX31865_SENSOR_WIRES_0
+ #define MAX31865_SENSOR_WIRES_0 2
+ #endif
+ #elif TEMP_SENSOR_0 == -3
+ #define TEMP_SENSOR_0_IS_MAX31855 1
+ #define TEMP_SENSOR_0_MAX_TC_TMIN -270
+ #define TEMP_SENSOR_0_MAX_TC_TMAX 1800
+ #elif TEMP_SENSOR_0 == -2
+ #define TEMP_SENSOR_0_IS_MAX6675 1
+ #define TEMP_SENSOR_0_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_0_MAX_TC_TMAX 1024
+ #endif
+#elif TEMP_SENSOR_0 == -4
+ #define TEMP_SENSOR_0_IS_AD8495 1
+#elif TEMP_SENSOR_0 == -1
+ #define TEMP_SENSOR_0_IS_AD595 1
+#elif TEMP_SENSOR_0 > 0
+ #define TEMP_SENSOR_0_IS_THERMISTOR 1
+ #if TEMP_SENSOR_0 == 1000
+ #define TEMP_SENSOR_0_IS_CUSTOM 1
+ #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999
+ #define TEMP_SENSOR_0_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_0_MINTEMP
+ #undef HEATER_0_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_1 == -5 || TEMP_SENSOR_1 == -3 || TEMP_SENSOR_1 == -2
+ #define TEMP_SENSOR_1_IS_MAX_TC 1
+ #if TEMP_SENSOR_1 == -5
+ #define TEMP_SENSOR_1_IS_MAX31865 1
+ #define TEMP_SENSOR_1_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_1_MAX_TC_TMAX 1024
+ #ifndef MAX31865_SENSOR_WIRES_1
+ #define MAX31865_SENSOR_WIRES_1 2
+ #endif
+ #elif TEMP_SENSOR_1 == -3
+ #define TEMP_SENSOR_1_IS_MAX31855 1
+ #define TEMP_SENSOR_1_MAX_TC_TMIN -270
+ #define TEMP_SENSOR_1_MAX_TC_TMAX 1800
+ #elif TEMP_SENSOR_1 == -2
+ #define TEMP_SENSOR_1_IS_MAX6675 1
+ #define TEMP_SENSOR_1_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_1_MAX_TC_TMAX 1024
+ #endif
+
+ #if TEMP_SENSOR_1 != TEMP_SENSOR_0
+ #if TEMP_SENSOR_1 == -5
+ #error "If MAX31865 Thermocouple (-5) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
+ #elif TEMP_SENSOR_1 == -3
+ #error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
+ #elif TEMP_SENSOR_1 == -2
+ #error "If MAX6675 Thermocouple (-2) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
+ #endif
+ #endif
+#elif TEMP_SENSOR_1 == -4
+ #define TEMP_SENSOR_1_IS_AD8495 1
+#elif TEMP_SENSOR_1 == -1
+ #define TEMP_SENSOR_1_IS_AD595 1
+#elif TEMP_SENSOR_1 > 0
+ #define TEMP_SENSOR_1_IS_THERMISTOR 1
+ #if TEMP_SENSOR_1 == 1000
+ #define TEMP_SENSOR_1_IS_CUSTOM 1
+ #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999
+ #define TEMP_SENSOR_1_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_1_MINTEMP
+ #undef HEATER_1_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_REDUNDANT == -5 || TEMP_SENSOR_REDUNDANT == -3 || TEMP_SENSOR_REDUNDANT == -2
+ #define TEMP_SENSOR_REDUNDANT_IS_MAX_TC 1
+
+ #if TEMP_SENSOR_REDUNDANT == -5
+ #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
+ #error "MAX31865 Thermocouples (-5) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
+ #endif
+
+ #define TEMP_SENSOR_REDUNDANT_IS_MAX31865 1
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
+ #elif TEMP_SENSOR_REDUNDANT == -3
+ #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
+ #endif
+
+ #define TEMP_SENSOR_REDUNDANT_IS_MAX31855 1
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN -270
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1800
+ #elif TEMP_SENSOR_REDUNDANT == -2
+ #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
+ #endif
+
+ #define TEMP_SENSOR_REDUNDANT_IS_MAX6675 1
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
+ #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
+ #endif
+
+ // mimic setting up the source TEMP_SENSOR
+ #if REDUNDANT_TEMP_MATCH(SOURCE, E0)
+ #define TEMP_SENSOR_0_MAX_TC_TMIN TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN
+ #define TEMP_SENSOR_0_MAX_TC_TMAX TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX
+ #ifndef MAX31865_SENSOR_WIRES_0
+ #define MAX31865_SENSOR_WIRES_0 2
+ #endif
+ #elif REDUNDANT_TEMP_MATCH(SOURCE, E1)
+ #define TEMP_SENSOR_1_MAX_TC_TMIN TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN
+ #define TEMP_SENSOR_1_MAX_TC_TMAX TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX
+ #ifndef MAX31865_SENSOR_WIRES_1
+ #define MAX31865_SENSOR_WIRES_1 2
+ #endif
+ #endif
+
+ #if (TEMP_SENSOR_0_IS_MAX_TC && TEMP_SENSOR_REDUNDANT != TEMP_SENSOR_0) || (TEMP_SENSOR_1_IS_MAX_TC && TEMP_SENSOR_REDUNDANT != TEMP_SENSOR_1)
+ #if TEMP_SENSOR_REDUNDANT == -5
+ #error "If MAX31865 Thermocouple (-5) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
+ #elif TEMP_SENSOR_REDUNDANT == -3
+ #error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
+ #elif TEMP_SENSOR_REDUNDANT == -2
+ #error "If MAX6675 Thermocouple (-2) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
+ #endif
+ #endif
+#elif TEMP_SENSOR_REDUNDANT == -4
+ #define TEMP_SENSOR_REDUNDANT_IS_AD8495 1
+#elif TEMP_SENSOR_REDUNDANT == -1
+ #define TEMP_SENSOR_REDUNDANT_IS_AD595 1
+#elif TEMP_SENSOR_REDUNDANT > 0
+ #define TEMP_SENSOR_REDUNDANT_IS_THERMISTOR 1
+ #if TEMP_SENSOR_REDUNDANT == 1000
+ #define TEMP_SENSOR_REDUNDANT_IS_CUSTOM 1
+ #elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999
+ #error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT."
+ #endif
+#endif
+
+#if TEMP_SENSOR_0_IS_MAX_TC || TEMP_SENSOR_1_IS_MAX_TC || TEMP_SENSOR_REDUNDANT_IS_MAX_TC
+ #define HAS_MAX_TC 1
+#endif
+#if TEMP_SENSOR_0_IS_MAX6675 || TEMP_SENSOR_1_IS_MAX6675 || TEMP_SENSOR_REDUNDANT_IS_MAX6675
+ #define HAS_MAX6675 1
+#endif
+#if TEMP_SENSOR_0_IS_MAX31855 || TEMP_SENSOR_1_IS_MAX31855 || TEMP_SENSOR_REDUNDANT_IS_MAX31855
+ #define HAS_MAX31855 1
+#endif
+#if TEMP_SENSOR_0_IS_MAX31865 || TEMP_SENSOR_1_IS_MAX31865 || TEMP_SENSOR_REDUNDANT_IS_MAX31865
+ #define HAS_MAX31865 1
+#endif
+
+#if TEMP_SENSOR_2 == -4
+ #define TEMP_SENSOR_2_IS_AD8495 1
+#elif TEMP_SENSOR_2 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_2."
+#elif TEMP_SENSOR_2 == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_2."
+#elif TEMP_SENSOR_2 == -1
+ #define TEMP_SENSOR_2_IS_AD595 1
+#elif TEMP_SENSOR_2 > 0
+ #define TEMP_SENSOR_2_IS_THERMISTOR 1
+ #if TEMP_SENSOR_2 == 1000
+ #define TEMP_SENSOR_2_IS_CUSTOM 1
+ #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999
+ #define TEMP_SENSOR_2_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_2_MINTEMP
+ #undef HEATER_2_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_3 == -4
+ #define TEMP_SENSOR_3_IS_AD8495 1
+#elif TEMP_SENSOR_3 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_3."
+#elif TEMP_SENSOR_3 == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3."
+#elif TEMP_SENSOR_3 == -1
+ #define TEMP_SENSOR_3_IS_AD595 1
+#elif TEMP_SENSOR_3 > 0
+ #define TEMP_SENSOR_3_IS_THERMISTOR 1
+ #if TEMP_SENSOR_3 == 1000
+ #define TEMP_SENSOR_3_IS_CUSTOM 1
+ #elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999
+ #define TEMP_SENSOR_3_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_3_MINTEMP
+ #undef HEATER_3_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_4 == -4
+ #define TEMP_SENSOR_4_IS_AD8495 1
+#elif TEMP_SENSOR_4 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_4."
+#elif TEMP_SENSOR_4 == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4."
+#elif TEMP_SENSOR_4 == -1
+ #define TEMP_SENSOR_4_IS_AD595 1
+#elif TEMP_SENSOR_4 > 0
+ #define TEMP_SENSOR_4_IS_THERMISTOR 1
+ #if TEMP_SENSOR_4 == 1000
+ #define TEMP_SENSOR_4_IS_CUSTOM 1
+ #elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999
+ #define TEMP_SENSOR_4_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_4_MINTEMP
+ #undef HEATER_4_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_5 == -4
+ #define TEMP_SENSOR_5_IS_AD8495 1
+#elif TEMP_SENSOR_5 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_5."
+#elif TEMP_SENSOR_5 == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5."
+#elif TEMP_SENSOR_5 == -1
+ #define TEMP_SENSOR_5_IS_AD595 1
+#elif TEMP_SENSOR_5 > 0
+ #define TEMP_SENSOR_5_IS_THERMISTOR 1
+ #if TEMP_SENSOR_5 == 1000
+ #define TEMP_SENSOR_5_IS_CUSTOM 1
+ #elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999
+ #define TEMP_SENSOR_5_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_5_MINTEMP
+ #undef HEATER_5_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_6 == -4
+ #define TEMP_SENSOR_6_IS_AD8495 1
+#elif TEMP_SENSOR_6 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_6."
+#elif TEMP_SENSOR_6 == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6."
+#elif TEMP_SENSOR_6 == -1
+ #define TEMP_SENSOR_6_IS_AD595 1
+#elif TEMP_SENSOR_6 > 0
+ #define TEMP_SENSOR_6_IS_THERMISTOR 1
+ #if TEMP_SENSOR_6 == 1000
+ #define TEMP_SENSOR_6_IS_CUSTOM 1
+ #elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999
+ #define TEMP_SENSOR_6_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_6_MINTEMP
+ #undef HEATER_6_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_7 == -4
+ #define TEMP_SENSOR_7_IS_AD8495 1
+#elif TEMP_SENSOR_7 == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_7."
+#elif TEMP_SENSOR_7 == -2
+ #error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7."
+#elif TEMP_SENSOR_7 == -1
+ #define TEMP_SENSOR_7_IS_AD595 1
+#elif TEMP_SENSOR_7 > 0
+ #define TEMP_SENSOR_7_IS_THERMISTOR 1
+ #if TEMP_SENSOR_7 == 1000
+ #define TEMP_SENSOR_7_IS_CUSTOM 1
+ #elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999
+ #define TEMP_SENSOR_7_IS_DUMMY 1
+ #endif
+#else
+ #undef HEATER_7_MINTEMP
+ #undef HEATER_7_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_BED == -4
+ #define TEMP_SENSOR_BED_IS_AD8495 1
+#elif TEMP_SENSOR_BED == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BED."
+#elif TEMP_SENSOR_BED == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED."
+#elif TEMP_SENSOR_BED == -1
+ #define TEMP_SENSOR_BED_IS_AD595 1
+#elif TEMP_SENSOR_BED > 0
+ #define TEMP_SENSOR_BED_IS_THERMISTOR 1
+ #if TEMP_SENSOR_BED == 1000
+ #define TEMP_SENSOR_BED_IS_CUSTOM 1
+ #elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999
+ #define TEMP_SENSOR_BED_IS_DUMMY 1
+ #endif
+#else
+ #undef THERMAL_PROTECTION_BED
+ #undef THERMAL_PROTECTION_BED_PERIOD
+ #undef BED_MINTEMP
+ #undef BED_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_CHAMBER == -4
+ #define TEMP_SENSOR_CHAMBER_IS_AD8495 1
+#elif TEMP_SENSOR_CHAMBER == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_CHAMBER."
+#elif TEMP_SENSOR_CHAMBER == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_CHAMBER."
+#elif TEMP_SENSOR_CHAMBER == -1
+ #define TEMP_SENSOR_CHAMBER_IS_AD595 1
+#elif TEMP_SENSOR_CHAMBER > 0
+ #define TEMP_SENSOR_CHAMBER_IS_THERMISTOR 1
+ #if TEMP_SENSOR_CHAMBER == 1000
+ #define TEMP_SENSOR_CHAMBER_IS_CUSTOM 1
+ #elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999
+ #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1
+ #endif
+#else
+ #undef THERMAL_PROTECTION_CHAMBER
+ #undef CHAMBER_MINTEMP
+ #undef CHAMBER_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_COOLER == -4
+ #define TEMP_SENSOR_COOLER_IS_AD8495 1
+#elif TEMP_SENSOR_COOLER == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_COOLER."
+#elif TEMP_SENSOR_COOLER == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_COOLER."
+#elif TEMP_SENSOR_COOLER == -1
+ #define TEMP_SENSOR_COOLER_IS_AD595 1
+#elif TEMP_SENSOR_COOLER > 0
+ #define TEMP_SENSOR_COOLER_IS_THERMISTOR 1
+ #if TEMP_SENSOR_COOLER == 1000
+ #define TEMP_SENSOR_COOLER_IS_CUSTOM 1
+ #elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999
+ #define TEMP_SENSOR_COOLER_IS_DUMMY 1
+ #endif
+#else
+ #undef THERMAL_PROTECTION_COOLER
+ #undef COOLER_MINTEMP
+ #undef COOLER_MAXTEMP
+#endif
+
+#if TEMP_SENSOR_PROBE == -4
+ #define TEMP_SENSOR_PROBE_IS_AD8495 1
+#elif TEMP_SENSOR_PROBE == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_PROBE."
+#elif TEMP_SENSOR_PROBE == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_PROBE."
+#elif TEMP_SENSOR_PROBE == -1
+ #define TEMP_SENSOR_PROBE_IS_AD595 1
+#elif TEMP_SENSOR_PROBE > 0
+ #define TEMP_SENSOR_PROBE_IS_THERMISTOR 1
+ #if TEMP_SENSOR_PROBE == 1000
+ #define TEMP_SENSOR_PROBE_IS_CUSTOM 1
+ #elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999
+ #define TEMP_SENSOR_PROBE_IS_DUMMY 1
+ #endif
+#endif
+
+#if TEMP_SENSOR_BOARD == -4
+ #define TEMP_SENSOR_BOARD_IS_AD8495 1
+#elif TEMP_SENSOR_BOARD == -3
+ #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BOARD."
+#elif TEMP_SENSOR_BOARD == -2
+ #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BOARD."
+#elif TEMP_SENSOR_BOARD == -1
+ #define TEMP_SENSOR_BOARD_IS_AD595 1
+#elif TEMP_SENSOR_BOARD > 0
+ #define TEMP_SENSOR_BOARD_IS_THERMISTOR 1
+ #if TEMP_SENSOR_BOARD == 1000
+ #define TEMP_SENSOR_BOARD_IS_CUSTOM 1
+ #elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999
+ #define TEMP_SENSOR_BOARD_IS_DUMMY 1
+ #endif
+#endif
+
#if ENABLED(MIXING_EXTRUDER) && (ENABLED(RETRACT_SYNC_MIXING) || BOTH(FILAMENT_LOAD_UNLOAD_GCODES, FILAMENT_UNLOAD_ALL_EXTRUDERS))
#define HAS_MIXER_SYNC_CHANNEL 1
#endif
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 1bac56339f..b6cf8eccb6 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -513,22 +513,9 @@
#endif
/**
- * Temp Sensor defines
+ * Temp Sensor defines; set up pins as needed.
*/
-#define ANY_TEMP_SENSOR_IS(n) ( \
- n == TEMP_SENSOR_0 || n == TEMP_SENSOR_1 || n == TEMP_SENSOR_2 || n == TEMP_SENSOR_3 \
- || n == TEMP_SENSOR_4 || n == TEMP_SENSOR_5 || n == TEMP_SENSOR_6 || n == TEMP_SENSOR_7 \
- || n == TEMP_SENSOR_BED \
- || n == TEMP_SENSOR_PROBE \
- || n == TEMP_SENSOR_CHAMBER \
- || n == TEMP_SENSOR_COOLER \
- || n == TEMP_SENSOR_REDUNDANT )
-#if ANY_TEMP_SENSOR_IS(1000)
- #define HAS_USER_THERMISTORS 1
-#endif
-#undef ANY_TEMP_SENSOR_IS
-
// Usurp a sensor to do redundant readings
#if TEMP_SENSOR_REDUNDANT
#ifndef TEMP_SENSOR_REDUNDANT_SOURCE
@@ -617,166 +604,9 @@
#endif
#endif
-#if TEMP_SENSOR_0 == -5 || TEMP_SENSOR_0 == -3 || TEMP_SENSOR_0 == -2
- #define TEMP_SENSOR_0_IS_MAX_TC 1
- #if TEMP_SENSOR_0 == -5
- #define TEMP_SENSOR_0_IS_MAX31865 1
- #define TEMP_SENSOR_0_MAX_TC_TMIN 0
- #define TEMP_SENSOR_0_MAX_TC_TMAX 1024
- #ifndef MAX31865_SENSOR_WIRES_0
- #define MAX31865_SENSOR_WIRES_0 2
- #endif
- #elif TEMP_SENSOR_0 == -3
- #define TEMP_SENSOR_0_IS_MAX31855 1
- #define TEMP_SENSOR_0_MAX_TC_TMIN -270
- #define TEMP_SENSOR_0_MAX_TC_TMAX 1800
- #elif TEMP_SENSOR_0 == -2
- #define TEMP_SENSOR_0_IS_MAX6675 1
- #define TEMP_SENSOR_0_MAX_TC_TMIN 0
- #define TEMP_SENSOR_0_MAX_TC_TMAX 1024
- #endif
-#elif TEMP_SENSOR_0 == -4
- #define TEMP_SENSOR_0_IS_AD8495 1
-#elif TEMP_SENSOR_0 == -1
- #define TEMP_SENSOR_0_IS_AD595 1
-#elif TEMP_SENSOR_0 > 0
- #define TEMP_SENSOR_0_IS_THERMISTOR 1
- #if TEMP_SENSOR_0 == 1000
- #define TEMP_SENSOR_0_IS_CUSTOM 1
- #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999
- #define TEMP_SENSOR_0_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_0_MINTEMP
- #undef HEATER_0_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_1 == -5 || TEMP_SENSOR_1 == -3 || TEMP_SENSOR_1 == -2
- #define TEMP_SENSOR_1_IS_MAX_TC 1
- #if TEMP_SENSOR_1 == -5
- #define TEMP_SENSOR_1_IS_MAX31865 1
- #define TEMP_SENSOR_1_MAX_TC_TMIN 0
- #define TEMP_SENSOR_1_MAX_TC_TMAX 1024
- #ifndef MAX31865_SENSOR_WIRES_1
- #define MAX31865_SENSOR_WIRES_1 2
- #endif
- #elif TEMP_SENSOR_1 == -3
- #define TEMP_SENSOR_1_IS_MAX31855 1
- #define TEMP_SENSOR_1_MAX_TC_TMIN -270
- #define TEMP_SENSOR_1_MAX_TC_TMAX 1800
- #elif TEMP_SENSOR_1 == -2
- #define TEMP_SENSOR_1_IS_MAX6675 1
- #define TEMP_SENSOR_1_MAX_TC_TMIN 0
- #define TEMP_SENSOR_1_MAX_TC_TMAX 1024
- #endif
-
- #if TEMP_SENSOR_1 != TEMP_SENSOR_0
- #if TEMP_SENSOR_1 == -5
- #error "If MAX31865 Thermocouple (-5) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
- #elif TEMP_SENSOR_1 == -3
- #error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
- #elif TEMP_SENSOR_1 == -2
- #error "If MAX6675 Thermocouple (-2) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
- #endif
- #endif
-#elif TEMP_SENSOR_1 == -4
- #define TEMP_SENSOR_1_IS_AD8495 1
-#elif TEMP_SENSOR_1 == -1
- #define TEMP_SENSOR_1_IS_AD595 1
-#elif TEMP_SENSOR_1 > 0
- #define TEMP_SENSOR_1_IS_THERMISTOR 1
- #if TEMP_SENSOR_1 == 1000
- #define TEMP_SENSOR_1_IS_CUSTOM 1
- #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999
- #define TEMP_SENSOR_1_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_1_MINTEMP
- #undef HEATER_1_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_REDUNDANT == -5 || TEMP_SENSOR_REDUNDANT == -3 || TEMP_SENSOR_REDUNDANT == -2
- #define TEMP_SENSOR_REDUNDANT_IS_MAX_TC 1
-
- #if TEMP_SENSOR_REDUNDANT == -5
- #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
- #error "MAX31865 Thermocouples (-5) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
- #endif
-
- #define TEMP_SENSOR_REDUNDANT_IS_MAX31865 1
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
- #elif TEMP_SENSOR_REDUNDANT == -3
- #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
- #endif
-
- #define TEMP_SENSOR_REDUNDANT_IS_MAX31855 1
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN -270
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1800
- #elif TEMP_SENSOR_REDUNDANT == -2
- #if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1)
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1 (0/1)."
- #endif
-
- #define TEMP_SENSOR_REDUNDANT_IS_MAX6675 1
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
- #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
- #endif
-
- // mimic setting up the source TEMP_SENSOR
- #if REDUNDANT_TEMP_MATCH(SOURCE, E0)
- #define TEMP_SENSOR_0_MAX_TC_TMIN TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN
- #define TEMP_SENSOR_0_MAX_TC_TMAX TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX
- #ifndef MAX31865_SENSOR_WIRES_0
- #define MAX31865_SENSOR_WIRES_0 2
- #endif
- #elif REDUNDANT_TEMP_MATCH(SOURCE, E1)
- #define TEMP_SENSOR_1_MAX_TC_TMIN TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN
- #define TEMP_SENSOR_1_MAX_TC_TMAX TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX
- #ifndef MAX31865_SENSOR_WIRES_1
- #define MAX31865_SENSOR_WIRES_1 2
- #endif
- #endif
-
- #if (TEMP_SENSOR_0_IS_MAX_TC && TEMP_SENSOR_REDUNDANT != TEMP_SENSOR_0) || (TEMP_SENSOR_1_IS_MAX_TC && TEMP_SENSOR_REDUNDANT != TEMP_SENSOR_1)
- #if TEMP_SENSOR_REDUNDANT == -5
- #error "If MAX31865 Thermocouple (-5) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
- #elif TEMP_SENSOR_REDUNDANT == -3
- #error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
- #elif TEMP_SENSOR_REDUNDANT == -2
- #error "If MAX6675 Thermocouple (-2) is used for TEMP_SENSOR_0/TEMP_SENSOR_1 then TEMP_SENSOR_REDUNDANT must match."
- #endif
- #endif
-#elif TEMP_SENSOR_REDUNDANT == -4
- #define TEMP_SENSOR_REDUNDANT_IS_AD8495 1
-#elif TEMP_SENSOR_REDUNDANT == -1
- #define TEMP_SENSOR_REDUNDANT_IS_AD595 1
-#elif TEMP_SENSOR_REDUNDANT > 0
- #define TEMP_SENSOR_REDUNDANT_IS_THERMISTOR 1
- #if TEMP_SENSOR_REDUNDANT == 1000
- #define TEMP_SENSOR_REDUNDANT_IS_CUSTOM 1
- #elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999
- #error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT."
- #endif
-#endif
-
-#if TEMP_SENSOR_0_IS_MAX_TC || TEMP_SENSOR_1_IS_MAX_TC || TEMP_SENSOR_REDUNDANT_IS_MAX_TC
- #define HAS_MAX_TC 1
-#endif
-#if TEMP_SENSOR_0_IS_MAX6675 || TEMP_SENSOR_1_IS_MAX6675 || TEMP_SENSOR_REDUNDANT_IS_MAX6675
- #define HAS_MAX6675 1
-#endif
-#if TEMP_SENSOR_0_IS_MAX31855 || TEMP_SENSOR_1_IS_MAX31855 || TEMP_SENSOR_REDUNDANT_IS_MAX31855
- #define HAS_MAX31855 1
-#endif
-#if TEMP_SENSOR_0_IS_MAX31865 || TEMP_SENSOR_1_IS_MAX31865 || TEMP_SENSOR_REDUNDANT_IS_MAX31865
- #define HAS_MAX31865 1
-#endif
-
-//
-// Compatibility layer for MAX (SPI) temp boards
-//
+/**
+ * Compatibility layer for MAX (SPI) temp boards
+ */
#if HAS_MAX_TC
// Translate old _SS, _CS, _SCK, _DO, _DI, _MISO, and _MOSI PIN defines.
@@ -938,220 +768,6 @@
#endif //HAS_MAX_TC
-#if TEMP_SENSOR_2 == -4
- #define TEMP_SENSOR_2_IS_AD8495 1
-#elif TEMP_SENSOR_2 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_2."
-#elif TEMP_SENSOR_2 == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_2."
-#elif TEMP_SENSOR_2 == -1
- #define TEMP_SENSOR_2_IS_AD595 1
-#elif TEMP_SENSOR_2 > 0
- #define TEMP_SENSOR_2_IS_THERMISTOR 1
- #if TEMP_SENSOR_2 == 1000
- #define TEMP_SENSOR_2_IS_CUSTOM 1
- #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999
- #define TEMP_SENSOR_2_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_2_MINTEMP
- #undef HEATER_2_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_3 == -4
- #define TEMP_SENSOR_3_IS_AD8495 1
-#elif TEMP_SENSOR_3 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_3."
-#elif TEMP_SENSOR_3 == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3."
-#elif TEMP_SENSOR_3 == -1
- #define TEMP_SENSOR_3_IS_AD595 1
-#elif TEMP_SENSOR_3 > 0
- #define TEMP_SENSOR_3_IS_THERMISTOR 1
- #if TEMP_SENSOR_3 == 1000
- #define TEMP_SENSOR_3_IS_CUSTOM 1
- #elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999
- #define TEMP_SENSOR_3_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_3_MINTEMP
- #undef HEATER_3_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_4 == -4
- #define TEMP_SENSOR_4_IS_AD8495 1
-#elif TEMP_SENSOR_4 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_4."
-#elif TEMP_SENSOR_4 == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4."
-#elif TEMP_SENSOR_4 == -1
- #define TEMP_SENSOR_4_IS_AD595 1
-#elif TEMP_SENSOR_4 > 0
- #define TEMP_SENSOR_4_IS_THERMISTOR 1
- #if TEMP_SENSOR_4 == 1000
- #define TEMP_SENSOR_4_IS_CUSTOM 1
- #elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999
- #define TEMP_SENSOR_4_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_4_MINTEMP
- #undef HEATER_4_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_5 == -4
- #define TEMP_SENSOR_5_IS_AD8495 1
-#elif TEMP_SENSOR_5 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_5."
-#elif TEMP_SENSOR_5 == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5."
-#elif TEMP_SENSOR_5 == -1
- #define TEMP_SENSOR_5_IS_AD595 1
-#elif TEMP_SENSOR_5 > 0
- #define TEMP_SENSOR_5_IS_THERMISTOR 1
- #if TEMP_SENSOR_5 == 1000
- #define TEMP_SENSOR_5_IS_CUSTOM 1
- #elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999
- #define TEMP_SENSOR_5_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_5_MINTEMP
- #undef HEATER_5_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_6 == -4
- #define TEMP_SENSOR_6_IS_AD8495 1
-#elif TEMP_SENSOR_6 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_6."
-#elif TEMP_SENSOR_6 == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6."
-#elif TEMP_SENSOR_6 == -1
- #define TEMP_SENSOR_6_IS_AD595 1
-#elif TEMP_SENSOR_6 > 0
- #define TEMP_SENSOR_6_IS_THERMISTOR 1
- #if TEMP_SENSOR_6 == 1000
- #define TEMP_SENSOR_6_IS_CUSTOM 1
- #elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999
- #define TEMP_SENSOR_6_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_6_MINTEMP
- #undef HEATER_6_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_7 == -4
- #define TEMP_SENSOR_7_IS_AD8495 1
-#elif TEMP_SENSOR_7 == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_7."
-#elif TEMP_SENSOR_7 == -2
- #error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7."
-#elif TEMP_SENSOR_7 == -1
- #define TEMP_SENSOR_7_IS_AD595 1
-#elif TEMP_SENSOR_7 > 0
- #define TEMP_SENSOR_7_IS_THERMISTOR 1
- #if TEMP_SENSOR_7 == 1000
- #define TEMP_SENSOR_7_IS_CUSTOM 1
- #elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999
- #define TEMP_SENSOR_7_IS_DUMMY 1
- #endif
-#else
- #undef HEATER_7_MINTEMP
- #undef HEATER_7_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_BED == -4
- #define TEMP_SENSOR_BED_IS_AD8495 1
-#elif TEMP_SENSOR_BED == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BED."
-#elif TEMP_SENSOR_BED == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED."
-#elif TEMP_SENSOR_BED == -1
- #define TEMP_SENSOR_BED_IS_AD595 1
-#elif TEMP_SENSOR_BED > 0
- #define TEMP_SENSOR_BED_IS_THERMISTOR 1
- #if TEMP_SENSOR_BED == 1000
- #define TEMP_SENSOR_BED_IS_CUSTOM 1
- #elif TEMP_SENSOR_BED == 998 || TEMP_SENSOR_BED == 999
- #define TEMP_SENSOR_BED_IS_DUMMY 1
- #endif
-#else
- #undef BED_MINTEMP
- #undef BED_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_CHAMBER == -4
- #define TEMP_SENSOR_CHAMBER_IS_AD8495 1
-#elif TEMP_SENSOR_CHAMBER == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_CHAMBER."
-#elif TEMP_SENSOR_CHAMBER == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_CHAMBER."
-#elif TEMP_SENSOR_CHAMBER == -1
- #define TEMP_SENSOR_CHAMBER_IS_AD595 1
-#elif TEMP_SENSOR_CHAMBER > 0
- #define TEMP_SENSOR_CHAMBER_IS_THERMISTOR 1
- #if TEMP_SENSOR_CHAMBER == 1000
- #define TEMP_SENSOR_CHAMBER_IS_CUSTOM 1
- #elif TEMP_SENSOR_CHAMBER == 998 || TEMP_SENSOR_CHAMBER == 999
- #define TEMP_SENSOR_CHAMBER_IS_DUMMY 1
- #endif
-#else
- #undef CHAMBER_MINTEMP
- #undef CHAMBER_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_COOLER == -4
- #define TEMP_SENSOR_COOLER_IS_AD8495 1
-#elif TEMP_SENSOR_COOLER == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_COOLER."
-#elif TEMP_SENSOR_COOLER == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_COOLER."
-#elif TEMP_SENSOR_COOLER == -1
- #define TEMP_SENSOR_COOLER_IS_AD595 1
-#elif TEMP_SENSOR_COOLER > 0
- #define TEMP_SENSOR_COOLER_IS_THERMISTOR 1
- #if TEMP_SENSOR_COOLER == 1000
- #define TEMP_SENSOR_COOLER_IS_CUSTOM 1
- #elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999
- #define TEMP_SENSOR_COOLER_IS_DUMMY 1
- #endif
-#else
- #undef COOLER_MINTEMP
- #undef COOLER_MAXTEMP
-#endif
-
-#if TEMP_SENSOR_PROBE == -4
- #define TEMP_SENSOR_PROBE_IS_AD8495 1
-#elif TEMP_SENSOR_PROBE == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_PROBE."
-#elif TEMP_SENSOR_PROBE == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_PROBE."
-#elif TEMP_SENSOR_PROBE == -1
- #define TEMP_SENSOR_PROBE_IS_AD595 1
-#elif TEMP_SENSOR_PROBE > 0
- #define TEMP_SENSOR_PROBE_IS_THERMISTOR 1
- #if TEMP_SENSOR_PROBE == 1000
- #define TEMP_SENSOR_PROBE_IS_CUSTOM 1
- #elif TEMP_SENSOR_PROBE == 998 || TEMP_SENSOR_PROBE == 999
- #define TEMP_SENSOR_PROBE_IS_DUMMY 1
- #endif
-#endif
-
-#if TEMP_SENSOR_BOARD == -4
- #define TEMP_SENSOR_BOARD_IS_AD8495 1
-#elif TEMP_SENSOR_BOARD == -3
- #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BOARD."
-#elif TEMP_SENSOR_BOARD == -2
- #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BOARD."
-#elif TEMP_SENSOR_BOARD == -1
- #define TEMP_SENSOR_BOARD_IS_AD595 1
-#elif TEMP_SENSOR_BOARD > 0
- #define TEMP_SENSOR_BOARD_IS_THERMISTOR 1
- #if TEMP_SENSOR_BOARD == 1000
- #define TEMP_SENSOR_BOARD_IS_CUSTOM 1
- #elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999
- #define TEMP_SENSOR_BOARD_IS_DUMMY 1
- #endif
-#endif
-
/**
* X_DUAL_ENDSTOPS endstop reassignment
*/
From 4ac32b1993972f7b557378e6700e98c4f2d3d17a Mon Sep 17 00:00:00 2001
From: mks-viva <1224833100@qq.com>
Date: Tue, 13 Jul 2021 19:14:34 -0500
Subject: [PATCH 03/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Robin=20Nano=20V3=20?=
=?UTF-8?q?X=5FDIAG=5FPIN=20(#22340)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
index 7de5552dbb..ac93580589 100644
--- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
+++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
@@ -59,7 +59,7 @@
//
// Limit Switches
//
-#define X_DIAG_PIN PD15
+#define X_DIAG_PIN PA15
#define Y_DIAG_PIN PD2
#define Z_DIAG_PIN PC8
#define E0_DIAG_PIN PC4
From 88dad3a1645f6de0151659494e0ba6ccebbf1526 Mon Sep 17 00:00:00 2001
From: ellensp
Date: Wed, 14 Jul 2021 12:32:21 +1200
Subject: [PATCH 04/35] =?UTF-8?q?=F0=9F=90=9B=20Define=20MT=5FDET=5FPIN=5F?=
=?UTF-8?q?INVERTING=20for=20MKS=5FROBIN=5FNANO=5FV3=20(#22348)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
index ac93580589..141c6d4a76 100644
--- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
+++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
@@ -180,6 +180,7 @@
//
#define MT_DET_1_PIN PA4
#define MT_DET_2_PIN PE6
+#define MT_DET_PIN_INVERTING false // LVGL UI filament RUNOUT PIN STATE
#define PW_DET PA13
#define PW_OFF PB2
From 9a0d4d666f85e484d850a48d989d379d58c59781 Mon Sep 17 00:00:00 2001
From: thinkyhead
Date: Wed, 14 Jul 2021 00:54:43 +0000
Subject: [PATCH 05/35] [cron] Bump distribution date (2021-07-14)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index 5cfb8c0a07..a218af3d3d 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-13"
+//#define STRING_DISTRIBUTION_DATE "2021-07-14"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index 2834d3888b..3db502c470 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-13"
+ #define STRING_DISTRIBUTION_DATE "2021-07-14"
#endif
/**
From 65cfbc074104c6b1ae4ef58251e516e3c4bad659 Mon Sep 17 00:00:00 2001
From: Victor Oliveira
Date: Wed, 14 Jul 2021 02:34:18 -0300
Subject: [PATCH 06/35] =?UTF-8?q?=E2=9C=A8=20MSC=20Support=20for=20STM32?=
=?UTF-8?q?=20+=20SDIO=20boards=20->=20SKR=202=20(#22354)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp | 517 +++++++++---------
Marlin/src/HAL/STM32/msc_sd.cpp | 2 +-
Marlin/src/HAL/STM32F1/sdio.cpp | 4 +
Marlin/src/pins/pins.h | 4 +-
Marlin/src/sd/Sd2Card_sdio.h | 20 +-
ini/stm32f4.ini | 10 +
6 files changed, 276 insertions(+), 281 deletions(-)
diff --git a/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp b/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
index 2ba0359cac..05f859a4af 100644
--- a/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
+++ b/Marlin/src/HAL/STM32/Sd2Card_sdio_stm32duino.cpp
@@ -28,319 +28,296 @@
#include
#include
-#if NONE(STM32F103xE, STM32F103xG, STM32F4xx, STM32F7xx)
- #error "ERROR - Only STM32F103xE, STM32F103xG, STM32F4xx or STM32F7xx CPUs supported"
+// use local drivers
+#if defined(STM32F103xE) || defined(STM32F103xG)
+ #include
+ #include
+#elif defined(STM32F4xx)
+ #include
+ #include
+ #include
+ #include
+#elif defined(STM32F7xx)
+ #include
+ #include
+ #include
+ #include
+#else
+ #error "SDIO only supported with STM32F103xE, STM32F103xG, STM32F4xx, or STM32F7xx."
#endif
-#if HAS_SD_HOST_DRIVE
+// Fixed
+#define SDIO_D0_PIN PC8
+#define SDIO_D1_PIN PC9
+#define SDIO_D2_PIN PC10
+#define SDIO_D3_PIN PC11
+#define SDIO_CK_PIN PC12
+#define SDIO_CMD_PIN PD2
- // use USB drivers
+SD_HandleTypeDef hsd; // create SDIO structure
+// F4 supports one DMA for RX and another for TX, but Marlin will never
+// do read and write at same time, so we use the same DMA for both.
+DMA_HandleTypeDef hdma_sdio;
- extern "C" {
- int8_t SD_MSC_Read(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- int8_t SD_MSC_Write(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- extern SD_HandleTypeDef hsd;
- }
+/*
+ SDIO_INIT_CLK_DIV is 118
+ SDIO clock frequency is 48MHz / (TRANSFER_CLOCK_DIV + 2)
+ SDIO init clock frequency should not exceed 400KHz = 48MHz / (118 + 2)
- bool SDIO_Init() {
- return hsd.State == HAL_SD_STATE_READY; // return pass/fail status
- }
+ Default TRANSFER_CLOCK_DIV is 2 (118 / 40)
+ Default SDIO clock frequency is 48MHz / (2 + 2) = 12 MHz
+ This might be too fast for stable SDIO operations
- bool SDIO_ReadBlock(uint32_t block, uint8_t *src) {
- int8_t status = SD_MSC_Read(0, (uint8_t*)src, block, 1); // read one 512 byte block
- return (bool) status;
- }
+ MKS Robin board seems to have stable SDIO with BusWide 1bit and ClockDiv 8 i.e. 4.8MHz SDIO clock frequency
+ Additional testing is required as there are clearly some 4bit initialization problems
+*/
- bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
- int8_t status = SD_MSC_Write(0, (uint8_t*)src, block, 1); // write one 512 byte block
- return (bool) status;
- }
+#ifndef USBD_OK
+ #define USBD_OK 0
+#endif
-#else // !USBD_USE_CDC_COMPOSITE
+// Target Clock, configurable. Default is 18MHz, from STM32F1
+#ifndef SDIO_CLOCK
+ #define SDIO_CLOCK 18000000 // 18 MHz
+#endif
- // use local drivers
- #if defined(STM32F103xE) || defined(STM32F103xG)
- #include
- #include
- #elif defined(STM32F4xx)
- #include
- #include
- #include
- #include
- #elif defined(STM32F7xx)
- #include
- #include
- #include
- #include
- #else
- #error "ERROR - Only STM32F103xE, STM32F103xG, STM32F4xx or STM32F7xx CPUs supported"
+// SDIO retries, configurable. Default is 3, from STM32F1
+#ifndef SDIO_READ_RETRIES
+ #define SDIO_READ_RETRIES 3
+#endif
+
+// SDIO Max Clock (naming from STM Manual, don't change)
+#define SDIOCLK 48000000
+
+static uint32_t clock_to_divider(uint32_t clk) {
+ // limit the SDIO master clock to 8/3 of PCLK2. See STM32 Manuals
+ // Also limited to no more than 48Mhz (SDIOCLK).
+ const uint32_t pclk2 = HAL_RCC_GetPCLK2Freq();
+ clk = min(clk, (uint32_t)(pclk2 * 8 / 3));
+ clk = min(clk, (uint32_t)SDIOCLK);
+ // Round up divider, so we don't run the card over the speed supported,
+ // and subtract by 2, because STM32 will add 2, as written in the manual:
+ // SDIO_CK frequency = SDIOCLK / [CLKDIV + 2]
+ return pclk2 / clk + (pclk2 % clk != 0) - 2;
+}
+
+void go_to_transfer_speed() {
+ /* Default SDIO peripheral configuration for SD card initialization */
+ hsd.Init.ClockEdge = hsd.Init.ClockEdge;
+ hsd.Init.ClockBypass = hsd.Init.ClockBypass;
+ hsd.Init.ClockPowerSave = hsd.Init.ClockPowerSave;
+ hsd.Init.BusWide = hsd.Init.BusWide;
+ hsd.Init.HardwareFlowControl = hsd.Init.HardwareFlowControl;
+ hsd.Init.ClockDiv = clock_to_divider(SDIO_CLOCK);
+
+ /* Initialize SDIO peripheral interface with default configuration */
+ SDIO_Init(hsd.Instance, hsd.Init);
+}
+
+void SD_LowLevel_Init(void) {
+ uint32_t tempreg;
+
+ __HAL_RCC_GPIOC_CLK_ENABLE(); //enable GPIO clocks
+ __HAL_RCC_GPIOD_CLK_ENABLE(); //enable GPIO clocks
+
+ GPIO_InitTypeDef GPIO_InitStruct;
+
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = 1; //GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+
+ #if DISABLED(STM32F1xx)
+ GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
#endif
- // Fixed
- #define SDIO_D0_PIN PC8
- #define SDIO_D1_PIN PC9
- #define SDIO_D2_PIN PC10
- #define SDIO_D3_PIN PC11
- #define SDIO_CK_PIN PC12
- #define SDIO_CMD_PIN PD2
+ GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_12; // D0 & SCK
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- SD_HandleTypeDef hsd; // create SDIO structure
- // F4 supports one DMA for RX and another for TX, but Marlin will never
- // do read and write at same time, so we use the same DMA for both.
- DMA_HandleTypeDef hdma_sdio;
-
- /*
- SDIO_INIT_CLK_DIV is 118
- SDIO clock frequency is 48MHz / (TRANSFER_CLOCK_DIV + 2)
- SDIO init clock frequency should not exceed 400KHz = 48MHz / (118 + 2)
-
- Default TRANSFER_CLOCK_DIV is 2 (118 / 40)
- Default SDIO clock frequency is 48MHz / (2 + 2) = 12 MHz
- This might be too fast for stable SDIO operations
-
- MKS Robin board seems to have stable SDIO with BusWide 1bit and ClockDiv 8 i.e. 4.8MHz SDIO clock frequency
- Additional testing is required as there are clearly some 4bit initialization problems
- */
-
- #ifndef USBD_OK
- #define USBD_OK 0
- #endif
-
- // Target Clock, configurable. Default is 18MHz, from STM32F1
- #ifndef SDIO_CLOCK
- #define SDIO_CLOCK 18000000 // 18 MHz
- #endif
-
- // SDIO retries, configurable. Default is 3, from STM32F1
- #ifndef SDIO_READ_RETRIES
- #define SDIO_READ_RETRIES 3
- #endif
-
- // SDIO Max Clock (naming from STM Manual, don't change)
- #define SDIOCLK 48000000
-
- static uint32_t clock_to_divider(uint32_t clk) {
- // limit the SDIO master clock to 8/3 of PCLK2. See STM32 Manuals
- // Also limited to no more than 48Mhz (SDIOCLK).
- const uint32_t pclk2 = HAL_RCC_GetPCLK2Freq();
- clk = min(clk, (uint32_t)(pclk2 * 8 / 3));
- clk = min(clk, (uint32_t)SDIOCLK);
- // Round up divider, so we don't run the card over the speed supported,
- // and subtract by 2, because STM32 will add 2, as written in the manual:
- // SDIO_CK frequency = SDIOCLK / [CLKDIV + 2]
- return pclk2 / clk + (pclk2 % clk != 0) - 2;
- }
-
- void go_to_transfer_speed() {
- /* Default SDIO peripheral configuration for SD card initialization */
- hsd.Init.ClockEdge = hsd.Init.ClockEdge;
- hsd.Init.ClockBypass = hsd.Init.ClockBypass;
- hsd.Init.ClockPowerSave = hsd.Init.ClockPowerSave;
- hsd.Init.BusWide = hsd.Init.BusWide;
- hsd.Init.HardwareFlowControl = hsd.Init.HardwareFlowControl;
- hsd.Init.ClockDiv = clock_to_divider(SDIO_CLOCK);
-
- /* Initialize SDIO peripheral interface with default configuration */
- SDIO_Init(hsd.Instance, hsd.Init);
- }
-
- void SD_LowLevel_Init(void) {
- uint32_t tempreg;
-
- __HAL_RCC_GPIOC_CLK_ENABLE(); //enable GPIO clocks
- __HAL_RCC_GPIOD_CLK_ENABLE(); //enable GPIO clocks
-
- GPIO_InitTypeDef GPIO_InitStruct;
-
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = 1; //GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
-
- #if DISABLED(STM32F1xx)
- GPIO_InitStruct.Alternate = GPIO_AF12_SDIO;
- #endif
-
- GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_12; // D0 & SCK
+ #if PINS_EXIST(SDIO_D1, SDIO_D2, SDIO_D3) // define D1-D3 only if have a four bit wide SDIO bus
+ GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11; // D1-D3
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+ #endif
- #if PINS_EXIST(SDIO_D1, SDIO_D2, SDIO_D3) // define D1-D3 only if have a four bit wide SDIO bus
- GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11; // D1-D3
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- #endif
+ // Configure PD.02 CMD line
+ GPIO_InitStruct.Pin = GPIO_PIN_2;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
- // Configure PD.02 CMD line
- GPIO_InitStruct.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+ // Setup DMA
+ #if defined(STM32F1xx)
+ hdma_sdio.Init.Mode = DMA_NORMAL;
+ hdma_sdio.Instance = DMA2_Channel4;
+ HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn);
+ #elif defined(STM32F4xx)
+ hdma_sdio.Init.Mode = DMA_PFCTRL;
+ hdma_sdio.Instance = DMA2_Stream3;
+ hdma_sdio.Init.Channel = DMA_CHANNEL_4;
+ hdma_sdio.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
+ hdma_sdio.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
+ hdma_sdio.Init.MemBurst = DMA_MBURST_INC4;
+ hdma_sdio.Init.PeriphBurst = DMA_PBURST_INC4;
+ HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
+ #endif
+ HAL_NVIC_EnableIRQ(SDIO_IRQn);
+ hdma_sdio.Init.PeriphInc = DMA_PINC_DISABLE;
+ hdma_sdio.Init.MemInc = DMA_MINC_ENABLE;
+ hdma_sdio.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
+ hdma_sdio.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
+ hdma_sdio.Init.Priority = DMA_PRIORITY_LOW;
+ __HAL_LINKDMA(&hsd, hdmarx, hdma_sdio);
+ __HAL_LINKDMA(&hsd, hdmatx, hdma_sdio);
- // Setup DMA
- #if defined(STM32F1xx)
- hdma_sdio.Init.Mode = DMA_NORMAL;
- hdma_sdio.Instance = DMA2_Channel4;
- HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn);
- #elif defined(STM32F4xx)
- hdma_sdio.Init.Mode = DMA_PFCTRL;
- hdma_sdio.Instance = DMA2_Stream3;
- hdma_sdio.Init.Channel = DMA_CHANNEL_4;
- hdma_sdio.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
- hdma_sdio.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_sdio.Init.MemBurst = DMA_MBURST_INC4;
- hdma_sdio.Init.PeriphBurst = DMA_PBURST_INC4;
- HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
- #endif
- HAL_NVIC_EnableIRQ(SDIO_IRQn);
- hdma_sdio.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_sdio.Init.MemInc = DMA_MINC_ENABLE;
- hdma_sdio.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_sdio.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_sdio.Init.Priority = DMA_PRIORITY_LOW;
- __HAL_LINKDMA(&hsd, hdmarx, hdma_sdio);
- __HAL_LINKDMA(&hsd, hdmatx, hdma_sdio);
+ #if defined(STM32F1xx)
+ __HAL_RCC_SDIO_CLK_ENABLE();
+ __HAL_RCC_DMA2_CLK_ENABLE();
+ #else
+ __HAL_RCC_SDIO_FORCE_RESET();
+ delay(2);
+ __HAL_RCC_SDIO_RELEASE_RESET();
+ delay(2);
+ __HAL_RCC_SDIO_CLK_ENABLE();
- #if defined(STM32F1xx)
- __HAL_RCC_SDIO_CLK_ENABLE();
- __HAL_RCC_DMA2_CLK_ENABLE();
- #else
- __HAL_RCC_SDIO_FORCE_RESET();
- delay(2);
- __HAL_RCC_SDIO_RELEASE_RESET();
- delay(2);
- __HAL_RCC_SDIO_CLK_ENABLE();
+ __HAL_RCC_DMA2_FORCE_RESET();
+ delay(2);
+ __HAL_RCC_DMA2_RELEASE_RESET();
+ delay(2);
+ __HAL_RCC_DMA2_CLK_ENABLE();
+ #endif
- __HAL_RCC_DMA2_FORCE_RESET();
- delay(2);
- __HAL_RCC_DMA2_RELEASE_RESET();
- delay(2);
- __HAL_RCC_DMA2_CLK_ENABLE();
- #endif
+ //Initialize the SDIO (with initial <400Khz Clock)
+ tempreg = 0; //Reset value
+ tempreg |= SDIO_CLKCR_CLKEN; // Clock enabled
+ tempreg |= SDIO_INIT_CLK_DIV; // Clock Divider. Clock = 48000 / (118 + 2) = 400Khz
+ // Keep the rest at 0 => HW_Flow Disabled, Rising Clock Edge, Disable CLK ByPass, Bus Width = 0, Power save Disable
+ SDIO->CLKCR = tempreg;
- //Initialize the SDIO (with initial <400Khz Clock)
- tempreg = 0; //Reset value
- tempreg |= SDIO_CLKCR_CLKEN; // Clock enabled
- tempreg |= SDIO_INIT_CLK_DIV; // Clock Divider. Clock = 48000 / (118 + 2) = 400Khz
- // Keep the rest at 0 => HW_Flow Disabled, Rising Clock Edge, Disable CLK ByPass, Bus Width = 0, Power save Disable
- SDIO->CLKCR = tempreg;
+ // Power up the SDIO
+ SDIO_PowerState_ON(SDIO);
+ hsd.Instance = SDIO;
+}
- // Power up the SDIO
- SDIO_PowerState_ON(SDIO);
- hsd.Instance = SDIO;
+void HAL_SD_MspInit(SD_HandleTypeDef *hsd) { // application specific init
+ UNUSED(hsd); // Prevent unused argument(s) compilation warning
+ __HAL_RCC_SDIO_CLK_ENABLE(); // turn on SDIO clock
+}
+
+bool SDIO_Init() {
+ uint8_t retryCnt = SDIO_READ_RETRIES;
+
+ bool status;
+ hsd.Instance = SDIO;
+ hsd.State = HAL_SD_STATE_RESET;
+
+ SD_LowLevel_Init();
+
+ uint8_t retry_Cnt = retryCnt;
+ for (;;) {
+ TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
+ status = (bool) HAL_SD_Init(&hsd);
+ if (!status) break;
+ if (!--retry_Cnt) return false; // return failing status if retries are exhausted
}
- void HAL_SD_MspInit(SD_HandleTypeDef *hsd) { // application specific init
- UNUSED(hsd); // Prevent unused argument(s) compilation warning
- __HAL_RCC_SDIO_CLK_ENABLE(); // turn on SDIO clock
- }
+ go_to_transfer_speed();
- bool SDIO_Init() {
- uint8_t retryCnt = SDIO_READ_RETRIES;
-
- bool status;
- hsd.Instance = SDIO;
- hsd.State = HAL_SD_STATE_RESET;
-
- SD_LowLevel_Init();
-
- uint8_t retry_Cnt = retryCnt;
+ #if PINS_EXIST(SDIO_D1, SDIO_D2, SDIO_D3) // go to 4 bit wide mode if pins are defined
+ retry_Cnt = retryCnt;
for (;;) {
TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
- status = (bool) HAL_SD_Init(&hsd);
- if (!status) break;
- if (!--retry_Cnt) return false; // return failing status if retries are exhausted
+ if (!HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B)) break; // some cards are only 1 bit wide so a pass here is not required
+ if (!--retry_Cnt) break;
}
-
- go_to_transfer_speed();
-
- #if PINS_EXIST(SDIO_D1, SDIO_D2, SDIO_D3) // go to 4 bit wide mode if pins are defined
+ if (!retry_Cnt) { // wide bus failed, go back to one bit wide mode
+ hsd.State = (HAL_SD_StateTypeDef) 0; // HAL_SD_STATE_RESET
+ SD_LowLevel_Init();
retry_Cnt = retryCnt;
for (;;) {
TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
- if (!HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B)) break; // some cards are only 1 bit wide so a pass here is not required
- if (!--retry_Cnt) break;
+ status = (bool) HAL_SD_Init(&hsd);
+ if (!status) break;
+ if (!--retry_Cnt) return false; // return failing status if retries are exhausted
}
- if (!retry_Cnt) { // wide bus failed, go back to one bit wide mode
- hsd.State = (HAL_SD_StateTypeDef) 0; // HAL_SD_STATE_RESET
- SD_LowLevel_Init();
- retry_Cnt = retryCnt;
- for (;;) {
- TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
- status = (bool) HAL_SD_Init(&hsd);
- if (!status) break;
- if (!--retry_Cnt) return false; // return failing status if retries are exhausted
- }
- go_to_transfer_speed();
- }
- #endif
+ go_to_transfer_speed();
+ }
+ #endif
- return true;
+ return true;
+}
+
+static bool SDIO_ReadWriteBlock_DMA(uint32_t block, const uint8_t *src, uint8_t *dst) {
+ if (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER) return false;
+
+ TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
+
+ HAL_StatusTypeDef ret;
+ if (src) {
+ hdma_sdio.Init.Direction = DMA_MEMORY_TO_PERIPH;
+ HAL_DMA_Init(&hdma_sdio);
+ ret = HAL_SD_WriteBlocks_DMA(&hsd, (uint8_t *)src, block, 1);
+ }
+ else {
+ hdma_sdio.Init.Direction = DMA_PERIPH_TO_MEMORY;
+ HAL_DMA_Init(&hdma_sdio);
+ ret = HAL_SD_ReadBlocks_DMA(&hsd, (uint8_t *)dst, block, 1);
}
- static bool SDIO_ReadWriteBlock_DMA(uint32_t block, const uint8_t *src, uint8_t *dst) {
- if (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER) return false;
+ if (ret != HAL_OK) {
+ HAL_DMA_Abort_IT(&hdma_sdio);
+ HAL_DMA_DeInit(&hdma_sdio);
+ return false;
+ }
- TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
-
- HAL_StatusTypeDef ret;
- if (src) {
- hdma_sdio.Init.Direction = DMA_MEMORY_TO_PERIPH;
- HAL_DMA_Init(&hdma_sdio);
- ret = HAL_SD_WriteBlocks_DMA(&hsd, (uint8_t *)src, block, 1);
- }
- else {
- hdma_sdio.Init.Direction = DMA_PERIPH_TO_MEMORY;
- HAL_DMA_Init(&hdma_sdio);
- ret = HAL_SD_ReadBlocks_DMA(&hsd, (uint8_t *)dst, block, 1);
- }
-
- if (ret != HAL_OK) {
+ millis_t timeout = millis() + 500;
+ // Wait the transfer
+ while (hsd.State != HAL_SD_STATE_READY) {
+ if (ELAPSED(millis(), timeout)) {
HAL_DMA_Abort_IT(&hdma_sdio);
HAL_DMA_DeInit(&hdma_sdio);
return false;
}
-
- millis_t timeout = millis() + 500;
- // Wait the transfer
- while (hsd.State != HAL_SD_STATE_READY) {
- if (ELAPSED(millis(), timeout)) {
- HAL_DMA_Abort_IT(&hdma_sdio);
- HAL_DMA_DeInit(&hdma_sdio);
- return false;
- }
- }
-
- while (__HAL_DMA_GET_FLAG(&hdma_sdio, __HAL_DMA_GET_TC_FLAG_INDEX(&hdma_sdio)) != 0
- || __HAL_DMA_GET_FLAG(&hdma_sdio, __HAL_DMA_GET_TE_FLAG_INDEX(&hdma_sdio)) != 0) { /* nada */ }
-
- HAL_DMA_Abort_IT(&hdma_sdio);
- HAL_DMA_DeInit(&hdma_sdio);
-
- timeout = millis() + 500;
- while (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER) if (ELAPSED(millis(), timeout)) return false;
-
- return true;
}
- bool SDIO_ReadBlock(uint32_t block, uint8_t *dst) {
- uint8_t retries = SDIO_READ_RETRIES;
- while (retries--) if (SDIO_ReadWriteBlock_DMA(block, NULL, dst)) return true;
- return false;
- }
+ while (__HAL_DMA_GET_FLAG(&hdma_sdio, __HAL_DMA_GET_TC_FLAG_INDEX(&hdma_sdio)) != 0
+ || __HAL_DMA_GET_FLAG(&hdma_sdio, __HAL_DMA_GET_TE_FLAG_INDEX(&hdma_sdio)) != 0) { /* nada */ }
- bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
- uint8_t retries = SDIO_READ_RETRIES;
- while (retries--) if (SDIO_ReadWriteBlock_DMA(block, src, NULL)) return true;
- return false;
- }
+ HAL_DMA_Abort_IT(&hdma_sdio);
+ HAL_DMA_DeInit(&hdma_sdio);
- #if defined(STM32F1xx)
- #define DMA_IRQ_HANDLER DMA2_Channel4_5_IRQHandler
- #elif defined(STM32F4xx)
- #define DMA_IRQ_HANDLER DMA2_Stream3_IRQHandler
- #else
- #error "Unknown STM32 architecture."
- #endif
+ timeout = millis() + 500;
+ while (HAL_SD_GetCardState(&hsd) != HAL_SD_CARD_TRANSFER) if (ELAPSED(millis(), timeout)) return false;
- extern "C" void SDIO_IRQHandler(void) { HAL_SD_IRQHandler(&hsd); }
- extern "C" void DMA_IRQ_HANDLER(void) { HAL_DMA_IRQHandler(&hdma_sdio); }
+ return true;
+}
+
+bool SDIO_ReadBlock(uint32_t block, uint8_t *dst) {
+ uint8_t retries = SDIO_READ_RETRIES;
+ while (retries--) if (SDIO_ReadWriteBlock_DMA(block, NULL, dst)) return true;
+ return false;
+}
+
+bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
+ uint8_t retries = SDIO_READ_RETRIES;
+ while (retries--) if (SDIO_ReadWriteBlock_DMA(block, src, NULL)) return true;
+ return false;
+}
+
+bool SDIO_IsReady() {
+ return hsd.State == HAL_SD_STATE_READY;
+}
+
+uint32_t SDIO_GetCardSize() {
+ return (uint32_t)(hsd.SdCard.BlockNbr) * (hsd.SdCard.BlockSize);
+}
+
+#if defined(STM32F1xx)
+ #define DMA_IRQ_HANDLER DMA2_Channel4_5_IRQHandler
+#elif defined(STM32F4xx)
+ #define DMA_IRQ_HANDLER DMA2_Stream3_IRQHandler
+#else
+ #error "Unknown STM32 architecture."
+#endif
+
+extern "C" void SDIO_IRQHandler(void) { HAL_SD_IRQHandler(&hsd); }
+extern "C" void DMA_IRQ_HANDLER(void) { HAL_DMA_IRQHandler(&hdma_sdio); }
-#endif // !USBD_USE_CDC_COMPOSITE
#endif // SDIO_SUPPORT
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC && !MAPLE_STM32F1
diff --git a/Marlin/src/HAL/STM32/msc_sd.cpp b/Marlin/src/HAL/STM32/msc_sd.cpp
index 98f75d89f0..70a719d665 100644
--- a/Marlin/src/HAL/STM32/msc_sd.cpp
+++ b/Marlin/src/HAL/STM32/msc_sd.cpp
@@ -19,10 +19,10 @@
#if HAS_SD_HOST_DRIVE
+#include "../shared/Marduino.h"
#include "msc_sd.h"
#include "usbd_core.h"
-#include "../shared/Marduino.h"
#include "../../sd/cardreader.h"
#include
diff --git a/Marlin/src/HAL/STM32F1/sdio.cpp b/Marlin/src/HAL/STM32F1/sdio.cpp
index ffa6db1206..6e41d2cbf1 100644
--- a/Marlin/src/HAL/STM32F1/sdio.cpp
+++ b/Marlin/src/HAL/STM32F1/sdio.cpp
@@ -184,6 +184,10 @@ bool SDIO_WriteBlock(uint32_t blockAddress, const uint8_t *data) {
inline uint32_t SDIO_GetCardState() { return SDIO_CmdSendStatus(SdCard.RelCardAdd << 16U) ? (SDIO_GetResponse(SDIO_RESP1) >> 9U) & 0x0FU : SDIO_CARD_ERROR; }
+// No F1 board with SDIO + MSC using Maple, that I aware of...
+bool SDIO_IsReady() { return true; }
+uint32_t SDIO_GetCardSize() { return 0; }
+
// ------------------------
// SD Commands and Responses
// ------------------------
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 1f53227553..b9a5f19d7c 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -594,9 +594,9 @@
#elif MB(BTT_E3_RRF)
#include "stm32f4/pins_BTT_E3_RRF.h" // STM32F4 env:BIGTREE_E3_RRF
#elif MB(BTT_SKR_V2_0_REV_A)
- #include "stm32f4/pins_BTT_SKR_V2_0_REV_A.h" // STM32F4 env:BIGTREE_SKR_2
+ #include "stm32f4/pins_BTT_SKR_V2_0_REV_A.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB
#elif MB(BTT_SKR_V2_0_REV_B)
- #include "stm32f4/pins_BTT_SKR_V2_0_REV_B.h" // STM32F4 env:BIGTREE_SKR_2
+ #include "stm32f4/pins_BTT_SKR_V2_0_REV_B.h" // STM32F4 env:BIGTREE_SKR_2 env:BIGTREE_SKR_2_USB
#elif MB(BTT_OCTOPUS_V1_0)
#include "stm32f4/pins_BTT_OCTOPUS_V1_0.h" // STM32F4 env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB
#elif MB(BTT_OCTOPUS_V1_1)
diff --git a/Marlin/src/sd/Sd2Card_sdio.h b/Marlin/src/sd/Sd2Card_sdio.h
index 1580344805..cc29f5d46d 100644
--- a/Marlin/src/sd/Sd2Card_sdio.h
+++ b/Marlin/src/sd/Sd2Card_sdio.h
@@ -29,6 +29,8 @@
bool SDIO_Init();
bool SDIO_ReadBlock(uint32_t block, uint8_t *dst);
bool SDIO_WriteBlock(uint32_t block, const uint8_t *src);
+bool SDIO_IsReady();
+uint32_t SDIO_GetCardSize();
class DiskIODriver_SDIO : public DiskIODriver {
public:
@@ -36,20 +38,22 @@ class DiskIODriver_SDIO : public DiskIODriver {
bool readCSD(csd_t *csd) override { return false; }
- bool readStart(const uint32_t block) override { return false; }
- bool readData(uint8_t *dst) override { return false; }
- bool readStop() override { return false; }
+ bool readStart(const uint32_t block) override { curBlock = block; return true; }
+ bool readData(uint8_t *dst) override { return readBlock(curBlock++, dst); }
+ bool readStop() override { curBlock = -1; return true; }
- bool writeStart(const uint32_t block, const uint32_t) override { return false; }
- bool writeData(const uint8_t *src) override { return false; }
- bool writeStop() override { return false; }
+ bool writeStart(const uint32_t block, const uint32_t) override { curBlock = block; return true; }
+ bool writeData(const uint8_t *src) override { return writeBlock(curBlock++, src); }
+ bool writeStop() override { curBlock = -1; return true; }
bool readBlock(uint32_t block, uint8_t *dst) override { return SDIO_ReadBlock(block, dst); }
bool writeBlock(uint32_t block, const uint8_t *src) override { return SDIO_WriteBlock(block, src); }
- uint32_t cardSize() override { return 0; }
+ uint32_t cardSize() override { return SDIO_GetCardSize(); }
- bool isReady() override { return true; }
+ bool isReady() override { return SDIO_IsReady(); }
void idle() override {}
+ private:
+ uint32_t curBlock;
};
diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini
index 6067bbc3b8..ced410624f 100644
--- a/ini/stm32f4.ini
+++ b/ini/stm32f4.ini
@@ -243,6 +243,16 @@ build_flags = ${stm_flash_drive.build_flags}
-DUSE_USBHOST_HS -DUSE_USB_HS_IN_FS -DUSBD_IRQ_PRIO=5 -DUSBD_IRQ_SUBPRIO=6
-DHSE_VALUE=8000000U -DHAL_SD_MODULE_ENABLED
+#
+# BigTreeTech SKR V2.0 (STM32F407VGT6 ARM Cortex-M4) with USB Media Share Support
+#
+[env:BIGTREE_SKR_2_USB]
+platform = ${common_stm32.platform}
+extends = env:BIGTREE_SKR_2
+platform_packages = ${stm_flash_drive.platform_packages}
+build_unflags = -DUSBD_USE_CDC
+build_flags = ${env:BIGTREE_SKR_2.build_flags} -DUSBD_USE_CDC_MSC
+
#
# BigTreeTech Octopus V1.0/1.1 (STM32F446ZET6 ARM Cortex-M4)
#
From f479a2ef6f8335e7952ac099cb1b8336aa0a3c34 Mon Sep 17 00:00:00 2001
From: ellensp
Date: Wed, 14 Jul 2021 18:57:26 +1200
Subject: [PATCH 07/35] =?UTF-8?q?=E2=9C=A8=20FLY=20Mini=20for=20stm32duino?=
=?UTF-8?q?=20(#22356)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/pins.h | 2 +-
ini/stm32f1.ini | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index b9a5f19d7c..20f24f8c21 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -552,7 +552,7 @@
#elif MB(TRIGORILLA_PRO)
#include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro
#elif MB(FLY_MINI)
- #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI
+ #include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI env:FLY_MINI_maple
#elif MB(FLSUN_HISPEED)
#include "stm32f1/pins_FLSUN_HISPEED.h" // STM32F1 env:flsun_hispeedv1
#elif MB(BEAST)
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index 6c39d0b6fa..93e97654a4 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -259,3 +259,19 @@ board = malyanm200_f103cb
build_flags = ${common_stm32.build_flags}
-DHAL_PCD_MODULE_ENABLED -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED
src_filter = ${common.default_src_filter} +
+
+#
+# FLY Mini (STM32F103RCT6)
+#
+[env:FLY_MINI]
+platform = ${common_stm32.platform}
+extends = common_stm32
+build_flags = ${common_stm32.build_flags} -DSS_TIMER=4
+board = genericSTM32F103RC
+board_build.core = stm32
+board_build.variant = MARLIN_F103Rx
+board_build.offset = 0x5000
+board_upload.offset_address = 0x08005000
+extra_scripts = ${common_stm32.extra_scripts}
+ pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
+ buildroot/share/PlatformIO/scripts/stm32_bootloader.py
From 7f5c9d273e7564dd18109772fe6cb45b4716eeb7 Mon Sep 17 00:00:00 2001
From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com>
Date: Wed, 14 Jul 2021 00:03:24 -0700
Subject: [PATCH 08/35] =?UTF-8?q?=F0=9F=92=A1=20Update=20FLYmaker=20commen?=
=?UTF-8?q?ts,=20URL=20(#22355)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/core/boards.h | 6 +++---
Marlin/src/pins/stm32f1/pins_FLY_MINI.h | 2 +-
ini/stm32f1.ini | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index 9dc951e229..661a213b4b 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -249,7 +249,7 @@
#define BOARD_BTT_SKR_V1_4_TURBO 2508 // BigTreeTech SKR v1.4 TURBO (Power outputs: Hotend0, Hotend1, Fan, Bed)
#define BOARD_MKS_SGEN_L_V2 2509 // MKS SGEN_L V2 (Power outputs: Hotend0, Hotend1, Bed, Fan)
#define BOARD_BTT_SKR_E3_TURBO 2510 // BigTreeTech SKR E3 Turbo (Power outputs: Hotend0, Hotend1, Bed, Fan0, Fan1)
-#define BOARD_FLY_CDY 2511 // FLY_CDY (Power outputs: Hotend0, Hotend1, Hotend2, Bed, Fan0, Fan1, Fan2)
+#define BOARD_FLY_CDY 2511 // FLYmaker FLY CDY (Power outputs: Hotend0, Hotend1, Hotend2, Bed, Fan0, Fan1, Fan2)
//
// SAM3X8E ARM Cortex M3
@@ -340,7 +340,7 @@
#define BOARD_CREALITY_V452 4042 // Creality v4.5.2 (STM32F103RE)
#define BOARD_CREALITY_V453 4043 // Creality v4.5.3 (STM32F103RE)
#define BOARD_TRIGORILLA_PRO 4044 // Trigorilla Pro (STM32F103ZET6)
-#define BOARD_FLY_MINI 4045 // FLY MINI (STM32F103RCT6)
+#define BOARD_FLY_MINI 4045 // FLYmaker FLY MINI (STM32F103RCT6)
#define BOARD_FLSUN_HISPEED 4046 // FLSUN HiSpeedV1 (STM32F103VET6)
#define BOARD_BEAST 4047 // STM32F103RET6 Libmaple-based controller
#define BOARD_MINGDA_MPX_ARM_MINI 4048 // STM32F103ZET6 Mingda MD-16
@@ -380,7 +380,7 @@
#define BOARD_FYSETC_S6 4220 // FYSETC S6 (STM32F446VET6)
#define BOARD_FYSETC_S6_V2_0 4221 // FYSETC S6 v2.0 (STM32F446VET6)
#define BOARD_FYSETC_SPIDER 4222 // FYSETC Spider (STM32F446VET6)
-#define BOARD_FLYF407ZG 4223 // FLYF407ZG (STM32F407ZG)
+#define BOARD_FLYF407ZG 4223 // FLYmaker FLYF407ZG (STM32F407ZG)
#define BOARD_MKS_ROBIN2 4224 // MKS_ROBIN2 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 4225 // MKS Robin Pro V2 (STM32F407VE)
#define BOARD_MKS_ROBIN_NANO_V3 4226 // MKS Robin Nano V3 (STM32F407VG)
diff --git a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h
index b94ec0c7f3..be0a622b1d 100644
--- a/Marlin/src/pins/stm32f1/pins_FLY_MINI.h
+++ b/Marlin/src/pins/stm32f1/pins_FLY_MINI.h
@@ -24,7 +24,7 @@
#include "env_validate.h"
#define BOARD_INFO_NAME "FLY_MINI"
-#define BOARD_WEBSITE_URL "github.com/FLYmaker"
+#define BOARD_WEBSITE_URL "github.com/FLYmaker/FLY-MINI"
#define DISABLE_JTAG
//
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index 93e97654a4..f1afb0e4d7 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -271,7 +271,7 @@ board = genericSTM32F103RC
board_build.core = stm32
board_build.variant = MARLIN_F103Rx
board_build.offset = 0x5000
-board_upload.offset_address = 0x08005000
+board_upload.offset_address = 0x08005000
extra_scripts = ${common_stm32.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
buildroot/share/PlatformIO/scripts/stm32_bootloader.py
From 082c61ebb99454acbb3ac8cca3485b24f177de0e Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Wed, 14 Jul 2021 02:14:55 -0500
Subject: [PATCH 09/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20SD=20pins=20for=20MK?=
=?UTF-8?q?S=20Robin=20Lite?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
index fad36e8384..73c77d092a 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
@@ -143,6 +143,6 @@
//
#define SPI_DEVICE 2
#define SD_SCK_PIN PB13
-#define SD_MISO_PIN P1B4
-#define SD_MOSI_PIN P1B5
+#define SD_MISO_PIN PB14
+#define SD_MOSI_PIN PB15
#define SD_SS_PIN PA15
From 826a34b0b156e27994c787071bbed519db3bcfa1 Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Wed, 14 Jul 2021 02:21:26 -0500
Subject: [PATCH 10/35] =?UTF-8?q?=F0=9F=8E=A8=20Remove=20extraneous=20pin?=
=?UTF-8?q?=20defs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
index 141c6d4a76..178e75ab7f 100644
--- a/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
+++ b/Marlin/src/pins/stm32f4/pins_MKS_ROBIN_NANO_V3.h
@@ -181,8 +181,6 @@
#define MT_DET_1_PIN PA4
#define MT_DET_2_PIN PE6
#define MT_DET_PIN_INVERTING false // LVGL UI filament RUNOUT PIN STATE
-#define PW_DET PA13
-#define PW_OFF PB2
#ifndef FIL_RUNOUT_PIN
#define FIL_RUNOUT_PIN MT_DET_1_PIN
@@ -192,9 +190,9 @@
#endif
#ifndef POWER_LOSS_PIN
- #define POWER_LOSS_PIN PW_DET
+ #define POWER_LOSS_PIN PA13 // PW_DET
#endif
-#define PS_ON_PIN PW_OFF
+#define PS_ON_PIN PB2 // PW_OFF
//
// Enable MKSPWC support
From a13d90093d8e647fa9ecab7a7752009dcc9c55ae Mon Sep 17 00:00:00 2001
From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com>
Date: Wed, 14 Jul 2021 15:55:24 -0700
Subject: [PATCH 11/35] =?UTF-8?q?=F0=9F=A9=B9=20FLYmaker=20FLY=20Mini=20fo?=
=?UTF-8?q?llowup=20(#22364)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Followup to #22355, #22356.
---
ini/stm32f1-maple.ini | 14 ++++++++++++++
ini/stm32f1.ini | 2 +-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini
index db1cc99217..ab1e6c54f4 100644
--- a/ini/stm32f1-maple.ini
+++ b/ini/stm32f1-maple.ini
@@ -342,3 +342,17 @@ build_unflags = ${common_stm32f1.build_unflags}
platform = ${common_stm32f1.platform}
extends = env:chitu_f103
build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
+
+#
+# FLYmaker FLY Mini (STM32F103RCT6)
+#
+[env:FLY_MINI_maple]
+platform = ${common_stm32f1.platform}
+extends = common_stm32f1
+board = genericSTM32F103RC
+board_build.address = 0x08005000
+board_build.ldscript = fly_mini.ld
+extra_scripts = ${common_stm32f1.extra_scripts}
+ buildroot/share/PlatformIO/scripts/custom_board.py
+build_flags = ${common_stm32f1.build_flags}
+ -DDEBUG_LEVEL=0 -DSS_TIMER=4
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index f1afb0e4d7..58f1fc1058 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -261,7 +261,7 @@ build_flags = ${common_stm32.build_flags}
src_filter = ${common.default_src_filter} +
#
-# FLY Mini (STM32F103RCT6)
+# FLYmaker FLY Mini (STM32F103RCT6)
#
[env:FLY_MINI]
platform = ${common_stm32.platform}
From 3bc1d2dd857fd81631411f75f87048b8f62fe82f Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Wed, 14 Jul 2021 18:51:58 -0500
Subject: [PATCH 12/35] =?UTF-8?q?=F0=9F=8E=A8=20Minor=20cleanup=20of=20TFT?=
=?UTF-8?q?/FSMC=20pins?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h | 6 +---
Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h | 7 +----
Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h | 18 ++++++-----
.../src/pins/stm32f1/pins_JGAURORA_A5S_A1.h | 24 ++++++++++-----
Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h | 30 ++++++++++++-------
.../pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h | 21 ++++++-------
Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h | 15 +++++-----
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h | 20 +++++++------
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h | 18 ++++++-----
Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h | 26 +++++++++-------
Marlin/src/pins/stm32f4/pins_ANET_ET4.h | 18 ++++++-----
Marlin/src/pins/stm32f4/pins_LERDGE_K.h | 3 +-
12 files changed, 114 insertions(+), 92 deletions(-)
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
index 8f5893e3b9..e892d3e3f8 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
@@ -117,13 +117,9 @@
#define W25QXX_SCK_PIN PB13
//
-// TronXY TFT Support
+// TFT with FSMC interface
//
-
#if HAS_FSMC_TFT
-
- // Shared FSMC
-
#define TOUCH_CS_PIN PB7 // SPI1_NSS
#define TOUCH_SCK_PIN PA5 // SPI1_SCK
#define TOUCH_MISO_PIN PA6 // SPI1_MISO
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
index df49da1095..51bd7294a9 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
@@ -132,13 +132,9 @@
#define W25QXX_SCK_PIN PB13
//
-// TronXY TFT Support
+// TFT with FSMC interface
//
-
#if HAS_FSMC_TFT
-
- // Shared FSMC
-
#define TOUCH_CS_PIN PB7 // SPI1_NSS
#define TOUCH_SCK_PIN PA5 // SPI1_SCK
#define TOUCH_MISO_PIN PA6 // SPI1_MISO
@@ -152,7 +148,6 @@
#define FSMC_RS_PIN PD11
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
-
#endif
#if ENABLED(TFT_LVGL_UI)
diff --git a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
index c49c31e741..bdf3f48c3a 100644
--- a/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
+++ b/Marlin/src/pins/stm32f1/pins_FLSUN_HISPEED.h
@@ -271,11 +271,9 @@
#error "FLSun HiSpeed default BEEPER_PIN is not a SPEAKER."
#endif
-#if HAS_FSMC_TFT || HAS_GRAPHICAL_TFT
- #define TFT_CS_PIN PD7 // NE4
- #define TFT_RS_PIN PD11 // A0
-#endif
-
+//
+// TFT with FSMC interface
+//
#if HAS_FSMC_TFT
/**
* Note: MKS Robin TFT screens use various TFT controllers
@@ -291,12 +289,16 @@
*/
//#define TFT_RESET_PIN PC6 // FSMC_RST
#define TFT_BACKLIGHT_PIN PD13
- #define FSMC_CS_PIN TFT_CS_PIN // NE4
- #define FSMC_RS_PIN TFT_RS_PIN // A0
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_CS_PIN PD7 // NE4
+ #define FSMC_RS_PIN PD11 // A0
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
+
+ #define TFT_CS_PIN TFT_CS_PIN
+ #define TFT_RS_PIN TFT_RS_PIN
+
#ifdef TFT_CLASSIC_UI
#define TFT_MARLINBG_COLOR 0x3186 // Grey
#define TFT_MARLINUI_COLOR 0xC7B6 // Green
@@ -307,6 +309,8 @@
#elif HAS_GRAPHICAL_TFT
#define TFT_RESET_PIN PC6
#define TFT_BACKLIGHT_PIN PD13
+ #define TFT_CS_PIN PD7 // NE4
+ #define TFT_RS_PIN PD11 // A0
#endif
#if NEED_TOUCH_PINS
diff --git a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
index 9f08f18bf7..bded0edd3a 100644
--- a/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
+++ b/Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
@@ -26,6 +26,8 @@
* ║║ ╦╠═╣│ │├┬┘│ │├┬┘├─┤╠╣ │ │├┬┘│ ││││ │ │ ││││
* ╚╝╚═╝╩ ╩└─┘┴└─└─┘┴└─┴ ┴╚ └─┘┴└─└─┘┴ ┴o└─┘└─┘┴ ┴
* Pin assignments for 32-bit JGAurora A5S & A1
+ *
+ * https://jgaurorawiki.com/_media/jgaurora_a5s_a1_pinout.png
*/
#include "env_validate.h"
@@ -102,15 +104,20 @@
#define FIL_RUNOUT_PIN PC7
//
-// LCD
+// TFT with FSMC interface
//
-#define LCD_BACKLIGHT_PIN PF11
-#define FSMC_CS_PIN PD7
-#define FSMC_RS_PIN PG0
+#if HAS_FSMC_TFT
+ #define LCD_BACKLIGHT_PIN PF11
+ #define FSMC_CS_PIN PD7
+ #define FSMC_RS_PIN PG0
-#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
-#define FSMC_DMA_DEV DMA2
-#define FSMC_DMA_CHANNEL DMA_CH5
+ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_DMA_DEV DMA2
+ #define FSMC_DMA_CHANNEL DMA_CH5
+
+ #define TFT_CS_PIN FSMC_CS_PIN
+ #define TFT_RS_PIN FSMC_RS_PIN
+#endif
//
// SD Card
@@ -129,4 +136,7 @@
#if NEED_TOUCH_PINS
#define TOUCH_CS_PIN PA4
#define TOUCH_INT_PIN PC4
+ #define TOUCH_MISO_PIN PA6
+ #define TOUCH_MOSI_PIN PA7
+ #define TOUCH_SCK_PIN PA5
#endif
diff --git a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
index fa708b248e..391610522d 100644
--- a/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
+++ b/Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
@@ -117,20 +117,28 @@
//#undef Z_MAX_PIN // Uncomment if using ZMAX connector (PE5)
#endif
-#define TFT_RESET_PIN PC4 // pin 33
-#define TFT_BACKLIGHT_PIN PD12 // pin 59
-#define FSMC_CS_PIN PD7 // pin 88 = FSMC_NE1
-#define FSMC_RS_PIN PD11 // pin 58 A16 Register. Only one address needed
+//
+// TFT with FSMC interface
+//
+#if HAS_FSMC_TFT
+ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_CS_PIN PD7 // pin 88 = FSMC_NE1
+ #define FSMC_RS_PIN PD11 // pin 58 A16 Register. Only one address needed
+ #define FSMC_DMA_DEV DMA2
+ #define FSMC_DMA_CHANNEL DMA_CH5
-#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
-#define FSMC_DMA_DEV DMA2
-#define FSMC_DMA_CHANNEL DMA_CH5
+ #define TFT_CS_PIN FSMC_CS_PIN
+ #define TFT_RS_PIN FSMC_RS_PIN
-#define DOGLCD_MOSI -1 // Prevent auto-define by Conditionals_post.h
-#define DOGLCD_SCK -1
+ #define TFT_RESET_PIN PC4 // pin 33
+ #define TFT_BACKLIGHT_PIN PD12 // pin 59
-// Buffer for Color UI
-#define TFT_BUFFER_SIZE 3200
+ #define DOGLCD_MOSI -1 // Prevent auto-define by Conditionals_post.h
+ #define DOGLCD_SCK -1
+
+ // Buffer for Color UI
+ #define TFT_BUFFER_SIZE 3200
+#endif
/**
* Note: Alfawise U20/U30 boards DON'T use SPI2, as the hardware designer
diff --git a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h
index 179c04a304..14f2ad981a 100644
--- a/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h
+++ b/Marlin/src/pins/stm32f1/pins_MINGDA_MPX_ARM_MINI.h
@@ -133,11 +133,9 @@
//
#define BEEPER_PIN PE4
-/**
- * Note: MKS Robin TFT screens use various TFT controllers.
- * If the screen stays white, disable 'LCD_RESET_PIN'
- * to let the bootloader init the screen.
- */
+//
+// TFT with FSMC interface
+//
#if HAS_FSMC_TFT
/**
* Note: MKS Robin TFT screens use various TFT controllers
@@ -151,18 +149,17 @@
* Setting an 'TFT_RESET_PIN' may cause a flicker when entering the LCD menu
* because Marlin uses the reset as a failsafe to revive a glitchy LCD.
*/
- #define TFT_CS_PIN PD7 // NE4
- #define TFT_RS_PIN PG0 // A0
-
- #define FSMC_CS_PIN TFT_CS_PIN
- #define FSMC_RS_PIN TFT_RS_PIN
+ #define TFT_RESET_PIN PF15
+ #define TFT_BACKLIGHT_PIN PF11
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_CS_PIN PD7 // NE4
+ #define FSMC_RS_PIN PG0 // A0
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
- #define TFT_RESET_PIN PF15
- #define TFT_BACKLIGHT_PIN PF11
+ #define TFT_CS_PIN FSMC_CS_PIN
+ #define TFT_RS_PIN FSMC_RS_PIN
#define TOUCH_BUTTONS_HW_SPI
#define TOUCH_BUTTONS_HW_SPI_DEVICE 1
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h
index 8da4dcc9de..f912978051 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN.h
@@ -155,7 +155,7 @@
#define WIFI_IO0_PIN PG1
//
-// LCD screen
+// TFT with FSMC interface
//
#if HAS_FSMC_TFT
/**
@@ -170,18 +170,17 @@
* Setting an 'TFT_RESET_PIN' may cause a flicker when entering the LCD menu
* because Marlin uses the reset as a failsafe to revive a glitchy LCD.
*/
- #define TFT_CS_PIN PG12 // NE4
- #define TFT_RS_PIN PF0 // A0
-
- #define FSMC_CS_PIN TFT_CS_PIN
- #define FSMC_RS_PIN TFT_RS_PIN
+ #define TFT_RESET_PIN PF6
+ #define TFT_BACKLIGHT_PIN PG11
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_CS_PIN PG12 // NE4
+ #define FSMC_RS_PIN PF0 // A0
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
- #define TFT_RESET_PIN PF6
- #define TFT_BACKLIGHT_PIN PG11
+ #define TFT_CS_PIN FSMC_CS_PIN
+ #define TFT_RS_PIN FSMC_RS_PIN
#define TOUCH_BUTTONS_HW_SPI
#define TOUCH_BUTTONS_HW_SPI_DEVICE 2
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
index 0a6186cf57..95d62f05a4 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
@@ -172,13 +172,18 @@
//
#define BEEPER_PIN PC5
-/**
- * Note: MKS Robin TFT screens use various TFT controllers.
- * If the screen stays white, disable 'TFT_RESET_PIN'
- * to let the bootloader init the screen.
- */
-// Shared FSMC Configs
+//
+// TFT with FSMC interface
+//
#if HAS_FSMC_TFT
+ /**
+ * Note: MKS Robin TFT screens use various TFT controllers.
+ * If the screen stays white, disable 'TFT_RESET_PIN'
+ * to let the bootloader init the screen.
+ */
+ #define TFT_RESET_PIN PC6 // FSMC_RST
+ #define TFT_BACKLIGHT_PIN PD13
+
#define DOGLCD_MOSI -1 // Prevent auto-define by Conditionals_post.h
#define DOGLCD_SCK -1
@@ -187,9 +192,6 @@
#define TOUCH_MISO_PIN PB14 // SPI2_MISO
#define TOUCH_MOSI_PIN PB15 // SPI2_MOSI
- #define TFT_RESET_PIN PC6 // FSMC_RST
- #define TFT_BACKLIGHT_PIN PD13
-
#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
#define FSMC_CS_PIN PD7
#define FSMC_RS_PIN PD11
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h
index 129b640d97..7ff22cc1ce 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_PRO.h
@@ -205,12 +205,18 @@
#error "No custom SD drive cable defined for this board."
#endif
-/**
- * Note: MKS Robin TFT screens use various TFT controllers.
- * If the screen stays white, disable 'LCD_RESET_PIN'
- * to let the bootloader init the screen.
- */
+//
+// TFT with FSMC interface
+//
#if HAS_FSMC_TFT
+ /**
+ * Note: MKS Robin TFT screens use various TFT controllers.
+ * If the screen stays white, disable 'LCD_RESET_PIN'
+ * to let the bootloader init the screen.
+ */
+ #define TFT_RESET_PIN LCD_RESET_PIN
+ #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN
+
#define FSMC_CS_PIN PD7 // NE4
#define FSMC_RS_PIN PD11 // A0
#define FSMC_DMA_DEV DMA2
@@ -221,8 +227,6 @@
#define LCD_RESET_PIN PF6
#define LCD_BACKLIGHT_PIN PD13
- #define TFT_RESET_PIN LCD_RESET_PIN
- #define TFT_BACKLIGHT_PIN LCD_BACKLIGHT_PIN
#define TFT_BUFFER_SIZE 14400
diff --git a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h
index 5eefedb141..1de3729dcc 100644
--- a/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h
+++ b/Marlin/src/pins/stm32f1/pins_TRIGORILLA_PRO.h
@@ -126,20 +126,24 @@
//#define POWER_LOSS_PIN PG2 // PG4 PW_DET
#define FIL_RUNOUT_PIN PA15 // MT_DET
-/**
- * Note: MKS Robin TFT screens use various TFT controllers
- * Supported screens are based on the ILI9341, ST7789V and ILI9328 (320x240)
- * ILI9488 is not supported.
- * Define init sequences for other screens in u8g_dev_tft_320x240_upscale_from_128x64.cpp
- *
- * If the screen stays white, disable 'LCD_RESET_PIN' to let the bootloader init the screen.
- *
- * Setting an 'LCD_RESET_PIN' may cause a flicker when entering the LCD menu
- * because Marlin uses the reset as a failsafe to revive a glitchy LCD.
- */
+//
+// TFT with FSMC interface
+//
#if HAS_FSMC_TFT
+ /**
+ * Note: MKS Robin TFT screens use various TFT controllers
+ * Supported screens are based on the ILI9341, ST7789V and ILI9328 (320x240)
+ * ILI9488 is not supported.
+ * Define init sequences for other screens in u8g_dev_tft_320x240_upscale_from_128x64.cpp
+ *
+ * If the screen stays white, disable 'LCD_RESET_PIN' to let the bootloader init the screen.
+ *
+ * Setting an 'LCD_RESET_PIN' may cause a flicker when entering the LCD menu
+ * because Marlin uses the reset as a failsafe to revive a glitchy LCD.
+ */
#define TFT_RESET_PIN PF11
#define TFT_BACKLIGHT_PIN PD13
+
#define FSMC_CS_PIN PD7 // NE4
#define FSMC_RS_PIN PD11 // A0
diff --git a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h
index 1e1f5251c1..d2ee2e013c 100644
--- a/Marlin/src/pins/stm32f4/pins_ANET_ET4.h
+++ b/Marlin/src/pins/stm32f4/pins_ANET_ET4.h
@@ -136,14 +136,18 @@
//
// LCD / Controller
//
-#define TFT_RESET_PIN PE6
-#define TFT_CS_PIN PD7
-#define TFT_RS_PIN PD13
-#define TFT_INTERFACE_FSMC_8BIT
+#if HAS_SPI_TFT || HAS_FSMC_TFT
+ #define TFT_RESET_PIN PE6
+ #define TFT_CS_PIN PD7
+ #define TFT_RS_PIN PD13
-#define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
-#define FSMC_CS_PIN TFT_CS_PIN
-#define FSMC_RS_PIN TFT_RS_PIN
+ #if HAS_FSMC_TFT
+ #define LCD_USE_DMA_FSMC // Use DMA transfers to send data to the TFT
+ #define FSMC_CS_PIN TFT_CS_PIN
+ #define FSMC_RS_PIN TFT_RS_PIN
+ #define TFT_INTERFACE_FSMC_8BIT
+ #endif
+#endif
//
// Touch Screen
diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
index b92056ea86..3b75e7072a 100644
--- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
+++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
@@ -230,9 +230,8 @@
#define BEEPER_PIN PC7
//
-// LCD / Controller
+// TFT with FSMC interface
//
-
#if HAS_FSMC_TFT
//#define TFT_DRIVER LERDGE_ST7796
From 972b1e2f00a1e4fdf7370f706d6f83899b3471ae Mon Sep 17 00:00:00 2001
From: Katelyn Schiesser
Date: Wed, 14 Jul 2021 16:56:02 -0700
Subject: [PATCH 13/35] =?UTF-8?q?=F0=9F=8E=A8=20Call=20millis()=20once=20i?=
=?UTF-8?q?n=20manage=5Finactivity=20(#22363)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/MarlinCore.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp
index 3ec4a8193c..bb7b227b53 100644
--- a/Marlin/src/MarlinCore.cpp
+++ b/Marlin/src/MarlinCore.cpp
@@ -514,7 +514,6 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
constexpr millis_t HOME_DEBOUNCE_DELAY = 1000UL;
static millis_t next_home_key_ms; // = 0
if (!IS_SD_PRINTING() && !READ(HOME_PIN)) { // HOME_PIN goes LOW when pressed
- const millis_t ms = millis();
if (ELAPSED(ms, next_home_key_ms)) {
next_home_key_ms = ms + HOME_DEBOUNCE_DELAY;
LCD_MESSAGEPGM(MSG_AUTO_HOME);
@@ -526,7 +525,6 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
#if ENABLED(CUSTOM_USER_BUTTONS)
// Handle a custom user button if defined
const bool printer_not_busy = !printingIsActive();
- const millis_t ms = millis();
#define HAS_CUSTOM_USER_BUTTON(N) (PIN_EXISTS(BUTTON##N) && defined(BUTTON##N##_HIT_STATE) && defined(BUTTON##N##_GCODE))
#define HAS_BETTER_USER_BUTTON(N) HAS_CUSTOM_USER_BUTTON(N) && defined(BUTTON##N##_DESC)
#define _CHECK_CUSTOM_USER_BUTTON(N, CODE) do{ \
From 5ca9ebfa6b0ff814c3a122c3e613574533027803 Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Wed, 14 Jul 2021 19:44:51 -0500
Subject: [PATCH 14/35] =?UTF-8?q?=F0=9F=94=A8=20Consolidate=20STM32=20extr?=
=?UTF-8?q?a=5Fscripts=20(#22365)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PlatformIO/scripts/STM32F103RC_fysetc.py | 2 +-
.../share/PlatformIO/scripts/mks_encrypt.py | 29 --------
...m32_bootloader.py => offset_and_rename.py} | 13 +++-
ini/avr.ini | 3 +-
ini/stm32f1.ini | 41 ++++--------
ini/stm32f4.ini | 66 +++++++------------
6 files changed, 50 insertions(+), 104 deletions(-)
delete mode 100644 buildroot/share/PlatformIO/scripts/mks_encrypt.py
rename buildroot/share/PlatformIO/scripts/{stm32_bootloader.py => offset_and_rename.py} (83%)
diff --git a/buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py b/buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
index 5a09dd3d14..668475dc01 100644
--- a/buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
+++ b/buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
@@ -10,7 +10,7 @@ Import("env")
env.AddPostAction(
join("$BUILD_DIR", "${PROGNAME}.elf"),
env.VerboseAction(" ".join([
- "$OBJCOPY", "-O ihex", "$TARGET", # TARGET=.pio/build/fysetc_STM32F1/firmware.elf
+ "$OBJCOPY", "-O ihex", "$TARGET",
"\"" + join("$BUILD_DIR", "${PROGNAME}.hex") + "\"", # Note: $BUILD_DIR is a full path
]), "Building $TARGET"))
diff --git a/buildroot/share/PlatformIO/scripts/mks_encrypt.py b/buildroot/share/PlatformIO/scripts/mks_encrypt.py
deleted file mode 100644
index bd3548ab36..0000000000
--- a/buildroot/share/PlatformIO/scripts/mks_encrypt.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# buildroot/share/PlatformIO/scripts/mks_encrypt.py
-#
-# Apply encryption and save as 'build.firmware' for these environments:
-# - env:mks_robin
-# - env:mks_robin_e3
-# - env:flsun_hispeedv1
-# - env:mks_robin_nano35
-#
-Import("env")
-
-from SCons.Script import DefaultEnvironment
-board = DefaultEnvironment().BoardConfig()
-
-if 'encrypt' in board.get("build").keys():
-
- import marlin
-
- # Encrypt ${PROGNAME}.bin and save it with the name given in build.encrypt
- def encrypt(source, target, env):
- marlin.encrypt_mks(source, target, env, board.get("build.encrypt"))
-
- marlin.add_post_action(encrypt);
-
-else:
-
- import sys
- print("You need to define output file via board_build.encrypt = 'filename' parameter", file=sys.stderr)
- env.Exit(1);
diff --git a/buildroot/share/PlatformIO/scripts/stm32_bootloader.py b/buildroot/share/PlatformIO/scripts/offset_and_rename.py
similarity index 83%
rename from buildroot/share/PlatformIO/scripts/stm32_bootloader.py
rename to buildroot/share/PlatformIO/scripts/offset_and_rename.py
index f3b1b273a2..b42b2f3531 100644
--- a/buildroot/share/PlatformIO/scripts/stm32_bootloader.py
+++ b/buildroot/share/PlatformIO/scripts/offset_and_rename.py
@@ -1,5 +1,5 @@
#
-# stm32_bootloader.py
+# offset_and_rename.py
#
# - If 'build.offset' is provided, either by JSON or by the environment...
# - Set linker flag LD_FLASH_OFFSET and relocate the VTAB based on 'build.offset'.
@@ -36,6 +36,17 @@ if 'offset' in board_keys:
if "-Wl,--defsym=LD_MAX_DATA_SIZE" in flag:
env["LINKFLAGS"][i] = "-Wl,--defsym=LD_MAX_DATA_SIZE=" + str(maximum_ram_size - 40)
+#
+# For build.encrypt rename and encode the firmware file.
+#
+if 'encrypt' in board_keys:
+
+ # Encrypt ${PROGNAME}.bin and save it with the name given in build.encrypt
+ def encrypt(source, target, env):
+ marlin.encrypt_mks(source, target, env, board.get("build.encrypt"))
+
+ marlin.add_post_action(encrypt);
+
#
# For build.rename simply rename the firmware file.
#
diff --git a/ini/avr.ini b/ini/avr.ini
index cd10f13499..88f54a723c 100644
--- a/ini/avr.ini
+++ b/ini/avr.ini
@@ -53,8 +53,7 @@ board = megaatmega1280
[mega_extended_optimized]
extends = common_avr8
board_build.variant = MARLIN_MEGA_EXTENDED
-extra_scripts = ${common.extra_scripts}
- pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
+extra_scripts = ${env:mega2560ext.extra_scripts}
upload_speed = 57600
build_flags = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index 58f1fc1058..d5f0741d41 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -34,6 +34,11 @@ src_filter = ${common.default_src_filter} + +
Date: Thu, 15 Jul 2021 01:04:09 +0000
Subject: [PATCH 15/35] [cron] Bump distribution date (2021-07-15)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index a218af3d3d..03855365ba 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-14"
+//#define STRING_DISTRIBUTION_DATE "2021-07-15"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index 3db502c470..49a0b94f64 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-14"
+ #define STRING_DISTRIBUTION_DATE "2021-07-15"
#endif
/**
From 7e50d8761d66cfa7c6e8a4e864f0754ddd645ada Mon Sep 17 00:00:00 2001
From: ellensp
Date: Thu, 15 Jul 2021 14:07:46 +1200
Subject: [PATCH 16/35] =?UTF-8?q?=F0=9F=94=A8=20More=20HAL/STM32=20targets?=
=?UTF-8?q?=20(#22358)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/pins/pins.h | 26 ++--
Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h | 2 +
ini/stm32f1-maple.ini | 26 ++--
ini/stm32f1.ini | 150 ++++++++++++++++++++++
4 files changed, 178 insertions(+), 26 deletions(-)
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 20f24f8c21..b5a81c6097 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -486,17 +486,17 @@
#elif MB(MKS_ROBIN)
#include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_maple
#elif MB(MKS_ROBIN_MINI)
- #include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
+ #include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini env:mks_robin_mini_maple
#elif MB(MKS_ROBIN_NANO)
#include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_maple
#elif MB(MKS_ROBIN_NANO_V2)
#include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_maple
#elif MB(MKS_ROBIN_LITE)
- #include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite
+ #include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite env:mks_robin_lite_maple
#elif MB(MKS_ROBIN_LITE3)
- #include "stm32f1/pins_MKS_ROBIN_LITE3.h" // STM32F1 env:mks_robin_lite3
+ #include "stm32f1/pins_MKS_ROBIN_LITE3.h" // STM32F1 env:mks_robin_lite3 env:mks_robin_lite3_maple
#elif MB(MKS_ROBIN_PRO)
- #include "stm32f1/pins_MKS_ROBIN_PRO.h" // STM32F1 env:mks_robin_pro
+ #include "stm32f1/pins_MKS_ROBIN_PRO.h" // STM32F1 env:mks_robin_pro env:mks_robin_pro_maple
#elif MB(MKS_ROBIN_E3)
#include "stm32f1/pins_MKS_ROBIN_E3.h" // STM32F1 env:mks_robin_e3 env:mks_robin_e3_maple
#elif MB(MKS_ROBIN_E3_V1_1)
@@ -506,7 +506,7 @@
#elif MB(MKS_ROBIN_E3D_V1_1)
#include "stm32f1/pins_MKS_ROBIN_E3D_V1_1.h" // STM32F1 env:mks_robin_e3
#elif MB(MKS_ROBIN_E3P)
- #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p
+ #include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p env:mks_robin_e3p_maple
#elif MB(BTT_SKR_MINI_V1_1)
#include "stm32f1/pins_BTT_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple
#elif MB(BTT_SKR_MINI_E3_V1_0)
@@ -522,21 +522,21 @@
#elif MB(BTT_SKR_CR6)
#include "stm32f1/pins_BTT_SKR_CR6.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple
#elif MB(JGAURORA_A5S_A1)
- #include "stm32f1/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1
+ #include "stm32f1/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1 env:jgaurora_a5s_a1_maple
#elif MB(FYSETC_AIO_II)
- #include "stm32f1/pins_FYSETC_AIO_II.h" // STM32F1 env:STM32F103RC_fysetc
+ #include "stm32f1/pins_FYSETC_AIO_II.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple
#elif MB(FYSETC_CHEETAH)
- #include "stm32f1/pins_FYSETC_CHEETAH.h" // STM32F1 env:STM32F103RC_fysetc
+ #include "stm32f1/pins_FYSETC_CHEETAH.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple
#elif MB(FYSETC_CHEETAH_V12)
- #include "stm32f1/pins_FYSETC_CHEETAH_V12.h" // STM32F1 env:STM32F103RC_fysetc
+ #include "stm32f1/pins_FYSETC_CHEETAH_V12.h" // STM32F1 env:STM32F103RC_fysetc env:STM32F103RC_fysetc_maple
#elif MB(LONGER3D_LK)
- #include "stm32f1/pins_LONGER3D_LK.h" // STM32F1 env:STM32F103VE_longer
+ #include "stm32f1/pins_LONGER3D_LK.h" // STM32F1 env:STM32F103VE_longer env:STM32F103VE_longer_maple
#elif MB(CCROBOT_MEEB_3DP)
#include "stm32f1/pins_CCROBOT_MEEB_3DP.h" // STM32F1 env:STM32F103RC_meeb
#elif MB(CHITU3D_V5)
- #include "stm32f1/pins_CHITU3D_V5.h" // STM32F1 env:chitu_f103 env:chitu_v5_gpio_init
+ #include "stm32f1/pins_CHITU3D_V5.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple env:chitu_v5_gpio_init env:chitu_v5_gpio_init_maple
#elif MB(CHITU3D_V6)
- #include "stm32f1/pins_CHITU3D_V6.h" // STM32F1 env:chitu_f103
+ #include "stm32f1/pins_CHITU3D_V6.h" // STM32F1 env:chitu_f103 env:chitu_f103_maple
#elif MB(CREALITY_V4)
#include "stm32f1/pins_CREALITY_V4.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V4210)
@@ -550,7 +550,7 @@
#elif MB(CREALITY_V453)
#include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(TRIGORILLA_PRO)
- #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro
+ #include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro env:trigorilla_pro_maple
#elif MB(FLY_MINI)
#include "stm32f1/pins_FLY_MINI.h" // STM32F1 env:FLY_MINI env:FLY_MINI_maple
#elif MB(FLSUN_HISPEED)
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
index e892d3e3f8..88dd28a401 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
@@ -134,6 +134,8 @@
#define FSMC_DMA_DEV DMA2
#define FSMC_DMA_CHANNEL DMA_CH5
+ #define TFT_CS_PIN FSMC_CS_PIN
+ #define TFT_RS_PIN FSMC_RS_PIN
#endif
#if ENABLED(TFT_LVGL_UI)
diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini
index ab1e6c54f4..2a9ba83494 100644
--- a/ini/stm32f1-maple.ini
+++ b/ini/stm32f1-maple.ini
@@ -74,7 +74,7 @@ upload_protocol = dfu
#
# FYSETC STM32F103RC
#
-[env:STM32F103RC_fysetc]
+[env:STM32F103RC_fysetc_maple]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RC_maple
extra_scripts = ${common_stm32f1.extra_scripts}
@@ -173,7 +173,7 @@ upload_protocol = serial
#
# Longer 3D board in Alfawise U20 (STM32F103VET6)
#
-[env:STM32F103VE_longer]
+[env:STM32F103VE_longer_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
@@ -190,7 +190,7 @@ build_unflags = ${common_stm32f1.build_unflags}
#
# MKS Robin Mini (STM32F103VET6)
#
-[env:mks_robin_mini]
+[env:mks_robin_mini_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
@@ -228,7 +228,7 @@ build_flags = ${common_stm32f1.build_flags}
#
# MKS Robin Pro (STM32F103ZET6)
#
-[env:mks_robin_pro]
+[env:mks_robin_pro_maple]
platform = ${common_stm32f1.platform}
extends = env:mks_robin_maple
extra_scripts = ${common_stm32f1.extra_scripts}
@@ -237,7 +237,7 @@ extra_scripts = ${common_stm32f1.extra_scripts}
#
# TRIGORILLA PRO (STM32F103ZET6)
#
-[env:trigorilla_pro]
+[env:trigorilla_pro_maple]
platform = ${common_stm32f1.platform}
extends = env:mks_robin_maple
extra_scripts = ${common_stm32f1.extra_scripts}
@@ -259,7 +259,7 @@ build_flags = ${common_stm32f1.build_flags}
# MKS Robin E3p (STM32F103VET6)
# - LVGL UI
#
-[env:mks_robin_e3p]
+[env:mks_robin_e3p_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
@@ -273,7 +273,7 @@ upload_protocol = jlink
#
# MKS Robin Lite/Lite2 (STM32F103RCT6)
#
-[env:mks_robin_lite]
+[env:mks_robin_lite_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
@@ -283,7 +283,7 @@ extra_scripts = ${common_stm32f1.extra_scripts}
#
# MKS ROBIN LITE3 (STM32F103RCT6)
#
-[env:mks_robin_lite3]
+[env:mks_robin_lite3_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
@@ -293,7 +293,7 @@ extra_scripts = ${common_stm32f1.extra_scripts}
#
# JGAurora A5S A1 (STM32F103ZET6)
#
-[env:jgaurora_a5s_a1]
+[env:jgaurora_a5s_a1_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
@@ -321,7 +321,7 @@ lib_ignore = ${common_stm32f1.lib_ignore}
#
# Chitu boards like Tronxy X5s (STM32F103ZET6)
#
-[env:chitu_f103]
+[env:chitu_f103_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_CHITU_F103
@@ -338,10 +338,10 @@ build_unflags = ${common_stm32f1.build_unflags}
# Some Chitu V5 boards have a problem with GPIO init.
# Use this target if G28 or G29 are always failing.
#
-[env:chitu_v5_gpio_init]
+[env:chitu_v5_gpio_init_maple]
platform = ${common_stm32f1.platform}
-extends = env:chitu_f103
-build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
+extends = env:chitu_f103_maple
+build_flags = ${env:chitu_f103_maple.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
#
# FLYmaker FLY Mini (STM32F103RCT6)
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index d5f0741d41..f1446f3267 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -260,3 +260,153 @@ board_build.variant = MARLIN_F103Rx
board_build.offset = 0x5000
board_upload.offset_address = 0x08005000
extra_scripts = ${stm32f1_variant.extra_scripts}
+
+#
+# MKS Robin Mini (STM32F103VET6)
+#
+[env:mks_robin_mini]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103VE
+board_build.core = stm32
+board_build.variant = MARLIN_F103Vx
+board_build.offset = 0x7000
+board_build.encrypt = Robin_mini.bin
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE
+board_upload.offset_address = 0x08007000
+extra_scripts = ${stm32f1_variant.extra_scripts}
+
+#
+# MKS Robin Lite/Lite2 (STM32F103RCT6)
+#
+[env:mks_robin_lite]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103RC
+board_build.core = stm32
+board_build.variant = MARLIN_F103Rx
+board_build.offset = 0x5000
+board_build.encrypt = mksLite.bin
+build_flags = ${common_stm32.build_flags}
+board_upload.offset_address = 0x08005000
+extra_scripts = ${stm32f1_variant.extra_scripts}
+
+#
+# MKS ROBIN LITE3 (STM32F103RCT6)
+#
+[env:mks_robin_lite3]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103RC
+board_build.core = stm32
+board_build.variant = MARLIN_F103Rx
+board_build.offset = 0x5000
+board_build.encrypt = mksLite3.bin
+build_flags = ${common_stm32.build_flags}
+board_upload.offset_address = 0x08005000
+extra_scripts = ${stm32f1_variant.extra_scripts}
+
+#
+# MKS Robin Pro (STM32F103ZET6)
+#
+[env:mks_robin_pro]
+platform = ${common_stm32.platform}
+extends = env:mks_robin
+board_build.encrypt = Robin_pro.bin
+
+#
+# MKS Robin E3p (STM32F103VET6)
+# - LVGL UI
+#
+[env:mks_robin_e3p]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103VE
+board_build.core = stm32
+board_build.variant = MARLIN_F103Vx
+board_build.offset = 0x7000
+board_build.encrypt = Robin_e3p.bin
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4
+board_upload.offset_address = 0x08007000
+extra_scripts = ${stm32f1_variant.extra_scripts}
+debug_tool = jlink
+upload_protocol = jlink
+
+#
+# JGAurora A5S A1 (STM32F103ZET6)
+#
+[env:jgaurora_a5s_a1]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103ZE
+board_build.core = stm32
+board_build.variant = MARLIN_F103Zx
+board_build.offset = 0xA000
+board_build.rename = firmware_for_sd_upload.bin
+build_flags = ${common_stm32.build_flags} -DSTM32F1xx -DSTM32_XL_DENSITY
+board_build.address = 0x0800A000
+extra_scripts = ${stm32f1_variant.extra_scripts}
+ buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
+
+#
+# FYSETC STM32F103RC
+#
+[env:STM32F103RC_fysetc]
+platform = ${common_stm32.platform}
+extends = common_STM32F103RC
+extra_scripts = ${stm32f1_variant.extra_scripts}
+ buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
+build_flags = ${common_stm32.build_flags} -DDEBUG_LEVEL=0
+lib_ldf_mode = chain
+debug_tool = stlink
+upload_protocol = serial
+
+#
+# Longer 3D board in Alfawise U20 (STM32F103VET6)
+#
+[env:STM32F103VE_longer]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103VE
+board_build.core = stm32
+board_build.variant = MARLIN_F103Zx
+board_build.offset = 0x1000
+board_build.address = 0x08010000
+build_flags = ${common_stm32.build_flags}
+ -DMCU_STM32F103VE -DSTM32F1xx -USERIAL_USB -DU20 -DTS_V12
+build_unflags = ${common_stm32.build_unflags}
+ -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
+extra_scripts = ${stm32f1_variant.extra_scripts}
+ buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
+
+#
+# TRIGORILLA PRO (STM32F103ZET6)
+#
+[env:trigorilla_pro]
+platform = ${common_stm32.platform}
+extends = env:mks_robin
+extra_scripts = ${common_stm32.extra_scripts}
+
+#
+# Chitu boards like Tronxy X5s (STM32F103ZET6)
+#
+[env:chitu_f103]
+platform = ${common_stm32.platform}
+extends = common_stm32
+board = genericSTM32F103ZE
+board_build.core = stm32
+board_build.variant = MARLIN_F103Zx
+extra_scripts = ${stm32f1_variant.extra_scripts}
+ buildroot/share/PlatformIO/scripts/chitu_crypt.py
+build_flags = ${common_stm32.build_flags} -DSTM32_XL_DENSITY
+build_unflags = ${common_stm32.build_unflags}
+ -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG= -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
+
+#
+# Some Chitu V5 boards have a problem with GPIO init.
+# Use this target if G28 or G29 are always failing.
+#
+[env:chitu_v5_gpio_init]
+platform = ${common_stm32.platform}
+extends = env:chitu_f103
+build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
From 3be35a6bd6845a160c416629ea98392129cd6eb3 Mon Sep 17 00:00:00 2001
From: Marcio T
Date: Wed, 14 Jul 2021 21:13:08 -0600
Subject: [PATCH 17/35] =?UTF-8?q?=F0=9F=93=BA=20Fix=20Makefile=20build,=20?=
=?UTF-8?q?improve=20Touch=20UI=20button=20titles=20(#22361)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/feature/power.cpp | 4 ++++
.../extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/bioprinter/tune_menu.cpp | 2 +-
.../ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp | 2 +-
.../lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp | 2 +-
.../extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp | 2 +-
.../lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp | 2 +-
.../extui/ftdi_eve_touch_ui/cocoa_press/preheat_screen.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp | 2 +-
.../ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp | 2 +-
.../generic/base_numeric_adjustment_screen.cpp | 2 +-
.../extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp | 2 +-
.../ftdi_eve_touch_ui/generic/change_filament_screen.cpp | 2 +-
.../lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp | 2 +-
.../extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/generic/files_screen.cpp | 2 +-
.../ftdi_eve_touch_ui/generic/interface_settings_screen.cpp | 4 ++--
.../ftdi_eve_touch_ui/generic/interface_sounds_screen.cpp | 2 +-
.../src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp | 2 +-
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp | 2 +-
.../lcd/extui/ftdi_eve_touch_ui/generic/statistics_screen.cpp | 2 +-
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp | 2 +-
25 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/Marlin/src/feature/power.cpp b/Marlin/src/feature/power.cpp
index 9070fd7946..30bf0d764d 100644
--- a/Marlin/src/feature/power.cpp
+++ b/Marlin/src/feature/power.cpp
@@ -38,6 +38,8 @@
#include "../gcode/gcode.h"
#endif
+#if EITHER(PSU_CONTROL, AUTO_POWER_CONTROL)
+
Power powerManager;
bool Power::psu_on;
@@ -214,3 +216,5 @@ void Power::power_off() {
#endif
#endif // AUTO_POWER_CONTROL
+
+#endif // PSU_CONTROL || AUTO_POWER_CONTROL
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp
index fd478c95a2..40ec16a9df 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/advanced_settings.cpp
@@ -87,7 +87,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
.tag(13) .button(BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_INTERFACE))
.tag(14) .button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_RESTORE_DEFAULTS))
.colors(action_btn)
- .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
+ .tag(1). button( BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
#undef GRID_COLS
#undef GRID_ROWS
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp
index ae5e7d8ab1..8109ecef76 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/main_menu.cpp
@@ -54,7 +54,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
.tag(8).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_ADVANCED_SETTINGS))
.tag(9).button(BTN_POS(1,9), BTN_SIZE(2,1), GET_TEXT_F(MSG_INFO_MENU))
.colors(action_btn)
- .tag(1).button(BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BTN_POS(1,10), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
#undef GRID_COLS
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/tune_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/tune_menu.cpp
index 31021c31c0..2f94555784 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/tune_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/bioprinter/tune_menu.cpp
@@ -54,7 +54,7 @@ void TuneMenu::onRedraw(draw_mode_t what) {
.enabled(!isPrinting()).tag(5).button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_MOVE_TO_HOME))
.enabled(!isPrinting()).tag(6).button(BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_RAISE_PLUNGER))
.enabled(!isPrinting()).tag(7).button(BTN_POS(1,7), BTN_SIZE(2,1), GET_TEXT_F(MSG_RELEASE_XY_AXIS))
- .colors(action_btn) .tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
+ .colors(action_btn) .tag(1).button(BTN_POS(1,8), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
#undef GRID_COLS
#undef GRID_ROWS
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp
index d984dbe120..7549e8d54e 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/advanced_settings_menu.cpp
@@ -67,7 +67,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
.tag(10).button(DISPLAY_POS, GET_TEXT_F(MSG_DISPLAY_MENU))
.tag(11).button(RESTORE_DEFAULTS_POS, GET_TEXT_F(MSG_RESTORE_DEFAULTS))
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp
index 6718fe0a41..d3950a7c6c 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/leveling_menu.cpp
@@ -71,7 +71,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
#undef GRID_COLS
#define GRID_COLS 3
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp
index 8c15cae60f..d40b3be354 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/load_chocolate.cpp
@@ -90,7 +90,7 @@ void LoadChocolateScreen::draw_buttons(draw_mode_t what) {
cmd.tag(3).button(x, y, h, v, GET_TEXT_F(MSG_FULL_LOAD));
ui.bounds(POLY(load_screen_back_btn), x, y, h, v);
- cmd.tag(1).colors(action_btn).button(x, y, h, v, GET_TEXT_F(MSG_BACK));
+ cmd.tag(1).colors(action_btn).button(x, y, h, v, GET_TEXT_F(MSG_BUTTON_DONE));
}
void LoadChocolateScreen::draw_text(draw_mode_t what) {
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp
index a990717fb3..3fe17b72d5 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/main_menu.cpp
@@ -68,7 +68,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
.tag(10).button(LEVELING_POS, GET_TEXT_F(MSG_LEVELING))
.tag(11).button(ABOUT_PRINTER_POS, GET_TEXT_F(MSG_INFO_MENU))
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp
index 56e90ceb4d..424e0afa76 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_menu.cpp
@@ -65,7 +65,7 @@ void PreheatMenu::onRedraw(draw_mode_t what) {
}
#endif
cmd.colors(action_btn)
- .tag(1) .button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
+ .tag(1) .button(BTN_POS(1,5), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_screen.cpp
index 75b1fcc9c1..300878670e 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/cocoa_press/preheat_screen.cpp
@@ -77,7 +77,7 @@ void PreheatTimerScreen::draw_interaction_buttons(draw_mode_t what) {
CommandProcessor cmd;
cmd.colors(normal_btn)
.font(font_medium)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp
index 68e50c90ac..3e07735edf 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/about_screen.cpp
@@ -94,7 +94,7 @@ void AboutScreen::onRedraw(draw_mode_t) {
.tag(2).button(STATS_POS, GET_TEXT_F(MSG_INFO_STATS_MENU));
#endif
cmd.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
bool AboutScreen::onTouchEnd(uint8_t tag) {
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp
index 503abbdb05..a83cc07515 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/advanced_settings_menu.cpp
@@ -111,7 +111,7 @@ void AdvancedSettingsMenu::onRedraw(draw_mode_t what) {
.enabled(ENABLED(BACKLASH_GCODE))
.tag(8).button(BACKLASH_POS, GET_TEXT_F(MSG_BACKLASH))
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/base_numeric_adjustment_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/base_numeric_adjustment_screen.cpp
index 90199783fd..d0ba74721c 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/base_numeric_adjustment_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/base_numeric_adjustment_screen.cpp
@@ -61,7 +61,7 @@ BaseNumericAdjustmentScreen::widgets_t::widgets_t(draw_mode_t what) : _what(what
#else
BTN_POS(15,7), BTN_SIZE(4,1),
#endif
- GET_TEXT_F(MSG_BACK), true, true
+ GET_TEXT_F(MSG_BUTTON_DONE), true, true
);
_line = 1;
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp
index 3dfcd429a5..30b9d1c78a 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/bed_mesh_edit_screen.cpp
@@ -136,7 +136,7 @@ void BedMeshEditScreen::drawHighlightedPointValue() {
if (mydata.highlight.x != NONE)
draw_adjuster(cmd, Z_VALUE_POS, 3, getHighlightedValue(), GET_TEXT_F(MSG_UNITS_MM), 4, 3);
cmd.colors(mydata.needSave ? normal_btn : action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_BACK))
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE))
.colors(mydata.needSave ? action_btn : normal_btn)
.enabled(mydata.needSave)
.tag(2).button(SAVE_POS, GET_TEXT_F(MSG_TOUCHMI_SAVE));
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/change_filament_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/change_filament_screen.cpp
index 46d3a4ea1c..fa0748c17b 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/change_filament_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/change_filament_screen.cpp
@@ -224,7 +224,7 @@ void ChangeFilamentScreen::onRedraw(draw_mode_t what) {
.tag(6) .enabled(t_ok).button (LOAD_MOMN_POS, GET_TEXT_F(MSG_MOMENTARY))
.tag(7).TOG_STYLE(tog7).enabled(t_ok).button (UNLD_CONT_POS, GET_TEXT_F(MSG_CONTINUOUS))
.tag(8).TOG_STYLE(tog8).enabled(t_ok).button (LOAD_CONT_POS, GET_TEXT_F(MSG_CONTINUOUS))
- .tag(1).colors(action_btn) .button (BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).colors(action_btn) .button (BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp
index 5f8ff92922..8807480897 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/custom_user_menus.cpp
@@ -135,7 +135,7 @@ void CustomUserMenus::onRedraw(draw_mode_t what) {
_USER_ITEM(20)
#endif
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp
index d12cb32e20..c7042e760e 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/endstop_state_screen.cpp
@@ -120,7 +120,7 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
cmd.font(font_medium)
.colors(action_btn)
- .tag(1).button(BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BTN_POS(1,7), BTN_SIZE(6,1), GET_TEXT_F(MSG_BUTTON_DONE));
#undef GRID_COLS
#undef GRID_ROWS
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp
index bd5fa96e8d..9c9e70cebf 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/filament_menu.cpp
@@ -63,7 +63,7 @@ void FilamentMenu::onRedraw(draw_mode_t what) {
.enabled(ENABLED(LIN_ADVANCE))
.tag(3).button(LIN_ADVANCE_POS, GET_TEXT_F(MSG_LINEAR_ADVANCE))
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/files_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/files_screen.cpp
index bf32502594..aa54e88967 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/files_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/files_screen.cpp
@@ -168,7 +168,7 @@ void FilesScreen::drawFooter() {
cmd.colors(normal_btn)
.font(font_medium)
.colors(has_selection ? normal_btn : action_btn)
- .tag(back_tag).button(BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BACK))
+ .tag(back_tag).button(BTN_POS(4,y), BTN_SIZE(3,h), GET_TEXT_F(MSG_BUTTON_DONE))
.enabled(has_selection)
.colors(has_selection ? action_btn : normal_btn);
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_settings_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_settings_screen.cpp
index a3febb39a2..ebefea2dcd 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_settings_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_settings_screen.cpp
@@ -108,11 +108,11 @@ void InterfaceSettingsScreen::onRedraw(draw_mode_t what) {
.colors(normal_btn)
.tag(6).button (BTN_POS(1,6), BTN_SIZE(4,1), GET_TEXT_F(MSG_SOUNDS))
.colors(action_btn)
- .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button (BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
#else
.tag(6).button (BTN_POS(1,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_SOUNDS))
.colors(action_btn)
- .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button (BTN_POS(3,6), BTN_SIZE(2,1), GET_TEXT_F(MSG_BUTTON_DONE));
#endif
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_sounds_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_sounds_screen.cpp
index 3ba035f19b..b951844196 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_sounds_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/interface_sounds_screen.cpp
@@ -102,7 +102,7 @@ void InterfaceSoundsScreen::onRedraw(draw_mode_t what) {
.tag(5).button (BTN_POS(3,6), BTN_SIZE(2,1), getSoundSelection(PRINTING_FINISHED))
.tag(6).button (BTN_POS(3,7), BTN_SIZE(2,1), getSoundSelection(PRINTING_FAILED))
.colors(action_btn)
- .tag(1).button (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button (BTN_POS(1,9), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp
index acbc179891..e693bfb05c 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/leveling_menu.cpp
@@ -96,7 +96,7 @@ void LevelingMenu::onRedraw(draw_mode_t what) {
.tag(8).button(BLTOUCH_TEST_POS, GET_TEXT_F(MSG_BLTOUCH_SELFTEST))
#endif
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp
index f7a0d6683a..3f614ec344 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/main_menu.cpp
@@ -95,7 +95,7 @@ void MainMenu::onRedraw(draw_mode_t what) {
.tag(11).button(CUSTOM_MENU_POS, GET_TEXT_F(MSG_CUSTOM_COMMANDS))
#endif
.colors(action_btn)
- .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/statistics_screen.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/statistics_screen.cpp
index 2153a1e1ad..b6d9770e9d 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/statistics_screen.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/statistics_screen.cpp
@@ -63,7 +63,7 @@ void StatisticsScreen::onRedraw(draw_mode_t what) {
if (what & FOREGROUND) {
cmd.font(Theme::font_medium)
.colors(action_btn)
- .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BACK));
+ .tag(1).button(BTN_POS(1,7), BTN_SIZE(4,1), GET_TEXT_F(MSG_BUTTON_DONE));
}
}
diff --git a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp
index a5e2460631..6f4beb6673 100644
--- a/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp
+++ b/Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/tune_menu.cpp
@@ -92,7 +92,7 @@ void TuneMenu::onRedraw(draw_mode_t what) {
.tag(10).button(CASE_LIGHT_POS, GET_TEXT_F(MSG_CASE_LIGHT))
.tag(11).button(ADVANCED_SETTINGS_POS, GET_TEXT_F(MSG_ADVANCED_SETTINGS))
.tag(1).colors(action_btn)
- .button(BACK_POS, GET_TEXT_F(MSG_BACK));
+ .button(BACK_POS, GET_TEXT_F(MSG_BUTTON_DONE));
}
#undef GRID_COLS
#undef GRID_ROWS
From aec4a82a99fd6d1c3be7683068bcd7f5729904d0 Mon Sep 17 00:00:00 2001
From: Taylor Talkington
Date: Thu, 15 Jul 2021 17:32:40 -0400
Subject: [PATCH 18/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Filament=20Change=20?=
=?UTF-8?q?menu=20(#22370)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Followup to #22277
---
Marlin/src/lcd/menu/menu_filament.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Marlin/src/lcd/menu/menu_filament.cpp b/Marlin/src/lcd/menu/menu_filament.cpp
index d70ed98aa8..53fd67dbb2 100644
--- a/Marlin/src/lcd/menu/menu_filament.cpp
+++ b/Marlin/src/lcd/menu/menu_filament.cpp
@@ -211,7 +211,7 @@ void menu_change_filament() {
if (thermalManager.targetHotEnoughToExtrude(active_extruder))
queue.inject_P(PSTR("M600B0"));
else
- _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0);
+ ui.goto_screen([]{ _menu_temp_filament_op(PAUSE_MODE_CHANGE_FILAMENT, 0); });
#endif
}
From 0207569ca66a8fe60846d85ba1797f3c0204223c Mon Sep 17 00:00:00 2001
From: thinkyhead
Date: Fri, 16 Jul 2021 00:59:11 +0000
Subject: [PATCH 19/35] [cron] Bump distribution date (2021-07-16)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index 03855365ba..f21d618850 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-15"
+//#define STRING_DISTRIBUTION_DATE "2021-07-16"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index 49a0b94f64..6809c4b983 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-15"
+ #define STRING_DISTRIBUTION_DATE "2021-07-16"
#endif
/**
From 5b43795f54f18bc956f1c4884640f18c9a7bdbce Mon Sep 17 00:00:00 2001
From: Tanguy Pruvot
Date: Fri, 16 Jul 2021 03:40:05 +0200
Subject: [PATCH 20/35] =?UTF-8?q?=F0=9F=90=9B=20Followup=20to=20HAL/STM32?=
=?UTF-8?q?=20targets=20(Longer3D=20timers)=20(#22369)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PlatformIO/variants/MARLIN_F103Vx/variant.h | 8 ++++++--
ini/stm32f1.ini | 16 +++++++---------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h
index b622b39376..496d8817a1 100644
--- a/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h
+++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Vx/variant.h
@@ -132,8 +132,12 @@ extern "C" {
// Timer Definitions (optional)
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
-#define TIMER_TONE TIM3
-#define TIMER_SERVO TIM2
+#ifndef TIMER_TONE
+ #define TIMER_TONE TIM6
+#endif
+#ifndef TIMER_SERVO
+ #define TIMER_SERVO TIM7
+#endif
// UART Definitions
// Define here Serial instance number to map on Serial generic name
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index f1446f3267..bc4236b8f0 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -194,7 +194,7 @@ build_flags = ${env:STM32F103RE_btt.build_flags} ${env:stm32_flash_drive.b
[env:flsun_hispeedv1]
platform = ${common_stm32.platform}
extends = common_stm32
-build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3 -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2
board = genericSTM32F103VE
board_build.core = stm32
board_build.variant = MARLIN_F103Vx
@@ -210,7 +210,7 @@ extra_scripts = ${stm32f1_variant.extra_scripts}
[env:mks_robin_nano35]
platform = ${common_stm32.platform}
extends = common_stm32
-build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3 -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2
board = genericSTM32F103VE
board_build.core = stm32
board_build.variant = MARLIN_F103Vx
@@ -272,7 +272,7 @@ board_build.core = stm32
board_build.variant = MARLIN_F103Vx
board_build.offset = 0x7000
board_build.encrypt = Robin_mini.bin
-build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2
board_upload.offset_address = 0x08007000
extra_scripts = ${stm32f1_variant.extra_scripts}
@@ -326,7 +326,7 @@ board_build.core = stm32
board_build.variant = MARLIN_F103Vx
board_build.offset = 0x7000
board_build.encrypt = Robin_e3p.bin
-build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DTIMER_TONE=TIM3 -DTIMER_SERVO=TIM2
board_upload.offset_address = 0x08007000
extra_scripts = ${stm32f1_variant.extra_scripts}
debug_tool = jlink
@@ -369,13 +369,11 @@ platform = ${common_stm32.platform}
extends = common_stm32
board = genericSTM32F103VE
board_build.core = stm32
-board_build.variant = MARLIN_F103Zx
+board_build.variant = MARLIN_F103Vx
board_build.offset = 0x1000
board_build.address = 0x08010000
-build_flags = ${common_stm32.build_flags}
- -DMCU_STM32F103VE -DSTM32F1xx -USERIAL_USB -DU20 -DTS_V12
-build_unflags = ${common_stm32.build_unflags}
- -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
+build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DU20 -DTS_V12
+build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC
extra_scripts = ${stm32f1_variant.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
From 5d6317329786f5d01eb6734b4c5e664a2fe9e6ba Mon Sep 17 00:00:00 2001
From: mks-viva <1224833100@qq.com>
Date: Thu, 15 Jul 2021 20:57:34 -0500
Subject: [PATCH 21/35] =?UTF-8?q?=E2=9C=A8=20MKS=20Mini12864=20v3=20for=20?=
=?UTF-8?q?Robin=20E3/E3D=20(#22368)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 5 ++--
.../variants/MARLIN_F103Rx/variant.h | 24 +++++++++++++++----
ini/stm32f1.ini | 3 +--
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
index 127dfb7c7a..bc47c9169f 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
@@ -156,7 +156,6 @@
#define DOGLCD_MOSI PB15
#elif ENABLED(MKS_MINI_12864_V3)
- #define ENABLE_SPI3
#define DOGLCD_CS PA4
#define DOGLCD_A0 PA5
#define LCD_PINS_DC DOGLCD_A0
@@ -165,7 +164,9 @@
#define NEOPIXEL_PIN PA7
#define DOGLCD_MOSI PB15
#define DOGLCD_SCK PB13
-
+ #define FORCE_SOFT_SPI
+ #define SOFTWARE_SPI
+
#else
#define LCD_PINS_D4 PA6
diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h
index 7dcbb793d0..41b194abe0 100644
--- a/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h
+++ b/buildroot/share/PlatformIO/variants/MARLIN_F103Rx/variant.h
@@ -101,11 +101,24 @@ extern "C" {
#endif
// Override default Arduino configuration
+
// SPI Definitions
-#define PIN_SPI_SS PA4
-#define PIN_SPI_MOSI PA7
-#define PIN_SPI_MISO PA6
-#define PIN_SPI_SCK PA5
+#if DEFAULT_SPI == 3
+ #define PIN_SPI_SS PA15
+ #define PIN_SPI_MOSI PB3
+ #define PIN_SPI_MISO PB4
+ #define PIN_SPI_SCK PB5
+#elif DEFAULT_SPI == 2
+ #define PIN_SPI_SS PB12
+ #define PIN_SPI_MOSI PB13
+ #define PIN_SPI_MISO PB14
+ #define PIN_SPI_SCK PB15
+#else
+ #define PIN_SPI_SS PA4
+ #define PIN_SPI_MOSI PA7
+ #define PIN_SPI_MISO PA6
+ #define PIN_SPI_SCK PA5
+#endif
// I2C Definitions
#define PIN_WIRE_SDA PB7
@@ -118,6 +131,7 @@ extern "C" {
#ifndef TIMER_SERVO
#define TIMER_SERVO TIM2
#endif
+
// UART Definitions
// Define here Serial instance number to map on Serial generic name
#define SERIAL_UART_INSTANCE 1
@@ -126,7 +140,7 @@ extern "C" {
#define PIN_SERIAL_RX PA10
#define PIN_SERIAL_TX PA9
-/* Extra HAL modules */
+// Extra HAL modules
#if defined(STM32F103xE) || defined(STM32F103xG)
#define HAL_DAC_MODULE_ENABLED
#endif
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index bc4236b8f0..6350afb40b 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -125,8 +125,7 @@ lib_deps =
[env:mks_robin_e3]
platform = ${common_stm32.platform}
extends = common_STM32F103RC
-build_flags = ${common_stm32.build_flags}
- -DDEBUG_LEVEL=0 -DTIMER_SERVO=TIM5
+build_flags = ${common_stm32.build_flags} -DDEBUG_LEVEL=0 -DTIMER_SERVO=TIM5 -DDEFAULT_SPI=3
build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC
monitor_speed = 115200
board_build.offset = 0x5000
From 665cb5ea10b140a510c03318d55967b9c6633163 Mon Sep 17 00:00:00 2001
From: bilsef
Date: Thu, 15 Jul 2021 18:59:52 -0700
Subject: [PATCH 22/35] =?UTF-8?q?=E2=9C=A8=20M115:=20Axis=20Count=20(#2221?=
=?UTF-8?q?9)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/gcode/host/M115.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Marlin/src/gcode/host/M115.cpp b/Marlin/src/gcode/host/M115.cpp
index 49bb806377..3b88c6905e 100644
--- a/Marlin/src/gcode/host/M115.cpp
+++ b/Marlin/src/gcode/host/M115.cpp
@@ -54,6 +54,9 @@ void GcodeSuite::M115() {
"PROTOCOL_VERSION:" PROTOCOL_VERSION " "
"MACHINE_TYPE:" MACHINE_NAME " "
"EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " "
+ #if LINEAR_AXES != XYZ
+ "AXIS_COUNT:" STRINGIFY(LINEAR_AXES) " "
+ #endif
#ifdef MACHINE_UUID
"UUID:" MACHINE_UUID
#endif
From 7b64bbf38424e5f6c03c2748a54e85320e577a29 Mon Sep 17 00:00:00 2001
From: thinkyhead
Date: Sat, 17 Jul 2021 00:56:52 +0000
Subject: [PATCH 23/35] [cron] Bump distribution date (2021-07-17)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index f21d618850..0d7518225c 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-16"
+//#define STRING_DISTRIBUTION_DATE "2021-07-17"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index 6809c4b983..a825f38734 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-16"
+ #define STRING_DISTRIBUTION_DATE "2021-07-17"
#endif
/**
From be1801703c4510dcd523de811e9dcff576b4caad Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Sat, 17 Jul 2021 03:10:54 -0500
Subject: [PATCH 24/35] =?UTF-8?q?=F0=9F=8E=A8=20Add=20MMU2=20enabled()=20a?=
=?UTF-8?q?ccessor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/feature/mmu/mmu2.cpp | 28 +++++++++----------
Marlin/src/feature/mmu/mmu2.h | 3 +-
.../pins/stm32f1/pins_MKS_ROBIN_E3_common.h | 2 +-
3 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/Marlin/src/feature/mmu/mmu2.cpp b/Marlin/src/feature/mmu/mmu2.cpp
index 8a4f5ae071..1acd26f331 100644
--- a/Marlin/src/feature/mmu/mmu2.cpp
+++ b/Marlin/src/feature/mmu/mmu2.cpp
@@ -75,7 +75,7 @@ MMU2 mmu2;
#define MMU2_NO_TOOL 99
#define MMU_BAUD 115200
-bool MMU2::enabled, MMU2::ready, MMU2::mmu_print_saved;
+bool MMU2::_enabled, MMU2::ready, MMU2::mmu_print_saved;
#if HAS_PRUSA_MMU2S
bool MMU2::mmu2s_triggered;
#endif
@@ -219,7 +219,7 @@ void MMU2::mmu_loop() {
DEBUG_ECHOLNPAIR("MMU => ", finda, "\nMMU - ENABLED");
- enabled = true;
+ _enabled = true;
state = 1;
TERN_(HAS_PRUSA_MMU2S, mmu2s_triggered = false);
}
@@ -480,7 +480,7 @@ static void mmu2_not_responding() {
*/
void MMU2::tool_change(const uint8_t index) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -512,7 +512,7 @@ static void mmu2_not_responding() {
* Tc Load to nozzle after filament was prepared by Tx and extruder nozzle is already heated.
*/
void MMU2::tool_change(const char *special) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -561,7 +561,7 @@ static void mmu2_not_responding() {
* Handle tool change
*/
void MMU2::tool_change(const uint8_t index) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -599,7 +599,7 @@ static void mmu2_not_responding() {
* Tc Load to nozzle after filament was prepared by Tx and extruder nozzle is already heated.
*/
void MMU2::tool_change(const char *special) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -665,7 +665,7 @@ static void mmu2_not_responding() {
* Handle tool change
*/
void MMU2::tool_change(const uint8_t index) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -693,7 +693,7 @@ static void mmu2_not_responding() {
* Tc Load to nozzle after filament was prepared by Tx and extruder nozzle is already heated.
*/
void MMU2::tool_change(const char *special) {
- if (!enabled) return;
+ if (!_enabled) return;
set_runout_valid(false);
@@ -744,7 +744,7 @@ static void mmu2_not_responding() {
* Set next command
*/
void MMU2::command(const uint8_t mmu_cmd) {
- if (!enabled) return;
+ if (!_enabled) return;
cmd = mmu_cmd;
ready = false;
}
@@ -833,7 +833,7 @@ void MMU2::manage_response(const bool move_axes, const bool turn_off_nozzle) {
}
void MMU2::set_filament_type(const uint8_t index, const uint8_t filamentType) {
- if (!enabled) return;
+ if (!_enabled) return;
cmd_arg = filamentType;
command(MMU_CMD_F0 + index);
@@ -892,7 +892,7 @@ void MMU2::filament_runout() {
// Load filament into MMU2
void MMU2::load_filament(const uint8_t index) {
- if (!enabled) return;
+ if (!_enabled) return;
command(MMU_CMD_L0 + index);
manage_response(false, false);
@@ -904,7 +904,7 @@ void MMU2::load_filament(const uint8_t index) {
*/
bool MMU2::load_filament_to_nozzle(const uint8_t index) {
- if (!enabled) return false;
+ if (!_enabled) return false;
if (thermalManager.tooColdToExtrude(active_extruder)) {
BUZZ(200, 404);
@@ -940,7 +940,7 @@ void MMU2::load_to_nozzle() {
bool MMU2::eject_filament(const uint8_t index, const bool recover) {
- if (!enabled) return false;
+ if (!_enabled) return false;
if (thermalManager.tooColdToExtrude(active_extruder)) {
BUZZ(200, 404);
@@ -989,7 +989,7 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) {
*/
bool MMU2::unload() {
- if (!enabled) return false;
+ if (!_enabled) return false;
if (thermalManager.tooColdToExtrude(active_extruder)) {
BUZZ(200, 404);
diff --git a/Marlin/src/feature/mmu/mmu2.h b/Marlin/src/feature/mmu/mmu2.h
index 079a6ef79a..95338a5184 100644
--- a/Marlin/src/feature/mmu/mmu2.h
+++ b/Marlin/src/feature/mmu/mmu2.h
@@ -43,6 +43,7 @@ public:
static void init();
static void reset();
+ static inline bool enabled() { return _enabled; }
static void mmu_loop();
static void tool_change(const uint8_t index);
static void tool_change(const char *special);
@@ -88,7 +89,7 @@ private:
static void mmu_continue_loading();
#endif
- static bool enabled, ready, mmu_print_saved;
+ static bool _enabled, ready, mmu_print_saved;
static uint8_t cmd, cmd_arg, last_cmd, extruder;
static int8_t state;
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
index bc47c9169f..b5d02942f3 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
@@ -166,7 +166,7 @@
#define DOGLCD_SCK PB13
#define FORCE_SOFT_SPI
#define SOFTWARE_SPI
-
+
#else
#define LCD_PINS_D4 PA6
From cb461b5daffebfe86d1d2f96093be09e445cbd05 Mon Sep 17 00:00:00 2001
From: Tanguy Pruvot
Date: Sun, 18 Jul 2021 00:16:57 +0200
Subject: [PATCH 25/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Longer3D=20build=20e?=
=?UTF-8?q?nvironment=20(#22378)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
buildroot/tests/STM32F103VE_longer_maple | 23 +++++++++++++++++++++++
ini/stm32f1.ini | 7 +++++--
2 files changed, 28 insertions(+), 2 deletions(-)
create mode 100755 buildroot/tests/STM32F103VE_longer_maple
diff --git a/buildroot/tests/STM32F103VE_longer_maple b/buildroot/tests/STM32F103VE_longer_maple
new file mode 100755
index 0000000000..4570a3214d
--- /dev/null
+++ b/buildroot/tests/STM32F103VE_longer_maple
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+#
+# Build tests for STM32F103VET6 (using maple STM32F1 framework)
+#
+
+# exit on first failure
+set -e
+
+use_example_configs Alfawise/U20
+opt_enable BAUD_RATE_GCODE
+exec_test $1 $2 "maple CLASSIC_UI U20 config" "$3"
+
+use_example_configs Alfawise/U20
+opt_enable BAUD_RATE_GCODE TFT_COLOR_UI
+opt_disable TFT_CLASSIC_UI CUSTOM_STATUS_SCREEN_IMAGE
+exec_test $1 $2 "maple COLOR_UI U20 config" "$3"
+
+use_example_configs Alfawise/U20-bltouch
+opt_enable BAUD_RATE_GCODE
+exec_test $1 $2 "maple BLTouch U20 config"
+
+# cleanup
+restore_configs
diff --git a/ini/stm32f1.ini b/ini/stm32f1.ini
index 6350afb40b..f487dc62fc 100644
--- a/ini/stm32f1.ini
+++ b/ini/stm32f1.ini
@@ -369,10 +369,13 @@ extends = common_stm32
board = genericSTM32F103VE
board_build.core = stm32
board_build.variant = MARLIN_F103Vx
-board_build.offset = 0x1000
+board_build.offset = 0x10000
board_build.address = 0x08010000
build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DU20 -DTS_V12
-build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC
+ -DLED_BUILTIN=PC2 -UPIN_WIRE_SDA -UPIN_WIRE_SCL -DPIN_WIRE_SDA=PB11 -DPIN_WIRE_SCL=PB10
+ -DHAL_DAC_MODULE_DISABLED -DHAL_I2S_MODULE_DISABLED
+build_unflags = ${common_stm32.build_unflags}
+ -DUSBCON -DUSBD_USE_CDC -DHAL_PCD_MODULE_ENABLED
extra_scripts = ${stm32f1_variant.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
From be5dec9795783b97aa3f8ab89c0a33091c5a4842 Mon Sep 17 00:00:00 2001
From: thinkyhead
Date: Sun, 18 Jul 2021 01:00:12 +0000
Subject: [PATCH 26/35] [cron] Bump distribution date (2021-07-18)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index 0d7518225c..c1cd96ecac 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-17"
+//#define STRING_DISTRIBUTION_DATE "2021-07-18"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index a825f38734..b88141a5b7 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-17"
+ #define STRING_DISTRIBUTION_DATE "2021-07-18"
#endif
/**
From 9d86241d30da0946aa1b16d77fe5f8ef95a9996b Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Sun, 18 Jul 2021 00:45:17 -0500
Subject: [PATCH 27/35] =?UTF-8?q?=F0=9F=90=9B=20No=20translated=20serial?=
=?UTF-8?q?=20strings?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/MarlinCore.cpp | 4 +---
Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp | 4 ++--
Marlin/src/gcode/calibrate/M852.cpp | 2 +-
3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp
index bb7b227b53..1da030b249 100644
--- a/Marlin/src/MarlinCore.cpp
+++ b/Marlin/src/MarlinCore.cpp
@@ -1273,9 +1273,7 @@ void setup() {
if (mcu & RST_SOFTWARE) SERIAL_ECHOLNPGM(STR_SOFTWARE_RESET);
HAL_clear_reset_source();
- SERIAL_ECHOPGM_P(GET_TEXT(MSG_MARLIN));
- SERIAL_CHAR(' ');
- SERIAL_ECHOLNPGM(SHORT_BUILD_VERSION);
+ SERIAL_ECHOLNPGM("Marlin " SHORT_BUILD_VERSION);
SERIAL_EOL();
#if defined(STRING_DISTRIBUTION_DATE) && defined(STRING_CONFIG_H_AUTHOR)
SERIAL_ECHO_MSG(
diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
index e1ed013cf2..f8e446cf81 100644
--- a/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
+++ b/Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp
@@ -916,11 +916,11 @@ void set_message_with_feedback(PGM_P const msg_P) {
if (do_ubl_mesh_map) display_map(param.T_map_type); // Show user where we're probing
if (parser.seen_test('B')) {
- SERIAL_ECHOPGM_P(GET_TEXT(MSG_UBL_BC_INSERT));
+ SERIAL_ECHOPGM("Place Shim & Measure");
LCD_MESSAGEPGM(MSG_UBL_BC_INSERT);
}
else {
- SERIAL_ECHOPGM_P(GET_TEXT(MSG_UBL_BC_INSERT2));
+ SERIAL_ECHOPGM("Measure");
LCD_MESSAGEPGM(MSG_UBL_BC_INSERT2);
}
diff --git a/Marlin/src/gcode/calibrate/M852.cpp b/Marlin/src/gcode/calibrate/M852.cpp
index 6f1e984bc3..73b18ad466 100644
--- a/Marlin/src/gcode/calibrate/M852.cpp
+++ b/Marlin/src/gcode/calibrate/M852.cpp
@@ -93,7 +93,7 @@ void GcodeSuite::M852() {
if (!ijk) {
SERIAL_ECHO_START();
- SERIAL_ECHOPGM_P(GET_TEXT(MSG_SKEW_FACTOR));
+ SERIAL_ECHOPGM("Skew Factor");
SERIAL_ECHOPAIR_F(" XY: ", planner.skew_factor.xy, 6);
#if ENABLED(SKEW_CORRECTION_FOR_Z)
SERIAL_ECHOPAIR_F(" XZ: ", planner.skew_factor.xz, 6);
From 49da4ee4e2942f6897b0833bf35c054f9fcab4fa Mon Sep 17 00:00:00 2001
From: squiddity
Date: Sat, 17 Jul 2021 22:50:39 -0700
Subject: [PATCH 28/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20M913=20typos=20(#223?=
=?UTF-8?q?85)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/gcode/feature/trinamic/M911-M914.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
index f90a30aab2..fca16c0630 100644
--- a/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
+++ b/Marlin/src/gcode/feature/trinamic/M911-M914.cpp
@@ -260,10 +260,10 @@
#endif
case Z_AXIS:
- TERN_(Z_HAS_STEALTCHOP, if (index < 2) TMC_SET_PWMTHRS(Z,Z));
- TERN_(Z2_HAS_STEALTCHOP, if (index == 0 || index == 2) TMC_SET_PWMTHRS(Z,Z2));
- TERN_(Z3_HAS_STEALTCHOP, if (index == 0 || index == 3) TMC_SET_PWMTHRS(Z,Z3));
- TERN_(Z4_HAS_STEALTCHOP, if (index == 0 || index == 4) TMC_SET_PWMTHRS(Z,Z4));
+ TERN_(Z_HAS_STEALTHCHOP, if (index < 2) TMC_SET_PWMTHRS(Z,Z));
+ TERN_(Z2_HAS_STEALTHCHOP, if (index == 0 || index == 2) TMC_SET_PWMTHRS(Z,Z2));
+ TERN_(Z3_HAS_STEALTHCHOP, if (index == 0 || index == 3) TMC_SET_PWMTHRS(Z,Z3));
+ TERN_(Z4_HAS_STEALTHCHOP, if (index == 0 || index == 4) TMC_SET_PWMTHRS(Z,Z4));
break;
#if E_STEPPERS
case E_AXIS: {
From e55427aaa2cbe2d37a9502a0f9ac73feceb183dc Mon Sep 17 00:00:00 2001
From: Katelyn Schiesser
Date: Sat, 17 Jul 2021 23:10:13 -0700
Subject: [PATCH 29/35] =?UTF-8?q?=F0=9F=8E=A8=20Prefer=20DELAY=5FNS=20over?=
=?UTF-8?q?=20DELAY=5FCYCLES=20(#22382)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/HAL/DUE/HAL_SPI.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Marlin/src/HAL/DUE/HAL_SPI.cpp b/Marlin/src/HAL/DUE/HAL_SPI.cpp
index f42e8a9802..758640285b 100644
--- a/Marlin/src/HAL/DUE/HAL_SPI.cpp
+++ b/Marlin/src/HAL/DUE/HAL_SPI.cpp
@@ -240,7 +240,7 @@
}
// all the others
- static uint32_t spiDelayCyclesX4 = 4 * (F_CPU) / 1000000; // 4µs => 125khz
+ static uint16_t spiDelayNS = 4000; // 4000ns => 125khz
static uint8_t spiTransferX(uint8_t b) { // using Mode 0
int bits = 8;
@@ -249,12 +249,12 @@
b <<= 1; // little setup time
WRITE(SD_SCK_PIN, HIGH);
- DELAY_CYCLES(spiDelayCyclesX4);
+ DELAY_NS(spiDelayNS);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SD_SCK_PIN, LOW);
- DELAY_CYCLES(spiDelayCyclesX4);
+ DELAY_NS(spiDelayNS);
} while (--bits);
return b;
}
@@ -510,7 +510,7 @@
spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
break;
default:
- spiDelayCyclesX4 = ((F_CPU) / 1000000) >> (6 - spiRate) << 2; // spiRate of 2 gives the maximum error with current CPU
+ spiDelayNS = 4000 >> (6 - spiRate); // spiRate of 2 gives the maximum error with current CPU
spiTransferTx = (pfnSpiTransfer)spiTransferX;
spiTransferRx = (pfnSpiTransfer)spiTransferX;
spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
From b34a009bb1e114addf2d831171fab967d93a651f Mon Sep 17 00:00:00 2001
From: Scott Lahteine
Date: Sun, 18 Jul 2021 19:56:28 -0500
Subject: [PATCH 30/35] =?UTF-8?q?=F0=9F=90=9B=20Change=20font=20for=20sele?=
=?UTF-8?q?cted=20language=20(#22381)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/core/multi_language.h | 3 -
Marlin/src/lcd/dogm/fontdata/langdata.h | 23 +
Marlin/src/lcd/dogm/fontdata/langdata_an.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_bg.h | 23 +-
Marlin/src/lcd/dogm/fontdata/langdata_ca.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_cz.h | 25 +-
Marlin/src/lcd/dogm/fontdata/langdata_da.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_de.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_el.h | 27 +-
Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h | 27 +-
Marlin/src/lcd/dogm/fontdata/langdata_en.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_es.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_eu.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_fi.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_fr.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_gl.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_hr.h | 17 +-
Marlin/src/lcd/dogm/fontdata/langdata_hu.h | 9 +-
Marlin/src/lcd/dogm/fontdata/langdata_it.h | 7 +-
.../src/lcd/dogm/fontdata/langdata_jp_kana.h | 31 +-
Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h | 219 +++---
Marlin/src/lcd/dogm/fontdata/langdata_nl.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_pl.h | 19 +-
Marlin/src/lcd/dogm/fontdata/langdata_pt.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_ro.h | 7 +-
Marlin/src/lcd/dogm/fontdata/langdata_ru.h | 15 +-
Marlin/src/lcd/dogm/fontdata/langdata_sk.h | 21 +-
Marlin/src/lcd/dogm/fontdata/langdata_test.h | 13 +-
Marlin/src/lcd/dogm/fontdata/langdata_tr.h | 13 +-
Marlin/src/lcd/dogm/fontdata/langdata_uk.h | 23 +-
Marlin/src/lcd/dogm/fontdata/langdata_vi.h | 97 +--
Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h | 719 +++++++++---------
Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h | 605 +++++++--------
Marlin/src/lcd/dogm/marlinui_DOGM.cpp | 36 +-
Marlin/src/lcd/dogm/u8g_fontutf8.h | 3 +
Marlin/src/lcd/language/language_zh_CN.h | 2 +-
Marlin/src/lcd/marlinui.cpp | 8 +
Marlin/src/lcd/marlinui.h | 12 +-
39 files changed, 1095 insertions(+), 1000 deletions(-)
create mode 100644 Marlin/src/lcd/dogm/fontdata/langdata.h
diff --git a/Marlin/src/core/multi_language.h b/Marlin/src/core/multi_language.h
index 5a26edf8d4..1eaef69305 100644
--- a/Marlin/src/core/multi_language.h
+++ b/Marlin/src/core/multi_language.h
@@ -42,15 +42,12 @@ typedef const char Language_Str[];
#ifndef LCD_LANGUAGE_2
#define LCD_LANGUAGE_2 LCD_LANGUAGE
#endif
-
#ifndef LCD_LANGUAGE_3
#define LCD_LANGUAGE_3 LCD_LANGUAGE_2
#endif
-
#ifndef LCD_LANGUAGE_4
#define LCD_LANGUAGE_4 LCD_LANGUAGE_3
#endif
-
#ifndef LCD_LANGUAGE_5
#define LCD_LANGUAGE_5 LCD_LANGUAGE_4
#endif
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata.h b/Marlin/src/lcd/dogm/fontdata/langdata.h
new file mode 100644
index 0000000000..746a3bd0b4
--- /dev/null
+++ b/Marlin/src/lcd/dogm/fontdata/langdata.h
@@ -0,0 +1,23 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * 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
+
+#include
+
+#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_an.h b/Marlin/src/lcd/dogm/fontdata/langdata_an.h
index 7989690f1f..fb0fdcf893 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_an.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_an.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_an[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_bg.h b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h
index 8d5d7e8321..20cd7b9ed7 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_bg.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_bg.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_8_144_149[96] U8G_FONT_SECTION("fontpage_8_144_149") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0x95,0x00,0x07,0xFF,0x00,
@@ -64,14 +66,13 @@ const u8g_fntpgm_uint8_t fontpage_8_206_207[39] U8G_FONT_SECTION("fontpage_8_206
0x00,0x05,0x05,0x05,0x06,0x00,0x00,0x90,0xA8,0xE8,0xA8,0x90,0x04,0x05,0x05,0x06,
0x01,0x00,0x70,0x90,0x70,0x50,0x90};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е'
- FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И'
- FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф'
- FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
- FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у'
- FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш'
- FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ'
- FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
+static const uxg_fontinfo_t g_fontinfo_bg[] PROGMEM = {
+ FONTDATA_ITEM(8, 144, 149, fontpage_8_144_149), // 'А' -- 'Е'
+ FONTDATA_ITEM(8, 151, 152, fontpage_8_151_152), // 'З' -- 'И'
+ FONTDATA_ITEM(8, 154, 164, fontpage_8_154_164), // 'К' -- 'Ф'
+ FONTDATA_ITEM(8, 166, 166, fontpage_8_166_166), // 'Ц' -- 'Ц'
+ FONTDATA_ITEM(8, 175, 195, fontpage_8_175_195), // 'Я' -- 'у'
+ FONTDATA_ITEM(8, 197, 200, fontpage_8_197_200), // 'х' -- 'ш'
+ FONTDATA_ITEM(8, 202, 202, fontpage_8_202_202), // 'ъ' -- 'ъ'
+ FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ca.h b/Marlin/src/lcd/dogm/fontdata/langdata_ca.h
index 7989690f1f..deac3678b5 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_ca.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ca.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_ca[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_cz.h b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h
index e6894a8d30..39f03f3a97 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_cz.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_cz.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_140_141[47] U8G_FONT_SECTION("fontpage_2_140_141") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8D,0x00,0x0A,0x00,0x00,
@@ -40,15 +42,14 @@ const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
- FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď'
- FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // 'Ě' -- 'ě'
- FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň'
- FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř'
- FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
- FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
- FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů'
- FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
+static const uxg_fontinfo_t g_fontinfo_cz[] PROGMEM = {
+ FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
+ FONTDATA_ITEM(2, 143, 143, fontpage_2_143_143), // 'ď' -- 'ď'
+ FONTDATA_ITEM(2, 154, 155, fontpage_2_154_155), // 'Ě' -- 'ě'
+ FONTDATA_ITEM(2, 200, 200, fontpage_2_200_200), // 'ň' -- 'ň'
+ FONTDATA_ITEM(2, 216, 217, fontpage_2_216_217), // 'Ř' -- 'ř'
+ FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
+ FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
+ FONTDATA_ITEM(2, 239, 239, fontpage_2_239_239), // 'ů' -- 'ů'
+ FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_da.h b/Marlin/src/lcd/dogm/fontdata/langdata_da.h
index 7989690f1f..ad8df9a429 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_da.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_da.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_da[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_de.h b/Marlin/src/lcd/dogm/fontdata/langdata_de.h
index 7989690f1f..44230fa302 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_de.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_de.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_de[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el.h b/Marlin/src/lcd/dogm/fontdata/langdata_el.h
index f949f28ca6..6fefab9c61 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_el.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_el.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
@@ -75,16 +77,15 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
- FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
- FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
- FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
- FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
- FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
- FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
- FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
- FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
- FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
+static const uxg_fontinfo_t g_fontinfo_el[] PROGMEM = {
+ FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
+ FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
+ FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
+ FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
+ FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
+ FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
+ FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
+ FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
+ FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
+ FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h b/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
index f949f28ca6..8d7cba8615 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_el_gr.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_7_136_136[33] U8G_FONT_SECTION("fontpage_7_136_136") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x00,0x0A,0x00,0x00,
@@ -75,16 +77,15 @@ const u8g_fntpgm_uint8_t fontpage_64_166_166[24] U8G_FONT_SECTION("fontpage_64_1
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA6,0xA6,0x00,0x01,0x00,0x00,
0x00,0x05,0x01,0x01,0x06,0x00,0x00,0xA8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
- FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
- FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
- FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
- FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
- FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
- FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
- FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
- FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
- FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
+static const uxg_fontinfo_t g_fontinfo_el_gr[] PROGMEM = {
+ FONTDATA_ITEM(7, 136, 136, fontpage_7_136_136), // 'Έ' -- 'Έ'
+ FONTDATA_ITEM(7, 145, 157, fontpage_7_145_157), // 'Α' -- 'Ν'
+ FONTDATA_ITEM(7, 159, 161, fontpage_7_159_161), // 'Ο' -- 'Ρ'
+ FONTDATA_ITEM(7, 163, 167, fontpage_7_163_167), // 'Σ' -- 'Χ'
+ FONTDATA_ITEM(7, 172, 175, fontpage_7_172_175), // 'ά' -- 'ί'
+ FONTDATA_ITEM(7, 177, 181, fontpage_7_177_181), // 'α' -- 'ε'
+ FONTDATA_ITEM(7, 183, 199, fontpage_7_183_199), // 'η' -- 'χ'
+ FONTDATA_ITEM(7, 201, 201, fontpage_7_201_201), // 'ω' -- 'ω'
+ FONTDATA_ITEM(7, 204, 206, fontpage_7_204_206), // 'ό' -- 'ώ'
+ FONTDATA_ITEM(64, 166, 166, fontpage_64_166_166), // '…' -- '…'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_en.h b/Marlin/src/lcd/dogm/fontdata/langdata_en.h
index 7989690f1f..a69161b562 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_en.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_en.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_en[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_es.h b/Marlin/src/lcd/dogm/fontdata/langdata_es.h
index 7989690f1f..a8ddb44ce8 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_es.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_es.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_es[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_eu.h b/Marlin/src/lcd/dogm/fontdata/langdata_eu.h
index 7989690f1f..3fdc0253bc 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_eu.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_eu.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_eu[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_fi.h b/Marlin/src/lcd/dogm/fontdata/langdata_fi.h
index 7989690f1f..25e1927537 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_fi.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_fi.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_fi[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_fr.h b/Marlin/src/lcd/dogm/fontdata/langdata_fr.h
index 7989690f1f..a3cc160c97 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_fr.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_fr.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_fr[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_gl.h b/Marlin/src/lcd/dogm/fontdata/langdata_gl.h
index 7989690f1f..2f93d05dbe 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_gl.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_gl.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_gl[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hr.h b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h
index e5430834ad..b5e4d544cc 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_hr.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_hr.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_135_135[31] U8G_FONT_SECTION("fontpage_2_135_135") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x87,0x87,0x00,0x08,0x00,0x00,
@@ -22,11 +24,10 @@ const u8g_fntpgm_uint8_t fontpage_2_254_254[31] U8G_FONT_SECTION("fontpage_2_254
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x08,0x00,0x00,
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
- FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
- FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ'
- FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
- FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž'
+static const uxg_fontinfo_t g_fontinfo_hr[] PROGMEM = {
+ FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
+ FONTDATA_ITEM(2, 140, 141, fontpage_2_140_141), // 'Č' -- 'č'
+ FONTDATA_ITEM(2, 145, 145, fontpage_2_145_145), // 'đ' -- 'đ'
+ FONTDATA_ITEM(2, 225, 225, fontpage_2_225_225), // 'š' -- 'š'
+ FONTDATA_ITEM(2, 254, 254, fontpage_2_254_254), // 'ž' -- 'ž'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_hu.h b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h
index eb43cbea0f..450662a8c9 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_hu.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_hu.h
@@ -3,13 +3,14 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_241_241[31] U8G_FONT_SECTION("fontpage_2_241_241") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xF1,0xF1,0x00,0x08,0x00,0x00,
0x00,0x05,0x08,0x08,0x06,0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x70};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 241, 241, fontpage_2_241_241), // 'ű' -- 'ű'
+static const uxg_fontinfo_t g_fontinfo_hu[] PROGMEM = {
+ FONTDATA_ITEM(2, 241, 241, fontpage_2_241_241), // 'ű' -- 'ű'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_it.h b/Marlin/src/lcd/dogm/fontdata/langdata_it.h
index 7989690f1f..1a41a794fa 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_it.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_it.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_it[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
index 4d0ec6ab4f..dc483b7d2b 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_jp_kana.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_97_161_164[65] U8G_FONT_SECTION("fontpage_97_161_164") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xA1,0xA4,0x00,0x07,0x00,0x00,
@@ -94,18 +96,17 @@ const u8g_fntpgm_uint8_t fontpage_97_252_252[25] U8G_FONT_SECTION("fontpage_97_2
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x05,0x00,0x00,
0x00,0x05,0x02,0x02,0x06,0x00,0x03,0x80,0x78};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ'
- FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ'
- FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ'
- FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ'
- FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ'
- FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ'
- FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ'
- FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ'
- FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ'
- FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ'
- FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン'
- FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー'
+static const uxg_fontinfo_t g_fontinfo_jp_kana[] PROGMEM = {
+ FONTDATA_ITEM(97, 161, 164, fontpage_97_161_164), // 'ァ' -- 'イ'
+ FONTDATA_ITEM(97, 166, 166, fontpage_97_166_166), // 'ウ' -- 'ウ'
+ FONTDATA_ITEM(97, 168, 168, fontpage_97_168_168), // 'エ' -- 'エ'
+ FONTDATA_ITEM(97, 170, 187, fontpage_97_170_187), // 'オ' -- 'セ'
+ FONTDATA_ITEM(97, 189, 193, fontpage_97_189_193), // 'ソ' -- 'チ'
+ FONTDATA_ITEM(97, 195, 211, fontpage_97_195_211), // 'ッ' -- 'ビ'
+ FONTDATA_ITEM(97, 213, 217, fontpage_97_213_217), // 'フ' -- 'ベ'
+ FONTDATA_ITEM(97, 219, 220, fontpage_97_219_220), // 'ホ' -- 'ボ'
+ FONTDATA_ITEM(97, 222, 223, fontpage_97_222_223), // 'マ' -- 'ミ'
+ FONTDATA_ITEM(97, 225, 237, fontpage_97_225_237), // 'メ' -- 'ロ'
+ FONTDATA_ITEM(97, 242, 243, fontpage_97_242_243), // 'ヲ' -- 'ン'
+ FONTDATA_ITEM(97, 252, 252, fontpage_97_252_252), // 'ー' -- 'ー'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
index 23c84d6573..31cc0bca36 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ko_KR.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_344_240_240[34] U8G_FONT_SECTION("fontpage_344_240_240") = {
0x00,0x0B,0x0D,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x09,0xFE,0x00,
@@ -436,112 +438,111 @@ const u8g_fntpgm_uint8_t fontpage_431_136_136[34] U8G_FONT_SECTION("fontpage_431
0x00,0x08,0x0B,0x0B,0x0A,0x01,0xFE,0x71,0x01,0xFD,0x01,0x71,0x49,0x89,0x49,0x71,
0x01,0x01};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거'
- FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고'
- FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그'
- FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급'
- FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기'
- FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅'
- FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄'
- FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내'
- FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노'
- FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누'
- FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴'
- FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니'
- FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다'
- FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당'
- FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도'
- FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌'
- FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동'
- FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되'
- FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // '된' -- '된'
- FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨'
- FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤'
- FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드'
- FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디'
- FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라'
- FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // '러' -- '러'
- FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레'
- FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력'
- FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로'
- FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료'
- FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르'
- FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리'
- FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // '린' -- '린'
- FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립'
- FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링'
- FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈'
- FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메'
- FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면'
- FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모'
- FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // '못' -- '못'
- FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // '미' -- '미'
- FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀'
- FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바'
- FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버'
- FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베'
- FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨'
- FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // '본' -- '본'
- FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비'
- FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // '사' -- '사'
- FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽'
- FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새'
- FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설'
- FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속'
- FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스'
- FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬'
- FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식'
- FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어'
- FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없'
- FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑'
- FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔'
- FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열'
- FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예'
- FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오'
- FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온'
- FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완'
- FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원'
- FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위'
- FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으'
- FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음'
- FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이'
- FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽'
- FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입'
- FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작'
- FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // '잘' -- '잘'
- FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장'
- FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재'
- FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저'
- FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전'
- FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정'
- FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제'
- FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽'
- FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준'
- FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중'
- FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐'
- FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지'
- FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처'
- FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초'
- FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축'
- FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출'
- FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤'
- FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취'
- FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치'
- FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침'
- FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카'
- FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜'
- FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑'
- FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터'
- FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테'
- FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토'
- FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트'
- FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜'
- FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프'
- FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하'
- FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합'
- FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈'
- FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화'
- FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히'
+static const uxg_fontinfo_t g_fontinfo_ko_KR[] PROGMEM = {
+ FONTDATA_ITEM(344, 240, 240, fontpage_344_240_240), // '거' -- '거'
+ FONTDATA_ITEM(345, 224, 224, fontpage_345_224_224), // '고' -- '고'
+ FONTDATA_ITEM(347, 248, 248, fontpage_347_248_248), // '그' -- '그'
+ FONTDATA_ITEM(348, 137, 137, fontpage_348_137_137), // '급' -- '급'
+ FONTDATA_ITEM(348, 176, 176, fontpage_348_176_176), // '기' -- '기'
+ FONTDATA_ITEM(348, 197, 197, fontpage_348_197_197), // '깅' -- '깅'
+ FONTDATA_ITEM(352, 196, 196, fontpage_352_196_196), // '끄' -- '끄'
+ FONTDATA_ITEM(353, 180, 180, fontpage_353_180_180), // '내' -- '내'
+ FONTDATA_ITEM(354, 248, 248, fontpage_354_248_248), // '노' -- '노'
+ FONTDATA_ITEM(356, 132, 132, fontpage_356_132_132), // '누' -- '누'
+ FONTDATA_ITEM(356, 244, 244, fontpage_356_244_244), // '뉴' -- '뉴'
+ FONTDATA_ITEM(357, 200, 200, fontpage_357_200_200), // '니' -- '니'
+ FONTDATA_ITEM(357, 228, 228, fontpage_357_228_228), // '다' -- '다'
+ FONTDATA_ITEM(357, 249, 249, fontpage_357_249_249), // '당' -- '당'
+ FONTDATA_ITEM(359, 196, 196, fontpage_359_196_196), // '도' -- '도'
+ FONTDATA_ITEM(359, 204, 204, fontpage_359_204_204), // '돌' -- '돌'
+ FONTDATA_ITEM(359, 217, 217, fontpage_359_217_217), // '동' -- '동'
+ FONTDATA_ITEM(360, 152, 152, fontpage_360_152_152), // '되' -- '되'
+ FONTDATA_ITEM(360, 156, 156, fontpage_360_156_156), // '된' -- '된'
+ FONTDATA_ITEM(360, 168, 168, fontpage_360_168_168), // '됨' -- '됨'
+ FONTDATA_ITEM(361, 164, 164, fontpage_361_164_164), // '뒤' -- '뒤'
+ FONTDATA_ITEM(361, 220, 220, fontpage_361_220_220), // '드' -- '드'
+ FONTDATA_ITEM(362, 148, 148, fontpage_362_148_148), // '디' -- '디'
+ FONTDATA_ITEM(366, 252, 252, fontpage_366_252_252), // '라' -- '라'
+ FONTDATA_ITEM(367, 236, 236, fontpage_367_236_236), // '러' -- '러'
+ FONTDATA_ITEM(368, 136, 136, fontpage_368_136_136), // '레' -- '레'
+ FONTDATA_ITEM(368, 165, 165, fontpage_368_165_165), // '력' -- '력'
+ FONTDATA_ITEM(368, 220, 220, fontpage_368_220_220), // '로' -- '로'
+ FONTDATA_ITEM(369, 204, 204, fontpage_369_204_204), // '료' -- '료'
+ FONTDATA_ITEM(370, 244, 244, fontpage_370_244_244), // '르' -- '르'
+ FONTDATA_ITEM(371, 172, 172, fontpage_371_172_172), // '리' -- '리'
+ FONTDATA_ITEM(371, 176, 176, fontpage_371_176_176), // '린' -- '린'
+ FONTDATA_ITEM(371, 189, 189, fontpage_371_189_189), // '립' -- '립'
+ FONTDATA_ITEM(371, 193, 193, fontpage_371_193_193), // '링' -- '링'
+ FONTDATA_ITEM(372, 200, 200, fontpage_372_200_200), // '멈' -- '멈'
+ FONTDATA_ITEM(372, 212, 212, fontpage_372_212_212), // '메' -- '메'
+ FONTDATA_ITEM(372, 244, 244, fontpage_372_244_244), // '면' -- '면'
+ FONTDATA_ITEM(373, 168, 168, fontpage_373_168_168), // '모' -- '모'
+ FONTDATA_ITEM(373, 187, 187, fontpage_373_187_187), // '못' -- '못'
+ FONTDATA_ITEM(375, 248, 248, fontpage_375_248_248), // '미' -- '미'
+ FONTDATA_ITEM(376, 128, 128, fontpage_376_128_128), // '밀' -- '밀'
+ FONTDATA_ITEM(376, 148, 148, fontpage_376_148_148), // '바' -- '바'
+ FONTDATA_ITEM(377, 132, 132, fontpage_377_132_132), // '버' -- '버'
+ FONTDATA_ITEM(377, 160, 160, fontpage_377_160_160), // '베' -- '베'
+ FONTDATA_ITEM(377, 168, 168, fontpage_377_168_168), // '벨' -- '벨'
+ FONTDATA_ITEM(377, 248, 248, fontpage_377_248_248), // '본' -- '본'
+ FONTDATA_ITEM(380, 196, 196, fontpage_380_196_196), // '비' -- '비'
+ FONTDATA_ITEM(385, 172, 172, fontpage_385_172_172), // '사' -- '사'
+ FONTDATA_ITEM(385, 189, 189, fontpage_385_189_189), // '삽' -- '삽'
+ FONTDATA_ITEM(385, 200, 200, fontpage_385_200_200), // '새' -- '새'
+ FONTDATA_ITEM(386, 164, 164, fontpage_386_164_164), // '설' -- '설'
+ FONTDATA_ITEM(387, 140, 141, fontpage_387_140_141), // '소' -- '속'
+ FONTDATA_ITEM(389, 164, 164, fontpage_389_164_164), // '스' -- '스'
+ FONTDATA_ITEM(389, 172, 172, fontpage_389_172_172), // '슬' -- '슬'
+ FONTDATA_ITEM(389, 220, 221, fontpage_389_220_221), // '시' -- '식'
+ FONTDATA_ITEM(395, 180, 180, fontpage_395_180_180), // '어' -- '어'
+ FONTDATA_ITEM(395, 198, 198, fontpage_395_198_198), // '없' -- '없'
+ FONTDATA_ITEM(395, 209, 209, fontpage_395_209_209), // '엑' -- '엑'
+ FONTDATA_ITEM(395, 212, 212, fontpage_395_212_212), // '엔' -- '엔'
+ FONTDATA_ITEM(395, 244, 244, fontpage_395_244_244), // '열' -- '열'
+ FONTDATA_ITEM(396, 136, 136, fontpage_396_136_136), // '예' -- '예'
+ FONTDATA_ITEM(396, 164, 164, fontpage_396_164_164), // '오' -- '오'
+ FONTDATA_ITEM(396, 168, 168, fontpage_396_168_168), // '온' -- '온'
+ FONTDATA_ITEM(396, 196, 196, fontpage_396_196_196), // '완' -- '완'
+ FONTDATA_ITEM(397, 208, 208, fontpage_397_208_208), // '원' -- '원'
+ FONTDATA_ITEM(398, 132, 132, fontpage_398_132_132), // '위' -- '위'
+ FONTDATA_ITEM(398, 188, 188, fontpage_398_188_188), // '으' -- '으'
+ FONTDATA_ITEM(398, 204, 204, fontpage_398_204_204), // '음' -- '음'
+ FONTDATA_ITEM(398, 244, 244, fontpage_398_244_244), // '이' -- '이'
+ FONTDATA_ITEM(398, 252, 253, fontpage_398_252_253), // '일' -- '읽'
+ FONTDATA_ITEM(399, 133, 133, fontpage_399_133_133), // '입' -- '입'
+ FONTDATA_ITEM(399, 144, 145, fontpage_399_144_145), // '자' -- '작'
+ FONTDATA_ITEM(399, 152, 152, fontpage_399_152_152), // '잘' -- '잘'
+ FONTDATA_ITEM(399, 165, 165, fontpage_399_165_165), // '장' -- '장'
+ FONTDATA_ITEM(399, 172, 172, fontpage_399_172_172), // '재' -- '재'
+ FONTDATA_ITEM(400, 128, 128, fontpage_400_128_128), // '저' -- '저'
+ FONTDATA_ITEM(400, 132, 132, fontpage_400_132_132), // '전' -- '전'
+ FONTDATA_ITEM(400, 149, 149, fontpage_400_149_149), // '정' -- '정'
+ FONTDATA_ITEM(400, 156, 156, fontpage_400_156_156), // '제' -- '제'
+ FONTDATA_ITEM(401, 253, 253, fontpage_401_253_253), // '죽' -- '죽'
+ FONTDATA_ITEM(402, 128, 128, fontpage_402_128_128), // '준' -- '준'
+ FONTDATA_ITEM(402, 145, 145, fontpage_402_145_145), // '중' -- '중'
+ FONTDATA_ITEM(403, 144, 144, fontpage_403_144_144), // '즐' -- '즐'
+ FONTDATA_ITEM(403, 192, 192, fontpage_403_192_192), // '지' -- '지'
+ FONTDATA_ITEM(409, 152, 152, fontpage_409_152_152), // '처' -- '처'
+ FONTDATA_ITEM(410, 136, 136, fontpage_410_136_136), // '초' -- '초'
+ FONTDATA_ITEM(411, 149, 149, fontpage_411_149_149), // '축' -- '축'
+ FONTDATA_ITEM(411, 156, 156, fontpage_411_156_156), // '출' -- '출'
+ FONTDATA_ITEM(411, 164, 164, fontpage_411_164_164), // '춤' -- '춤'
+ FONTDATA_ITEM(411, 232, 232, fontpage_411_232_232), // '취' -- '취'
+ FONTDATA_ITEM(412, 216, 216, fontpage_412_216_216), // '치' -- '치'
+ FONTDATA_ITEM(412, 232, 232, fontpage_412_232_232), // '침' -- '침'
+ FONTDATA_ITEM(412, 244, 244, fontpage_412_244_244), // '카' -- '카'
+ FONTDATA_ITEM(414, 156, 156, fontpage_414_156_156), // '켜' -- '켜'
+ FONTDATA_ITEM(417, 209, 209, fontpage_417_209_209), // '탑' -- '탑'
+ FONTDATA_ITEM(418, 176, 176, fontpage_418_176_176), // '터' -- '터'
+ FONTDATA_ITEM(418, 204, 204, fontpage_418_204_204), // '테' -- '테'
+ FONTDATA_ITEM(419, 160, 160, fontpage_419_160_160), // '토' -- '토'
+ FONTDATA_ITEM(421, 184, 184, fontpage_421_184_184), // '트' -- '트'
+ FONTDATA_ITEM(423, 156, 156, fontpage_423_156_156), // '펜' -- '펜'
+ FONTDATA_ITEM(426, 132, 132, fontpage_426_132_132), // '프' -- '프'
+ FONTDATA_ITEM(426, 216, 216, fontpage_426_216_216), // '하' -- '하'
+ FONTDATA_ITEM(426, 233, 233, fontpage_426_233_233), // '합' -- '합'
+ FONTDATA_ITEM(428, 200, 200, fontpage_428_200_200), // '홈' -- '홈'
+ FONTDATA_ITEM(428, 212, 212, fontpage_428_212_212), // '화' -- '화'
+ FONTDATA_ITEM(431, 136, 136, fontpage_431_136_136), // '히' -- '히'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_nl.h b/Marlin/src/lcd/dogm/fontdata/langdata_nl.h
index 7989690f1f..e76eff3348 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_nl.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_nl.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_nl[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h
index 11163d9177..e89a6c159a 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_pl.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pl.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_132_133[45] U8G_FONT_SECTION("fontpage_2_132_133") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x84,0x85,0x00,0x07,0xFE,0x00,
@@ -29,12 +31,11 @@ const u8g_fntpgm_uint8_t fontpage_2_252_252[30] U8G_FONT_SECTION("fontpage_2_252
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x00,0x00,
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // 'Ą' -- 'ą'
- FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
- FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę'
- FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń'
- FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś'
- FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż'
+static const uxg_fontinfo_t g_fontinfo_pl[] PROGMEM = {
+ FONTDATA_ITEM(2, 132, 133, fontpage_2_132_133), // 'Ą' -- 'ą'
+ FONTDATA_ITEM(2, 135, 135, fontpage_2_135_135), // 'ć' -- 'ć'
+ FONTDATA_ITEM(2, 153, 153, fontpage_2_153_153), // 'ę' -- 'ę'
+ FONTDATA_ITEM(2, 193, 196, fontpage_2_193_196), // 'Ł' -- 'ń'
+ FONTDATA_ITEM(2, 218, 219, fontpage_2_218_219), // 'Ś' -- 'ś'
+ FONTDATA_ITEM(2, 252, 252, fontpage_2_252_252), // 'ż' -- 'ż'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pt.h b/Marlin/src/lcd/dogm/fontdata/langdata_pt.h
index 7989690f1f..61f857e587 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_pt.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pt.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_pt[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h b/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
index 7989690f1f..b0ed5ad5cf 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_pt_br.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_pt_br[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ro.h b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h
index 7989690f1f..6be4863553 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_ro.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ro.h
@@ -3,7 +3,8 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {};
+#include "langdata.h"
+
+static const uxg_fontinfo_t g_fontinfo_ro[] PROGMEM = {};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_ru.h b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h
index 617119dde3..3f857a1b3f 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_ru.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_ru.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_8_144_168[348] U8G_FONT_SECTION("fontpage_8_144_168") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0x00,0x0A,0xFE,0x00,
@@ -64,10 +66,9 @@ const u8g_fntpgm_uint8_t fontpage_8_209_209[30] U8G_FONT_SECTION("fontpage_8_209
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xD1,0xD1,0x00,0x07,0x00,0x00,
0x00,0x05,0x07,0x07,0x06,0x00,0x00,0x50,0x00,0x70,0x88,0xF0,0x80,0x70};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // 'А' -- 'Ш'
- FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э'
- FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // 'Я' -- 'я'
- FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё'
+static const uxg_fontinfo_t g_fontinfo_ru[] PROGMEM = {
+ FONTDATA_ITEM(8, 144, 168, fontpage_8_144_168), // 'А' -- 'Ш'
+ FONTDATA_ITEM(8, 171, 173, fontpage_8_171_173), // 'Ы' -- 'Э'
+ FONTDATA_ITEM(8, 175, 207, fontpage_8_175_207), // 'Я' -- 'я'
+ FONTDATA_ITEM(8, 209, 209, fontpage_8_209_209), // 'ё' -- 'ё'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_sk.h b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h
index 152d74bbda..4580ce5b7b 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_sk.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_sk.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_140_143[79] U8G_FONT_SECTION("fontpage_2_140_143") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x8C,0x8F,0x00,0x0A,0x00,0x00,
@@ -37,13 +39,12 @@ const u8g_fntpgm_uint8_t fontpage_2_253_254[47] U8G_FONT_SECTION("fontpage_2_253
0x00,0x05,0x0A,0x0A,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,
0xF8,0x05,0x08,0x08,0x06,0x00,0x00,0x50,0x20,0x00,0xF8,0x10,0x20,0x40,0xF8};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď'
- FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // 'ĺ' -- 'ĺ'
- FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ'
- FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň'
- FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
- FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
- FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
+static const uxg_fontinfo_t g_fontinfo_sk[] PROGMEM = {
+ FONTDATA_ITEM(2, 140, 143, fontpage_2_140_143), // 'Č' -- 'ď'
+ FONTDATA_ITEM(2, 186, 186, fontpage_2_186_186), // 'ĺ' -- 'ĺ'
+ FONTDATA_ITEM(2, 189, 190, fontpage_2_189_190), // 'Ľ' -- 'ľ'
+ FONTDATA_ITEM(2, 199, 200, fontpage_2_199_200), // 'Ň' -- 'ň'
+ FONTDATA_ITEM(2, 224, 225, fontpage_2_224_225), // 'Š' -- 'š'
+ FONTDATA_ITEM(2, 229, 229, fontpage_2_229_229), // 'ť' -- 'ť'
+ FONTDATA_ITEM(2, 253, 254, fontpage_2_253_254), // 'Ž' -- 'ž'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_test.h b/Marlin/src/lcd/dogm/fontdata/langdata_test.h
index ca6e369eb1..da76a31041 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_test.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_test.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_8_128_255[1677] U8G_FONT_SECTION("fontpage_8_128_255") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x0A,0xFE,0x00,
@@ -223,9 +225,8 @@ const u8g_fntpgm_uint8_t fontpage_97_193_255[822] U8G_FONT_SECTION("fontpage_97_
0x06,0x00,0x02,0x28,0x28,0x00,0x80,0x60,0x10,0x08,0x05,0x06,0x06,0x06,0x00,0x00,
0xF8,0x08,0x08,0x08,0x08,0x08};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ'
- FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ'
- FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ'
+static const uxg_fontinfo_t g_fontinfo_test[] PROGMEM = {
+ FONTDATA_ITEM(8, 128, 255, fontpage_8_128_255), // 'Ѐ' -- 'ѿ'
+ FONTDATA_ITEM(97, 129, 191, fontpage_97_129_191), // 'め' -- 'タ'
+ FONTDATA_ITEM(97, 193, 255, fontpage_97_193_255), // 'チ' -- 'ヿ'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_tr.h b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h
index aeb1124cf2..0ac02435a5 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_tr.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_tr.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_158_159[49] U8G_FONT_SECTION("fontpage_2_158_159") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9E,0x9F,0x00,0x0A,0xFE,0x00,
@@ -19,9 +21,8 @@ const u8g_fntpgm_uint8_t fontpage_2_222_223[45] U8G_FONT_SECTION("fontpage_2_222
0x00,0x05,0x09,0x09,0x06,0x00,0xFE,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x10,0x60,
0x05,0x07,0x07,0x06,0x00,0xFE,0x78,0x80,0x70,0x08,0xF0,0x10,0x60};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // 'Ğ' -- 'ğ'
- FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı'
- FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş'
+static const uxg_fontinfo_t g_fontinfo_tr[] PROGMEM = {
+ FONTDATA_ITEM(2, 158, 159, fontpage_2_158_159), // 'Ğ' -- 'ğ'
+ FONTDATA_ITEM(2, 176, 177, fontpage_2_176_177), // 'İ' -- 'ı'
+ FONTDATA_ITEM(2, 222, 223, fontpage_2_222_223), // 'Ş' -- 'ş'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_uk.h b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h
index fe409d4e3c..b25e2f6db4 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_uk.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_uk.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_8_134_134[30] U8G_FONT_SECTION("fontpage_8_134_134") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x86,0x86,0x00,0x07,0x00,0x00,
@@ -72,14 +74,13 @@ const u8g_fntpgm_uint8_t fontpage_8_214_215[41] U8G_FONT_SECTION("fontpage_8_214
0x00,0x03,0x06,0x06,0x06,0x01,0x00,0x40,0x00,0xC0,0x40,0x40,0xE0,0x03,0x06,0x06,
0x06,0x01,0x00,0xA0,0x00,0xC0,0x40,0x40,0xE0};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І'
- FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // 'А' -- 'Щ'
- FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // 'Ь' -- 'Ь'
- FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ'
- FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь'
- FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
- FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є'
- FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // 'і' -- 'ї'
+static const uxg_fontinfo_t g_fontinfo_uk[] PROGMEM = {
+ FONTDATA_ITEM(8, 134, 134, fontpage_8_134_134), // 'І' -- 'І'
+ FONTDATA_ITEM(8, 144, 169, fontpage_8_144_169), // 'А' -- 'Щ'
+ FONTDATA_ITEM(8, 172, 172, fontpage_8_172_172), // 'Ь' -- 'Ь'
+ FONTDATA_ITEM(8, 175, 201, fontpage_8_175_201), // 'Я' -- 'щ'
+ FONTDATA_ITEM(8, 204, 204, fontpage_8_204_204), // 'ь' -- 'ь'
+ FONTDATA_ITEM(8, 206, 207, fontpage_8_206_207), // 'ю' -- 'я'
+ FONTDATA_ITEM(8, 212, 212, fontpage_8_212_212), // 'є' -- 'є'
+ FONTDATA_ITEM(8, 214, 215, fontpage_8_214_215), // 'і' -- 'ї'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_vi.h b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h
index 998ae44af1..303c4c66d6 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_vi.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_vi.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_2_131_131[31] U8G_FONT_SECTION("fontpage_2_131_131") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x83,0x83,0x00,0x08,0x00,0x00,
@@ -177,51 +179,50 @@ const u8g_fntpgm_uint8_t fontpage_61_241_241[32] U8G_FONT_SECTION("fontpage_61_2
0x00,0x06,0x09,0x09,0x07,0x00,0xFE,0x0C,0x04,0x88,0x88,0x88,0x88,0x70,0x00,0x20
};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă'
- FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ'
- FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ'
- FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ'
- FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư'
- FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃'
- FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉'
- FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣'
- FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́'
- FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ'
- FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả'
- FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ'
- FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ'
- FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ'
- FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ'
- FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ'
- FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ'
- FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ'
- FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ'
- FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ'
- FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế'
- FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề'
- FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể'
- FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ'
- FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ'
- FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị'
- FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ'
- FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ'
- FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố'
- FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ'
- FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ'
- FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ'
- FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ'
- FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ'
- FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ'
- FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở'
- FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ'
- FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ'
- FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ'
- FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ'
- FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ'
- FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ'
- FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử'
- FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ'
- FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự'
+static const uxg_fontinfo_t g_fontinfo_vi[] PROGMEM = {
+ FONTDATA_ITEM(2, 131, 131, fontpage_2_131_131), // 'ă' -- 'ă'
+ FONTDATA_ITEM(2, 144, 145, fontpage_2_144_145), // 'Đ' -- 'đ'
+ FONTDATA_ITEM(2, 169, 169, fontpage_2_169_169), // 'ĩ' -- 'ĩ'
+ FONTDATA_ITEM(3, 161, 161, fontpage_3_161_161), // 'ơ' -- 'ơ'
+ FONTDATA_ITEM(3, 175, 176, fontpage_3_175_176), // 'Ư' -- 'ư'
+ FONTDATA_ITEM(6, 131, 131, fontpage_6_131_131), // '̃' -- '̃'
+ FONTDATA_ITEM(6, 137, 137, fontpage_6_137_137), // '̉' -- '̉'
+ FONTDATA_ITEM(6, 163, 163, fontpage_6_163_163), // '̣' -- '̣'
+ FONTDATA_ITEM(6, 192, 193, fontpage_6_192_193), // '̀' -- '́'
+ FONTDATA_ITEM(61, 161, 161, fontpage_61_161_161), // 'ạ' -- 'ạ'
+ FONTDATA_ITEM(61, 163, 163, fontpage_61_163_163), // 'ả' -- 'ả'
+ FONTDATA_ITEM(61, 165, 165, fontpage_61_165_165), // 'ấ' -- 'ấ'
+ FONTDATA_ITEM(61, 167, 167, fontpage_61_167_167), // 'ầ' -- 'ầ'
+ FONTDATA_ITEM(61, 169, 169, fontpage_61_169_169), // 'ẩ' -- 'ẩ'
+ FONTDATA_ITEM(61, 173, 173, fontpage_61_173_173), // 'ậ' -- 'ậ'
+ FONTDATA_ITEM(61, 175, 175, fontpage_61_175_175), // 'ắ' -- 'ắ'
+ FONTDATA_ITEM(61, 177, 177, fontpage_61_177_177), // 'ằ' -- 'ằ'
+ FONTDATA_ITEM(61, 179, 179, fontpage_61_179_179), // 'ẳ' -- 'ẳ'
+ FONTDATA_ITEM(61, 181, 181, fontpage_61_181_181), // 'ẵ' -- 'ẵ'
+ FONTDATA_ITEM(61, 183, 183, fontpage_61_183_183), // 'ặ' -- 'ặ'
+ FONTDATA_ITEM(61, 191, 191, fontpage_61_191_191), // 'ế' -- 'ế'
+ FONTDATA_ITEM(61, 193, 193, fontpage_61_193_193), // 'ề' -- 'ề'
+ FONTDATA_ITEM(61, 195, 195, fontpage_61_195_195), // 'ể' -- 'ể'
+ FONTDATA_ITEM(61, 199, 199, fontpage_61_199_199), // 'ệ' -- 'ệ'
+ FONTDATA_ITEM(61, 201, 201, fontpage_61_201_201), // 'ỉ' -- 'ỉ'
+ FONTDATA_ITEM(61, 203, 203, fontpage_61_203_203), // 'ị' -- 'ị'
+ FONTDATA_ITEM(61, 205, 205, fontpage_61_205_205), // 'ọ' -- 'ọ'
+ FONTDATA_ITEM(61, 207, 207, fontpage_61_207_207), // 'ỏ' -- 'ỏ'
+ FONTDATA_ITEM(61, 209, 209, fontpage_61_209_209), // 'ố' -- 'ố'
+ FONTDATA_ITEM(61, 211, 211, fontpage_61_211_211), // 'ồ' -- 'ồ'
+ FONTDATA_ITEM(61, 213, 213, fontpage_61_213_213), // 'ổ' -- 'ổ'
+ FONTDATA_ITEM(61, 215, 215, fontpage_61_215_215), // 'ỗ' -- 'ỗ'
+ FONTDATA_ITEM(61, 217, 217, fontpage_61_217_217), // 'ộ' -- 'ộ'
+ FONTDATA_ITEM(61, 219, 219, fontpage_61_219_219), // 'ớ' -- 'ớ'
+ FONTDATA_ITEM(61, 221, 221, fontpage_61_221_221), // 'ờ' -- 'ờ'
+ FONTDATA_ITEM(61, 223, 223, fontpage_61_223_223), // 'ở' -- 'ở'
+ FONTDATA_ITEM(61, 225, 225, fontpage_61_225_225), // 'ỡ' -- 'ỡ'
+ FONTDATA_ITEM(61, 227, 227, fontpage_61_227_227), // 'ợ' -- 'ợ'
+ FONTDATA_ITEM(61, 229, 229, fontpage_61_229_229), // 'ụ' -- 'ụ'
+ FONTDATA_ITEM(61, 231, 231, fontpage_61_231_231), // 'ủ' -- 'ủ'
+ FONTDATA_ITEM(61, 233, 233, fontpage_61_233_233), // 'ứ' -- 'ứ'
+ FONTDATA_ITEM(61, 235, 235, fontpage_61_235_235), // 'ừ' -- 'ừ'
+ FONTDATA_ITEM(61, 237, 237, fontpage_61_237_237), // 'ử' -- 'ử'
+ FONTDATA_ITEM(61, 239, 239, fontpage_61_239_239), // 'ữ' -- 'ữ'
+ FONTDATA_ITEM(61, 241, 241, fontpage_61_241_241), // 'ự' -- 'ự'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
index 8d74ba4414..664fa5f4bf 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_CN.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_64_157_157[26] U8G_FONT_SECTION("fontpage_64_157_157") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9D,0x9D,0x00,0x07,0x00,0x00,
@@ -1462,362 +1464,361 @@ const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x08,0x00,0x00,
0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(64, 157, 157, fontpage_64_157_157), // '”' -- '”'
- FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
- FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
- FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
- FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
- FONTDATA_ITEM(156, 147, 147, fontpage_156_147_147), // '专' -- '专'
- FONTDATA_ITEM(156, 157, 157, fontpage_156_157_157), // '丝' -- '丝'
- FONTDATA_ITEM(156, 170, 170, fontpage_156_170_170), // '个' -- '个'
- FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
- FONTDATA_ITEM(156, 186, 187, fontpage_156_186_187), // '为' -- '主'
- FONTDATA_ITEM(156, 201, 201, fontpage_156_201_201), // '义' -- '义'
- FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
- FONTDATA_ITEM(157, 134, 134, fontpage_157_134_134), // '了' -- '了'
- FONTDATA_ITEM(157, 140, 140, fontpage_157_140_140), // '二' -- '二'
- FONTDATA_ITEM(157, 142, 142, fontpage_157_142_142), // '于' -- '于'
- FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
- FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
- FONTDATA_ITEM(157, 206, 206, fontpage_157_206_206), // '从' -- '从'
- FONTDATA_ITEM(157, 228, 229, fontpage_157_228_229), // '令' -- '以'
- FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
- FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
- FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
- FONTDATA_ITEM(158, 160, 160, fontpage_158_160_160), // '传' -- '传'
- FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
- FONTDATA_ITEM(158, 211, 211, fontpage_158_211_211), // '体' -- '体'
- FONTDATA_ITEM(158, 217, 217, fontpage_158_217_217), // '余' -- '余'
- FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
- FONTDATA_ITEM(158, 255, 255, fontpage_158_255_255), // '使' -- '使'
- FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
- FONTDATA_ITEM(159, 181, 181, fontpage_159_181_181), // '侵' -- '侵'
- FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
- FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
- FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
- FONTDATA_ITEM(160, 190, 190, fontpage_160_190_190), // '倾' -- '倾'
- FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
- FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
- FONTDATA_ITEM(161, 168, 168, fontpage_161_168_168), // '储' -- '储'
- FONTDATA_ITEM(161, 207, 207, fontpage_161_207_207), // '像' -- '像'
- FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
- FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
- FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
- FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
- FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
- FONTDATA_ITEM(162, 243, 243, fontpage_162_243_243), // '关' -- '关'
- FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
- FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
- FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
- FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
- FONTDATA_ITEM(163, 250, 251, fontpage_163_250_251), // '出' -- '击'
- FONTDATA_ITEM(164, 134, 135, fontpage_164_134_135), // '分' -- '切'
- FONTDATA_ITEM(164, 155, 155, fontpage_164_155_155), // '创' -- '创'
- FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
- FONTDATA_ITEM(164, 171, 171, fontpage_164_171_171), // '别' -- '别'
- FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
- FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
- FONTDATA_ITEM(164, 242, 242, fontpage_164_242_242), // '割' -- '割'
- FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
- FONTDATA_ITEM(165, 159, 160, fontpage_165_159_160), // '功' -- '加'
- FONTDATA_ITEM(165, 168, 168, fontpage_165_168_168), // '动' -- '动'
- FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
- FONTDATA_ITEM(166, 199, 199, fontpage_166_199_199), // '升' -- '升'
- FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
- FONTDATA_ITEM(166, 207, 207, fontpage_166_207_207), // '协' -- '协'
- FONTDATA_ITEM(166, 213, 213, fontpage_166_213_213), // '单' -- '单'
- FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
- FONTDATA_ITEM(166, 240, 241, fontpage_166_240_241), // '印' -- '危'
- FONTDATA_ITEM(166, 244, 244, fontpage_166_244_244), // '却' -- '却'
- FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
- FONTDATA_ITEM(167, 139, 139, fontpage_167_139_139), // '压' -- '压'
- FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
- FONTDATA_ITEM(167, 204, 205, fontpage_167_204_205), // '双' -- '反'
- FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
- FONTDATA_ITEM(167, 216, 216, fontpage_167_216_216), // '变' -- '变'
- FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
- FONTDATA_ITEM(168, 131, 131, fontpage_168_131_131), // '吃' -- '吃'
- FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
- FONTDATA_ITEM(168, 141, 142, fontpage_168_141_142), // '名' -- '后'
- FONTDATA_ITEM(168, 145, 145, fontpage_168_145_145), // '向' -- '向'
- FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
- FONTDATA_ITEM(168, 175, 175, fontpage_168_175_175), // '启' -- '启'
- FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
- FONTDATA_ITEM(168, 232, 232, fontpage_168_232_232), // '周' -- '周'
- FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
- FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
- FONTDATA_ITEM(169, 205, 205, fontpage_169_205_205), // '响' -- '响'
- FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // '喷' -- '喷'
- FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
- FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
- FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
- FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
- FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
- FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
- FONTDATA_ITEM(173, 254, 254, fontpage_173_254_254), // '图' -- '图'
- FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
- FONTDATA_ITEM(174, 207, 207, fontpage_174_207_207), // '坏' -- '坏'
- FONTDATA_ITEM(174, 215, 215, fontpage_174_215_215), // '块' -- '块'
- FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
- FONTDATA_ITEM(175, 171, 171, fontpage_175_171_171), // '垫' -- '垫'
- FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
- FONTDATA_ITEM(177, 243, 243, fontpage_177_243_243), // '壳' -- '壳'
- FONTDATA_ITEM(178, 135, 135, fontpage_178_135_135), // '备' -- '备'
- FONTDATA_ITEM(178, 141, 141, fontpage_178_141_141), // '复' -- '复'
- FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
- FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
- FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
- FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
- FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
- FONTDATA_ITEM(178, 180, 180, fontpage_178_180_180), // '头' -- '头'
- FONTDATA_ITEM(178, 253, 253, fontpage_178_253_253), // '好' -- '好'
- FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
- FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
- FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
- FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
- FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
- FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
- FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
- FONTDATA_ITEM(183, 171, 171, fontpage_183_171_171), // '宫' -- '宫'
- FONTDATA_ITEM(183, 249, 249, fontpage_183_249_249), // '对' -- '对'
- FONTDATA_ITEM(184, 134, 134, fontpage_184_134_134), // '将' -- '将'
- FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
- FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
- FONTDATA_ITEM(184, 207, 207, fontpage_184_207_207), // '屏' -- '屏'
- FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
- FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
- FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
- FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
- FONTDATA_ITEM(188, 246, 246, fontpage_188_246_246), // '并' -- '并'
- FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
- FONTDATA_ITEM(189, 148, 148, fontpage_189_148_148), // '应' -- '应'
- FONTDATA_ITEM(189, 159, 159, fontpage_189_159_159), // '废' -- '废'
- FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
- FONTDATA_ITEM(190, 128, 128, fontpage_190_128_128), // '开' -- '开'
- FONTDATA_ITEM(190, 131, 131, fontpage_190_131_131), // '弃' -- '弃'
- FONTDATA_ITEM(190, 143, 143, fontpage_190_143_143), // '式' -- '式'
- FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
- FONTDATA_ITEM(190, 185, 185, fontpage_190_185_185), // '弹' -- '弹'
- FONTDATA_ITEM(190, 210, 210, fontpage_190_210_210), // '归' -- '归'
- FONTDATA_ITEM(191, 132, 133, fontpage_191_132_133), // '径' -- '待'
- FONTDATA_ITEM(191, 170, 170, fontpage_191_170_170), // '循' -- '循'
- FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
- FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
- FONTDATA_ITEM(191, 253, 253, fontpage_191_253_253), // '忽' -- '忽'
- FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
- FONTDATA_ITEM(192, 187, 187, fontpage_192_187_187), // '总' -- '总'
- FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
- FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
- FONTDATA_ITEM(194, 159, 159, fontpage_194_159_159), // '感' -- '感'
- FONTDATA_ITEM(196, 143, 144, fontpage_196_143_144), // '戏' -- '成'
- FONTDATA_ITEM(196, 183, 183, fontpage_196_183_183), // '户' -- '户'
- FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
- FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
- FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
- FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
- FONTDATA_ITEM(196, 231, 231, fontpage_196_231_231), // '执' -- '执'
- FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
- FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
- FONTDATA_ITEM(197, 165, 165, fontpage_197_165_165), // '报' -- '报'
- FONTDATA_ITEM(197, 172, 172, fontpage_197_172_172), // '抬' -- '抬'
- FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
- FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
- FONTDATA_ITEM(197, 233, 233, fontpage_197_233_233), // '择' -- '择'
- FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
- FONTDATA_ITEM(198, 161, 161, fontpage_198_161_161), // '挡' -- '挡'
- FONTDATA_ITEM(198, 164, 164, fontpage_198_164_164), // '挤' -- '挤'
- FONTDATA_ITEM(198, 223, 223, fontpage_198_223_223), // '损' -- '损'
- FONTDATA_ITEM(198, 226, 226, fontpage_198_226_226), // '换' -- '换'
- FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
- FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
- FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
- FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
- FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
- FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
- FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
- FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
- FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // '数' -- '数'
- FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // '敲' -- '敲'
- FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
- FONTDATA_ITEM(203, 135, 135, fontpage_203_135_135), // '文' -- '文'
- FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
- FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
- FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // '断' -- '断'
- FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
- FONTDATA_ITEM(203, 185, 185, fontpage_203_185_185), // '方' -- '方'
- FONTDATA_ITEM(203, 224, 224, fontpage_203_224_224), // '无' -- '无'
- FONTDATA_ITEM(203, 246, 246, fontpage_203_246_246), // '时' -- '时'
- FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
- FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
- FONTDATA_ITEM(205, 130, 130, fontpage_205_130_130), // '暂' -- '暂'
- FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
- FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
- FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
- FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
- FONTDATA_ITEM(206, 159, 159, fontpage_206_159_159), // '期' -- '期'
- FONTDATA_ITEM(206, 186, 186, fontpage_206_186_186), // '机' -- '机'
- FONTDATA_ITEM(206, 192, 192, fontpage_206_192_192), // '杀' -- '杀'
- FONTDATA_ITEM(206, 223, 223, fontpage_206_223_223), // '束' -- '束'
- FONTDATA_ITEM(206, 225, 225, fontpage_206_225_225), // '条' -- '条'
- FONTDATA_ITEM(206, 229, 229, fontpage_206_229_229), // '来' -- '来'
- FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
- FONTDATA_ITEM(207, 151, 151, fontpage_207_151_151), // '林' -- '林'
- FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
- FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
- FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
- FONTDATA_ITEM(209, 175, 175, fontpage_209_175_175), // '梯' -- '梯'
- FONTDATA_ITEM(209, 192, 192, fontpage_209_192_192), // '检' -- '检'
- FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
- FONTDATA_ITEM(212, 161, 161, fontpage_212_161_161), // '模' -- '模'
- FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
- FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
- FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
- FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
- FONTDATA_ITEM(217, 161, 161, fontpage_217_161_161), // '没' -- '没'
- FONTDATA_ITEM(217, 226, 226, fontpage_217_226_226), // '波' -- '波'
- FONTDATA_ITEM(217, 232, 232, fontpage_217_232_232), // '注' -- '注'
- FONTDATA_ITEM(218, 151, 151, fontpage_218_151_151), // '洗' -- '洗'
- FONTDATA_ITEM(218, 187, 187, fontpage_218_187_187), // '活' -- '活'
- FONTDATA_ITEM(218, 193, 193, fontpage_218_193_193), // '流' -- '流'
- FONTDATA_ITEM(218, 203, 203, fontpage_218_203_203), // '测' -- '测'
- FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
- FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
- FONTDATA_ITEM(219, 247, 247, fontpage_219_247_247), // '混' -- '混'
- FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
- FONTDATA_ITEM(220, 169, 169, fontpage_220_169_169), // '温' -- '温'
- FONTDATA_ITEM(220, 184, 184, fontpage_220_184_184), // '游' -- '游'
- FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
- FONTDATA_ITEM(221, 162, 162, fontpage_221_162_162), // '溢' -- '溢'
- FONTDATA_ITEM(221, 209, 209, fontpage_221_209_209), // '滑' -- '滑'
- FONTDATA_ITEM(222, 143, 143, fontpage_222_143_143), // '漏' -- '漏'
- FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
- FONTDATA_ITEM(224, 239, 239, fontpage_224_239_239), // '灯' -- '灯'
- FONTDATA_ITEM(225, 185, 185, fontpage_225_185_185), // '点' -- '点'
- FONTDATA_ITEM(225, 237, 237, fontpage_225_237_237), // '热' -- '热'
- FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
- FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
- FONTDATA_ITEM(228, 249, 249, fontpage_228_249_249), // '特' -- '特'
- FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
- FONTDATA_ITEM(231, 175, 175, fontpage_231_175_175), // '环' -- '环'
- FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
- FONTDATA_ITEM(234, 181, 181, fontpage_234_181_181), // '电' -- '电'
- FONTDATA_ITEM(234, 229, 229, fontpage_234_229_229), // '略' -- '略'
- FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
- FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
- FONTDATA_ITEM(237, 209, 209, fontpage_237_209_209), // '监' -- '监'
- FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
- FONTDATA_ITEM(238, 129, 129, fontpage_238_129_129), // '省' -- '省'
- FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
- FONTDATA_ITEM(240, 238, 238, fontpage_240_238_238), // '确' -- '确'
- FONTDATA_ITEM(243, 187, 187, fontpage_243_187_187), // '离' -- '离'
- FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
- FONTDATA_ITEM(244, 250, 250, fontpage_244_250_250), // '空' -- '空'
- FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
- FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // '第' -- '第'
- FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
- FONTDATA_ITEM(247, 128, 128, fontpage_247_128_128), // '简' -- '简'
- FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
- FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // '类' -- '类'
- FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
- FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
- FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
- FONTDATA_ITEM(253, 167, 167, fontpage_253_167_167), // '级' -- '级'
- FONTDATA_ITEM(253, 191, 191, fontpage_253_191_191), // '线' -- '线'
- FONTDATA_ITEM(253, 198, 198, fontpage_253_198_198), // '细' -- '细'
- FONTDATA_ITEM(253, 200, 200, fontpage_253_200_200), // '终' -- '终'
- FONTDATA_ITEM(253, 211, 211, fontpage_253_211_211), // '结' -- '结'
- FONTDATA_ITEM(253, 217, 217, fontpage_253_217_217), // '给' -- '给'
- FONTDATA_ITEM(253, 223, 223, fontpage_253_223_223), // '统' -- '统'
- FONTDATA_ITEM(253, 231, 231, fontpage_253_231_231), // '继' -- '继'
- FONTDATA_ITEM(253, 234, 234, fontpage_253_234_234), // '绪' -- '绪'
- FONTDATA_ITEM(253, 237, 237, fontpage_253_237_237), // '续' -- '续'
- FONTDATA_ITEM(253, 255, 255, fontpage_253_255_255), // '绿' -- '绿'
- FONTDATA_ITEM(254, 150, 150, fontpage_254_150_150), // '编' -- '编'
- FONTDATA_ITEM(254, 186, 186, fontpage_254_186_186), // '缺' -- '缺'
- FONTDATA_ITEM(254, 209, 209, fontpage_254_209_209), // '网' -- '网'
- FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
- FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
- FONTDATA_ITEM(256, 133, 133, fontpage_256_133_133), // '者' -- '者'
- FONTDATA_ITEM(256, 234, 234, fontpage_256_234_234), // '聪' -- '聪'
- FONTDATA_ITEM(257, 253, 253, fontpage_257_253_253), // '能' -- '能'
- FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
- FONTDATA_ITEM(259, 243, 243, fontpage_259_243_243), // '至' -- '至'
- FONTDATA_ITEM(263, 220, 220, fontpage_263_220_220), // '菜' -- '菜'
- FONTDATA_ITEM(265, 221, 221, fontpage_265_221_221), // '蓝' -- '蓝'
- FONTDATA_ITEM(269, 199, 199, fontpage_269_199_199), // '蛇' -- '蛇'
- FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
- FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
- FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
- FONTDATA_ITEM(275, 129, 129, fontpage_275_129_129), // '要' -- '要'
- FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
- FONTDATA_ITEM(279, 161, 161, fontpage_279_161_161), // '计' -- '计'
- FONTDATA_ITEM(279, 174, 174, fontpage_279_174_174), // '议' -- '议'
- FONTDATA_ITEM(279, 190, 190, fontpage_279_190_190), // '设' -- '设'
- FONTDATA_ITEM(279, 213, 213, fontpage_279_213_213), // '试' -- '试'
- FONTDATA_ITEM(279, 239, 239, fontpage_279_239_239), // '误' -- '误'
- FONTDATA_ITEM(279, 247, 247, fontpage_279_247_247), // '请' -- '请'
- FONTDATA_ITEM(279, 251, 251, fontpage_279_251_251), // '读' -- '读'
- FONTDATA_ITEM(280, 131, 131, fontpage_280_131_131), // '调' -- '调'
- FONTDATA_ITEM(282, 165, 165, fontpage_282_165_165), // '败' -- '败'
- FONTDATA_ITEM(282, 170, 170, fontpage_282_170_170), // '贪' -- '贪'
- FONTDATA_ITEM(282, 247, 247, fontpage_282_247_247), // '起' -- '起'
- FONTDATA_ITEM(283, 133, 133, fontpage_283_133_133), // '超' -- '超'
- FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
- FONTDATA_ITEM(286, 236, 236, fontpage_286_236_236), // '转' -- '转'
- FONTDATA_ITEM(286, 239, 239, fontpage_286_239_239), // '软' -- '软'
- FONTDATA_ITEM(286, 244, 244, fontpage_286_244_244), // '轴' -- '轴'
- FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // '载' -- '载'
- FONTDATA_ITEM(287, 145, 145, fontpage_287_145_145), // '辑' -- '辑'
- FONTDATA_ITEM(287, 147, 147, fontpage_287_147_147), // '输' -- '输'
- FONTDATA_ITEM(287, 185, 185, fontpage_287_185_185), // '边' -- '边'
- FONTDATA_ITEM(287, 193, 193, fontpage_287_193_193), // '迁' -- '迁'
- FONTDATA_ITEM(287, 208, 209, fontpage_287_208_209), // '运' -- '近'
- FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
- FONTDATA_ITEM(287, 216, 216, fontpage_287_216_216), // '还' -- '还'
- FONTDATA_ITEM(287, 219, 219, fontpage_287_219_219), // '进' -- '进'
- FONTDATA_ITEM(287, 222, 222, fontpage_287_222_222), // '连' -- '连'
- FONTDATA_ITEM(287, 247, 247, fontpage_287_247_247), // '迷' -- '迷'
- FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
- FONTDATA_ITEM(288, 137, 137, fontpage_288_137_137), // '选' -- '选'
- FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
- FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
- FONTDATA_ITEM(290, 205, 205, fontpage_290_205_205), // '配' -- '配'
- FONTDATA_ITEM(291, 202, 202, fontpage_291_202_202), // '释' -- '释'
- FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
- FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
- FONTDATA_ITEM(297, 136, 136, fontpage_297_136_136), // '针' -- '针'
- FONTDATA_ITEM(297, 174, 174, fontpage_297_174_174), // '钮' -- '钮'
- FONTDATA_ITEM(298, 153, 153, fontpage_298_153_153), // '错' -- '错'
- FONTDATA_ITEM(298, 220, 220, fontpage_298_220_220), // '镜' -- '镜'
- FONTDATA_ITEM(298, 255, 255, fontpage_298_255_255), // '长' -- '长'
- FONTDATA_ITEM(299, 237, 237, fontpage_299_237_237), // '闭' -- '闭'
- FONTDATA_ITEM(299, 242, 242, fontpage_299_242_242), // '闲' -- '闲'
- FONTDATA_ITEM(299, 244, 244, fontpage_299_244_244), // '间' -- '间'
- FONTDATA_ITEM(300, 136, 136, fontpage_300_136_136), // '阈' -- '阈'
- FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
- FONTDATA_ITEM(300, 208, 208, fontpage_300_208_208), // '限' -- '限'
- FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
- FONTDATA_ITEM(300, 233, 233, fontpage_300_233_233), // '险' -- '险'
- FONTDATA_ITEM(301, 246, 246, fontpage_301_246_246), // '零' -- '零'
- FONTDATA_ITEM(302, 128, 128, fontpage_302_128_128), // '需' -- '需'
- FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
- FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
- FONTDATA_ITEM(302, 224, 224, fontpage_302_224_224), // '靠' -- '靠'
- FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
- FONTDATA_ITEM(304, 245, 245, fontpage_304_245_245), // '页' -- '页'
- FONTDATA_ITEM(304, 249, 249, fontpage_304_249_249), // '项' -- '项'
- FONTDATA_ITEM(305, 132, 132, fontpage_305_132_132), // '预' -- '预'
- FONTDATA_ITEM(305, 145, 145, fontpage_305_145_145), // '频' -- '频'
- FONTDATA_ITEM(305, 157, 157, fontpage_305_157_157), // '额' -- '额'
- FONTDATA_ITEM(305, 206, 206, fontpage_305_206_206), // '风' -- '风'
- FONTDATA_ITEM(306, 241, 241, fontpage_306_241_241), // '饱' -- '饱'
- FONTDATA_ITEM(308, 236, 236, fontpage_308_236_236), // '马' -- '马'
- FONTDATA_ITEM(308, 241, 241, fontpage_308_241_241), // '驱' -- '驱'
- FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
- FONTDATA_ITEM(317, 196, 196, fontpage_317_196_196), // '黄' -- '黄'
- FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
- FONTDATA_ITEM(318, 208, 208, fontpage_318_208_208), // '齐' -- '齐'
- FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
+static const uxg_fontinfo_t g_fontinfo_zh_CN[] PROGMEM = {
+ FONTDATA_ITEM(64, 157, 157, fontpage_64_157_157), // '”' -- '”'
+ FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
+ FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
+ FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
+ FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
+ FONTDATA_ITEM(156, 147, 147, fontpage_156_147_147), // '专' -- '专'
+ FONTDATA_ITEM(156, 157, 157, fontpage_156_157_157), // '丝' -- '丝'
+ FONTDATA_ITEM(156, 170, 170, fontpage_156_170_170), // '个' -- '个'
+ FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
+ FONTDATA_ITEM(156, 186, 187, fontpage_156_186_187), // '为' -- '主'
+ FONTDATA_ITEM(156, 201, 201, fontpage_156_201_201), // '义' -- '义'
+ FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
+ FONTDATA_ITEM(157, 134, 134, fontpage_157_134_134), // '了' -- '了'
+ FONTDATA_ITEM(157, 140, 140, fontpage_157_140_140), // '二' -- '二'
+ FONTDATA_ITEM(157, 142, 142, fontpage_157_142_142), // '于' -- '于'
+ FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
+ FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
+ FONTDATA_ITEM(157, 206, 206, fontpage_157_206_206), // '从' -- '从'
+ FONTDATA_ITEM(157, 228, 229, fontpage_157_228_229), // '令' -- '以'
+ FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
+ FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
+ FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
+ FONTDATA_ITEM(158, 160, 160, fontpage_158_160_160), // '传' -- '传'
+ FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
+ FONTDATA_ITEM(158, 211, 211, fontpage_158_211_211), // '体' -- '体'
+ FONTDATA_ITEM(158, 217, 217, fontpage_158_217_217), // '余' -- '余'
+ FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
+ FONTDATA_ITEM(158, 255, 255, fontpage_158_255_255), // '使' -- '使'
+ FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
+ FONTDATA_ITEM(159, 181, 181, fontpage_159_181_181), // '侵' -- '侵'
+ FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
+ FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
+ FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
+ FONTDATA_ITEM(160, 190, 190, fontpage_160_190_190), // '倾' -- '倾'
+ FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
+ FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
+ FONTDATA_ITEM(161, 168, 168, fontpage_161_168_168), // '储' -- '储'
+ FONTDATA_ITEM(161, 207, 207, fontpage_161_207_207), // '像' -- '像'
+ FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
+ FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
+ FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
+ FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
+ FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
+ FONTDATA_ITEM(162, 243, 243, fontpage_162_243_243), // '关' -- '关'
+ FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
+ FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
+ FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
+ FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
+ FONTDATA_ITEM(163, 250, 251, fontpage_163_250_251), // '出' -- '击'
+ FONTDATA_ITEM(164, 134, 135, fontpage_164_134_135), // '分' -- '切'
+ FONTDATA_ITEM(164, 155, 155, fontpage_164_155_155), // '创' -- '创'
+ FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
+ FONTDATA_ITEM(164, 171, 171, fontpage_164_171_171), // '别' -- '别'
+ FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
+ FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
+ FONTDATA_ITEM(164, 242, 242, fontpage_164_242_242), // '割' -- '割'
+ FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
+ FONTDATA_ITEM(165, 159, 160, fontpage_165_159_160), // '功' -- '加'
+ FONTDATA_ITEM(165, 168, 168, fontpage_165_168_168), // '动' -- '动'
+ FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
+ FONTDATA_ITEM(166, 199, 199, fontpage_166_199_199), // '升' -- '升'
+ FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
+ FONTDATA_ITEM(166, 207, 207, fontpage_166_207_207), // '协' -- '协'
+ FONTDATA_ITEM(166, 213, 213, fontpage_166_213_213), // '单' -- '单'
+ FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
+ FONTDATA_ITEM(166, 240, 241, fontpage_166_240_241), // '印' -- '危'
+ FONTDATA_ITEM(166, 244, 244, fontpage_166_244_244), // '却' -- '却'
+ FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
+ FONTDATA_ITEM(167, 139, 139, fontpage_167_139_139), // '压' -- '压'
+ FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
+ FONTDATA_ITEM(167, 204, 205, fontpage_167_204_205), // '双' -- '反'
+ FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
+ FONTDATA_ITEM(167, 216, 216, fontpage_167_216_216), // '变' -- '变'
+ FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
+ FONTDATA_ITEM(168, 131, 131, fontpage_168_131_131), // '吃' -- '吃'
+ FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
+ FONTDATA_ITEM(168, 141, 142, fontpage_168_141_142), // '名' -- '后'
+ FONTDATA_ITEM(168, 145, 145, fontpage_168_145_145), // '向' -- '向'
+ FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
+ FONTDATA_ITEM(168, 175, 175, fontpage_168_175_175), // '启' -- '启'
+ FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
+ FONTDATA_ITEM(168, 232, 232, fontpage_168_232_232), // '周' -- '周'
+ FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
+ FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
+ FONTDATA_ITEM(169, 205, 205, fontpage_169_205_205), // '响' -- '响'
+ FONTDATA_ITEM(171, 183, 183, fontpage_171_183_183), // '喷' -- '喷'
+ FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
+ FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
+ FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
+ FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
+ FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
+ FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
+ FONTDATA_ITEM(173, 254, 254, fontpage_173_254_254), // '图' -- '图'
+ FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
+ FONTDATA_ITEM(174, 207, 207, fontpage_174_207_207), // '坏' -- '坏'
+ FONTDATA_ITEM(174, 215, 215, fontpage_174_215_215), // '块' -- '块'
+ FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
+ FONTDATA_ITEM(175, 171, 171, fontpage_175_171_171), // '垫' -- '垫'
+ FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
+ FONTDATA_ITEM(177, 243, 243, fontpage_177_243_243), // '壳' -- '壳'
+ FONTDATA_ITEM(178, 135, 135, fontpage_178_135_135), // '备' -- '备'
+ FONTDATA_ITEM(178, 141, 141, fontpage_178_141_141), // '复' -- '复'
+ FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
+ FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
+ FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
+ FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
+ FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
+ FONTDATA_ITEM(178, 180, 180, fontpage_178_180_180), // '头' -- '头'
+ FONTDATA_ITEM(178, 253, 253, fontpage_178_253_253), // '好' -- '好'
+ FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
+ FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
+ FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
+ FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
+ FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
+ FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
+ FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
+ FONTDATA_ITEM(183, 171, 171, fontpage_183_171_171), // '宫' -- '宫'
+ FONTDATA_ITEM(183, 249, 249, fontpage_183_249_249), // '对' -- '对'
+ FONTDATA_ITEM(184, 134, 134, fontpage_184_134_134), // '将' -- '将'
+ FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
+ FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
+ FONTDATA_ITEM(184, 207, 207, fontpage_184_207_207), // '屏' -- '屏'
+ FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
+ FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
+ FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
+ FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
+ FONTDATA_ITEM(188, 246, 246, fontpage_188_246_246), // '并' -- '并'
+ FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
+ FONTDATA_ITEM(189, 148, 148, fontpage_189_148_148), // '应' -- '应'
+ FONTDATA_ITEM(189, 159, 159, fontpage_189_159_159), // '废' -- '废'
+ FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
+ FONTDATA_ITEM(190, 128, 128, fontpage_190_128_128), // '开' -- '开'
+ FONTDATA_ITEM(190, 131, 131, fontpage_190_131_131), // '弃' -- '弃'
+ FONTDATA_ITEM(190, 143, 143, fontpage_190_143_143), // '式' -- '式'
+ FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
+ FONTDATA_ITEM(190, 185, 185, fontpage_190_185_185), // '弹' -- '弹'
+ FONTDATA_ITEM(190, 210, 210, fontpage_190_210_210), // '归' -- '归'
+ FONTDATA_ITEM(191, 132, 133, fontpage_191_132_133), // '径' -- '待'
+ FONTDATA_ITEM(191, 170, 170, fontpage_191_170_170), // '循' -- '循'
+ FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
+ FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
+ FONTDATA_ITEM(191, 253, 253, fontpage_191_253_253), // '忽' -- '忽'
+ FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
+ FONTDATA_ITEM(192, 187, 187, fontpage_192_187_187), // '总' -- '总'
+ FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
+ FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
+ FONTDATA_ITEM(194, 159, 159, fontpage_194_159_159), // '感' -- '感'
+ FONTDATA_ITEM(196, 143, 144, fontpage_196_143_144), // '戏' -- '成'
+ FONTDATA_ITEM(196, 183, 183, fontpage_196_183_183), // '户' -- '户'
+ FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
+ FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
+ FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
+ FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
+ FONTDATA_ITEM(196, 231, 231, fontpage_196_231_231), // '执' -- '执'
+ FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
+ FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
+ FONTDATA_ITEM(197, 165, 165, fontpage_197_165_165), // '报' -- '报'
+ FONTDATA_ITEM(197, 172, 172, fontpage_197_172_172), // '抬' -- '抬'
+ FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
+ FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
+ FONTDATA_ITEM(197, 233, 233, fontpage_197_233_233), // '择' -- '择'
+ FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
+ FONTDATA_ITEM(198, 161, 161, fontpage_198_161_161), // '挡' -- '挡'
+ FONTDATA_ITEM(198, 164, 164, fontpage_198_164_164), // '挤' -- '挤'
+ FONTDATA_ITEM(198, 223, 223, fontpage_198_223_223), // '损' -- '损'
+ FONTDATA_ITEM(198, 226, 226, fontpage_198_226_226), // '换' -- '换'
+ FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
+ FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
+ FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
+ FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
+ FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
+ FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
+ FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
+ FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
+ FONTDATA_ITEM(202, 240, 240, fontpage_202_240_240), // '数' -- '数'
+ FONTDATA_ITEM(202, 242, 242, fontpage_202_242_242), // '敲' -- '敲'
+ FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
+ FONTDATA_ITEM(203, 135, 135, fontpage_203_135_135), // '文' -- '文'
+ FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
+ FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
+ FONTDATA_ITEM(203, 173, 173, fontpage_203_173_173), // '断' -- '断'
+ FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
+ FONTDATA_ITEM(203, 185, 185, fontpage_203_185_185), // '方' -- '方'
+ FONTDATA_ITEM(203, 224, 224, fontpage_203_224_224), // '无' -- '无'
+ FONTDATA_ITEM(203, 246, 246, fontpage_203_246_246), // '时' -- '时'
+ FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
+ FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
+ FONTDATA_ITEM(205, 130, 130, fontpage_205_130_130), // '暂' -- '暂'
+ FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
+ FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
+ FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
+ FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
+ FONTDATA_ITEM(206, 159, 159, fontpage_206_159_159), // '期' -- '期'
+ FONTDATA_ITEM(206, 186, 186, fontpage_206_186_186), // '机' -- '机'
+ FONTDATA_ITEM(206, 192, 192, fontpage_206_192_192), // '杀' -- '杀'
+ FONTDATA_ITEM(206, 223, 223, fontpage_206_223_223), // '束' -- '束'
+ FONTDATA_ITEM(206, 225, 225, fontpage_206_225_225), // '条' -- '条'
+ FONTDATA_ITEM(206, 229, 229, fontpage_206_229_229), // '来' -- '来'
+ FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
+ FONTDATA_ITEM(207, 151, 151, fontpage_207_151_151), // '林' -- '林'
+ FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
+ FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
+ FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
+ FONTDATA_ITEM(209, 175, 175, fontpage_209_175_175), // '梯' -- '梯'
+ FONTDATA_ITEM(209, 192, 192, fontpage_209_192_192), // '检' -- '检'
+ FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
+ FONTDATA_ITEM(212, 161, 161, fontpage_212_161_161), // '模' -- '模'
+ FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
+ FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
+ FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
+ FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
+ FONTDATA_ITEM(217, 161, 161, fontpage_217_161_161), // '没' -- '没'
+ FONTDATA_ITEM(217, 226, 226, fontpage_217_226_226), // '波' -- '波'
+ FONTDATA_ITEM(217, 232, 232, fontpage_217_232_232), // '注' -- '注'
+ FONTDATA_ITEM(218, 151, 151, fontpage_218_151_151), // '洗' -- '洗'
+ FONTDATA_ITEM(218, 187, 187, fontpage_218_187_187), // '活' -- '活'
+ FONTDATA_ITEM(218, 193, 193, fontpage_218_193_193), // '流' -- '流'
+ FONTDATA_ITEM(218, 203, 203, fontpage_218_203_203), // '测' -- '测'
+ FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
+ FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
+ FONTDATA_ITEM(219, 247, 247, fontpage_219_247_247), // '混' -- '混'
+ FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
+ FONTDATA_ITEM(220, 169, 169, fontpage_220_169_169), // '温' -- '温'
+ FONTDATA_ITEM(220, 184, 184, fontpage_220_184_184), // '游' -- '游'
+ FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
+ FONTDATA_ITEM(221, 162, 162, fontpage_221_162_162), // '溢' -- '溢'
+ FONTDATA_ITEM(221, 209, 209, fontpage_221_209_209), // '滑' -- '滑'
+ FONTDATA_ITEM(222, 143, 143, fontpage_222_143_143), // '漏' -- '漏'
+ FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
+ FONTDATA_ITEM(224, 239, 239, fontpage_224_239_239), // '灯' -- '灯'
+ FONTDATA_ITEM(225, 185, 185, fontpage_225_185_185), // '点' -- '点'
+ FONTDATA_ITEM(225, 237, 237, fontpage_225_237_237), // '热' -- '热'
+ FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
+ FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
+ FONTDATA_ITEM(228, 249, 249, fontpage_228_249_249), // '特' -- '特'
+ FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
+ FONTDATA_ITEM(231, 175, 175, fontpage_231_175_175), // '环' -- '环'
+ FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
+ FONTDATA_ITEM(234, 181, 181, fontpage_234_181_181), // '电' -- '电'
+ FONTDATA_ITEM(234, 229, 229, fontpage_234_229_229), // '略' -- '略'
+ FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
+ FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
+ FONTDATA_ITEM(237, 209, 209, fontpage_237_209_209), // '监' -- '监'
+ FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
+ FONTDATA_ITEM(238, 129, 129, fontpage_238_129_129), // '省' -- '省'
+ FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
+ FONTDATA_ITEM(240, 238, 238, fontpage_240_238_238), // '确' -- '确'
+ FONTDATA_ITEM(243, 187, 187, fontpage_243_187_187), // '离' -- '离'
+ FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
+ FONTDATA_ITEM(244, 250, 250, fontpage_244_250_250), // '空' -- '空'
+ FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
+ FONTDATA_ITEM(246, 172, 172, fontpage_246_172_172), // '第' -- '第'
+ FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
+ FONTDATA_ITEM(247, 128, 128, fontpage_247_128_128), // '简' -- '简'
+ FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
+ FONTDATA_ITEM(248, 251, 251, fontpage_248_251_251), // '类' -- '类'
+ FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
+ FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
+ FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
+ FONTDATA_ITEM(253, 167, 167, fontpage_253_167_167), // '级' -- '级'
+ FONTDATA_ITEM(253, 191, 191, fontpage_253_191_191), // '线' -- '线'
+ FONTDATA_ITEM(253, 198, 198, fontpage_253_198_198), // '细' -- '细'
+ FONTDATA_ITEM(253, 200, 200, fontpage_253_200_200), // '终' -- '终'
+ FONTDATA_ITEM(253, 211, 211, fontpage_253_211_211), // '结' -- '结'
+ FONTDATA_ITEM(253, 217, 217, fontpage_253_217_217), // '给' -- '给'
+ FONTDATA_ITEM(253, 223, 223, fontpage_253_223_223), // '统' -- '统'
+ FONTDATA_ITEM(253, 231, 231, fontpage_253_231_231), // '继' -- '继'
+ FONTDATA_ITEM(253, 234, 234, fontpage_253_234_234), // '绪' -- '绪'
+ FONTDATA_ITEM(253, 237, 237, fontpage_253_237_237), // '续' -- '续'
+ FONTDATA_ITEM(253, 255, 255, fontpage_253_255_255), // '绿' -- '绿'
+ FONTDATA_ITEM(254, 150, 150, fontpage_254_150_150), // '编' -- '编'
+ FONTDATA_ITEM(254, 186, 186, fontpage_254_186_186), // '缺' -- '缺'
+ FONTDATA_ITEM(254, 209, 209, fontpage_254_209_209), // '网' -- '网'
+ FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
+ FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
+ FONTDATA_ITEM(256, 133, 133, fontpage_256_133_133), // '者' -- '者'
+ FONTDATA_ITEM(256, 234, 234, fontpage_256_234_234), // '聪' -- '聪'
+ FONTDATA_ITEM(257, 253, 253, fontpage_257_253_253), // '能' -- '能'
+ FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
+ FONTDATA_ITEM(259, 243, 243, fontpage_259_243_243), // '至' -- '至'
+ FONTDATA_ITEM(263, 220, 220, fontpage_263_220_220), // '菜' -- '菜'
+ FONTDATA_ITEM(265, 221, 221, fontpage_265_221_221), // '蓝' -- '蓝'
+ FONTDATA_ITEM(269, 199, 199, fontpage_269_199_199), // '蛇' -- '蛇'
+ FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
+ FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
+ FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
+ FONTDATA_ITEM(275, 129, 129, fontpage_275_129_129), // '要' -- '要'
+ FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
+ FONTDATA_ITEM(279, 161, 161, fontpage_279_161_161), // '计' -- '计'
+ FONTDATA_ITEM(279, 174, 174, fontpage_279_174_174), // '议' -- '议'
+ FONTDATA_ITEM(279, 190, 190, fontpage_279_190_190), // '设' -- '设'
+ FONTDATA_ITEM(279, 213, 213, fontpage_279_213_213), // '试' -- '试'
+ FONTDATA_ITEM(279, 239, 239, fontpage_279_239_239), // '误' -- '误'
+ FONTDATA_ITEM(279, 247, 247, fontpage_279_247_247), // '请' -- '请'
+ FONTDATA_ITEM(279, 251, 251, fontpage_279_251_251), // '读' -- '读'
+ FONTDATA_ITEM(280, 131, 131, fontpage_280_131_131), // '调' -- '调'
+ FONTDATA_ITEM(282, 165, 165, fontpage_282_165_165), // '败' -- '败'
+ FONTDATA_ITEM(282, 170, 170, fontpage_282_170_170), // '贪' -- '贪'
+ FONTDATA_ITEM(282, 247, 247, fontpage_282_247_247), // '起' -- '起'
+ FONTDATA_ITEM(283, 133, 133, fontpage_283_133_133), // '超' -- '超'
+ FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
+ FONTDATA_ITEM(286, 236, 236, fontpage_286_236_236), // '转' -- '转'
+ FONTDATA_ITEM(286, 239, 239, fontpage_286_239_239), // '软' -- '软'
+ FONTDATA_ITEM(286, 244, 244, fontpage_286_244_244), // '轴' -- '轴'
+ FONTDATA_ITEM(286, 253, 253, fontpage_286_253_253), // '载' -- '载'
+ FONTDATA_ITEM(287, 145, 145, fontpage_287_145_145), // '辑' -- '辑'
+ FONTDATA_ITEM(287, 147, 147, fontpage_287_147_147), // '输' -- '输'
+ FONTDATA_ITEM(287, 185, 185, fontpage_287_185_185), // '边' -- '边'
+ FONTDATA_ITEM(287, 193, 193, fontpage_287_193_193), // '迁' -- '迁'
+ FONTDATA_ITEM(287, 208, 209, fontpage_287_208_209), // '运' -- '近'
+ FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
+ FONTDATA_ITEM(287, 216, 216, fontpage_287_216_216), // '还' -- '还'
+ FONTDATA_ITEM(287, 219, 219, fontpage_287_219_219), // '进' -- '进'
+ FONTDATA_ITEM(287, 222, 222, fontpage_287_222_222), // '连' -- '连'
+ FONTDATA_ITEM(287, 247, 247, fontpage_287_247_247), // '迷' -- '迷'
+ FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
+ FONTDATA_ITEM(288, 137, 137, fontpage_288_137_137), // '选' -- '选'
+ FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
+ FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
+ FONTDATA_ITEM(290, 205, 205, fontpage_290_205_205), // '配' -- '配'
+ FONTDATA_ITEM(291, 202, 202, fontpage_291_202_202), // '释' -- '释'
+ FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
+ FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
+ FONTDATA_ITEM(297, 136, 136, fontpage_297_136_136), // '针' -- '针'
+ FONTDATA_ITEM(297, 174, 174, fontpage_297_174_174), // '钮' -- '钮'
+ FONTDATA_ITEM(298, 153, 153, fontpage_298_153_153), // '错' -- '错'
+ FONTDATA_ITEM(298, 220, 220, fontpage_298_220_220), // '镜' -- '镜'
+ FONTDATA_ITEM(298, 255, 255, fontpage_298_255_255), // '长' -- '长'
+ FONTDATA_ITEM(299, 237, 237, fontpage_299_237_237), // '闭' -- '闭'
+ FONTDATA_ITEM(299, 242, 242, fontpage_299_242_242), // '闲' -- '闲'
+ FONTDATA_ITEM(299, 244, 244, fontpage_299_244_244), // '间' -- '间'
+ FONTDATA_ITEM(300, 136, 136, fontpage_300_136_136), // '阈' -- '阈'
+ FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
+ FONTDATA_ITEM(300, 208, 208, fontpage_300_208_208), // '限' -- '限'
+ FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
+ FONTDATA_ITEM(300, 233, 233, fontpage_300_233_233), // '险' -- '险'
+ FONTDATA_ITEM(301, 246, 246, fontpage_301_246_246), // '零' -- '零'
+ FONTDATA_ITEM(302, 128, 128, fontpage_302_128_128), // '需' -- '需'
+ FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
+ FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
+ FONTDATA_ITEM(302, 224, 224, fontpage_302_224_224), // '靠' -- '靠'
+ FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
+ FONTDATA_ITEM(304, 245, 245, fontpage_304_245_245), // '页' -- '页'
+ FONTDATA_ITEM(304, 249, 249, fontpage_304_249_249), // '项' -- '项'
+ FONTDATA_ITEM(305, 132, 132, fontpage_305_132_132), // '预' -- '预'
+ FONTDATA_ITEM(305, 145, 145, fontpage_305_145_145), // '频' -- '频'
+ FONTDATA_ITEM(305, 157, 157, fontpage_305_157_157), // '额' -- '额'
+ FONTDATA_ITEM(305, 206, 206, fontpage_305_206_206), // '风' -- '风'
+ FONTDATA_ITEM(306, 241, 241, fontpage_306_241_241), // '饱' -- '饱'
+ FONTDATA_ITEM(308, 236, 236, fontpage_308_236_236), // '马' -- '马'
+ FONTDATA_ITEM(308, 241, 241, fontpage_308_241_241), // '驱' -- '驱'
+ FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
+ FONTDATA_ITEM(317, 196, 196, fontpage_317_196_196), // '黄' -- '黄'
+ FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
+ FONTDATA_ITEM(318, 208, 208, fontpage_318_208_208), // '齐' -- '齐'
+ FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
};
diff --git a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
index 51344936be..093629cd16 100644
--- a/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
+++ b/Marlin/src/lcd/dogm/fontdata/langdata_zh_TW.h
@@ -3,7 +3,9 @@
* Contents will be REPLACED by future processing!
* Use genallfont.sh to generate font data for updated languages.
*/
-#include
+#pragma once
+
+#include "langdata.h"
const u8g_fntpgm_uint8_t fontpage_69_191_191[28] U8G_FONT_SECTION("fontpage_69_191_191") = {
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0xBF,0xBF,0x00,0x05,0x00,0x00,
@@ -1217,305 +1219,304 @@ const u8g_fntpgm_uint8_t fontpage_510_154_154[30] U8G_FONT_SECTION("fontpage_510
0x00,0x0C,0x0F,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x9A,0x9A,0x00,0x08,0x00,0x00,
0x00,0x02,0x07,0x07,0x0C,0x06,0x01,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0};
-#define FONTDATA_ITEM(page, begin, end, data) { page, begin, end, COUNT(data), data }
-static const uxg_fontinfo_t g_fontinfo[] PROGMEM = {
- FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
- FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
- FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
- FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
- FONTDATA_ITEM(156, 166, 166, fontpage_156_166_166), // '並' -- '並'
- FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
- FONTDATA_ITEM(156, 187, 187, fontpage_156_187_187), // '主' -- '主'
- FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
- FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
- FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
- FONTDATA_ITEM(157, 228, 228, fontpage_157_228_228), // '令' -- '令'
- FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
- FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
- FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
- FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
- FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
- FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
- FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
- FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
- FONTDATA_ITEM(160, 139, 139, fontpage_160_139_139), // '個' -- '個'
- FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
- FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
- FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
- FONTDATA_ITEM(160, 245, 245, fontpage_160_245_245), // '偵' -- '偵'
- FONTDATA_ITEM(161, 153, 153, fontpage_161_153_153), // '備' -- '備'
- FONTDATA_ITEM(161, 179, 179, fontpage_161_179_179), // '傳' -- '傳'
- FONTDATA_ITEM(161, 190, 190, fontpage_161_190_190), // '傾' -- '傾'
- FONTDATA_ITEM(162, 178, 178, fontpage_162_178_178), // '儲' -- '儲'
- FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
- FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
- FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
- FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
- FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
- FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
- FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
- FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
- FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
- FONTDATA_ITEM(163, 250, 250, fontpage_163_250_250), // '出' -- '出'
- FONTDATA_ITEM(164, 134, 134, fontpage_164_134_134), // '分' -- '分'
- FONTDATA_ITEM(164, 151, 151, fontpage_164_151_151), // '列' -- '列'
- FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
- FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
- FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
- FONTDATA_ITEM(164, 245, 245, fontpage_164_245_245), // '創' -- '創'
- FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
- FONTDATA_ITEM(165, 160, 160, fontpage_165_160_160), // '加' -- '加'
- FONTDATA_ITEM(165, 213, 213, fontpage_165_213_213), // '動' -- '動'
- FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
- FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
- FONTDATA_ITEM(166, 212, 212, fontpage_166_212_212), // '協' -- '協'
- FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
- FONTDATA_ITEM(166, 240, 240, fontpage_166_240_240), // '印' -- '印'
- FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
- FONTDATA_ITEM(166, 251, 251, fontpage_166_251_251), // '卻' -- '卻'
- FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
- FONTDATA_ITEM(167, 205, 205, fontpage_167_205_205), // '反' -- '反'
- FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
- FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
- FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
- FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
- FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
- FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
- FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
- FONTDATA_ITEM(170, 223, 223, fontpage_170_223_223), // '啟' -- '啟'
- FONTDATA_ITEM(171, 174, 174, fontpage_171_174_174), // '單' -- '單'
- FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
- FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
- FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
- FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
- FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
- FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
- FONTDATA_ITEM(174, 150, 150, fontpage_174_150_150), // '圖' -- '圖'
- FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
- FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
- FONTDATA_ITEM(175, 247, 247, fontpage_175_247_247), // '執' -- '執'
- FONTDATA_ITEM(176, 202, 202, fontpage_176_202_202), // '塊' -- '塊'
- FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
- FONTDATA_ITEM(177, 138, 138, fontpage_177_138_138), // '墊' -- '墊'
- FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
- FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
- FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // '夠' -- '夠'
- FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
- FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
- FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
- FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
- FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // '媒' -- '媒'
- FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
- FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
- FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
- FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
- FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
- FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
- FONTDATA_ITEM(183, 185, 185, fontpage_183_185_185), // '容' -- '容'
- FONTDATA_ITEM(184, 141, 141, fontpage_184_141_141), // '對' -- '對'
- FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
- FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
- FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
- FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
- FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
- FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
- FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
- FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
- FONTDATA_ITEM(189, 226, 226, fontpage_189_226_226), // '廢' -- '廢'
- FONTDATA_ITEM(189, 250, 250, fontpage_189_250_250), // '建' -- '建'
- FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
- FONTDATA_ITEM(191, 133, 133, fontpage_191_133_133), // '待' -- '待'
- FONTDATA_ITEM(191, 140, 140, fontpage_191_140_140), // '後' -- '後'
- FONTDATA_ITEM(191, 145, 145, fontpage_191_145_145), // '徑' -- '徑'
- FONTDATA_ITEM(191, 158, 158, fontpage_191_158_158), // '從' -- '從'
- FONTDATA_ITEM(191, 169, 169, fontpage_191_169_169), // '復' -- '復'
- FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
- FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
- FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
- FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
- FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
- FONTDATA_ITEM(195, 182, 182, fontpage_195_182_182), // '憶' -- '憶'
- FONTDATA_ITEM(195, 201, 201, fontpage_195_201_201), // '應' -- '應'
- FONTDATA_ITEM(196, 144, 144, fontpage_196_144_144), // '成' -- '成'
- FONTDATA_ITEM(196, 182, 182, fontpage_196_182_182), // '戶' -- '戶'
- FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
- FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
- FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
- FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
- FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
- FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
- FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
- FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
- FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
- FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
- FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
- FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
- FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
- FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
- FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
- FONTDATA_ITEM(199, 219, 219, fontpage_199_219_219), // '換' -- '換'
- FONTDATA_ITEM(201, 199, 199, fontpage_201_199_199), // '擇' -- '擇'
- FONTDATA_ITEM(201, 202, 203, fontpage_201_202_203), // '擊' -- '擋'
- FONTDATA_ITEM(201, 224, 224, fontpage_201_224_224), // '擠' -- '擠'
- FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
- FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
- FONTDATA_ITEM(202, 215, 215, fontpage_202_215_215), // '敗' -- '敗'
- FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
- FONTDATA_ITEM(202, 248, 248, fontpage_202_248_248), // '數' -- '數'
- FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
- FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
- FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
- FONTDATA_ITEM(203, 183, 183, fontpage_203_183_183), // '斷' -- '斷'
- FONTDATA_ITEM(203, 188, 188, fontpage_203_188_188), // '於' -- '於'
- FONTDATA_ITEM(204, 135, 135, fontpage_204_135_135), // '昇' -- '昇'
- FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
- FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
- FONTDATA_ITEM(204, 194, 194, fontpage_204_194_194), // '時' -- '時'
- FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
- FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
- FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
- FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
- FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
- FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
- FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
- FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
- FONTDATA_ITEM(209, 157, 157, fontpage_209_157_157), // '條' -- '條'
- FONTDATA_ITEM(209, 196, 196, fontpage_209_196_196), // '棄' -- '棄'
- FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
- FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
- FONTDATA_ITEM(212, 223, 223, fontpage_212_223_223), // '機' -- '機'
- FONTDATA_ITEM(213, 162, 162, fontpage_213_162_162), // '檢' -- '檢'
- FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
- FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
- FONTDATA_ITEM(214, 248, 248, fontpage_214_248_248), // '歸' -- '歸'
- FONTDATA_ITEM(215, 188, 188, fontpage_215_188_188), // '殼' -- '殼'
- FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
- FONTDATA_ITEM(217, 146, 146, fontpage_217_146_146), // '沒' -- '沒'
- FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
- FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
- FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
- FONTDATA_ITEM(220, 172, 172, fontpage_220_172_172), // '測' -- '測'
- FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
- FONTDATA_ITEM(221, 150, 150, fontpage_221_150_150), // '準' -- '準'
- FONTDATA_ITEM(221, 171, 171, fontpage_221_171_171), // '溫' -- '溫'
- FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
- FONTDATA_ITEM(226, 161, 161, fontpage_226_161_161), // '無' -- '無'
- FONTDATA_ITEM(227, 177, 177, fontpage_227_177_177), // '熱' -- '熱'
- FONTDATA_ITEM(227, 200, 200, fontpage_227_200_200), // '燈' -- '燈'
- FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
- FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
- FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
- FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
- FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // '界' -- '界'
- FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
- FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
- FONTDATA_ITEM(237, 227, 227, fontpage_237_227_227), // '監' -- '監'
- FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
- FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
- FONTDATA_ITEM(240, 141, 141, fontpage_240_141_141), // '砍' -- '砍'
- FONTDATA_ITEM(241, 186, 186, fontpage_241_186_186), // '確' -- '確'
- FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
- FONTDATA_ITEM(244, 205, 205, fontpage_244_205_205), // '積' -- '積'
- FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
- FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
- FONTDATA_ITEM(247, 161, 161, fontpage_247_161_161), // '管' -- '管'
- FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
- FONTDATA_ITEM(249, 251, 251, fontpage_249_251_251), // '系' -- '系'
- FONTDATA_ITEM(250, 133, 133, fontpage_250_133_133), // '紅' -- '紅'
- FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
- FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
- FONTDATA_ITEM(250, 176, 176, fontpage_250_176_176), // '細' -- '細'
- FONTDATA_ITEM(250, 194, 194, fontpage_250_194_194), // '終' -- '終'
- FONTDATA_ITEM(250, 241, 242, fontpage_250_241_242), // '統' -- '絲'
- FONTDATA_ITEM(251, 160, 160, fontpage_251_160_160), // '綠' -- '綠'
- FONTDATA_ITEM(251, 178, 178, fontpage_251_178_178), // '網' -- '網'
- FONTDATA_ITEM(251, 210, 210, fontpage_251_210_210), // '緒' -- '緒'
- FONTDATA_ITEM(251, 218, 218, fontpage_251_218_218), // '線' -- '線'
- FONTDATA_ITEM(251, 232, 232, fontpage_251_232_232), // '編' -- '編'
- FONTDATA_ITEM(252, 174, 174, fontpage_252_174_174), // '縮' -- '縮'
- FONTDATA_ITEM(252, 189, 189, fontpage_252_189_189), // '總' -- '總'
- FONTDATA_ITEM(252, 252, 252, fontpage_252_252_252), // '繼' -- '繼'
- FONTDATA_ITEM(253, 140, 140, fontpage_253_140_140), // '續' -- '續'
- FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
- FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
- FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
- FONTDATA_ITEM(256, 240, 240, fontpage_256_240_240), // '聰' -- '聰'
- FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
- FONTDATA_ITEM(267, 205, 205, fontpage_267_205_205), // '藍' -- '藍'
- FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
- FONTDATA_ITEM(272, 232, 232, fontpage_272_232_232), // '表' -- '表'
- FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
- FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
- FONTDATA_ITEM(273, 221, 221, fontpage_273_221_221), // '裝' -- '裝'
- FONTDATA_ITEM(274, 135, 135, fontpage_274_135_135), // '複' -- '複'
- FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
- FONTDATA_ITEM(276, 136, 136, fontpage_276_136_136), // '計' -- '計'
- FONTDATA_ITEM(276, 138, 138, fontpage_276_138_138), // '訊' -- '訊'
- FONTDATA_ITEM(276, 152, 152, fontpage_276_152_152), // '記' -- '記'
- FONTDATA_ITEM(276, 173, 173, fontpage_276_173_173), // '設' -- '設'
- FONTDATA_ITEM(276, 230, 230, fontpage_276_230_230), // '試' -- '試'
- FONTDATA_ITEM(277, 141, 141, fontpage_277_141_141), // '認' -- '認'
- FONTDATA_ITEM(277, 164, 164, fontpage_277_164_164), // '誤' -- '誤'
- FONTDATA_ITEM(277, 191, 191, fontpage_277_191_191), // '調' -- '調'
- FONTDATA_ITEM(277, 203, 203, fontpage_277_203_203), // '請' -- '請'
- FONTDATA_ITEM(278, 240, 240, fontpage_278_240_240), // '議' -- '議'
- FONTDATA_ITEM(279, 128, 128, fontpage_279_128_128), // '讀' -- '讀'
- FONTDATA_ITEM(279, 138, 138, fontpage_279_138_138), // '變' -- '變'
- FONTDATA_ITEM(281, 199, 199, fontpage_281_199_199), // '資' -- '資'
- FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
- FONTDATA_ITEM(285, 202, 202, fontpage_285_202_202), // '車' -- '車'
- FONTDATA_ITEM(285, 223, 223, fontpage_285_223_223), // '軟' -- '軟'
- FONTDATA_ITEM(285, 248, 248, fontpage_285_248_248), // '軸' -- '軸'
- FONTDATA_ITEM(286, 137, 137, fontpage_286_137_137), // '載' -- '載'
- FONTDATA_ITEM(286, 175, 175, fontpage_286_175_175), // '輯' -- '輯'
- FONTDATA_ITEM(286, 184, 184, fontpage_286_184_184), // '輸' -- '輸'
- FONTDATA_ITEM(286, 201, 201, fontpage_286_201_201), // '轉' -- '轉'
- FONTDATA_ITEM(287, 209, 209, fontpage_287_209_209), // '近' -- '近'
- FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
- FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
- FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
- FONTDATA_ITEM(288, 163, 163, fontpage_288_163_163), // '連' -- '連'
- FONTDATA_ITEM(288, 178, 178, fontpage_288_178_178), // '進' -- '進'
- FONTDATA_ITEM(288, 203, 203, fontpage_288_203_203), // '運' -- '運'
- FONTDATA_ITEM(288, 212, 212, fontpage_288_212_212), // '達' -- '達'
- FONTDATA_ITEM(288, 248, 248, fontpage_288_248_248), // '選' -- '選'
- FONTDATA_ITEM(289, 132, 132, fontpage_289_132_132), // '還' -- '還'
- FONTDATA_ITEM(289, 138, 138, fontpage_289_138_138), // '邊' -- '邊'
- FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
- FONTDATA_ITEM(291, 203, 203, fontpage_291_203_203), // '釋' -- '釋'
- FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
- FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
- FONTDATA_ITEM(291, 221, 221, fontpage_291_221_221), // '針' -- '針'
- FONTDATA_ITEM(292, 149, 149, fontpage_292_149_149), // '鈕' -- '鈕'
- FONTDATA_ITEM(294, 175, 175, fontpage_294_175_175), // '錯' -- '錯'
- FONTDATA_ITEM(294, 245, 245, fontpage_294_245_245), // '鍵' -- '鍵'
- FONTDATA_ITEM(298, 247, 247, fontpage_298_247_247), // '長' -- '長'
- FONTDATA_ITEM(299, 137, 137, fontpage_299_137_137), // '閉' -- '閉'
- FONTDATA_ITEM(299, 139, 139, fontpage_299_139_139), // '開' -- '開'
- FONTDATA_ITEM(299, 147, 147, fontpage_299_147_147), // '間' -- '間'
- FONTDATA_ITEM(299, 220, 220, fontpage_299_220_220), // '關' -- '關'
- FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
- FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
- FONTDATA_ITEM(301, 142, 142, fontpage_301_142_142), // '階' -- '階'
- FONTDATA_ITEM(301, 217, 217, fontpage_301_217_217), // '雙' -- '雙'
- FONTDATA_ITEM(301, 226, 226, fontpage_301_226_226), // '離' -- '離'
- FONTDATA_ITEM(301, 251, 251, fontpage_301_251_251), // '電' -- '電'
- FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
- FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
- FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
- FONTDATA_ITEM(304, 133, 133, fontpage_304_133_133), // '項' -- '項'
- FONTDATA_ITEM(304, 144, 144, fontpage_304_144_144), // '預' -- '預'
- FONTDATA_ITEM(304, 205, 205, fontpage_304_205_205), // '額' -- '額'
- FONTDATA_ITEM(304, 222, 222, fontpage_304_222_222), // '類' -- '類'
- FONTDATA_ITEM(305, 168, 168, fontpage_305_168_168), // '風' -- '風'
- FONTDATA_ITEM(305, 253, 253, fontpage_305_253_253), // '飽' -- '飽'
- FONTDATA_ITEM(306, 152, 152, fontpage_306_152_152), // '餘' -- '餘'
- FONTDATA_ITEM(307, 172, 172, fontpage_307_172_172), // '馬' -- '馬'
- FONTDATA_ITEM(308, 197, 197, fontpage_308_197_197), // '驅' -- '驅'
- FONTDATA_ITEM(309, 212, 212, fontpage_309_212_212), // '體' -- '體'
- FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
- FONTDATA_ITEM(317, 195, 195, fontpage_317_195_195), // '黃' -- '黃'
- FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
- FONTDATA_ITEM(318, 202, 202, fontpage_318_202_202), // '齊' -- '齊'
- FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
+static const uxg_fontinfo_t g_fontinfo_zh_TW[] PROGMEM = {
+ FONTDATA_ITEM(69, 191, 191, fontpage_69_191_191), // '⊿' -- '⊿'
+ FONTDATA_ITEM(156, 128, 128, fontpage_156_128_128), // '一' -- '一'
+ FONTDATA_ITEM(156, 137, 139, fontpage_156_137_139), // '三' -- '下'
+ FONTDATA_ITEM(156, 141, 141, fontpage_156_141_141), // '不' -- '不'
+ FONTDATA_ITEM(156, 166, 166, fontpage_156_166_166), // '並' -- '並'
+ FONTDATA_ITEM(156, 173, 173, fontpage_156_173_173), // '中' -- '中'
+ FONTDATA_ITEM(156, 187, 187, fontpage_156_187_187), // '主' -- '主'
+ FONTDATA_ITEM(156, 203, 203, fontpage_156_203_203), // '之' -- '之'
+ FONTDATA_ITEM(157, 164, 164, fontpage_157_164_164), // '交' -- '交'
+ FONTDATA_ITEM(157, 174, 174, fontpage_157_174_174), // '亮' -- '亮'
+ FONTDATA_ITEM(157, 228, 228, fontpage_157_228_228), // '令' -- '令'
+ FONTDATA_ITEM(157, 246, 246, fontpage_157_246_246), // '件' -- '件'
+ FONTDATA_ITEM(157, 253, 253, fontpage_157_253_253), // '份' -- '份'
+ FONTDATA_ITEM(158, 145, 145, fontpage_158_145_145), // '休' -- '休'
+ FONTDATA_ITEM(158, 205, 206, fontpage_158_205_206), // '位' -- '低'
+ FONTDATA_ITEM(158, 220, 220, fontpage_158_220_220), // '作' -- '作'
+ FONTDATA_ITEM(159, 155, 155, fontpage_159_155_155), // '供' -- '供'
+ FONTDATA_ITEM(159, 221, 221, fontpage_159_221_221), // '保' -- '保'
+ FONTDATA_ITEM(159, 225, 225, fontpage_159_225_225), // '信' -- '信'
+ FONTDATA_ITEM(160, 139, 139, fontpage_160_139_139), // '個' -- '個'
+ FONTDATA_ITEM(160, 188, 188, fontpage_160_188_188), // '值' -- '值'
+ FONTDATA_ITEM(160, 207, 207, fontpage_160_207_207), // '偏' -- '偏'
+ FONTDATA_ITEM(160, 220, 220, fontpage_160_220_220), // '停' -- '停'
+ FONTDATA_ITEM(160, 245, 245, fontpage_160_245_245), // '偵' -- '偵'
+ FONTDATA_ITEM(161, 153, 153, fontpage_161_153_153), // '備' -- '備'
+ FONTDATA_ITEM(161, 179, 179, fontpage_161_179_179), // '傳' -- '傳'
+ FONTDATA_ITEM(161, 190, 190, fontpage_161_190_190), // '傾' -- '傾'
+ FONTDATA_ITEM(162, 178, 178, fontpage_162_178_178), // '儲' -- '儲'
+ FONTDATA_ITEM(162, 197, 197, fontpage_162_197_197), // '充' -- '充'
+ FONTDATA_ITEM(162, 200, 201, fontpage_162_200_201), // '先' -- '光'
+ FONTDATA_ITEM(162, 229, 229, fontpage_162_229_229), // '入' -- '入'
+ FONTDATA_ITEM(162, 232, 232, fontpage_162_232_232), // '全' -- '全'
+ FONTDATA_ITEM(162, 241, 241, fontpage_162_241_241), // '共' -- '共'
+ FONTDATA_ITEM(162, 247, 247, fontpage_162_247_247), // '具' -- '具'
+ FONTDATA_ITEM(163, 151, 151, fontpage_163_151_151), // '冗' -- '冗'
+ FONTDATA_ITEM(163, 183, 183, fontpage_163_183_183), // '冷' -- '冷'
+ FONTDATA_ITEM(163, 198, 198, fontpage_163_198_198), // '准' -- '准'
+ FONTDATA_ITEM(163, 250, 250, fontpage_163_250_250), // '出' -- '出'
+ FONTDATA_ITEM(164, 134, 134, fontpage_164_134_134), // '分' -- '分'
+ FONTDATA_ITEM(164, 151, 151, fontpage_164_151_151), // '列' -- '列'
+ FONTDATA_ITEM(164, 157, 157, fontpage_164_157_157), // '初' -- '初'
+ FONTDATA_ITEM(164, 176, 176, fontpage_164_176_176), // '到' -- '到'
+ FONTDATA_ITEM(164, 182, 183, fontpage_164_182_183), // '制' -- '刷'
+ FONTDATA_ITEM(164, 245, 245, fontpage_164_245_245), // '創' -- '創'
+ FONTDATA_ITEM(165, 155, 155, fontpage_165_155_155), // '力' -- '力'
+ FONTDATA_ITEM(165, 160, 160, fontpage_165_160_160), // '加' -- '加'
+ FONTDATA_ITEM(165, 213, 213, fontpage_165_213_213), // '動' -- '動'
+ FONTDATA_ITEM(166, 150, 150, fontpage_166_150_150), // '化' -- '化'
+ FONTDATA_ITEM(166, 202, 202, fontpage_166_202_202), // '半' -- '半'
+ FONTDATA_ITEM(166, 212, 212, fontpage_166_212_212), // '協' -- '協'
+ FONTDATA_ITEM(166, 225, 225, fontpage_166_225_225), // '卡' -- '卡'
+ FONTDATA_ITEM(166, 240, 240, fontpage_166_240_240), // '印' -- '印'
+ FONTDATA_ITEM(166, 248, 248, fontpage_166_248_248), // '卸' -- '卸'
+ FONTDATA_ITEM(166, 251, 251, fontpage_166_251_251), // '卻' -- '卻'
+ FONTDATA_ITEM(167, 159, 159, fontpage_167_159_159), // '原' -- '原'
+ FONTDATA_ITEM(167, 205, 205, fontpage_167_205_205), // '反' -- '反'
+ FONTDATA_ITEM(167, 214, 214, fontpage_167_214_214), // '取' -- '取'
+ FONTDATA_ITEM(167, 240, 240, fontpage_167_240_240), // '台' -- '台'
+ FONTDATA_ITEM(168, 136, 136, fontpage_168_136_136), // '合' -- '合'
+ FONTDATA_ITEM(168, 166, 166, fontpage_168_166_166), // '否' -- '否'
+ FONTDATA_ITEM(168, 202, 202, fontpage_168_202_202), // '告' -- '告'
+ FONTDATA_ITEM(168, 253, 253, fontpage_168_253_253), // '命' -- '命'
+ FONTDATA_ITEM(169, 140, 140, fontpage_169_140_140), // '和' -- '和'
+ FONTDATA_ITEM(170, 223, 223, fontpage_170_223_223), // '啟' -- '啟'
+ FONTDATA_ITEM(171, 174, 174, fontpage_171_174_174), // '單' -- '單'
+ FONTDATA_ITEM(172, 180, 180, fontpage_172_180_180), // '嘴' -- '嘴'
+ FONTDATA_ITEM(172, 232, 232, fontpage_172_232_232), // '器' -- '器'
+ FONTDATA_ITEM(172, 244, 244, fontpage_172_244_244), // '噴' -- '噴'
+ FONTDATA_ITEM(173, 222, 222, fontpage_173_222_222), // '回' -- '回'
+ FONTDATA_ITEM(173, 224, 224, fontpage_173_224_224), // '因' -- '因'
+ FONTDATA_ITEM(173, 250, 250, fontpage_173_250_250), // '固' -- '固'
+ FONTDATA_ITEM(174, 150, 150, fontpage_174_150_150), // '圖' -- '圖'
+ FONTDATA_ITEM(174, 168, 168, fontpage_174_168_168), // '在' -- '在'
+ FONTDATA_ITEM(175, 139, 139, fontpage_175_139_139), // '型' -- '型'
+ FONTDATA_ITEM(175, 247, 247, fontpage_175_247_247), // '執' -- '執'
+ FONTDATA_ITEM(176, 202, 202, fontpage_176_202_202), // '塊' -- '塊'
+ FONTDATA_ITEM(176, 235, 235, fontpage_176_235_235), // '填' -- '填'
+ FONTDATA_ITEM(177, 138, 138, fontpage_177_138_138), // '墊' -- '墊'
+ FONTDATA_ITEM(178, 150, 150, fontpage_178_150_150), // '外' -- '外'
+ FONTDATA_ITEM(178, 154, 154, fontpage_178_154_154), // '多' -- '多'
+ FONTDATA_ITEM(178, 160, 160, fontpage_178_160_160), // '夠' -- '夠'
+ FONTDATA_ITEM(178, 167, 167, fontpage_178_167_167), // '大' -- '大'
+ FONTDATA_ITEM(178, 169, 170, fontpage_178_169_170), // '天' -- '太'
+ FONTDATA_ITEM(178, 177, 177, fontpage_178_177_177), // '失' -- '失'
+ FONTDATA_ITEM(179, 203, 203, fontpage_179_203_203), // '始' -- '始'
+ FONTDATA_ITEM(181, 146, 146, fontpage_181_146_146), // '媒' -- '媒'
+ FONTDATA_ITEM(182, 208, 208, fontpage_182_208_208), // '子' -- '子'
+ FONTDATA_ITEM(182, 216, 216, fontpage_182_216_216), // '存' -- '存'
+ FONTDATA_ITEM(183, 137, 137, fontpage_183_137_137), // '安' -- '安'
+ FONTDATA_ITEM(183, 140, 140, fontpage_183_140_140), // '完' -- '完'
+ FONTDATA_ITEM(183, 154, 154, fontpage_183_154_154), // '定' -- '定'
+ FONTDATA_ITEM(183, 162, 162, fontpage_183_162_162), // '客' -- '客'
+ FONTDATA_ITEM(183, 185, 185, fontpage_183_185_185), // '容' -- '容'
+ FONTDATA_ITEM(184, 141, 141, fontpage_184_141_141), // '對' -- '對'
+ FONTDATA_ITEM(184, 143, 143, fontpage_184_143_143), // '小' -- '小'
+ FONTDATA_ITEM(184, 177, 177, fontpage_184_177_177), // '就' -- '就'
+ FONTDATA_ITEM(187, 229, 229, fontpage_187_229_229), // '工' -- '工'
+ FONTDATA_ITEM(187, 238, 238, fontpage_187_238_238), // '差' -- '差'
+ FONTDATA_ITEM(187, 242, 242, fontpage_187_242_242), // '已' -- '已'
+ FONTDATA_ITEM(188, 243, 243, fontpage_188_243_243), // '平' -- '平'
+ FONTDATA_ITEM(189, 138, 138, fontpage_189_138_138), // '床' -- '床'
+ FONTDATA_ITEM(189, 166, 166, fontpage_189_166_166), // '度' -- '度'
+ FONTDATA_ITEM(189, 226, 226, fontpage_189_226_226), // '廢' -- '廢'
+ FONTDATA_ITEM(189, 250, 250, fontpage_189_250_250), // '建' -- '建'
+ FONTDATA_ITEM(190, 149, 149, fontpage_190_149_149), // '引' -- '引'
+ FONTDATA_ITEM(191, 133, 133, fontpage_191_133_133), // '待' -- '待'
+ FONTDATA_ITEM(191, 140, 140, fontpage_191_140_140), // '後' -- '後'
+ FONTDATA_ITEM(191, 145, 145, fontpage_191_145_145), // '徑' -- '徑'
+ FONTDATA_ITEM(191, 158, 158, fontpage_191_158_158), // '從' -- '從'
+ FONTDATA_ITEM(191, 169, 169, fontpage_191_169_169), // '復' -- '復'
+ FONTDATA_ITEM(191, 174, 174, fontpage_191_174_174), // '微' -- '微'
+ FONTDATA_ITEM(191, 195, 195, fontpage_191_195_195), // '心' -- '心'
+ FONTDATA_ITEM(192, 167, 167, fontpage_192_167_167), // '性' -- '性'
+ FONTDATA_ITEM(192, 226, 226, fontpage_192_226_226), // '恢' -- '恢'
+ FONTDATA_ITEM(192, 239, 239, fontpage_192_239_239), // '息' -- '息'
+ FONTDATA_ITEM(195, 182, 182, fontpage_195_182_182), // '憶' -- '憶'
+ FONTDATA_ITEM(195, 201, 201, fontpage_195_201_201), // '應' -- '應'
+ FONTDATA_ITEM(196, 144, 144, fontpage_196_144_144), // '成' -- '成'
+ FONTDATA_ITEM(196, 182, 182, fontpage_196_182_182), // '戶' -- '戶'
+ FONTDATA_ITEM(196, 192, 192, fontpage_196_192_192), // '所' -- '所'
+ FONTDATA_ITEM(196, 199, 199, fontpage_196_199_199), // '扇' -- '扇'
+ FONTDATA_ITEM(196, 203, 203, fontpage_196_203_203), // '手' -- '手'
+ FONTDATA_ITEM(196, 211, 211, fontpage_196_211_211), // '打' -- '打'
+ FONTDATA_ITEM(196, 249, 249, fontpage_196_249_249), // '批' -- '批'
+ FONTDATA_ITEM(197, 150, 150, fontpage_197_150_150), // '抖' -- '抖'
+ FONTDATA_ITEM(197, 189, 189, fontpage_197_189_189), // '抽' -- '抽'
+ FONTDATA_ITEM(197, 212, 212, fontpage_197_212_212), // '拔' -- '拔'
+ FONTDATA_ITEM(198, 137, 137, fontpage_198_137_137), // '按' -- '按'
+ FONTDATA_ITEM(199, 137, 137, fontpage_199_137_137), // '掉' -- '掉'
+ FONTDATA_ITEM(199, 162, 162, fontpage_199_162_162), // '探' -- '探'
+ FONTDATA_ITEM(199, 165, 165, fontpage_199_165_165), // '接' -- '接'
+ FONTDATA_ITEM(199, 167, 167, fontpage_199_167_167), // '控' -- '控'
+ FONTDATA_ITEM(199, 208, 208, fontpage_199_208_208), // '提' -- '提'
+ FONTDATA_ITEM(199, 210, 210, fontpage_199_210_210), // '插' -- '插'
+ FONTDATA_ITEM(199, 219, 219, fontpage_199_219_219), // '換' -- '換'
+ FONTDATA_ITEM(201, 199, 199, fontpage_201_199_199), // '擇' -- '擇'
+ FONTDATA_ITEM(201, 202, 203, fontpage_201_202_203), // '擊' -- '擋'
+ FONTDATA_ITEM(201, 224, 224, fontpage_201_224_224), // '擠' -- '擠'
+ FONTDATA_ITEM(202, 182, 182, fontpage_202_182_182), // '收' -- '收'
+ FONTDATA_ITEM(202, 190, 190, fontpage_202_190_190), // '放' -- '放'
+ FONTDATA_ITEM(202, 215, 215, fontpage_202_215_215), // '敗' -- '敗'
+ FONTDATA_ITEM(202, 244, 244, fontpage_202_244_244), // '整' -- '整'
+ FONTDATA_ITEM(202, 248, 248, fontpage_202_248_248), // '數' -- '數'
+ FONTDATA_ITEM(203, 153, 153, fontpage_203_153_153), // '料' -- '料'
+ FONTDATA_ITEM(203, 156, 156, fontpage_203_156_156), // '斜' -- '斜'
+ FONTDATA_ITEM(203, 176, 176, fontpage_203_176_176), // '新' -- '新'
+ FONTDATA_ITEM(203, 183, 183, fontpage_203_183_183), // '斷' -- '斷'
+ FONTDATA_ITEM(203, 188, 188, fontpage_203_188_188), // '於' -- '於'
+ FONTDATA_ITEM(204, 135, 135, fontpage_204_135_135), // '昇' -- '昇'
+ FONTDATA_ITEM(204, 142, 142, fontpage_204_142_142), // '明' -- '明'
+ FONTDATA_ITEM(204, 175, 175, fontpage_204_175_175), // '是' -- '是'
+ FONTDATA_ITEM(204, 194, 194, fontpage_204_194_194), // '時' -- '時'
+ FONTDATA_ITEM(205, 171, 171, fontpage_205_171_171), // '暫' -- '暫'
+ FONTDATA_ITEM(205, 244, 244, fontpage_205_244_244), // '更' -- '更'
+ FONTDATA_ITEM(206, 128, 128, fontpage_206_128_128), // '最' -- '最'
+ FONTDATA_ITEM(206, 137, 137, fontpage_206_137_137), // '有' -- '有'
+ FONTDATA_ITEM(206, 255, 255, fontpage_206_255_255), // '板' -- '板'
+ FONTDATA_ITEM(207, 241, 241, fontpage_207_241_241), // '柱' -- '柱'
+ FONTDATA_ITEM(208, 161, 161, fontpage_208_161_161), // '校' -- '校'
+ FONTDATA_ITEM(208, 188, 188, fontpage_208_188_188), // '格' -- '格'
+ FONTDATA_ITEM(209, 157, 157, fontpage_209_157_157), // '條' -- '條'
+ FONTDATA_ITEM(209, 196, 196, fontpage_209_196_196), // '棄' -- '棄'
+ FONTDATA_ITEM(211, 253, 253, fontpage_211_253_253), // '槽' -- '槽'
+ FONTDATA_ITEM(212, 217, 217, fontpage_212_217_217), // '橙' -- '橙'
+ FONTDATA_ITEM(212, 223, 223, fontpage_212_223_223), // '機' -- '機'
+ FONTDATA_ITEM(213, 162, 162, fontpage_213_162_162), // '檢' -- '檢'
+ FONTDATA_ITEM(214, 226, 227, fontpage_214_226_227), // '止' -- '正'
+ FONTDATA_ITEM(214, 229, 229, fontpage_214_229_229), // '步' -- '步'
+ FONTDATA_ITEM(214, 248, 248, fontpage_214_248_248), // '歸' -- '歸'
+ FONTDATA_ITEM(215, 188, 188, fontpage_215_188_188), // '殼' -- '殼'
+ FONTDATA_ITEM(215, 212, 212, fontpage_215_212_212), // '比' -- '比'
+ FONTDATA_ITEM(217, 146, 146, fontpage_217_146_146), // '沒' -- '沒'
+ FONTDATA_ITEM(219, 136, 136, fontpage_219_136_136), // '消' -- '消'
+ FONTDATA_ITEM(219, 225, 225, fontpage_219_225_225), // '淡' -- '淡'
+ FONTDATA_ITEM(220, 133, 133, fontpage_220_133_133), // '清' -- '清'
+ FONTDATA_ITEM(220, 172, 172, fontpage_220_172_172), // '測' -- '測'
+ FONTDATA_ITEM(221, 144, 144, fontpage_221_144_144), // '源' -- '源'
+ FONTDATA_ITEM(221, 150, 150, fontpage_221_150_150), // '準' -- '準'
+ FONTDATA_ITEM(221, 171, 171, fontpage_221_171_171), // '溫' -- '溫'
+ FONTDATA_ITEM(223, 192, 192, fontpage_223_192_192), // '激' -- '激'
+ FONTDATA_ITEM(226, 161, 161, fontpage_226_161_161), // '無' -- '無'
+ FONTDATA_ITEM(227, 177, 177, fontpage_227_177_177), // '熱' -- '熱'
+ FONTDATA_ITEM(227, 200, 200, fontpage_227_200_200), // '燈' -- '燈'
+ FONTDATA_ITEM(228, 199, 199, fontpage_228_199_199), // '片' -- '片'
+ FONTDATA_ITEM(228, 233, 233, fontpage_228_233_233), // '物' -- '物'
+ FONTDATA_ITEM(231, 135, 135, fontpage_231_135_135), // '率' -- '率'
+ FONTDATA_ITEM(234, 168, 168, fontpage_234_168_168), // '用' -- '用'
+ FONTDATA_ITEM(234, 204, 204, fontpage_234_204_204), // '界' -- '界'
+ FONTDATA_ITEM(236, 253, 253, fontpage_236_253_253), // '白' -- '白'
+ FONTDATA_ITEM(237, 132, 132, fontpage_237_132_132), // '的' -- '的'
+ FONTDATA_ITEM(237, 227, 227, fontpage_237_227_227), // '監' -- '監'
+ FONTDATA_ITEM(237, 244, 244, fontpage_237_244_244), // '直' -- '直'
+ FONTDATA_ITEM(238, 160, 160, fontpage_238_160_160), // '眠' -- '眠'
+ FONTDATA_ITEM(240, 141, 141, fontpage_240_141_141), // '砍' -- '砍'
+ FONTDATA_ITEM(241, 186, 186, fontpage_241_186_186), // '確' -- '確'
+ FONTDATA_ITEM(243, 251, 251, fontpage_243_251_251), // '移' -- '移'
+ FONTDATA_ITEM(244, 205, 205, fontpage_244_205_205), // '積' -- '積'
+ FONTDATA_ITEM(245, 239, 239, fontpage_245_239_239), // '端' -- '端'
+ FONTDATA_ITEM(246, 201, 201, fontpage_246_201_201), // '等' -- '等'
+ FONTDATA_ITEM(247, 161, 161, fontpage_247_161_161), // '管' -- '管'
+ FONTDATA_ITEM(247, 177, 177, fontpage_247_177_177), // '箱' -- '箱'
+ FONTDATA_ITEM(249, 251, 251, fontpage_249_251_251), // '系' -- '系'
+ FONTDATA_ITEM(250, 133, 133, fontpage_250_133_133), // '紅' -- '紅'
+ FONTDATA_ITEM(250, 162, 162, fontpage_250_162_162), // '索' -- '索'
+ FONTDATA_ITEM(250, 171, 171, fontpage_250_171_171), // '紫' -- '紫'
+ FONTDATA_ITEM(250, 176, 176, fontpage_250_176_176), // '細' -- '細'
+ FONTDATA_ITEM(250, 194, 194, fontpage_250_194_194), // '終' -- '終'
+ FONTDATA_ITEM(250, 241, 242, fontpage_250_241_242), // '統' -- '絲'
+ FONTDATA_ITEM(251, 160, 160, fontpage_251_160_160), // '綠' -- '綠'
+ FONTDATA_ITEM(251, 178, 178, fontpage_251_178_178), // '網' -- '網'
+ FONTDATA_ITEM(251, 210, 210, fontpage_251_210_210), // '緒' -- '緒'
+ FONTDATA_ITEM(251, 218, 218, fontpage_251_218_218), // '線' -- '線'
+ FONTDATA_ITEM(251, 232, 232, fontpage_251_232_232), // '編' -- '編'
+ FONTDATA_ITEM(252, 174, 174, fontpage_252_174_174), // '縮' -- '縮'
+ FONTDATA_ITEM(252, 189, 189, fontpage_252_189_189), // '總' -- '總'
+ FONTDATA_ITEM(252, 252, 252, fontpage_252_252_252), // '繼' -- '繼'
+ FONTDATA_ITEM(253, 140, 140, fontpage_253_140_140), // '續' -- '續'
+ FONTDATA_ITEM(253, 162, 162, fontpage_253_162_162), // '红' -- '红'
+ FONTDATA_ITEM(254, 238, 238, fontpage_254_238_238), // '置' -- '置'
+ FONTDATA_ITEM(254, 242, 242, fontpage_254_242_242), // '署' -- '署'
+ FONTDATA_ITEM(256, 240, 240, fontpage_256_240_240), // '聰' -- '聰'
+ FONTDATA_ITEM(259, 234, 234, fontpage_259_234_234), // '自' -- '自'
+ FONTDATA_ITEM(267, 205, 205, fontpage_267_205_205), // '藍' -- '藍'
+ FONTDATA_ITEM(272, 204, 204, fontpage_272_204_204), // '行' -- '行'
+ FONTDATA_ITEM(272, 232, 232, fontpage_272_232_232), // '表' -- '表'
+ FONTDATA_ITEM(273, 171, 171, fontpage_273_171_171), // '被' -- '被'
+ FONTDATA_ITEM(273, 197, 197, fontpage_273_197_197), // '装' -- '装'
+ FONTDATA_ITEM(273, 221, 221, fontpage_273_221_221), // '裝' -- '裝'
+ FONTDATA_ITEM(274, 135, 135, fontpage_274_135_135), // '複' -- '複'
+ FONTDATA_ITEM(275, 210, 210, fontpage_275_210_210), // '角' -- '角'
+ FONTDATA_ITEM(276, 136, 136, fontpage_276_136_136), // '計' -- '計'
+ FONTDATA_ITEM(276, 138, 138, fontpage_276_138_138), // '訊' -- '訊'
+ FONTDATA_ITEM(276, 152, 152, fontpage_276_152_152), // '記' -- '記'
+ FONTDATA_ITEM(276, 173, 173, fontpage_276_173_173), // '設' -- '設'
+ FONTDATA_ITEM(276, 230, 230, fontpage_276_230_230), // '試' -- '試'
+ FONTDATA_ITEM(277, 141, 141, fontpage_277_141_141), // '認' -- '認'
+ FONTDATA_ITEM(277, 164, 164, fontpage_277_164_164), // '誤' -- '誤'
+ FONTDATA_ITEM(277, 191, 191, fontpage_277_191_191), // '調' -- '調'
+ FONTDATA_ITEM(277, 203, 203, fontpage_277_203_203), // '請' -- '請'
+ FONTDATA_ITEM(278, 240, 240, fontpage_278_240_240), // '議' -- '議'
+ FONTDATA_ITEM(279, 128, 128, fontpage_279_128_128), // '讀' -- '讀'
+ FONTDATA_ITEM(279, 138, 138, fontpage_279_138_138), // '變' -- '變'
+ FONTDATA_ITEM(281, 199, 199, fontpage_281_199_199), // '資' -- '資'
+ FONTDATA_ITEM(283, 221, 221, fontpage_283_221_221), // '距' -- '距'
+ FONTDATA_ITEM(285, 202, 202, fontpage_285_202_202), // '車' -- '車'
+ FONTDATA_ITEM(285, 223, 223, fontpage_285_223_223), // '軟' -- '軟'
+ FONTDATA_ITEM(285, 248, 248, fontpage_285_248_248), // '軸' -- '軸'
+ FONTDATA_ITEM(286, 137, 137, fontpage_286_137_137), // '載' -- '載'
+ FONTDATA_ITEM(286, 175, 175, fontpage_286_175_175), // '輯' -- '輯'
+ FONTDATA_ITEM(286, 184, 184, fontpage_286_184_184), // '輸' -- '輸'
+ FONTDATA_ITEM(286, 201, 201, fontpage_286_201_201), // '轉' -- '轉'
+ FONTDATA_ITEM(287, 209, 209, fontpage_287_209_209), // '近' -- '近'
+ FONTDATA_ITEM(287, 212, 212, fontpage_287_212_212), // '返' -- '返'
+ FONTDATA_ITEM(288, 128, 128, fontpage_288_128_128), // '退' -- '退'
+ FONTDATA_ITEM(288, 159, 159, fontpage_288_159_159), // '速' -- '速'
+ FONTDATA_ITEM(288, 163, 163, fontpage_288_163_163), // '連' -- '連'
+ FONTDATA_ITEM(288, 178, 178, fontpage_288_178_178), // '進' -- '進'
+ FONTDATA_ITEM(288, 203, 203, fontpage_288_203_203), // '運' -- '運'
+ FONTDATA_ITEM(288, 212, 212, fontpage_288_212_212), // '達' -- '達'
+ FONTDATA_ITEM(288, 248, 248, fontpage_288_248_248), // '選' -- '選'
+ FONTDATA_ITEM(289, 132, 132, fontpage_289_132_132), // '還' -- '還'
+ FONTDATA_ITEM(289, 138, 138, fontpage_289_138_138), // '邊' -- '邊'
+ FONTDATA_ITEM(289, 232, 232, fontpage_289_232_232), // '部' -- '部'
+ FONTDATA_ITEM(291, 203, 203, fontpage_291_203_203), // '釋' -- '釋'
+ FONTDATA_ITEM(291, 205, 205, fontpage_291_205_205), // '重' -- '重'
+ FONTDATA_ITEM(291, 207, 207, fontpage_291_207_207), // '量' -- '量'
+ FONTDATA_ITEM(291, 221, 221, fontpage_291_221_221), // '針' -- '針'
+ FONTDATA_ITEM(292, 149, 149, fontpage_292_149_149), // '鈕' -- '鈕'
+ FONTDATA_ITEM(294, 175, 175, fontpage_294_175_175), // '錯' -- '錯'
+ FONTDATA_ITEM(294, 245, 245, fontpage_294_245_245), // '鍵' -- '鍵'
+ FONTDATA_ITEM(298, 247, 247, fontpage_298_247_247), // '長' -- '長'
+ FONTDATA_ITEM(299, 137, 137, fontpage_299_137_137), // '閉' -- '閉'
+ FONTDATA_ITEM(299, 139, 139, fontpage_299_139_139), // '開' -- '開'
+ FONTDATA_ITEM(299, 147, 147, fontpage_299_147_147), // '間' -- '間'
+ FONTDATA_ITEM(299, 220, 220, fontpage_299_220_220), // '關' -- '關'
+ FONTDATA_ITEM(300, 205, 205, fontpage_300_205_205), // '降' -- '降'
+ FONTDATA_ITEM(300, 228, 228, fontpage_300_228_228), // '除' -- '除'
+ FONTDATA_ITEM(301, 142, 142, fontpage_301_142_142), // '階' -- '階'
+ FONTDATA_ITEM(301, 217, 217, fontpage_301_217_217), // '雙' -- '雙'
+ FONTDATA_ITEM(301, 226, 226, fontpage_301_226_226), // '離' -- '離'
+ FONTDATA_ITEM(301, 251, 251, fontpage_301_251_251), // '電' -- '電'
+ FONTDATA_ITEM(302, 210, 210, fontpage_302_210_210), // '青' -- '青'
+ FONTDATA_ITEM(302, 222, 222, fontpage_302_222_222), // '非' -- '非'
+ FONTDATA_ITEM(302, 226, 226, fontpage_302_226_226), // '面' -- '面'
+ FONTDATA_ITEM(304, 133, 133, fontpage_304_133_133), // '項' -- '項'
+ FONTDATA_ITEM(304, 144, 144, fontpage_304_144_144), // '預' -- '預'
+ FONTDATA_ITEM(304, 205, 205, fontpage_304_205_205), // '額' -- '額'
+ FONTDATA_ITEM(304, 222, 222, fontpage_304_222_222), // '類' -- '類'
+ FONTDATA_ITEM(305, 168, 168, fontpage_305_168_168), // '風' -- '風'
+ FONTDATA_ITEM(305, 253, 253, fontpage_305_253_253), // '飽' -- '飽'
+ FONTDATA_ITEM(306, 152, 152, fontpage_306_152_152), // '餘' -- '餘'
+ FONTDATA_ITEM(307, 172, 172, fontpage_307_172_172), // '馬' -- '馬'
+ FONTDATA_ITEM(308, 197, 197, fontpage_308_197_197), // '驅' -- '驅'
+ FONTDATA_ITEM(309, 212, 212, fontpage_309_212_212), // '體' -- '體'
+ FONTDATA_ITEM(309, 216, 216, fontpage_309_216_216), // '高' -- '高'
+ FONTDATA_ITEM(317, 195, 195, fontpage_317_195_195), // '黃' -- '黃'
+ FONTDATA_ITEM(317, 222, 222, fontpage_317_222_222), // '點' -- '點'
+ FONTDATA_ITEM(318, 202, 202, fontpage_318_202_202), // '齊' -- '齊'
+ FONTDATA_ITEM(510, 154, 154, fontpage_510_154_154), // ':' -- ':'
};
diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp
index f6ed227539..25e943a14d 100644
--- a/Marlin/src/lcd/dogm/marlinui_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/marlinui_DOGM.cpp
@@ -79,6 +79,18 @@
U8G_CLASS u8g;
#include LANGUAGE_DATA_INCL(LCD_LANGUAGE)
+#ifdef LCD_LANGUAGE_2
+ #include LANGUAGE_DATA_INCL(LCD_LANGUAGE_2)
+#endif
+#ifdef LCD_LANGUAGE_3
+ #include LANGUAGE_DATA_INCL(LCD_LANGUAGE_3)
+#endif
+#ifdef LCD_LANGUAGE_4
+ #include LANGUAGE_DATA_INCL(LCD_LANGUAGE_4)
+#endif
+#ifdef LCD_LANGUAGE_5
+ #include LANGUAGE_DATA_INCL(LCD_LANGUAGE_5)
+#endif
#if HAS_LCD_CONTRAST
@@ -293,7 +305,29 @@ void MarlinUI::init_lcd() {
TERN_(LCD_SCREEN_ROT_180, u8g.setRot180());
TERN_(LCD_SCREEN_ROT_270, u8g.setRot270());
- uxg_SetUtf8Fonts(g_fontinfo, COUNT(g_fontinfo));
+ update_language_font();
+}
+
+void MarlinUI::update_language_font() {
+ #if HAS_MULTI_LANGUAGE
+ switch (language) {
+ default: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE), COUNT(LANG_FONT_INFO(LCD_LANGUAGE))); break;
+ #ifdef LCD_LANGUAGE_2
+ case 1: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_2), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_2))); break;
+ #endif
+ #ifdef LCD_LANGUAGE_3
+ case 2: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_3), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_3))); break;
+ #endif
+ #ifdef LCD_LANGUAGE_4
+ case 3: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_4), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_4))); break;
+ #endif
+ #ifdef LCD_LANGUAGE_5
+ case 4: uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE_5), COUNT(LANG_FONT_INFO(LCD_LANGUAGE_5))); break;
+ #endif
+ }
+ #else
+ uxg_SetUtf8Fonts(LANG_FONT_INFO(LCD_LANGUAGE), COUNT(LANG_FONT_INFO(LCD_LANGUAGE)));
+ #endif
}
// The kill screen is displayed for unrecoverable conditions
diff --git a/Marlin/src/lcd/dogm/u8g_fontutf8.h b/Marlin/src/lcd/dogm/u8g_fontutf8.h
index d7ea618de0..9760ef106b 100644
--- a/Marlin/src/lcd/dogm/u8g_fontutf8.h
+++ b/Marlin/src/lcd/dogm/u8g_fontutf8.h
@@ -35,3 +35,6 @@ int uxg_GetUtf8StrPixelWidth(u8g_t *pu8g, const char *utf8_msg);
int uxg_GetUtf8StrPixelWidthP(u8g_t *pu8g, PGM_P utf8_msg);
#define uxg_GetFont(puxg) ((puxg)->font)
+
+#define _LANG_FONT_INFO(L) g_fontinfo_##L
+#define LANG_FONT_INFO(L) _LANG_FONT_INFO(L)
diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h
index 39093a7c6c..33eb7fca15 100644
--- a/Marlin/src/lcd/language/language_zh_CN.h
+++ b/Marlin/src/lcd/language/language_zh_CN.h
@@ -31,7 +31,7 @@ namespace Language_zh_CN {
using namespace Language_en; // Inherit undefined strings from English
constexpr uint8_t CHARSIZE = 3;
- PROGMEM Language_Str LANGUAGE = _UxGT("简体中文");
+ PROGMEM Language_Str LANGUAGE = _UxGT("Simplified Chinese");
PROGMEM Language_Str WELCOME_MSG = MACHINE_NAME _UxGT("已就绪."); //" ready."
PROGMEM Language_Str MSG_MARLIN = _UxGT("马林");
diff --git a/Marlin/src/lcd/marlinui.cpp b/Marlin/src/lcd/marlinui.cpp
index 206bae925a..346082986d 100644
--- a/Marlin/src/lcd/marlinui.cpp
+++ b/Marlin/src/lcd/marlinui.cpp
@@ -88,6 +88,14 @@ constexpr uint8_t epps = ENCODER_PULSES_PER_STEP;
#if HAS_MULTI_LANGUAGE
uint8_t MarlinUI::language; // Initialized by settings.load()
+ void MarlinUI::set_language(const uint8_t lang) {
+ if (lang < NUM_LANGUAGES) {
+ language = lang;
+ TERN_(HAS_MARLINUI_U8GLIB, update_language_font());
+ return_to_status();
+ refresh();
+ }
+ }
#endif
#if ENABLED(SOUND_MENU_ITEM)
diff --git a/Marlin/src/lcd/marlinui.h b/Marlin/src/lcd/marlinui.h
index bf7215d383..4f11ded53f 100644
--- a/Marlin/src/lcd/marlinui.h
+++ b/Marlin/src/lcd/marlinui.h
@@ -200,13 +200,11 @@ public:
#if HAS_MULTI_LANGUAGE
static uint8_t language;
- static inline void set_language(const uint8_t lang) {
- if (lang < NUM_LANGUAGES) {
- language = lang;
- return_to_status();
- refresh();
- }
- }
+ static void set_language(const uint8_t lang);
+ #endif
+
+ #if HAS_MARLINUI_U8GLIB
+ static void update_language_font();
#endif
#if ENABLED(SOUND_MENU_ITEM)
From 1a0103d276696793429574bf5550034010f4303a Mon Sep 17 00:00:00 2001
From: thinkyhead
Date: Mon, 19 Jul 2021 01:03:15 +0000
Subject: [PATCH 31/35] [cron] Bump distribution date (2021-07-19)
---
Marlin/Version.h | 2 +-
Marlin/src/inc/Version.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Marlin/Version.h b/Marlin/Version.h
index c1cd96ecac..ea80f51d28 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
-//#define STRING_DISTRIBUTION_DATE "2021-07-18"
+//#define STRING_DISTRIBUTION_DATE "2021-07-19"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index b88141a5b7..29249b0b9b 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
- #define STRING_DISTRIBUTION_DATE "2021-07-18"
+ #define STRING_DISTRIBUTION_DATE "2021-07-19"
#endif
/**
From 286f6ba0bd2ab4d405fc83d913399130fa063f9a Mon Sep 17 00:00:00 2001
From: Mike La Spina
Date: Sun, 18 Jul 2021 20:11:24 -0500
Subject: [PATCH 32/35] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Ammeter=20display=20?=
=?UTF-8?q?on=20DOGM=20(#22384)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/lcd/dogm/dogm_Statusscreen.h | 6 +++---
Marlin/src/lcd/dogm/status_screen_DOGM.cpp | 4 ++++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/Marlin/src/lcd/dogm/dogm_Statusscreen.h b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
index 6aa2bab0da..dfbf7b4291 100644
--- a/Marlin/src/lcd/dogm/dogm_Statusscreen.h
+++ b/Marlin/src/lcd/dogm/dogm_Statusscreen.h
@@ -624,7 +624,7 @@
#define STATUS_AMMETER_X (LCD_PIXEL_WIDTH - (STATUS_AMMETER_BYTEWIDTH + STATUS_FLOWMETER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_CUTTER_BYTEWIDTH + STATUS_COOLER_BYTEWIDTH) * 8)
#endif
#ifndef STATUS_AMMETER_HEIGHT
- #define STATUS_AMMETER_HEIGHT(S) (sizeof(status_ammeter_bmp1) / (STATUS_AMMETER_BYTEWIDTH))
+ #define STATUS_AMMETER_HEIGHT(S) (sizeof(status_ammeter_bmp_mA) / (STATUS_AMMETER_BYTEWIDTH))
#endif
#ifndef STATUS_AMMETER_Y
#define STATUS_AMMETER_Y(S) (18 - STATUS_AMMETER_HEIGHT(S))
@@ -633,8 +633,8 @@
#define STATUS_AMMETER_TEXT_X (STATUS_AMMETER_X + 7)
#endif
static_assert(
- sizeof(status_ammeter_bmp1) == (STATUS_AMMETER_BYTEWIDTH) * STATUS_AMMETER_HEIGHT(0),
- "Status ammeter bitmap (status_ammeter_bmp1) dimensions don't match data."
+ sizeof(status_ammeter_bmp_mA) == (STATUS_AMMETER_BYTEWIDTH) * STATUS_AMMETER_HEIGHT(0),
+ "Status ammeter bitmap (status_ammeter_bmp_mA) dimensions don't match data."
);
#endif
diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
index d58be4dbaf..a66aca6d19 100644
--- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -57,6 +57,10 @@
#include "../../feature/cooler.h"
#endif
+#if ENABLED(I2C_AMMETER)
+ #include "../../feature/ammeter.h"
+#endif
+
#if HAS_POWER_MONITOR
#include "../../feature/power_monitor.h"
#endif
From 273ff6fedc4701733464ff33625fba3dbdf1a53c Mon Sep 17 00:00:00 2001
From: Katelyn Schiesser
Date: Sun, 18 Jul 2021 18:24:27 -0700
Subject: [PATCH 33/35] =?UTF-8?q?=F0=9F=90=9B=20Ensure=20Software=20SPI=20?=
=?UTF-8?q?pins=20for=20Max=20Thermocouple=20(#22389)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/module/temperature.cpp | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index fd2c260fd3..f8ccc0c067 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -107,6 +107,24 @@
#if (TEMP_SENSOR_0_USES_SW_SPI || TEMP_SENSOR_1_USES_SW_SPI) && !HAS_MAXTC_LIBRARIES
#include "../libs/private_spi.h"
#define HAS_MAXTC_SW_SPI 1
+
+ // Define pins for SPI-based sensors
+ #if TEMP_SENSOR_0_USES_SW_SPI
+ #define SW_SPI_SCK_PIN TEMP_0_SCK_PIN
+ #define SW_SPI_MISO_PIN TEMP_0_MISO_PIN
+ #if PIN_EXISTS(TEMP_0_MOSI)
+ #define SW_SPI_MOSI_PIN TEMP_0_MOSI_PIN
+ #endif
+ #else
+ #define SW_SPI_SCK_PIN TEMP_1_SCK_PIN
+ #define SW_SPI_MISO_PIN TEMP_1_MISO_PIN
+ #if PIN_EXISTS(TEMP_1_MOSI)
+ #define SW_SPI_MOSI_PIN TEMP_1_MOSI_PIN
+ #endif
+ #endif
+ #ifndef SW_SPI_MOSI_PIN
+ #define SW_SPI_MOSI_PIN SD_MOSI_PIN
+ #endif
#endif
#if ENABLED(PID_EXTRUSION_SCALING)
@@ -198,7 +216,8 @@ const char str_t_thermal_runaway[] PROGMEM = STR_T_THERMAL_RUNAWAY,
// Initialize SoftSPI for non-lib Software SPI; Libraries take care of it themselves.
template
SoftSPI SPIclass::softSPI;
- SPIclass max_tc_spi;
+ SPIclass max_tc_spi;
+
#endif
#define MAXTC_INIT(n, M) \
From 67019bc2778c00ec0ba80519078ad5ecc57f06ff Mon Sep 17 00:00:00 2001
From: Malderin <52313714+Malderin@users.noreply.github.com>
Date: Mon, 19 Jul 2021 05:21:51 +0300
Subject: [PATCH 34/35] Fix MKS UI compile (#22388)
Co-authored-by: Scott Lahteine
---
Marlin/src/MarlinCore.cpp | 2 +-
.../src/lcd/extui/mks_ui/draw_error_message.cpp | 7 +------
.../src/lcd/extui/mks_ui/draw_ready_print.cpp | 7 ++-----
Marlin/src/lcd/extui/mks_ui/draw_ui.cpp | 4 ++--
.../{mks_hardware_test.cpp => mks_hardware.cpp} | 7 +++----
.../{mks_hardware_test.h => mks_hardware.h} | 17 ++++++++++++-----
Marlin/src/lcd/extui/mks_ui/pic_manager.cpp | 7 +------
.../lcd/extui/mks_ui/tft_lvgl_configuration.cpp | 4 ++--
8 files changed, 24 insertions(+), 31 deletions(-)
rename Marlin/src/lcd/extui/mks_ui/{mks_hardware_test.cpp => mks_hardware.cpp} (99%)
rename Marlin/src/lcd/extui/mks_ui/{mks_hardware_test.h => mks_hardware.h} (80%)
diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp
index 1da030b249..07a6a31b94 100644
--- a/Marlin/src/MarlinCore.cpp
+++ b/Marlin/src/MarlinCore.cpp
@@ -70,7 +70,7 @@
#if HAS_TFT_LVGL_UI
#include "lcd/extui/mks_ui/tft_lvgl_configuration.h"
#include "lcd/extui/mks_ui/draw_ui.h"
- #include "lcd/extui/mks_ui/mks_hardware_test.h"
+ #include "lcd/extui/mks_ui/mks_hardware.h"
#include
#endif
diff --git a/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp b/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp
index 7ee2617326..48ff56253b 100644
--- a/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/draw_error_message.cpp
@@ -25,15 +25,10 @@
#include "draw_ui.h"
#include
-
#include "tft_lvgl_configuration.h"
-
#include "SPI_TFT.h"
#include "../../../inc/MarlinConfig.h"
-
-#if ENABLED(MKS_TEST)
- #include "mks_hardware_test.h"
-#endif
+#include "mks_hardware.h"
static lv_obj_t *scr;
diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ready_print.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ready_print.cpp
index 83aec7613e..6f24d81b49 100644
--- a/Marlin/src/lcd/extui/mks_ui/draw_ready_print.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/draw_ready_print.cpp
@@ -39,10 +39,7 @@
#include "draw_touch_calibration.h"
#endif
-#if ENABLED(MKS_TEST)
- #include "mks_hardware_test.h"
-#endif
-
+#include "mks_hardware.h"
#include
#define ICON_POS_Y 38
@@ -129,7 +126,7 @@ void lv_draw_ready_print() {
ZERO(disp_state_stack._disp_state);
scr = lv_screen_create(PRINT_READY_UI, "");
- if (mks_test_flag == 0x1E) {
+ if (TERN0(SDSUPPORT, mks_test_flag == 0x1E)) {
// Create image buttons
buttonTool = lv_imgbtn_create(scr, "F:/bmp_tool.bin", event_handler, ID_TOOL);
diff --git a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp
index 30e08e03ed..1c1e5cc1f5 100644
--- a/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/draw_ui.cpp
@@ -52,7 +52,7 @@
#endif
#if ENABLED(MKS_TEST)
- #include "mks_hardware_test.h"
+ #include "mks_hardware.h"
#endif
CFG_ITMES gCfgItems;
@@ -1366,7 +1366,7 @@ void print_time_count() {
void LV_TASK_HANDLER() {
lv_task_handler();
- #if ENABLED(MKS_TEST)
+ #if BOTH(MKS_TEST, SDSUPPORT)
if (mks_test_flag == 0x1E) mks_hardware_test();
#endif
diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware_test.cpp b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp
similarity index 99%
rename from Marlin/src/lcd/extui/mks_ui/mks_hardware_test.cpp
rename to Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp
index 125f8be0f6..cf9790ea9d 100644
--- a/Marlin/src/lcd/extui/mks_ui/mks_hardware_test.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.cpp
@@ -37,7 +37,7 @@
#if ENABLED(MKS_TEST)
- #include "mks_hardware_test.h"
+ #include "mks_hardware.h"
bool pw_det_sta, pw_off_sta, mt_det_sta;
#if PIN_EXISTS(MT_DET_2)
@@ -613,10 +613,9 @@ void disp_assets_update_progress(const char *msg) {
disp_string(100, 165, buf, 0xFFFF, 0x0000);
}
-uint8_t mks_test_flag = 0;
-const char *MKSTestPath = "MKS_TEST";
-
#if ENABLED(SDSUPPORT)
+ uint8_t mks_test_flag = 0;
+ const char *MKSTestPath = "MKS_TEST";
void mks_test_get() {
SdFile dir, root = card.getroot();
if (dir.open(&root, MKSTestPath, O_RDONLY))
diff --git a/Marlin/src/lcd/extui/mks_ui/mks_hardware_test.h b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h
similarity index 80%
rename from Marlin/src/lcd/extui/mks_ui/mks_hardware_test.h
rename to Marlin/src/lcd/extui/mks_ui/mks_hardware.h
index 1b46d4b0e6..de0c3a738e 100644
--- a/Marlin/src/lcd/extui/mks_ui/mks_hardware_test.h
+++ b/Marlin/src/lcd/extui/mks_ui/mks_hardware.h
@@ -21,15 +21,22 @@
*/
#pragma once
+#include "../../../inc/MarlinConfigPre.h"
+
#include
-void mks_gpio_test();
-void mks_hardware_test();
-void mks_test_get();
+// Functions for MKS_TEST
+#if ENABLED(MKS_TEST)
+ void mks_gpio_test();
+ void mks_hardware_test();
+ void mks_test_get();
+#endif
-void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor);
+// String display and assets
void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor);
void disp_assets_update();
void disp_assets_update_progress(const char *msg);
-extern uint8_t mks_test_flag;
+#if ENABLED(SDSUPPORT)
+ extern uint8_t mks_test_flag;
+#endif
diff --git a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp
index 03e408e32a..68344e770c 100644
--- a/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/pic_manager.cpp
@@ -27,14 +27,9 @@
#include "draw_ui.h"
#include "pic_manager.h"
#include "draw_ready_print.h"
-
-#if ENABLED(MKS_TEST)
- #include "mks_hardware_test.h"
-#endif
-
+#include "mks_hardware.h"
#include "SPIFlashStorage.h"
#include "../../../libs/W25Qxx.h"
-
#include "../../../sd/cardreader.h"
#include "../../../MarlinCore.h"
diff --git a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp
index 7f84277ef0..d8c5fbd6ec 100644
--- a/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp
+++ b/Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp
@@ -29,7 +29,7 @@
#include "draw_ready_print.h"
#include "pic_manager.h"
-#include "mks_hardware_test.h"
+#include "mks_hardware.h"
#include "draw_ui.h"
#include "SPIFlashStorage.h"
#include
@@ -231,7 +231,7 @@ void tft_lvgl_init() {
if (ready) lv_draw_ready_print();
- #if ENABLED(MKS_TEST)
+ #if BOTH(MKS_TEST, SDSUPPORT)
if (mks_test_flag == 0x1E) mks_gpio_test();
#endif
}
From c2f72cde1024538a6026b9db794fcd4f6b7ca07a Mon Sep 17 00:00:00 2001
From: Serhiy-K <52166448+Serhiy-K@users.noreply.github.com>
Date: Mon, 19 Jul 2021 05:39:01 +0300
Subject: [PATCH 35/35] =?UTF-8?q?=E2=9C=A8=20Laser=20support=20for=20TFT?=
=?UTF-8?q?=20GLCD=20(#22391)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Marlin/src/inc/Conditionals_LCD.h | 2 +-
Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp | 322 ++++++++++++++------
2 files changed, 226 insertions(+), 98 deletions(-)
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index 6cf0b82241..7e2239b3f6 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -213,7 +213,7 @@
#define LCD_PROGRESS_BAR
#endif
#if ENABLED(TFTGLCD_PANEL_I2C)
- #define LCD_I2C_ADDRESS 0x27 // Must be equal to panel's I2C slave addres
+ #define LCD_I2C_ADDRESS 0x33 // Must be 0x33 for STM32 main boards and equal to panel's I2C slave addres
#endif
#define LCD_USE_I2C_BUZZER // Enable buzzer on LCD, used for both I2C and SPI buses (LiquidTWI2 not required)
#define STD_ENCODER_PULSES_PER_STEP 2
diff --git a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
index edb17b69c0..3324819955 100644
--- a/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
+++ b/Marlin/src/lcd/TFTGLCD/marlinui_TFTGLCD.cpp
@@ -57,6 +57,18 @@
#include "../../gcode/parser.h"
#endif
+#if EITHER(HAS_COOLER, LASER_COOLANT_FLOW_METER)
+ #include "../../feature/cooler.h"
+#endif
+
+#if ENABLED(I2C_AMMETER)
+ #include "../../feature/ammeter.h"
+#endif
+
+#if HAS_CUTTER
+ #include "../../feature/spindle_laser.h"
+#endif
+
#if ENABLED(AUTO_BED_LEVELING_UBL)
#include "../../feature/bedlevel/bedlevel.h"
#endif
@@ -64,12 +76,12 @@
TFTGLCD lcd;
#define ICON_LOGO B00000001
-#define ICON_TEMP1 B00000010 //hotend 1
-#define ICON_TEMP2 B00000100 //hotend 2
-#define ICON_TEMP3 B00001000 //hotend 3
+#define ICON_TEMP1 B00000010 // Hotend 1
+#define ICON_TEMP2 B00000100 // Hotend 2
+#define ICON_TEMP3 B00001000 // Hotend 3
#define ICON_BED B00010000
#define ICON_FAN B00100000
-#define ICON_HOT B01000000 //when any T > 50deg
+#define ICON_HOT B01000000 // When any T > 50deg
#define PIC_MASK 0x7F
// LEDs not used, for compatibility with Smoothieware
@@ -433,69 +445,161 @@ FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const
lcd_put_u8str(value);
}
-FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char *prefix, const bool blink) {
- uint8_t pic_hot_bits;
- #if HAS_HEATED_BED
- const bool isBed = heater_id < 0;
- const celsius_t t1 = (isBed ? thermalManager.wholeDegBed() : thermalManager.wholeDegHotend(heater_id)),
- t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater_id));
- #else
- const celsius_t t1 = thermalManager.wholeDegHotend(heater_id), t2 = thermalManager.degTargetHotend(heater_id);
- #endif
+#if HAS_HOTEND || HAS_HEATED_BED
- #if HOTENDS < 2
- if (heater_id == H_E0) {
- lcd.setCursor(2, 5); lcd.print(prefix); //HE
- lcd.setCursor(1, 6); lcd.print(i16tostr3rj(t1));
- lcd.setCursor(1, 7);
- }
- else {
- lcd.setCursor(6, 5); lcd.print(prefix); //BED
- lcd.setCursor(6, 6); lcd.print(i16tostr3rj(t1));
- lcd.setCursor(6, 7);
- }
- #else
- if (heater_id > H_BED) {
- lcd.setCursor(heater_id * 4, 5); lcd.print(prefix); // HE1 or HE2 or HE3
- lcd.setCursor(heater_id * 4, 6); lcd.print(i16tostr3rj(t1));
- lcd.setCursor(heater_id * 4, 7);
- }
- else {
- lcd.setCursor(13, 5); lcd.print(prefix); //BED
- lcd.setCursor(13, 6); lcd.print(i16tostr3rj(t1));
- lcd.setCursor(13, 7);
- }
- #endif // HOTENDS <= 1
+ FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char *prefix, const bool blink) {
+ uint8_t pic_hot_bits;
+ #if HAS_HEATED_BED
+ const bool isBed = heater_id < 0;
+ const celsius_t t1 = (isBed ? thermalManager.wholeDegBed() : thermalManager.wholeDegHotend(heater_id)),
+ t2 = (isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater_id));
+ #else
+ const celsius_t t1 = thermalManager.wholeDegHotend(heater_id), t2 = thermalManager.degTargetHotend(heater_id);
+ #endif
- #if !HEATER_IDLE_HANDLER
- UNUSED(blink);
- #else
- if (!blink && thermalManager.heater_idle[thermalManager.idle_index_for_id(heater_id)].timed_out) {
- lcd.write(' ');
- if (t2 >= 10) lcd.write(' ');
- if (t2 >= 100) lcd.write(' ');
- }
- else
- #endif // !HEATER_IDLE_HANDLER
- lcd.print(i16tostr3rj(t2));
+ #if HOTENDS < 2
+ if (heater_id == H_E0) {
+ lcd.setCursor(2, 5); lcd.print(prefix); //HE
+ lcd.setCursor(1, 6); lcd.print(i16tostr3rj(t1));
+ lcd.setCursor(1, 7);
+ }
+ else {
+ lcd.setCursor(6, 5); lcd.print(prefix); //BED
+ lcd.setCursor(6, 6); lcd.print(i16tostr3rj(t1));
+ lcd.setCursor(6, 7);
+ }
+ #else
+ if (heater_id > H_BED) {
+ lcd.setCursor(heater_id * 4, 5); lcd.print(prefix); // HE1 or HE2 or HE3
+ lcd.setCursor(heater_id * 4, 6); lcd.print(i16tostr3rj(t1));
+ lcd.setCursor(heater_id * 4, 7);
+ }
+ else {
+ lcd.setCursor(13, 5); lcd.print(prefix); //BED
+ lcd.setCursor(13, 6); lcd.print(i16tostr3rj(t1));
+ lcd.setCursor(13, 7);
+ }
+ #endif // HOTENDS <= 1
- switch (heater_id) {
- case H_BED: pic_hot_bits = ICON_BED; break;
- case H_E0: pic_hot_bits = ICON_TEMP1; break;
- case H_E1: pic_hot_bits = ICON_TEMP2; break;
- case H_E2: pic_hot_bits = ICON_TEMP3;
- default: break;
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #else
+ if (!blink && thermalManager.heater_idle[thermalManager.idle_index_for_id(heater_id)].timed_out) {
+ lcd.write(' ');
+ if (t2 >= 10) lcd.write(' ');
+ if (t2 >= 100) lcd.write(' ');
+ }
+ else
+ #endif // !HEATER_IDLE_HANDLER
+ lcd.print(i16tostr3rj(t2));
+
+ switch (heater_id) {
+ case H_BED: pic_hot_bits = ICON_BED; break;
+ case H_E0: pic_hot_bits = ICON_TEMP1; break;
+ case H_E1: pic_hot_bits = ICON_TEMP2; break;
+ case H_E2: pic_hot_bits = ICON_TEMP3;
+ default: break;
+ }
+
+ if (t2) picBits |= pic_hot_bits;
+ else picBits &= ~pic_hot_bits;
+
+ if (t1 > 50) hotBits |= pic_hot_bits;
+ else hotBits &= ~pic_hot_bits;
+
+ if (hotBits) picBits |= ICON_HOT;
+ else picBits &= ~ICON_HOT;
}
- if (t2) picBits |= pic_hot_bits;
- else picBits &= ~pic_hot_bits;
+#endif // HAS_HOTEND || HAS_HEATED_BED
- if (t1 > 50) hotBits |= pic_hot_bits;
- else hotBits &= ~pic_hot_bits;
+#if HAS_COOLER
- if (hotBits) picBits |= ICON_HOT;
- else picBits &= ~ICON_HOT;
-}
+ FORCE_INLINE void _draw_cooler_status(const bool blink) {
+ const celsius_t t2 = thermalManager.degTargetCooler();
+
+ lcd.setCursor(0, 5); lcd_put_u8str_P(PSTR("COOL"));
+ lcd.setCursor(1, 6); lcd_put_u8str(i16tostr3rj(thermalManager.wholeDegCooler()));
+ lcd.setCursor(1, 7);
+
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #else
+ if (!blink && thermalManager.heater_idle[thermalManager.idle_index_for_id(heater_id)].timed_out) {
+ lcd_put_wchar(' ');
+ if (t2 >= 10) lcd_put_wchar(' ');
+ if (t2 >= 100) lcd_put_wchar(' ');
+ }
+ else
+ #endif
+ lcd_put_u8str(i16tostr3left(t2));
+
+ lcd_put_wchar(' ');
+ if (t2 < 10) lcd_put_wchar(' ');
+
+ if (t2) picBits |= ICON_TEMP1;
+ else picBits &= ~ICON_TEMP1;
+ }
+
+#endif // HAS_COOLER
+
+#if ENABLED(LASER_COOLANT_FLOW_METER)
+
+ FORCE_INLINE void _draw_flowmeter_status() {
+ lcd.setCursor(5, 5); lcd_put_u8str_P(PSTR("FLOW"));
+ lcd.setCursor(7, 6); lcd_put_wchar('L');
+ lcd.setCursor(6, 7); lcd_put_u8str(ftostr11ns(cooler.flowrate));
+
+ if (cooler.flowrate) picBits |= ICON_FAN;
+ else picBits &= ~ICON_FAN;
+ }
+
+#endif
+
+#if ENABLED(I2C_AMMETER)
+
+ FORCE_INLINE void _draw_ammeter_status() {
+ lcd.setCursor(10, 5); lcd_put_u8str_P(PSTR("ILAZ"));
+ ammeter.read();
+ lcd.setCursor(11, 6);
+ if (ammeter.current <= 0.999f)
+ {
+ lcd_put_u8str("mA");
+ lcd.setCursor(10, 7);
+ lcd_put_wchar(' '); lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
+ }
+ else {
+ lcd_put_u8str(" A");
+ lcd.setCursor(10, 7);
+ lcd_put_u8str(ftostr12ns(ammeter.current));
+ }
+
+ if (ammeter.current) picBits |= ICON_BED;
+ else picBits &= ~ICON_BED;
+ }
+
+#endif // I2C_AMMETER
+
+#if HAS_CUTTER
+
+ FORCE_INLINE void _draw_cutter_status() {
+ lcd.setCursor(15, 5); lcd_put_u8str_P(PSTR("CUTT"));
+ #if CUTTER_UNIT_IS(RPM)
+ lcd.setCursor(16, 6); lcd_put_u8str_P(PSTR("RPM"));
+ lcd.setCursor(15, 7); lcd_put_u8str(ftostr31ns(float(cutter.unitPower) / 1000));
+ lcd_put_wchar('K');
+ #elif CUTTER_UNIT_IS(PERCENT)
+ lcd.setCursor(17, 6); lcd_put_wchar('%');
+ lcd.setCursor(18, 7); lcd_put_u8str(cutter_power2str(cutter.unitPower));
+ #else
+ lcd.setCursor(17, 7); lcd_put_u8str(cutter_power2str(cutter.unitPower));
+ #endif
+
+ if (cutter.unitPower) picBits |= ICON_HOT;
+ else picBits &= ~ICON_HOT;
+ }
+
+#endif // HAS_CUTTER
#if HAS_PRINT_PROGRESS
@@ -533,7 +637,7 @@ FORCE_INLINE void _draw_heater_status(const heater_id_t heater_id, const char *p
}
}
-#endif
+#endif // LCD_PROGRESS_BAR
void MarlinUI::draw_status_message(const bool blink) {
if (!PanelDetected) return;
@@ -648,6 +752,19 @@ or
or
+|X 000 Y 000 Z 000.00|
+|FR100% SD100% C--:--|
+| Progress bar line |
+|Status message |
+| |
+|COOL FLOW ILAZ CUTT |
+| ttc L mA RPM |
+| tts f.f aaa rr.rK|
+| ICO ICO ICO ICO |
+| ICO ICO ICO ICO |
+
+or
+
Equal to 24x10 text LCD
|X 000 Y 000 Z 000.00 |
@@ -745,50 +862,61 @@ void MarlinUI::draw_status_screen() {
#endif
//
- // Line 6..8 Temperatures, FAN
+ // Line 6..8 Temperatures, FAN for printer or Cooler, Flowmetter, Ampermeter, Cutter for laser/spindle
//
- #if HOTENDS < 2
- _draw_heater_status(H_E0, "HE", blink); // Hotend Temperature
- #else
- _draw_heater_status(H_E0, "HE1", blink); // Hotend 1 Temperature
- _draw_heater_status(H_E1, "HE2", blink); // Hotend 2 Temperature
- #if HOTENDS > 2
- _draw_heater_status(H_E2, "HE3", blink); // Hotend 3 Temperature
- #endif
- #endif
-
- #if HAS_HEATED_BED
- #if HAS_LEVELING
- _draw_heater_status(H_BED, (planner.leveling_active && blink ? "___" : "BED"), blink);
- #else
- _draw_heater_status(H_BED, "BED", blink);
- #endif
- #endif
-
- #if HAS_FAN
- uint16_t spd = thermalManager.fan_speed[0];
- #if ENABLED(ADAPTIVE_FAN_SLOWING)
- if (!blink) spd = thermalManager.scaledFanSpeed(0, spd);
- #endif
- uint16_t per = thermalManager.pwmToPercent(spd);
+ #if HAS_HOTEND
#if HOTENDS < 2
- #define FANX 11
+ _draw_heater_status(H_E0, "HE", blink); // Hotend Temperature
#else
- #define FANX 17
+ _draw_heater_status(H_E0, "HE1", blink); // Hotend 1 Temperature
+ _draw_heater_status(H_E1, "HE2", blink); // Hotend 2 Temperature
+ #if HOTENDS > 2
+ _draw_heater_status(H_E2, "HE3", blink); // Hotend 3 Temperature
+ #endif
#endif
- lcd.setCursor(FANX, 5); lcd_put_u8str_P(PSTR("FAN"));
- lcd.setCursor(FANX + 1, 6); lcd.write('%');
- lcd.setCursor(FANX, 7);
- lcd.print(i16tostr3rj(per));
- if (TERN0(HAS_FAN0, thermalManager.fan_speed[0]) || TERN0(HAS_FAN1, thermalManager.fan_speed[1]) || TERN0(HAS_FAN2, thermalManager.fan_speed[2]))
- picBits |= ICON_FAN;
- else
- picBits &= ~ICON_FAN;
+ #if HAS_HEATED_BED
+ #if HAS_LEVELING
+ _draw_heater_status(H_BED, (planner.leveling_active && blink ? "___" : "BED"), blink);
+ #else
+ _draw_heater_status(H_BED, "BED", blink);
+ #endif
+ #endif
- #endif // HAS_FAN
+ #if HAS_FAN
+ uint16_t spd = thermalManager.fan_speed[0];
+ #if ENABLED(ADAPTIVE_FAN_SLOWING)
+ if (!blink) spd = thermalManager.scaledFanSpeed(0, spd);
+ #endif
+ uint16_t per = thermalManager.pwmToPercent(spd);
+
+ #if HOTENDS < 2
+ #define FANX 11
+ #else
+ #define FANX 17
+ #endif
+ lcd.setCursor(FANX, 5); lcd_put_u8str_P(PSTR("FAN"));
+ lcd.setCursor(FANX + 1, 6); lcd.write('%');
+ lcd.setCursor(FANX, 7);
+ lcd.print(i16tostr3rj(per));
+
+ if (TERN0(HAS_FAN0, thermalManager.fan_speed[0]) || TERN0(HAS_FAN1, thermalManager.fan_speed[1]) || TERN0(HAS_FAN2, thermalManager.fan_speed[2]))
+ picBits |= ICON_FAN;
+ else
+ picBits &= ~ICON_FAN;
+
+ #endif // HAS_FAN
+
+ #else
+
+ TERN_(HAS_COOLER, _draw_cooler_status(blink));
+ TERN_(LASER_COOLANT_FLOW_METER, _draw_flowmeter_status());
+ TERN_(I2C_AMMETER, _draw_ammeter_status());
+ TERN_(HAS_CUTTER, _draw_cutter_status());
+
+ #endif
//
// Line 9, 10 - icons