Skip to content

Commit bff0c68

Browse files
committed
Consistent static/value item macros
1 parent 34fb9c7 commit bff0c68

File tree

3 files changed

+45
-35
lines changed

3 files changed

+45
-35
lines changed

Marlin/src/lcd/fontutils.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ int pf_bsearch_r(void *userdata, size_t num_data, pf_bsearch_cb_comp_t cb_comp,
7373
return -1;
7474
}
7575

76-
/* This function gets the character at the pstart position, interpreting UTF8 multybyte sequences
76+
/* This function gets the character at the pstart position, interpreting UTF8 multibyte sequences
7777
and returns the pointer to the next character */
7878
uint8_t* get_utf8_value_cb(uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t *pval) {
7979
uint32_t val = 0;
@@ -161,7 +161,6 @@ uint8_t* get_utf8_value_cb(uint8_t *pstart, read_byte_cb_t cb_read_byte, wchar_t
161161
}
162162

163163
static inline uint8_t utf8_strlen_cb(const char *pstart, read_byte_cb_t cb_read_byte) {
164-
165164
uint8_t cnt = 0;
166165
uint8_t *pnext = (uint8_t *)pstart;
167166
for (;;) {

Marlin/src/lcd/menu/menu_info.cpp

+30-33
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@
3434
#include "game/game.h"
3535
#endif
3636

37-
#define VALUE_ITEM(MSG, VALUE, STYL) do{ char msg[21]; strcpy_P(msg, PSTR(": ")); strcpy(msg + 2, VALUE); STATIC_ITEM(MSG, STYL, msg); }while(0)
38-
#define VALUE_ITEM_P(MSG, PVALUE, STYL) do{ char msg[21]; strcpy_P(msg, PSTR(": ")); strcpy_P(msg + 2, PSTR(PVALUE)); STATIC_ITEM(MSG, STYL, msg); }while(0)
39-
4037
#if ENABLED(PRINTCOUNTER)
4138

4239
#include "../../module/printcounter.h"
@@ -52,14 +49,14 @@
5249
char buffer[21];
5350

5451
START_SCREEN(); // 12345678901234567890
55-
VALUE_ITEM(MSG_INFO_PRINT_COUNT, i16tostr3left(stats.totalPrints), SS_LEFT); // Print Count: 999
56-
VALUE_ITEM(MSG_INFO_COMPLETED_PRINTS, i16tostr3left(stats.finishedPrints), SS_LEFT); // Completed : 666
52+
STATIC_ITEM(MSG_INFO_PRINT_COUNT, SS_LEFT, i16tostr3left(stats.totalPrints)); // Print Count: 999
53+
STATIC_ITEM(MSG_INFO_COMPLETED_PRINTS, SS_LEFT, i16tostr3left(stats.finishedPrints)); // Completed : 666
5754

5855
STATIC_ITEM(MSG_INFO_PRINT_TIME, SS_LEFT); // Total print Time:
59-
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s
56+
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.printTime).toString(buffer)); // > 99y 364d 23h 59m 59s
6057

6158
STATIC_ITEM(MSG_INFO_PRINT_LONGEST, SS_LEFT); // Longest job time:
62-
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s
59+
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.longestPrint).toString(buffer)); // > 99y 364d 23h 59m 59s
6360

6461
STATIC_ITEM(MSG_INFO_PRINT_FILAMENT, SS_LEFT); // Extruded total:
6562
sprintf_P(buffer, PSTR("%ld.%im")
@@ -73,8 +70,8 @@
7370
#endif
7471

7572
#if SERVICE_INTERVAL_1 > 0
76-
STATIC_ITEM_P(PSTR(SERVICE_NAME_1 " "), SS_LEFT, buffer); // Service X in:
77-
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s
73+
STATIC_ITEM_P(PSTR(SERVICE_NAME_1 " "), SS_LEFT, buffer); // Service X in:
74+
STATIC_ITEM_P(PSTR("> "), SS_LEFT, duration_t(stats.nextService1).toString(buffer)); // > 7d 12h 11m 10s
7875
#endif
7976

8077
#if SERVICE_INTERVAL_2 > 0
@@ -104,71 +101,71 @@ void menu_info_thermistors() {
104101
#define THERMISTOR_ID TEMP_SENSOR_0
105102
#include "../thermistornames.h"
106103
STATIC_ITEM_P(PSTR(LCD_STR_E0 ": " THERMISTOR_NAME), SS_INVERT);
107-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
108-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
104+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_0_MINTEMP), SS_LEFT);
105+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_0_MAXTEMP), SS_LEFT);
109106
#endif
110107

111108
#if TEMP_SENSOR_1 != 0
112109
#undef THERMISTOR_ID
113110
#define THERMISTOR_ID TEMP_SENSOR_1
114111
#include "../thermistornames.h"
115112
STATIC_ITEM_P(PSTR(LCD_STR_E1 ": " THERMISTOR_NAME), SS_INVERT);
116-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
117-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
113+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_1_MINTEMP), SS_LEFT);
114+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_1_MAXTEMP), SS_LEFT);
118115
#endif
119116

120117
#if TEMP_SENSOR_2 != 0
121118
#undef THERMISTOR_ID
122119
#define THERMISTOR_ID TEMP_SENSOR_2
123120
#include "../thermistornames.h"
124121
STATIC_ITEM_P(PSTR(LCD_STR_E2 ": " THERMISTOR_NAME), SS_INVERT);
125-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
126-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
122+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_2_MINTEMP), SS_LEFT);
123+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_2_MAXTEMP), SS_LEFT);
127124
#endif
128125

129126
#if TEMP_SENSOR_3 != 0
130127
#undef THERMISTOR_ID
131128
#define THERMISTOR_ID TEMP_SENSOR_3
132129
#include "../thermistornames.h"
133130
STATIC_ITEM_P(PSTR(LCD_STR_E3 ": " THERMISTOR_NAME), SS_INVERT);
134-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
135-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
131+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_3_MINTEMP), SS_LEFT);
132+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_3_MAXTEMP), SS_LEFT);
136133
#endif
137134

138135
#if TEMP_SENSOR_4 != 0
139136
#undef THERMISTOR_ID
140137
#define THERMISTOR_ID TEMP_SENSOR_4
141138
#include "../thermistornames.h"
142139
STATIC_ITEM_P(PSTR(LCD_STR_E4 ": " THERMISTOR_NAME), SS_INVERT);
143-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
144-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
140+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_4_MINTEMP), SS_LEFT);
141+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_4_MAXTEMP), SS_LEFT);
145142
#endif
146143

147144
#if TEMP_SENSOR_5 != 0
148145
#undef THERMISTOR_ID
149146
#define THERMISTOR_ID TEMP_SENSOR_5
150147
#include "../thermistornames.h"
151148
STATIC_ITEM_P(PSTR(LCD_STR_E5 ": " THERMISTOR_NAME), SS_INVERT);
152-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
153-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
149+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_5_MINTEMP), SS_LEFT);
150+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_5_MAXTEMP), SS_LEFT);
154151
#endif
155152

156153
#if TEMP_SENSOR_6 != 0
157154
#undef THERMISTOR_ID
158155
#define THERMISTOR_ID TEMP_SENSOR_6
159156
#include "../thermistornames.h"
160157
STATIC_ITEM_P(PSTR(LCD_STR_E6 ": " THERMISTOR_NAME), SS_INVERT);
161-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_6_MINTEMP), SS_LEFT);
162-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_6_MAXTEMP), SS_LEFT);
158+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_6_MINTEMP), SS_LEFT);
159+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_6_MAXTEMP), SS_LEFT);
163160
#endif
164161

165162
#if TEMP_SENSOR_7 != 0
166163
#undef THERMISTOR_ID
167164
#define THERMISTOR_ID TEMP_SENSOR_7
168165
#include "../thermistornames.h"
169166
STATIC_ITEM_P(PSTR(LCD_STR_E7 ": " THERMISTOR_NAME), SS_INVERT);
170-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_7_MINTEMP), SS_LEFT);
171-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_7_MAXTEMP), SS_LEFT);
167+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(HEATER_7_MINTEMP), SS_LEFT);
168+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(HEATER_7_MAXTEMP), SS_LEFT);
172169
#endif
173170

174171
#if EXTRUDERS
@@ -180,8 +177,8 @@ void menu_info_thermistors() {
180177
#define THERMISTOR_ID TEMP_SENSOR_BED
181178
#include "../thermistornames.h"
182179
STATIC_ITEM_P(PSTR("BED:" THERMISTOR_NAME), SS_INVERT);
183-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
184-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
180+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(BED_MINTEMP), SS_LEFT);
181+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(BED_MAXTEMP), SS_LEFT);
185182
STATIC_ITEM(TERN(WATCH_BED, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT);
186183
#endif
187184

@@ -190,8 +187,8 @@ void menu_info_thermistors() {
190187
#define THERMISTOR_ID TEMP_SENSOR_CHAMBER
191188
#include "../thermistornames.h"
192189
STATIC_ITEM_P(PSTR("CHAM:" THERMISTOR_NAME), SS_INVERT);
193-
VALUE_ITEM_P(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
194-
VALUE_ITEM_P(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
190+
PSTRING_ITEM(MSG_INFO_MIN_TEMP, STRINGIFY(CHAMBER_MINTEMP), SS_LEFT);
191+
PSTRING_ITEM(MSG_INFO_MAX_TEMP, STRINGIFY(CHAMBER_MAXTEMP), SS_LEFT);
195192
STATIC_ITEM(TERN(WATCH_CHAMBER, MSG_INFO_RUNAWAY_ON, MSG_INFO_RUNAWAY_OFF), SS_LEFT);
196193
#endif
197194

@@ -209,9 +206,9 @@ void menu_info_board() {
209206
#ifdef BOARD_WEBSITE_URL
210207
STATIC_ITEM_P(PSTR(BOARD_WEBSITE_URL), SS_LEFT); // www.my3dprinter.com
211208
#endif
212-
VALUE_ITEM_P(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
213-
VALUE_ITEM_P(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER); // Protocol: 1.0
214-
VALUE_ITEM_P(MSG_INFO_PSU, PSU_NAME, SS_CENTER);
209+
PSTRING_ITEM(MSG_INFO_BAUDRATE, STRINGIFY(BAUDRATE), SS_CENTER); // Baud: 250000
210+
PSTRING_ITEM(MSG_INFO_PROTOCOL, PROTOCOL_VERSION, SS_CENTER); // Protocol: 1.0
211+
PSTRING_ITEM(MSG_INFO_PSU, PSU_NAME, SS_CENTER);
215212
END_SCREEN();
216213
}
217214

@@ -242,7 +239,7 @@ void menu_info_board() {
242239
STATIC_ITEM_P(PSTR(STRING_DISTRIBUTION_DATE)); // YYYY-MM-DD HH:MM
243240
STATIC_ITEM_P(PSTR(MACHINE_NAME)); // My3DPrinter
244241
STATIC_ITEM_P(PSTR(WEBSITE_URL)); // www.my3dprinter.com
245-
VALUE_ITEM_P(MSG_INFO_EXTRUDERS, STRINGIFY(EXTRUDERS), SS_CENTER); // Extruders: 2
242+
PSTRING_ITEM(MSG_INFO_EXTRUDERS, STRINGIFY(EXTRUDERS), SS_CENTER); // Extruders: 2
246243
#if HAS_LEVELING
247244
STATIC_ITEM(
248245
TERN_(AUTO_BED_LEVELING_3POINT, MSG_3POINT_LEVELING) // 3-Point Leveling

Marlin/src/lcd/menu/menu_item.h

+14
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,20 @@ class MenuItem_bool : public MenuEditItemBase {
328328
NEXT_ITEM(); \
329329
}while(0)
330330

331+
// PSTRING_ITEM is like STATIC_ITEM but it takes
332+
// two PSTRs with the style as the last parameter.
333+
334+
#define PSTRING_ITEM_P(PLABEL, PVAL, STYL) do{ \
335+
constexpr int m = 20; \
336+
char msg[m+1]; \
337+
msg[0] = ':'; msg[1] = ' '; \
338+
strncpy_P(msg+2, PSTR(PVAL), m-2); \
339+
if (msg[m-1] & 0x80) msg[m-1] = '\0'; \
340+
STATIC_ITEM_P(PLABEL, STYL, msg); \
341+
}while(0)
342+
343+
#define PSTRING_ITEM(LABEL, V...) PSTRING_ITEM_P(GET_TEXT(LABEL), ##V)
344+
331345
#define STATIC_ITEM(LABEL, V...) STATIC_ITEM_P(GET_TEXT(LABEL), ##V)
332346
#define STATIC_ITEM_N(LABEL, N, V...) STATIC_ITEM_N_P(GET_TEXT(LABEL), ##V)
333347

0 commit comments

Comments
 (0)