12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
- #include "../../../../inc/MarlinConfigPre.h"
-
- #if HAS_TFT_LVGL_UI
-
- #include "SPI_TFT.h"
-
- #include "tft_lvgl_configuration.h"
-
- #include "pic_manager.h"
-
- #include "draw_ui.h"
- #include "mks_hardware_test.h"
-
- #include <SPI.h>
-
- #include "../../../../MarlinCore.h"
- #include "../../../../sd/cardreader.h"
- #include "../../../../module/motion.h"
- #include "../../../../module/planner.h"
-
- #if ENABLED(POWER_LOSS_RECOVERY)
- #include "../../../../feature/powerloss.h"
- #endif
-
- #if ENABLED(PARK_HEAD_ON_PAUSE)
- #include "../../../../feature/pause.h"
- #endif
-
- CFG_ITMES gCfgItems;
- UI_CFG uiCfg;
- DISP_STATE_STACK disp_state_stack;
- DISP_STATE disp_state = MAIN_UI;
- DISP_STATE last_disp_state;
- PRINT_TIME print_time;
- num_key_value_state value;
- keyboard_value_state keyboard_value;
-
- uint32_t To_pre_view;
- uint8_t gcode_preview_over;
- uint8_t flash_preview_begin;
- uint8_t default_preview_flg;
- uint32_t size = 809;
- uint16_t row;
- uint8_t temperature_change_frequency;
- uint8_t printing_rate_update_flag;
-
- extern uint8_t once_flag;
- extern uint8_t sel_id;
- extern uint8_t public_buf[512];
- extern uint8_t bmp_public_buf[17 * 1024];
-
- extern void LCD_IO_WriteData(uint16_t RegValue);
-
- static const char custom_gcode_command[][100] = {
- "G28\nG29\nM500",
- "G28",
- "G28",
- "G28",
- "G28"
- };
-
- lv_point_t line_points[4][2] = {
- {{PARA_UI_POS_X, PARA_UI_POS_Y + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y + PARA_UI_SIZE_Y}},
- {{PARA_UI_POS_X, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}},
- {{PARA_UI_POS_X, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}},
- {{PARA_UI_POS_X, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}}
- };
- void gCfgItems_init() {
- gCfgItems.multiple_language = MULTI_LANGUAGE_ENABLE;
- #if 1 // LCD_LANGUAGE == en
- gCfgItems.language = LANG_ENGLISH;
- #elif LCD_LANGUAGE == zh_CN
- gCfgItems.language = LANG_SIMPLE_CHINESE;
- #elif LCD_LANGUAGE == zh_TW
- gCfgItems.language = LANG_COMPLEX_CHINESE;
- #elif LCD_LANGUAGE == jp_kana
- gCfgItems.language = LANG_JAPAN;
- #elif LCD_LANGUAGE == de
- gCfgItems.language = LANG_GERMAN;
- #elif LCD_LANGUAGE == fr
- gCfgItems.language = LANG_FRENCH;
- #elif LCD_LANGUAGE == ru
- gCfgItems.language = LANG_RUSSIAN;
- #elif LCD_LANGUAGE == ko_KR
- gCfgItems.language = LANG_KOREAN;
- #elif LCD_LANGUAGE == tr
- gCfgItems.language = LANG_TURKISH;
- #elif LCD_LANGUAGE == es
- gCfgItems.language = LANG_SPANISH;
- #elif LCD_LANGUAGE == el
- gCfgItems.language = LANG_GREEK;
- #elif LCD_LANGUAGE == it
- gCfgItems.language = LANG_ITALY;
- #elif LCD_LANGUAGE == pt
- gCfgItems.language = LANG_PORTUGUESE;
- #endif
- gCfgItems.leveling_mode = 0;
- gCfgItems.from_flash_pic = 0;
- gCfgItems.curFilesize = 0;
- gCfgItems.finish_power_off = 0;
- gCfgItems.pause_reprint = 0;
- gCfgItems.pausePosX = -1;
- gCfgItems.pausePosY = -1;
- gCfgItems.pausePosZ = 5;
- gCfgItems.levelingPos[0][0] = X_MIN_POS + 30;
- gCfgItems.levelingPos[0][1] = Y_MIN_POS + 30;
- gCfgItems.levelingPos[1][0] = X_MAX_POS - 30;
- gCfgItems.levelingPos[1][1] = Y_MIN_POS + 30;
- gCfgItems.levelingPos[2][0] = X_MAX_POS - 30;
- gCfgItems.levelingPos[2][1] = Y_MAX_POS - 30;
- gCfgItems.levelingPos[3][0] = X_MIN_POS + 30;
- gCfgItems.levelingPos[3][1] = Y_MAX_POS - 30;
- gCfgItems.levelingPos[4][0] = X_BED_SIZE / 2;
- gCfgItems.levelingPos[4][1] = Y_BED_SIZE / 2;
- gCfgItems.cloud_enable = true;
- #if ENABLED(USE_WIFI_FUNCTION)
- gCfgItems.wifi_mode_sel = STA_MODEL;
- gCfgItems.fileSysType = FILE_SYS_SD;
- gCfgItems.wifi_type = ESP_WIFI;
- #endif
- gCfgItems.filamentchange_load_length = 200;
- gCfgItems.filamentchange_load_speed = 1000;
- gCfgItems.filamentchange_unload_length = 200;
- gCfgItems.filamentchange_unload_speed = 1000;
- gCfgItems.filament_limit_temper = 200;
-
- gCfgItems.encoder_enable = true;
-
- W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems.spi_flash_flag, VAR_INF_ADDR, sizeof(gCfgItems.spi_flash_flag));
- if (gCfgItems.spi_flash_flag == FLASH_INF_VALID_FLAG) {
- W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
- }
- else {
- gCfgItems.spi_flash_flag = FLASH_INF_VALID_FLAG;
- W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
- //init gcode command
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&custom_gcode_command[0], AUTO_LEVELING_COMMAND_ADDR, 100);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&custom_gcode_command[1], OTHERS_COMMAND_ADDR_1, 100);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&custom_gcode_command[2], OTHERS_COMMAND_ADDR_2, 100);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&custom_gcode_command[3], OTHERS_COMMAND_ADDR_3, 100);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&custom_gcode_command[4], OTHERS_COMMAND_ADDR_4, 100);
- }
-
- const byte rot = (TFT_ROTATION & TFT_ROTATE_180) ? 0xEE : 0x00;
- if (gCfgItems.disp_rotation_180 != rot) {
- gCfgItems.disp_rotation_180 = rot;
- update_spi_flash();
- }
-
- uiCfg.F[0] = 'N';
- uiCfg.F[1] = 'A';
- uiCfg.F[2] = 'N';
- uiCfg.F[3] = 'O';
- W25QXX.SPI_FLASH_BlockErase(REFLSHE_FLGA_ADD + 32 - 64*1024);
- W25QXX.SPI_FLASH_BufferWrite(uiCfg.F,REFLSHE_FLGA_ADD,4);
- }
-
- void ui_cfg_init() {
- uiCfg.curTempType = 0;
- uiCfg.curSprayerChoose = 0;
- uiCfg.stepHeat = 10;
- uiCfg.leveling_first_time = 0;
- uiCfg.para_ui_page = 0;
- uiCfg.extruStep = 5;
- uiCfg.extruSpeed = 10;
- uiCfg.move_dist = 1;
- uiCfg.moveSpeed = 3000;
- uiCfg.stepPrintSpeed = 10;
- uiCfg.command_send = 0;
- uiCfg.dialogType = 0;
- uiCfg.filament_heat_completed_load = 0;
- uiCfg.filament_rate = 0;
- uiCfg.filament_loading_completed = 0;
- uiCfg.filament_unloading_completed = 0;
- uiCfg.filament_loading_time_flg = 0;
- uiCfg.filament_loading_time_cnt = 0;
- uiCfg.filament_unloading_time_flg = 0;
- uiCfg.filament_unloading_time_cnt = 0;
-
- #if ENABLED(USE_WIFI_FUNCTION)
- memset(&wifiPara, 0, sizeof(wifiPara));
- memset(&ipPara, 0, sizeof(ipPara));
- strcpy(wifiPara.ap_name, WIFI_AP_NAME);
- strcpy(wifiPara.keyCode, WIFI_KEY_CODE);
- //client
- strcpy(ipPara.ip_addr, IP_ADDR);
- strcpy(ipPara.mask, IP_MASK);
- strcpy(ipPara.gate, IP_GATE);
- strcpy(ipPara.dns, IP_DNS);
-
- ipPara.dhcp_flag = IP_DHCP_FLAG;
-
- //AP
- strcpy(ipPara.dhcpd_ip, AP_IP_ADDR);
- strcpy(ipPara.dhcpd_mask, AP_IP_MASK);
- strcpy(ipPara.dhcpd_gate, AP_IP_GATE);
- strcpy(ipPara.dhcpd_dns, AP_IP_DNS);
- strcpy(ipPara.start_ip_addr, IP_START_IP);
- strcpy(ipPara.end_ip_addr, IP_END_IP);
-
- ipPara.dhcpd_flag = AP_IP_DHCP_FLAG;
-
- strcpy((char*)uiCfg.cloud_hostUrl, "baizhongyun.cn");
- uiCfg.cloud_port = 10086;
- #endif
-
- uiCfg.filament_loading_time = (uint32_t)((gCfgItems.filamentchange_load_length * 60.0 / gCfgItems.filamentchange_load_speed) + 0.5);
- uiCfg.filament_unloading_time = (uint32_t)((gCfgItems.filamentchange_unload_length * 60.0 / gCfgItems.filamentchange_unload_speed) + 0.5);
- }
-
- void update_spi_flash() {
- uint8_t command_buf[512];
-
- W25QXX.init(SPI_QUARTER_SPEED);
- //read back the gcode command befor erase spi flash
- W25QXX.SPI_FLASH_BufferRead((uint8_t *)&command_buf, GCODE_COMMAND_ADDR, sizeof(command_buf));
- W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&command_buf, GCODE_COMMAND_ADDR, sizeof(command_buf));
- }
-
- void update_gcode_command(int addr,uint8_t *s) {
- uint8_t command_buf[512];
-
- W25QXX.init(SPI_QUARTER_SPEED);
- //read back the gcode command befor erase spi flash
- W25QXX.SPI_FLASH_BufferRead((uint8_t *)&command_buf, GCODE_COMMAND_ADDR, sizeof(command_buf));
- W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR);
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
- switch (addr) {
- case AUTO_LEVELING_COMMAND_ADDR: memcpy(&command_buf[0*100], s, 100); break;
- case OTHERS_COMMAND_ADDR_1: memcpy(&command_buf[1*100], s, 100); break;
- case OTHERS_COMMAND_ADDR_2: memcpy(&command_buf[2*100], s, 100); break;
- case OTHERS_COMMAND_ADDR_3: memcpy(&command_buf[3*100], s, 100); break;
- case OTHERS_COMMAND_ADDR_4: memcpy(&command_buf[4*100], s, 100); break;
- default: break;
- }
- W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&command_buf, GCODE_COMMAND_ADDR, sizeof(command_buf));
- }
-
- void get_gcode_command(int addr,uint8_t *d) {
- W25QXX.init(SPI_QUARTER_SPEED);
- W25QXX.SPI_FLASH_BufferRead((uint8_t *)d, addr, 100);
- }
-
- lv_style_t tft_style_scr;
- lv_style_t tft_style_label_pre;
- lv_style_t tft_style_label_rel;
- lv_style_t style_line;
- lv_style_t style_para_value_pre;
- lv_style_t style_para_value_rel;
-
- lv_style_t style_num_key_pre;
- lv_style_t style_num_key_rel;
-
- lv_style_t style_num_text;
- lv_style_t style_sel_text;
-
- lv_style_t style_para_value;
- lv_style_t style_para_back;
-
- lv_style_t lv_bar_style_indic;
-
- void tft_style_init() {
- lv_style_copy(&tft_style_scr, &lv_style_scr);
- tft_style_scr.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_scr.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_scr.text.color = LV_COLOR_TEXT;
- tft_style_scr.text.sel_color = LV_COLOR_TEXT;
- tft_style_scr.line.width = 0;
- tft_style_scr.text.letter_space = 0;
- tft_style_scr.text.line_space = 0;
-
- lv_style_copy(&tft_style_label_pre, &lv_style_scr);
- lv_style_copy(&tft_style_label_rel, &lv_style_scr);
- tft_style_label_pre.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_label_pre.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_label_pre.text.color = LV_COLOR_TEXT;
- tft_style_label_pre.text.sel_color = LV_COLOR_TEXT;
- tft_style_label_rel.body.main_color = LV_COLOR_BACKGROUND;
- tft_style_label_rel.body.grad_color = LV_COLOR_BACKGROUND;
- tft_style_label_rel.text.color = LV_COLOR_TEXT;
- tft_style_label_rel.text.sel_color = LV_COLOR_TEXT;
- tft_style_label_pre.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
- tft_style_label_rel.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
- tft_style_label_pre.line.width = 0;
- tft_style_label_rel.line.width = 0;
- tft_style_label_pre.text.letter_space = 0;
- tft_style_label_rel.text.letter_space = 0;
- tft_style_label_pre.text.line_space = -5;
- tft_style_label_rel.text.line_space = -5;
-
- lv_style_copy(&style_para_value_pre, &lv_style_scr);
- lv_style_copy(&style_para_value_rel, &lv_style_scr);
- style_para_value_pre.body.main_color = LV_COLOR_BACKGROUND;
- style_para_value_pre.body.grad_color = LV_COLOR_BACKGROUND;
- style_para_value_pre.text.color = LV_COLOR_TEXT;
- style_para_value_pre.text.sel_color = LV_COLOR_TEXT;
- style_para_value_rel.body.main_color = LV_COLOR_BACKGROUND;
- style_para_value_rel.body.grad_color = LV_COLOR_BACKGROUND;
- style_para_value_rel.text.color = LV_COLOR_BLACK;
- style_para_value_rel.text.sel_color = LV_COLOR_BLACK;
- style_para_value_pre.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
- style_para_value_rel.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
- style_para_value_pre.line.width = 0;
- style_para_value_rel.line.width = 0;
- style_para_value_pre.text.letter_space = 0;
- style_para_value_rel.text.letter_space = 0;
- style_para_value_pre.text.line_space = -5;
- style_para_value_rel.text.line_space = -5;
-
- lv_style_copy(&style_num_key_pre, &lv_style_scr);
- lv_style_copy(&style_num_key_rel, &lv_style_scr);
- style_num_key_pre.body.main_color = LV_COLOR_KEY_BACKGROUND;
- style_num_key_pre.body.grad_color = LV_COLOR_KEY_BACKGROUND;
- style_num_key_pre.text.color = LV_COLOR_TEXT;
- style_num_key_pre.text.sel_color = LV_COLOR_TEXT;
- style_num_key_rel.body.main_color = LV_COLOR_KEY_BACKGROUND;
- style_num_key_rel.body.grad_color = LV_COLOR_KEY_BACKGROUND;
- style_num_key_rel.text.color = LV_COLOR_TEXT;
- style_num_key_rel.text.sel_color = LV_COLOR_TEXT;
- #if HAS_SPI_FLASH_FONT
- style_num_key_pre.text.font = &gb2312_puhui32;
- style_num_key_rel.text.font = &gb2312_puhui32;
- #else
- style_num_key_pre.text.font = LV_FONT_DEFAULT;
- style_num_key_rel.text.font = LV_FONT_DEFAULT;
- #endif
-
- style_num_key_pre.line.width = 0;
- style_num_key_rel.line.width = 0;
- style_num_key_pre.text.letter_space = 0;
- style_num_key_rel.text.letter_space = 0;
- style_num_key_pre.text.line_space = -5;
- style_num_key_rel.text.line_space = -5;
- lv_style_copy(&style_num_text, &lv_style_scr);
-
- style_num_text.body.main_color = LV_COLOR_WHITE;
- style_num_text.body.grad_color = LV_COLOR_WHITE;
- style_num_text.text.color = LV_COLOR_BLACK;
- style_num_text.text.sel_color = LV_COLOR_BLACK;
- style_num_text.text.font = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
- style_num_text.line.width = 0;
- style_num_text.text.letter_space = 0;
- style_num_text.text.line_space = -5;
-
- lv_style_copy(&style_sel_text, &lv_style_scr);
- style_sel_text.body.main_color = LV_COLOR_BACKGROUND;
- style_sel_text.body.grad_color = LV_COLOR_BACKGROUND;
- style_sel_text.text.color = LV_COLOR_YELLOW;
- style_sel_text.text.sel_color = LV_COLOR_YELLOW;
- style_sel_text.text.font = &gb2312_puhui32;
- style_sel_text.line.width = 0;
- style_sel_text.text.letter_space = 0;
- style_sel_text.text.line_space = -5;
- lv_style_copy(&style_line, &lv_style_plain);
- style_line.line.color = LV_COLOR_MAKE(0x49, 0x54, 0xFF);
- style_line.line.width = 1;
- style_line.line.rounded = 1;
-
- lv_style_copy(&style_para_value, &lv_style_plain);
- style_para_value.body.border.color = LV_COLOR_BACKGROUND;
- style_para_value.body.border.width = 1;
- style_para_value.body.main_color = LV_COLOR_WHITE;
- style_para_value.body.grad_color = LV_COLOR_WHITE;
- style_para_value.body.shadow.width = 0;
- style_para_value.body.radius = 3;
- style_para_value.text.color = LV_COLOR_BLACK;
- style_para_value.text.font = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
-
- lv_style_copy(&style_para_back, &lv_style_plain);
- style_para_back.body.border.color = LV_COLOR_BACKGROUND;
- style_para_back.body.border.width = 1;
- style_para_back.body.main_color = TFT_LV_PARA_BACK_BODY_COLOR;
- style_para_back.body.grad_color = TFT_LV_PARA_BACK_BODY_COLOR;
- style_para_back.body.shadow.width = 0;
- style_para_back.body.radius = 3;
- style_para_back.text.color = LV_COLOR_WHITE;
- style_para_back.text.font = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
-
- lv_style_copy(&lv_bar_style_indic, &lv_style_pretty_color);
- lv_bar_style_indic.text.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.image.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.line.color = lv_color_hex3(0xADF);
- lv_bar_style_indic.body.main_color = lv_color_hex3(0xADF);
- lv_bar_style_indic.body.grad_color = lv_color_hex3(0xADF);
- lv_bar_style_indic.body.border.color = lv_color_hex3(0xADF);
-
- }
-
- #define MAX_TITLE_LEN 28
-
- char public_buf_m[100] = {0};
- char public_buf_l[30];
-
- void titleText_cat(char *str, int strSize, char *addPart) {
- if (str == 0 || addPart == 0) return;
- if ((int)(strlen(str) + strlen(addPart)) >= strSize) return;
- strcat(str, addPart);
- }
-
- char *getDispText(int index) {
-
- ZERO(public_buf_l);
-
- switch (disp_state_stack._disp_state[index]) {
- case PRINT_READY_UI:
- strcpy(public_buf_l, main_menu.title);
- break;
- case PRINT_FILE_UI:
- strcpy(public_buf_l, file_menu.title);
- break;
- case PRINTING_UI:
- if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- #ifndef TFT35
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- #endif
- ) strcpy(public_buf_l, common_menu.print_special_title);
- else strcpy(public_buf_l, printing_menu.title);
- break;
- case MOVE_MOTOR_UI:
- strcpy(public_buf_l, move_menu.title);
- break;
- case OPERATE_UI:
- if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- #ifndef TFT35
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- #endif
- ) strcpy(public_buf_l, common_menu.operate_special_title);
- else strcpy(public_buf_l, operation_menu.title);
- break;
-
- case PAUSE_UI:
- if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
- ) strcpy(public_buf_l, common_menu.pause_special_title);
- else strcpy(public_buf_l, pause_menu.title);
- break;
-
- case EXTRUSION_UI:
- strcpy(public_buf_l, extrude_menu.title);
- break;
- case CHANGE_SPEED_UI:
- strcpy(public_buf_l, speed_menu.title);
- break;
- case FAN_UI:
- strcpy(public_buf_l, fan_menu.title);
- break;
- case PRE_HEAT_UI:
- if ((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI))
- strcpy(public_buf_l, preheat_menu.adjust_title);
- else strcpy(public_buf_l, preheat_menu.title);
- break;
- case SET_UI:
- strcpy(public_buf_l, set_menu.title);
- break;
- case ZERO_UI:
- strcpy(public_buf_l, home_menu.title);
- break;
- case SPRAYER_UI: break;
- case MACHINE_UI: break;
- case LANGUAGE_UI:
- strcpy(public_buf_l, language_menu.title);
- break;
- case ABOUT_UI:
- strcpy(public_buf_l, about_menu.title);
- break;
- case LOG_UI: break;
- case DISK_UI:
- strcpy(public_buf_l, filesys_menu.title);
- break;
- case DIALOG_UI:
- strcpy(public_buf_l, common_menu.dialog_confirm_title);
- break;
- case WIFI_UI:
- strcpy(public_buf_l, wifi_menu.title);
- break;
- case MORE_UI:
- case PRINT_MORE_UI:
- strcpy(public_buf_l, more_menu.title);
- break;
- case FILAMENTCHANGE_UI:
- strcpy(public_buf_l, filament_menu.title);
- break;
- case LEVELING_UI:
- case MESHLEVELING_UI:
- strcpy(public_buf_l, leveling_menu.title);
- break;
- case BIND_UI:
- strcpy(public_buf_l, cloud_menu.title);
- break;
- case TOOL_UI:
- strcpy(public_buf_l, tool_menu.title);
- break;
- case WIFI_LIST_UI:
- #if ENABLED(USE_WIFI_FUNCTION)
- strcpy(public_buf_l, list_menu.title);
- break;
- #endif
- case MACHINE_PARA_UI:
- strcpy(public_buf_l, MachinePara_menu.title);
- break;
- case BABY_STEP_UI:
- strcpy(public_buf_l, operation_menu.babystep);
- break;
- case EEPROM_SETTINGS_UI:
- strcpy(public_buf_l, eeprom_menu.title);
- break;
- default: break;
- }
-
- return public_buf_l;
- }
-
- char *creat_title_text() {
- int index = 0;
- char *tmpText = 0;
- char tmpCurFileStr[20];
-
- ZERO(tmpCurFileStr);
-
- #if _LFN_UNICODE
- //cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr);
- #else
- cutFileName(list_file.long_name[sel_id], 16, 16, tmpCurFileStr);
- #endif
-
- ZERO(public_buf_m);
-
- while (index <= disp_state_stack._disp_index) {
- tmpText = getDispText(index);
- if ((*tmpText == 0) || (tmpText == 0)) {
- index++;
- continue;
- }
-
- titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
- if (index < disp_state_stack._disp_index) titleText_cat(public_buf_m, sizeof(public_buf_m), (char *)">");
-
- index++;
- }
-
- if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
- /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
- || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/
- ) {
- titleText_cat(public_buf_m, sizeof(public_buf_m), (char *)":");
- titleText_cat(public_buf_m, sizeof(public_buf_m), tmpCurFileStr);
- }
-
- if (strlen(public_buf_m) > MAX_TITLE_LEN) {
- ZERO(public_buf_m);
- tmpText = getDispText(0);
- if (*tmpText != 0) {
- titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
- titleText_cat(public_buf_m, sizeof(public_buf_m), (char *)">...>");
- tmpText = getDispText(disp_state_stack._disp_index);
- if (*tmpText != 0) titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
- }
- }
-
- return public_buf_m;
- }
-
- #if HAS_GCODE_PREVIEW
-
- uint32_t gPicturePreviewStart = 0;
-
- void preview_gcode_prehandle(char *path) {
- #if ENABLED(SDSUPPORT)
- //uint8_t re;
- //uint32_t read;
- uint32_t pre_read_cnt = 0;
- uint32_t *p1;
- char *cur_name;
-
- gPicturePreviewStart = 0;
- cur_name = strrchr(path, '/');
- card.openFileRead(cur_name);
- card.read(public_buf, 512);
- p1 = (uint32_t *)strstr((char *)public_buf, ";simage:");
-
- if (p1) {
- pre_read_cnt = (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
-
- To_pre_view = pre_read_cnt;
- gcode_preview_over = 1;
- gCfgItems.from_flash_pic = 1;
- update_spi_flash();
- }
- else {
- gcode_preview_over = 0;
- default_preview_flg = 1;
- gCfgItems.from_flash_pic = 0;
- update_spi_flash();
- }
- card.closefile();
- #endif
- }
-
- #if 1
-
- void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
- #if ENABLED(SDSUPPORT)
- //uint8_t ress;
- //uint32_t write;
- volatile uint32_t i, j;
- volatile uint16_t *p_index;
- //int res;
- char *cur_name;
-
- cur_name = strrchr(path, '/');
- card.openFileRead(cur_name);
-
- if (gPicturePreviewStart <= 0) {
- while (1) {
- uint32_t br = card.read(public_buf, 400);
- uint32_t* p1 = (uint32_t *)strstr((char *)public_buf, ";gimage:");
- if (p1) {
- gPicturePreviewStart += (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
- break;
- }
- else {
- gPicturePreviewStart += br;
- }
- if (br < 400) break;
- }
- }
-
- card.setIndex((gPicturePreviewStart + To_pre_view) + size * row + 8);
- SPI_TFT.setWindow(xpos_pixel, ypos_pixel + row, 200, 1);
-
- j = i = 0;
-
- while (1) {
- card.read(public_buf, 400);
- for (i = 0; i < 400;) {
- bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
- i += 2;
- j++;
- }
- if (j >= 400) break;
- }
- for (i = 0; i < 400; i += 2) {
- p_index = (uint16_t *)(&bmp_public_buf[i]);
- if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full;
- }
- SPI_TFT.tftio.WriteSequence((uint16_t*)bmp_public_buf, 200);
- #if HAS_BAK_VIEW_IN_FLASH
- W25QXX.init(SPI_QUARTER_SPEED);
- if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
- W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
- #endif
- row++;
- if (row >= 200) {
- size = 809;
- row = 0;
-
- gcode_preview_over = 0;
- //flash_preview_begin = 1;
-
- card.closefile();
-
- /*
- if (gCurFileState.file_open_flag != 0xAA) {
- reset_file_info();
- res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
- if (res == FR_OK) {
- f_lseek(file,PREVIEW_SIZE+To_pre_view);
- gCurFileState.file_open_flag = 0xAA;
- //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
- srcfp = file;
- mksReprint.mks_printer_state = MKS_WORKING;
- once_flag = 0;
- }
- }
- */
- char *cur_name;
-
- cur_name = strrchr(list_file.file_name[sel_id], '/');
-
- SdFile file;
- SdFile *curDir;
- card.endFilePrint();
- const char * const fname = card.diveToFile(true, curDir, cur_name);
- if (!fname) return;
- if (file.open(curDir, fname, O_READ)) {
- gCfgItems.curFilesize = file.fileSize();
- file.close();
- update_spi_flash();
- }
-
- card.openFileRead(cur_name);
- if (card.isFileOpen()) {
- feedrate_percentage = 100;
- //saved_feedrate_percentage = feedrate_percentage;
- planner.flow_percentage[0] = 100;
- planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
- #if HAS_MULTI_EXTRUDER
- planner.flow_percentage[1] = 100;
- planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
- #endif
- card.startFileprint();
- TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
- once_flag = 0;
- }
- return;
- }
- card.closefile();
- #endif // SDSUPPORT
- }
-
- #else // if 1
-
- void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
- #if ENABLED(SDSUPPORT)
- //uint8_t ress;
- //uint32_t write;
- volatile uint32_t i, j;
- volatile uint16_t *p_index;
- //int res;
- char *cur_name;
- uint16_t Color;
-
- cur_name = strrchr(path, '/');
- card.openFileRead(cur_name);
-
- card.setIndex((PREVIEW_LITTLE_PIC_SIZE + To_pre_view) + size * row + 8);
- #if HAS_TFT_LVGL_UI_SPI
- SPI_TFT.setWindow(xpos_pixel, ypos_pixel + row, 200, 1);
- #else
- LCD_setWindowArea(xpos_pixel, ypos_pixel + row, 200, 1);
- LCD_WriteRAM_Prepare();
- #endif
-
- j = 0;
- i = 0;
-
- while (1) {
- card.read(public_buf, 400);
- for (i = 0; i < 400;) {
- bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
- i += 2;
- j++;
- }
-
- //if (i > 800) break;
- //#ifdef TFT70
- // if (j > 400) {
- // f_read(file, buff_pic, 1, &read);
- // break;
- // }
- //#elif defined(TFT35)
- if (j >= 400)
- //f_read(file, buff_pic, 1, &read);
- break;
- //#endif
-
- }
- #if HAS_TFT_LVGL_UI_SPI
- for (i = 0; i < 400;) {
- p_index = (uint16_t *)(&bmp_public_buf[i]);
-
- Color = (*p_index >> 8);
- *p_index = Color | ((*p_index & 0xFF) << 8);
- i += 2;
- if (*p_index == 0x0000) *p_index = 0xC318;
- }
- TFT_CS_L;
- TFT_DC_H;
- SPI.dmaSend(bmp_public_buf, 400, true);
- TFT_CS_H;
-
- #else
- for (i = 0; i < 400;) {
- p_index = (uint16_t *)(&bmp_public_buf[i]);
- if (*p_index == 0x0000) *p_index = 0x18C3;
- LCD_IO_WriteData(*p_index);
- i = i + 2;
- }
- #endif
- W25QXX.init(SPI_QUARTER_SPEED);
- if (row < 20)
- W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
- W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
- row++;
- if (row >= 200) {
- size = 809;
- row = 0;
-
- gcode_preview_over = 0;
- //flash_preview_begin = 1;
-
- card.closefile();
-
- /*
- if (gCurFileState.file_open_flag != 0xAA) {
- reset_file_info();
- res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
- if (res == FR_OK) {
- f_lseek(file,PREVIEW_SIZE+To_pre_view);
- gCurFileState.file_open_flag = 0xAA;
- //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
- srcfp = file;
- mksReprint.mks_printer_state = MKS_WORKING;
- once_flag = 0;
- }
- }
- */
- char *cur_name;
-
- cur_name = strrchr(list_file.file_name[sel_id], '/');
-
- SdFile file;
- SdFile *curDir;
- card.endFilePrint();
- const char * const fname = card.diveToFile(true, curDir, cur_name);
- if (!fname) return;
- if (file.open(curDir, fname, O_READ)) {
- gCfgItems.curFilesize = file.fileSize();
- file.close();
- update_spi_flash();
- }
-
- card.openFileRead(cur_name);
- if (card.isFileOpen()) {
- feedrate_percentage = 100;
- //saved_feedrate_percentage = feedrate_percentage;
- planner.flow_percentage[0] = 100;
- planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
- #if HAS_MULTI_EXTRUDER
- planner.flow_percentage[1] = 100;
- planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
- #endif
- card.startFileprint();
- TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
- once_flag = 0;
- }
- return;
- }
- card.closefile();
- #endif // SDSUPPORT
- }
-
- #endif // if 1
-
- void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
- int index;
- int y_off = 0;
- W25QXX.init(SPI_QUARTER_SPEED);
- for (index = 0; index < 10; index++) { // 200*200
- #if HAS_BAK_VIEW_IN_FLASH
- if (sel == 1) {
- flash_view_Read(bmp_public_buf, 8000); // 20k
- }
- else {
- default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 8k
- }
- #else
- default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 8k
- #endif
-
- SPI_TFT.setWindow(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); // 200*200
- SPI_TFT.tftio.WriteSequence((uint16_t*)(bmp_public_buf), DEFAULT_VIEW_MAX_SIZE / 20);
-
- y_off++;
- }
- W25QXX.init(SPI_QUARTER_SPEED);
- }
-
- void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
- if (gcode_preview_over == 1) gcode_preview(list_file.file_name[sel_id], xpos_pixel, ypos_pixel);
- #if HAS_BAK_VIEW_IN_FLASH
- if (flash_preview_begin == 1) {
- flash_preview_begin = 0;
- Draw_default_preview(xpos_pixel, ypos_pixel, 1);
- }
- #endif
- #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
- if (default_preview_flg == 1) {
- Draw_default_preview(xpos_pixel, ypos_pixel, 0);
- default_preview_flg = 0;
- }
- #endif
- }
- #endif // HAS_GCODE_PREVIEW
-
- void print_time_run() {
- static uint8_t lastSec = 0;
-
- if (print_time.seconds >= 60) {
- print_time.seconds = 0;
- print_time.minutes++;
- if (print_time.minutes >= 60) {
- print_time.minutes = 0;
- print_time.hours++;
- }
- }
- if (disp_state == PRINTING_UI) {
- if (lastSec != print_time.seconds) disp_print_time();
- lastSec = print_time.seconds;
- }
- }
-
- void GUI_RefreshPage() {
- if ((systick_uptime_millis % 1000) == 0) temperature_change_frequency = 1;
- if ((systick_uptime_millis % 3000) == 0) printing_rate_update_flag = 1;
-
- switch (disp_state) {
- case MAIN_UI:
- //lv_draw_ready_print();
- break;
- case EXTRUSION_UI:
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_hotend_temp();
- }
- break;
- case PRE_HEAT_UI:
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_desire_temp();
- }
- break;
- case PRINT_READY_UI:
- /*
- if (gCfgItems.display_style == 2) {
- if (temperature_change_frequency) {
- temperature_change_frequency = 0;
- disp_restro_state();
- }
- }
- */
- break;
-
- case PRINT_FILE_UI: break;
-
- case PRINTING_UI:
- if (temperature_change_frequency) {
- temperature_change_frequency = 0;
- disp_ext_temp();
- disp_bed_temp();
- disp_fan_speed();
- disp_print_time();
- disp_fan_Zpos();
- }
- if (printing_rate_update_flag || marlin_state == MF_SD_COMPLETE) {
- printing_rate_update_flag = 0;
- if (gcode_preview_over == 0) setProBarRate();
- }
- break;
-
- case OPERATE_UI:
- /*
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_temp_operate();
- }
-
- setProBarRateOpera();
- */
- break;
-
- case PAUSE_UI:
- /*
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_temp_pause();
- }
- */
- break;
-
- case FAN_UI:
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_fan_value();
- }
- break;
-
- case MOVE_MOTOR_UI:
- /*
- if (mksReprint.mks_printer_state == MKS_IDLE) {
- if ((z_high_count==1)&&(temper_error_flg != 1)) {
- z_high_count = 0;
- {
- memset((char *)gCfgItems.move_z_coordinate, ' ', sizeof(gCfgItems.move_z_coordinate));
- GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
- sprintf_P((char *)gCfgItems.move_z_coordinate, PSTR("Z: %.3f"), current_position[Z_AXIS]);
- GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
- }
- }
- }
- */
- break;
-
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_UI:
- if (temperature_change_frequency == 1) {
- disp_wifi_state();
- temperature_change_frequency = 0;
- }
- break;
- #endif
-
- case BIND_UI:
- /*refresh_bind_ui();*/
- break;
-
- case FILAMENTCHANGE_UI:
- if (temperature_change_frequency) {
- temperature_change_frequency = 0;
- disp_filament_temp();
- }
- break;
- case DIALOG_UI:
- filament_dialog_handle();
- TERN_(USE_WIFI_FUNCTION, wifi_scan_handle());
- break;
- case MESHLEVELING_UI:
- /*disp_zpos();*/
- break;
- case HARDWARE_TEST_UI:
- break;
- case WIFI_LIST_UI:
- #if ENABLED(USE_WIFI_FUNCTION)
- if (printing_rate_update_flag == 1) {
- disp_wifi_list();
- printing_rate_update_flag = 0;
- }
- #endif
- break;
- case KEY_BOARD_UI:
- /*update_password_disp();
- update_join_state_disp();*/
- break;
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_TIPS_UI:
- switch (wifi_tips_type) {
- case TIPS_TYPE_JOINING:
- if (wifi_link_state == WIFI_CONNECTED && strcmp((const char *)wifi_list.wifiConnectedName,(const char *)wifi_list.wifiName[wifi_list.nameIndex]) == 0) {
- tips_disp.timer = TIPS_TIMER_STOP;
- tips_disp.timer_count = 0;
-
- lv_clear_wifi_tips();
- wifi_tips_type = TIPS_TYPE_WIFI_CONECTED;
- lv_draw_wifi_tips();
-
- }
- if (tips_disp.timer_count >= 30 * 1000) {
- tips_disp.timer = TIPS_TIMER_STOP;
- tips_disp.timer_count = 0;
- lv_clear_wifi_tips();
- wifi_tips_type = TIPS_TYPE_TAILED_JOIN;
- lv_draw_wifi_tips();
- }
- break;
- case TIPS_TYPE_TAILED_JOIN:
- if (tips_disp.timer_count >= 3 * 1000) {
- tips_disp.timer = TIPS_TIMER_STOP;
- tips_disp.timer_count = 0;
-
- last_disp_state = WIFI_TIPS_UI;
- lv_clear_wifi_tips();
- lv_draw_wifi_list();
- }
- break;
- case TIPS_TYPE_WIFI_CONECTED:
- if (tips_disp.timer_count >= 3 * 1000) {
- tips_disp.timer = TIPS_TIMER_STOP;
- tips_disp.timer_count = 0;
-
- last_disp_state = WIFI_TIPS_UI;
- lv_clear_wifi_tips();
- lv_draw_wifi();
- }
- break;
- default: break;
- }
- break;
- #endif
-
- case BABY_STEP_UI:
- if (temperature_change_frequency == 1) {
- temperature_change_frequency = 0;
- disp_z_offset_value();
- }
- break;
- default: break;
- }
-
- print_time_run();
- }
-
- void clear_cur_ui() {
- last_disp_state = disp_state_stack._disp_state[disp_state_stack._disp_index];
-
- switch (disp_state_stack._disp_state[disp_state_stack._disp_index]) {
- case PRINT_READY_UI:
- //Get_Temperature_Flg = 0;
- lv_clear_ready_print();
- break;
- case PRINT_FILE_UI:
- lv_clear_print_file();
- break;
- case PRINTING_UI:
- lv_clear_printing();
- break;
- case MOVE_MOTOR_UI:
- lv_clear_move_motor();
- break;
- case OPERATE_UI:
- lv_clear_operation();
- break;
- case PAUSE_UI:
- //Clear_pause();
- break;
- case EXTRUSION_UI:
- lv_clear_extrusion();
- break;
- case PRE_HEAT_UI:
- lv_clear_preHeat();
- break;
- case CHANGE_SPEED_UI:
- lv_clear_change_speed();
- break;
- case FAN_UI:
- lv_clear_fan();
- break;
- case SET_UI:
- lv_clear_set();
- break;
- case ZERO_UI:
- lv_clear_home();
- break;
- case SPRAYER_UI:
- //Clear_Sprayer();
- break;
- case MACHINE_UI:
- //Clear_Machine();
- break;
- case LANGUAGE_UI:
- lv_clear_language();
- break;
- case ABOUT_UI:
- lv_clear_about();
- break;
- case LOG_UI:
- //Clear_Connect();
- break;
- case DISK_UI:
- //Clear_Disk();
- break;
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_UI:
- lv_clear_wifi();
- break;
- #endif
- case MORE_UI:
- //Clear_more();
- break;
- case FILETRANSFER_UI:
- //Clear_fileTransfer();
- break;
- case DIALOG_UI:
- lv_clear_dialog();
- break;
- case FILETRANSFERSTATE_UI:
- //Clear_WifiFileTransferdialog();
- break;
- case PRINT_MORE_UI:
- //Clear_Printmore();
- break;
- case FILAMENTCHANGE_UI:
- lv_clear_filament_change();
- break;
- case LEVELING_UI:
- lv_clear_manualLevel();
- break;
- case BIND_UI:
- //Clear_Bind();
- break;
- #if HAS_BED_PROBE
- case NOZZLE_PROBE_OFFSET_UI:
- lv_clear_auto_level_offset_settings();
- break;
- #endif
- case TOOL_UI:
- lv_clear_tool();
- break;
- case MESHLEVELING_UI:
- //Clear_MeshLeveling();
- break;
- case HARDWARE_TEST_UI:
- //Clear_Hardwaretest();
- break;
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_LIST_UI:
- lv_clear_wifi_list();
- break;
- #endif
- case KEY_BOARD_UI:
- lv_clear_keyboard();
- break;
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_TIPS_UI:
- lv_clear_wifi_tips();
- break;
- #endif
- case MACHINE_PARA_UI:
- lv_clear_machine_para();
- break;
- case MACHINE_SETTINGS_UI:
- lv_clear_machine_settings();
- break;
- case TEMPERATURE_SETTINGS_UI:
- //Clear_TemperatureSettings();
- break;
- case MOTOR_SETTINGS_UI:
- lv_clear_motor_settings();
- break;
- case MACHINETYPE_UI:
- //Clear_MachineType();
- break;
- case STROKE_UI:
- //Clear_Stroke();
- break;
- case HOME_DIR_UI:
- //Clear_HomeDir();
- break;
- case ENDSTOP_TYPE_UI:
- //Clear_EndstopType();
- break;
- case FILAMENT_SETTINGS_UI:
- lv_clear_filament_settings();
- break;
- case LEVELING_SETTIGNS_UI:
- //Clear_LevelingSettings();
- break;
- case LEVELING_PARA_UI:
- lv_clear_level_settings();
- break;
- case DELTA_LEVELING_PARA_UI:
- //Clear_DeltaLevelPara();
- break;
- case MANUAL_LEVELING_POSIGION_UI:
- lv_clear_manual_level_pos_settings();
- break;
- case MAXFEEDRATE_UI:
- lv_clear_max_feedrate_settings();
- break;
- case STEPS_UI:
- lv_clear_step_settings();
- break;
- case ACCELERATION_UI:
- lv_clear_acceleration_settings();
- break;
- case JERK_UI:
- #if HAS_CLASSIC_JERK
- lv_clear_jerk_settings();
- #endif
- break;
- case MOTORDIR_UI:
- //Clear_MotorDir();
- break;
- case HOMESPEED_UI:
- //Clear_HomeSpeed();
- break;
- case NOZZLE_CONFIG_UI:
- //Clear_NozzleConfig();
- break;
- case HOTBED_CONFIG_UI:
- //Clear_HotbedConfig();
- break;
- case ADVANCED_UI:
- lv_clear_advance_settings();
- break;
- case DOUBLE_Z_UI:
- //Clear_DoubleZ();
- break;
- case ENABLE_INVERT_UI:
- //Clear_EnableInvert();
- break;
- case NUMBER_KEY_UI:
- lv_clear_number_key();
- break;
- case BABY_STEP_UI:
- lv_clear_baby_stepping();
- break;
- case PAUSE_POS_UI:
- lv_clear_pause_position();
- break;
- #if HAS_TRINAMIC_CONFIG
- case TMC_CURRENT_UI:
- lv_clear_tmc_current_settings();
- break;
- #endif
- case EEPROM_SETTINGS_UI:
- lv_clear_eeprom_settings();
- break;
- #if HAS_STEALTHCHOP
- case TMC_MODE_UI:
- lv_clear_tmc_step_mode_settings();
- break;
- #endif
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_SETTINGS_UI:
- lv_clear_wifi_settings();
- break;
- #endif
- #if USE_SENSORLESS
- case HOMING_SENSITIVITY_UI:
- lv_clear_homing_sensitivity_settings();
- break;
- #endif
- #if HAS_ROTARY_ENCODER
- case ENCODER_SETTINGS_UI:
- lv_clear_encoder_settings();
- break;
- #endif
- default: break;
- }
- //GUI_Clear();
- }
-
- void draw_return_ui() {
- if (disp_state_stack._disp_index > 0) {
- disp_state_stack._disp_index--;
-
- switch (disp_state_stack._disp_state[disp_state_stack._disp_index]) {
- case PRINT_READY_UI:
- lv_draw_ready_print();
- break;
- case PRINT_FILE_UI:
- lv_draw_print_file();
- break;
- case PRINTING_UI:
- if (gCfgItems.from_flash_pic == 1) flash_preview_begin = 1;
- else default_preview_flg = 1;
- lv_draw_printing();
- break;
- case MOVE_MOTOR_UI:
- lv_draw_move_motor();
- break;
- case OPERATE_UI:
- lv_draw_operation();
- break;
-
- #if 1
- case PAUSE_UI:
- //draw_pause();
- break;
- #endif
-
- case EXTRUSION_UI:
- lv_draw_extrusion();
- break;
- case PRE_HEAT_UI:
- lv_draw_preHeat();
- break;
- case CHANGE_SPEED_UI:
- lv_draw_change_speed();
- break;
- case FAN_UI:
- lv_draw_fan();
- break;
- case SET_UI:
- lv_draw_set();
- break;
- case ZERO_UI:
- lv_draw_home();
- break;
- case SPRAYER_UI:
- //draw_Sprayer();
- break;
- case MACHINE_UI:
- //draw_Machine();
- break;
- case LANGUAGE_UI:
- lv_draw_language();
- break;
- case ABOUT_UI:
- lv_draw_about();
- break;
-
- case CALIBRATE_UI:
- //draw_calibrate();
- break;
- case DISK_UI:
- //draw_Disk();
- break;
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_UI:
- lv_draw_wifi();
- break;
- #endif
- case MORE_UI:
- //draw_More();
- break;
- case PRINT_MORE_UI:
- //draw_printmore();
- break;
- case FILAMENTCHANGE_UI:
- lv_draw_filament_change();
- break;
- case LEVELING_UI:
- lv_draw_manualLevel();
- break;
- case BIND_UI:
- //draw_bind();
- break;
- #if HAS_BED_PROBE
- case NOZZLE_PROBE_OFFSET_UI:
- lv_draw_auto_level_offset_settings();
- break;
- #endif
- case TOOL_UI:
- lv_draw_tool();
- break;
- case MESHLEVELING_UI:
- //draw_meshleveling();
- break;
- case HARDWARE_TEST_UI:
- //draw_Hardwaretest();
- break;
- case WIFI_LIST_UI:
- #if ENABLED(USE_WIFI_FUNCTION)
- lv_draw_wifi_list();
- #endif
- break;
- case KEY_BOARD_UI:
- lv_draw_keyboard();
- break;
- case WIFI_TIPS_UI:
- #if ENABLED(USE_WIFI_FUNCTION)
- lv_draw_wifi_tips();
- #endif
- break;
- case MACHINE_PARA_UI:
- lv_draw_machine_para();
- break;
- case MACHINE_SETTINGS_UI:
- lv_draw_machine_settings();
- break;
- case TEMPERATURE_SETTINGS_UI:
- //draw_TemperatureSettings();
- break;
- case MOTOR_SETTINGS_UI:
- lv_draw_motor_settings();
- break;
- case MACHINETYPE_UI:
- //draw_MachineType();
- break;
- case STROKE_UI:
- //draw_Stroke();
- break;
- case HOME_DIR_UI:
- //draw_HomeDir();
- break;
- case ENDSTOP_TYPE_UI:
- //draw_EndstopType();
- break;
- case FILAMENT_SETTINGS_UI:
- lv_draw_filament_settings();
- break;
- case LEVELING_SETTIGNS_UI:
- //draw_LevelingSettings();
- break;
- case LEVELING_PARA_UI:
- lv_draw_level_settings();
- break;
- case DELTA_LEVELING_PARA_UI:
- //draw_DeltaLevelPara();
- break;
- case MANUAL_LEVELING_POSIGION_UI:
- lv_draw_manual_level_pos_settings();
- break;
- case MAXFEEDRATE_UI:
- lv_draw_max_feedrate_settings();
- break;
- case STEPS_UI:
- lv_draw_step_settings();
- break;
- case ACCELERATION_UI:
- lv_draw_acceleration_settings();
- break;
- case JERK_UI:
- #if HAS_CLASSIC_JERK
- lv_draw_jerk_settings();
- #endif
- break;
- case MOTORDIR_UI:
- //draw_MotorDir();
- break;
- case HOMESPEED_UI:
- //draw_HomeSpeed();
- break;
- case NOZZLE_CONFIG_UI:
- //draw_NozzleConfig();
- break;
- case HOTBED_CONFIG_UI:
- //draw_HotbedConfig();
- break;
- case ADVANCED_UI:
- lv_draw_advance_settings();
- break;
- case DOUBLE_Z_UI:
- //draw_DoubleZ();
- break;
- case ENABLE_INVERT_UI:
- //draw_EnableInvert();
- break;
- case NUMBER_KEY_UI:
- lv_draw_number_key();
- break;
- case DIALOG_UI:
- //draw_dialog(uiCfg.dialogType);
- break;
- case BABY_STEP_UI:
- lv_draw_baby_stepping();
- break;
- case PAUSE_POS_UI:
- lv_draw_pause_position();
- break;
- #if HAS_TRINAMIC_CONFIG
- case TMC_CURRENT_UI:
- lv_draw_tmc_current_settings();
- break;
- #endif
- case EEPROM_SETTINGS_UI:
- lv_draw_eeprom_settings();
- break;
- #if HAS_STEALTHCHOP
- case TMC_MODE_UI:
- lv_draw_tmc_step_mode_settings();
- break;
- #endif
- #if ENABLED(USE_WIFI_FUNCTION)
- case WIFI_SETTINGS_UI:
- lv_draw_wifi_settings();
- break;
- #endif
- #if USE_SENSORLESS
- case HOMING_SENSITIVITY_UI:
- lv_draw_homing_sensitivity_settings();
- break;
- #endif
- #if HAS_ROTARY_ENCODER
- case ENCODER_SETTINGS_UI:
- lv_draw_encoder_settings();
- break;
- #endif
- default: break;
- }
- }
- }
-
- #if ENABLED(SDSUPPORT)
-
- void sd_detection() {
- static bool last_sd_status;
- const bool sd_status = IS_SD_INSERTED();
- if (sd_status != last_sd_status) {
- last_sd_status = sd_status;
- if (sd_status) card.mount(); else card.release();
- }
- }
-
- #endif
-
- void lv_ex_line(lv_obj_t * line, lv_point_t *points) {
- // Copy the previous line and apply the new style
- lv_line_set_points(line, points, 2); // Set the points
- lv_line_set_style(line, LV_LINE_STYLE_MAIN, &style_line);
- lv_obj_align(line, NULL, LV_ALIGN_IN_TOP_MID, 0, 0);
- }
-
- extern volatile uint32_t systick_uptime_millis;
-
- void print_time_count() {
- if ((systick_uptime_millis % 1000) == 0)
- if (print_time.start == 1) print_time.seconds++;
- }
-
- void LV_TASK_HANDLER() {
- //lv_tick_inc(1);
- lv_task_handler();
- if (mks_test_flag == 0x1E) mks_hardware_test();
-
- #if HAS_GCODE_PREVIEW
- disp_pre_gcode(2, 36);
- #endif
-
- GUI_RefreshPage();
-
- #if ENABLED(USE_WIFI_FUNCTION)
- get_wifi_commands();
- #endif
-
- //sd_detection();
-
- #if HAS_ROTARY_ENCODER
- if (gCfgItems.encoder_enable) lv_update_encoder();
- #endif
- }
-
- #endif // HAS_TFT_LVGL_UI
|