Skip to content

Commit 98c7364

Browse files
Merge pull request #103 from suchmememanyskill/dev
v1.6.2
2 parents e004456 + 7815a0f commit 98c7364

11 files changed

+280
-40
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
{
2+
"build": {
3+
"arduino": {
4+
"ldscript": "esp32s3_out.ld",
5+
"partitions": "default_16MB.csv",
6+
"memory_type": "qio_opi"
7+
},
8+
"core": "esp32",
9+
"extra_flags": [
10+
"'-D ARDUINO_ESP32S3_DEV'",
11+
"'-D BOARD_HAS_PSRAM'",
12+
"'-D ARDUINO_USB_MODE=1'",
13+
"'-D ARDUINO_RUNNING_CORE=1'",
14+
"'-D ARDUINO_EVENT_RUNNING_CORE=1'",
15+
"'-D ARDUINO_USB_CDC_ON_BOOT=0'",
16+
"'-D ESP32_4827S043R'",
17+
"'-D LCD_WIDTH=480'",
18+
"'-D LCD_HEIGHT=272'",
19+
"'-D LVGL_BUFFER_PIXELS=(LCD_WIDTH*LCD_HEIGHT)'",
20+
"'-D LVGL_BUFFER_MALLOC_FLAGS=(MALLOC_CAP_SPIRAM|MALLOC_CAP_8BIT)'",
21+
"'-D GPIO_BCKL=2'",
22+
"'-D LCD_ST7262_PAR'",
23+
"'-D ST7262_PANEL_CONFIG_CLK_SRC=LCD_CLK_SRC_PLL160M'",
24+
"'-D ST7262_PANEL_CONFIG_TIMINGS_PCLK_HZ=(8*1000000)'",
25+
"'-D ST7262_PANEL_CONFIG_TIMINGS_H_RES=LCD_WIDTH'",
26+
"'-D ST7262_PANEL_CONFIG_TIMINGS_V_RES=LCD_HEIGHT'",
27+
"'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_PULSE_WIDTH=4'",
28+
"'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_BACK_PORCH=43'",
29+
"'-D ST7262_PANEL_CONFIG_TIMINGS_HSYNC_FRONT_PORCH=8'",
30+
"'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_PULSE_WIDTH=4'",
31+
"'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_BACK_PORCH=12'",
32+
"'-D ST7262_PANEL_CONFIG_TIMINGS_VSYNC_FRONT_PORCH=8'",
33+
"'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_HSYNC_IDLE_LOW=true'",
34+
"'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_VSYNC_IDLE_LOW=true'",
35+
"'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_DE_IDLE_HIGH=false'",
36+
"'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_PCLK_ACTIVE_NEG=true'",
37+
"'-D ST7262_PANEL_CONFIG_TIMINGS_FLAGS_PCLK_IDLE_HIGH=false'",
38+
"'-D ST7262_PANEL_CONFIG_DATA_WIDTH=16'",
39+
"'-D ST7262_PANEL_CONFIG_SRAM_TRANS_ALIGN=4'",
40+
"'-D ST7262_PANEL_CONFIG_PSRAM_TRANS_ALIGN=64'",
41+
"'-D ST7262_PANEL_CONFIG_HSYNC_GPIO_NUM=39'",
42+
"'-D ST7262_PANEL_CONFIG_VSYNC_GPIO_NUM=41'",
43+
"'-D ST7262_PANEL_CONFIG_DE_GPIO_NUM=40'",
44+
"'-D ST7262_PANEL_CONFIG_PCLK_GPIO_NUM=42'",
45+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_R0=8'",
46+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_R1=3'",
47+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_R2=46'",
48+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_R3=9'",
49+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_R4=1'",
50+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G0=5'",
51+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G1=6'",
52+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G2=7'",
53+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G3=15'",
54+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G4=16'",
55+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_G5=4'",
56+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_B0=45'",
57+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_B1=48'",
58+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_B2=47'",
59+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_B3=21'",
60+
"'-D ST7262_PANEL_CONFIG_DATA_GPIO_B4=14'",
61+
"'-D ST7262_PANEL_CONFIG_DISP_GPIO_NUM=GPIO_NUM_NC'",
62+
"'-D ST7262_PANEL_CONFIG_FLAGS_DISP_ACTIVE_LOW=false'",
63+
"'-D ST7262_PANEL_CONFIG_FLAGS_RELAX_ON_IDLE=false'",
64+
"'-D ST7262_PANEL_CONFIG_FLAGS_FB_IN_PSRAM=true'",
65+
"'-D BOARD_HAS_TOUCH'",
66+
"'-D TOUCH_XPT2046_SPI'",
67+
"'-D XPT2046_SPI_HOST=SPI2_HOST'",
68+
"'-D XPT2046_SPI_DMA_CHANNEL=SPI_DMA_CH_AUTO'",
69+
"'-D XPT2046_SPI_BUS_MOSI_IO_NUM=11'",
70+
"'-D XPT2046_SPI_BUS_MISO_IO_NUM=13'",
71+
"'-D XPT2046_SPI_BUS_SCLK_IO_NUM=12'",
72+
"'-D XPT2046_SPI_BUS_QUADWP_IO_NUM=GPIO_NUM_NC'",
73+
"'-D XPT2046_SPI_BUS_QUADHD_IO_NUM=GPIO_NUM_NC'",
74+
"'-D XPT2046_SPI_CONFIG_CS_GPIO_NUM=38'",
75+
"'-D XPT2046_SPI_CONFIG_DC_GPIO_NUM=GPIO_NUM_NC'",
76+
"'-D XPT2046_SPI_CONFIG_SPI_MODE=SPI_MODE0'",
77+
"'-D XPT2046_SPI_CONFIG_PCLK_HZ=2000000'",
78+
"'-D XPT2046_SPI_CONFIG_TRANS_QUEUE_DEPTH=3'",
79+
"'-D XPT2046_SPI_CONFIG_LCD_CMD_BITS=8'",
80+
"'-D XPT2046_SPI_CONFIG_LCD_PARAM_BITS=8'",
81+
"'-D XPT2046_SPI_CONFIG_FLAGS_DC_AS_CMD_PHASE=false'",
82+
"'-D XPT2046_SPI_CONFIG_FLAGS_DC_LOW_ON_DATA=false'",
83+
"'-D XPT2046_SPI_CONFIG_FLAGS_OCTAL_MODE=false'",
84+
"'-D XPT2046_SPI_CONFIG_FLAGS_LSB_FIRST=false'",
85+
"'-D XPT2046_TOUCH_CONFIG_X_MAX=LCD_WIDTH'",
86+
"'-D XPT2046_TOUCH_CONFIG_Y_MAX=LCD_HEIGHT'",
87+
"'-D XPT2046_TOUCH_CONFIG_RST_GPIO_NUM=GPIO_NUM_NC'",
88+
"'-D XPT2046_TOUCH_CONFIG_INT_GPIO_NUM=18'",
89+
"'-D XPT2046_TOUCH_CONFIG_LEVELS_RESET=0'",
90+
"'-D XPT2046_TOUCH_CONFIG_LEVELS_INTERRUPT=0'",
91+
"'-D TOUCH_SWAP_XY=false'",
92+
"'-D TOUCH_SWAP_X=false'",
93+
"'-D TOUCH_SWAP_Y=false'",
94+
"'-D BOARD_HAS_TF'",
95+
"'-D TF_CS=10'",
96+
"'-D TF_SPI_MOSI=11'",
97+
"'-D TF_SPI_SCLK=12'",
98+
"'-D TF_SPI_MISO=13'",
99+
100+
"'-DCYD_SCREEN_HEIGHT_PX=272'",
101+
"'-DCYD_SCREEN_WIDTH_PX=480'",
102+
"-DROTATION_INVERTED=LV_DISP_ROT_180",
103+
"-DROTATION_NORMAL=LV_DISP_ROT_NONE",
104+
"'-DCYD_SCREEN_GAP_PX=10'",
105+
"'-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35'",
106+
"'-DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=40'",
107+
"'-DCYD_SCREEN_FONT=lv_font_montserrat_16'",
108+
"'-DCYD_SCREEN_FONT_SMALL=lv_font_montserrat_12'",
109+
"'-DCYD_SCREEN_SIDEBAR_SIZE_PX=50'",
110+
"'-DCYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY=1'"
111+
],
112+
"f_cpu": "240000000L",
113+
"f_flash": "80000000L",
114+
"flash_mode": "qio",
115+
"hwids": [
116+
[
117+
"0x303A",
118+
"0x1001"
119+
]
120+
],
121+
"mcu": "esp32s3",
122+
"variant": "esp32s3"
123+
},
124+
"connectivity": [
125+
"wifi"
126+
],
127+
"debug": {
128+
"openocd_target": "esp32s3.cfg"
129+
},
130+
"frameworks": [
131+
"arduino",
132+
"espidf"
133+
],
134+
"name": "esp32-4827S043R-SD",
135+
"upload": {
136+
"flash_size": "16MB",
137+
"maximum_ram_size": 327680,
138+
"maximum_size": 16777216,
139+
"use_1200bps_touch": true,
140+
"wait_for_upload_port": true,
141+
"require_upload_port": true,
142+
"speed": 460800
143+
},
144+
"url": "https://www.aliexpress.com/item/1005004788147691.html",
145+
"vendor": "Sunton"
146+
}

CYD-Klipper/platformio.ini

+6-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
; https://docs.platformio.org/page/projectconf.html
1010

1111
[env]
12-
platform = espressif32
12+
platform = https://github.com/platformio/platform-espressif32#v6.4.0
1313
board = esp32dev
1414
framework = arduino
1515
monitor_speed = 115200
@@ -78,5 +78,9 @@ board = esp32-3248S035C-smartdisplay
7878
[env:esp32-4827S043C-SD]
7979
board = esp32-4827S043C-smartdisplay
8080

81+
[env:esp32-4827S043R-SD]
82+
board = esp32-4827S043C-smartdisplay
83+
8184
[env:esp32-8048S043C-SD]
82-
board = esp32-8048S043C-smartdisplay
85+
board = esp32-8048S043C-smartdisplay
86+

CYD-Klipper/src/conf/global_config.h

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ typedef struct _PRINTER_CONFIG {
3232
bool invert_colors : 1;
3333
unsigned char remaining_time_calc_mode : 2;
3434
unsigned char show_stats_on_progress_panel : 2;
35+
36+
bool custom_filament_move_macros : 1;
3537
};
3638
};
3739

CYD-Klipper/src/core/data_setup.cpp

+23-9
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ int klipper_request_consecutive_fail_count = 999;
1616
char filename_buff[512] = {0};
1717
SemaphoreHandle_t freezeRenderThreadSemaphore, freezeRequestThreadSemaphore;
1818
const long data_update_interval = 780;
19+
unsigned char lock_absolute_relative_mode_swap = 0;
1920

2021
void semaphore_init(){
2122
freezeRenderThreadSemaphore = xSemaphoreCreateMutex();
@@ -82,25 +83,29 @@ void move_printer(const char* axis, float amount, bool relative) {
8283

8384
char gcode[64];
8485
const char* extra = (amount > 0) ? "+" : "";
86+
const char* start = "";
87+
const char* end = "";
8588

8689
bool absolute_coords = printer.absolute_coords;
8790

8891
if (absolute_coords && relative) {
89-
send_gcode(true, "G91");
92+
start = "G91\n";
9093
}
9194
else if (!absolute_coords && !relative) {
92-
send_gcode(true, "G90");
95+
start = "G90\n";
9396
}
9497

95-
sprintf(gcode, "G1 %s%s%.3f F6000", axis, extra, amount);
96-
send_gcode(true, gcode);
97-
9898
if (absolute_coords && relative) {
99-
send_gcode(true, "G90");
99+
end = "\nG90";
100100
}
101101
else if (!absolute_coords && !relative) {
102-
send_gcode(true, "G91");
102+
end = "\nG91";
103103
}
104+
105+
sprintf(gcode, "%sG1 %s%s%.3f F6000%s", start, axis, extra, amount, end);
106+
send_gcode(true, gcode);
107+
108+
lock_absolute_relative_mode_swap = 2;
104109
}
105110

106111
int last_slicer_time_query = -15000;
@@ -192,7 +197,16 @@ void fetch_printer_data()
192197
printer.gcode_offset[1] = status["gcode_move"]["homing_origin"][1];
193198
printer.gcode_offset[2] = status["gcode_move"]["homing_origin"][2];
194199
bool absolute_coords = status["gcode_move"]["absolute_coordinates"];
195-
printer.absolute_coords = absolute_coords == true;
200+
201+
if (lock_absolute_relative_mode_swap > 0)
202+
{
203+
lock_absolute_relative_mode_swap--;
204+
}
205+
else
206+
{
207+
printer.absolute_coords = absolute_coords == true;
208+
}
209+
196210
printer.speed_mult = status["gcode_move"]["speed_factor"];
197211
printer.extrude_mult = status["gcode_move"]["extrude_factor"];
198212
printer.feedrate_mm_per_s = status["gcode_move"]["speed"];
@@ -212,7 +226,7 @@ void fetch_printer_data()
212226
if (status.containsKey("print_stats"))
213227
{
214228
const char *filename = status["print_stats"]["filename"];
215-
strcpy(filename_buff, filename);
229+
strcpy(filename_buff, filename == NULL ? "" : filename);
216230
printer.print_filename = filename_buff;
217231
printer.elapsed_time_s = status["print_stats"]["total_duration"];
218232
printer.printed_time_s = status["print_stats"]["print_duration"];

CYD-Klipper/src/ui/ip_setup.cpp

+30-11
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ static const lv_btnmatrix_ctrl_t kb_ctrl[] = {
3333
LV_KEYBOARD_CTRL_BTN_FLAGS | 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, LV_KEYBOARD_CTRL_BTN_FLAGS | 6
3434
};
3535

36+
static const char * hex_numpad_map[] = {
37+
"1", "2", "3", "f", LV_SYMBOL_BACKSPACE, "\n",
38+
"4", "5", "6", "e", LV_SYMBOL_OK, "\n",
39+
"7", "8", "9", "d", LV_SYMBOL_LEFT, "\n",
40+
"0", "a", "b", "c", LV_SYMBOL_RIGHT, NULL
41+
};
42+
43+
static const lv_btnmatrix_ctrl_t hex_numpad_ctrl[] = {
44+
1, 1, 1, 1, LV_KEYBOARD_CTRL_BTN_FLAGS | 1,
45+
1, 1, 1, 1, LV_KEYBOARD_CTRL_BTN_FLAGS | 1,
46+
1, 1, 1, 1, LV_KEYBOARD_CTRL_BTN_FLAGS | 1,
47+
1, 1, 1, 1, LV_KEYBOARD_CTRL_BTN_FLAGS | 1,
48+
};
49+
3650
enum connection_status_t {
3751
CONNECT_FAIL = 0,
3852
CONNECT_OK = 1,
@@ -62,6 +76,20 @@ static void keyboard_event_ip_entry(lv_event_t * e) {
6276
lv_obj_t * ta = lv_event_get_target(e);
6377
lv_obj_t * kb = (lv_obj_t *)lv_event_get_user_data(e);
6478

79+
if ((code == LV_EVENT_FOCUSED || code == LV_EVENT_DEFOCUSED) && ta != NULL)
80+
{
81+
// make sure we alter the keymap before taking actions that might
82+
// destroy the keyboard
83+
if (lv_obj_has_flag(ta, LV_OBJ_FLAG_USER_1))
84+
{
85+
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_1);
86+
}
87+
else
88+
{
89+
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
90+
}
91+
}
92+
6593
if(code == LV_EVENT_FOCUSED) {
6694
lv_keyboard_set_textarea(kb, ta);
6795
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
@@ -94,15 +122,6 @@ static void keyboard_event_ip_entry(lv_event_t * e) {
94122
{
95123
return;
96124
}
97-
98-
if (lv_obj_has_flag(ta, LV_OBJ_FLAG_USER_1))
99-
{
100-
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_1);
101-
}
102-
else
103-
{
104-
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
105-
}
106125
}
107126

108127
static void keyboard_event_auth_entry(lv_event_t * e) {
@@ -170,8 +189,8 @@ void show_auth_entry()
170189
lv_obj_set_flex_grow(passEntry, 1);
171190

172191
lv_keyboard_set_textarea(keyboard, passEntry);
173-
lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_USER_1, kb_map, kb_ctrl);
174-
lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_USER_1);
192+
lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_USER_2, hex_numpad_map, hex_numpad_ctrl);
193+
lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_USER_2);
175194
}
176195

177196
void show_ip_entry()

CYD-Klipper/src/ui/panels/move_panel.cpp

+13-2
Original file line numberDiff line numberDiff line change
@@ -312,19 +312,30 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
312312
inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){
313313
lv_obj_t * panel = lv_create_empty_panel(root_panel);
314314
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
315-
lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
316315
lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER);
317316

318317
lv_obj_t * label = lv_label_create(panel);
319318
lv_label_set_text(label, LV_SYMBOL_EYE_CLOSE " Steppers unlocked");
320319

321-
lv_obj_t * btn = lv_btn_create(panel);
320+
lv_obj_t * btn_row = lv_create_empty_panel(panel);
321+
lv_obj_set_size(btn_row, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
322+
lv_layout_flex_row(btn_row, LV_FLEX_ALIGN_CENTER);
323+
324+
lv_obj_t * btn = lv_btn_create(btn_row);
322325
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
323326
lv_obj_add_event_cb(btn, home_button_click, LV_EVENT_CLICKED, NULL);
324327

325328
label = lv_label_create(btn);
326329
lv_label_set_text(label, LV_SYMBOL_HOME "Home Axis");
327330
lv_obj_center(label);
331+
332+
btn = lv_btn_create(btn_row);
333+
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
334+
lv_obj_add_event_cb(btn, switch_to_stat_panel, LV_EVENT_CLICKED, NULL);
335+
336+
label = lv_label_create(btn);
337+
lv_label_set_text(label, LV_SYMBOL_SETTINGS "Parameters");
338+
lv_obj_center(label);
328339
}
329340

330341
static void root_panel_state_update(lv_event_t * e){

0 commit comments

Comments
 (0)