diff --git a/.github/workflows/ci-build-tests.yml b/.github/workflows/ci-build-tests.yml index b65a71ab56..34dbb4fd23 100644 --- a/.github/workflows/ci-build-tests.yml +++ b/.github/workflows/ci-build-tests.yml @@ -21,6 +21,7 @@ on: branches: - bugfix-2.1.x - 2.1.x + - release-* paths-ignore: - config/** - data/** diff --git a/Marlin/Version.h b/Marlin/Version.h index 01c62e024f..96220f7f0e 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 "2025-06-23" +//#define STRING_DISTRIBUTION_DATE "2025-06-29" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/feature/digipot/digipot_mcp4451.cpp b/Marlin/src/feature/digipot/digipot_mcp4451.cpp index 156755856c..e35b42a28b 100644 --- a/Marlin/src/feature/digipot/digipot_mcp4451.cpp +++ b/Marlin/src/feature/digipot/digipot_mcp4451.cpp @@ -87,7 +87,13 @@ void DigipotI2C::init() { Wire.begin(); #endif // Set up initial currents as defined in Configuration_adv.h - static const float digipot_motor_current[] PROGMEM = TERN(DIGIPOT_USE_RAW_VALUES, DIGIPOT_MOTOR_CURRENT, DIGIPOT_I2C_MOTOR_CURRENTS); + static const float digipot_motor_current[] PROGMEM = + #if ENABLED(DIGIPOT_USE_RAW_VALUES) + DIGIPOT_MOTOR_CURRENT + #else + DIGIPOT_I2C_MOTOR_CURRENTS + #endif + ; for (uint8_t i = 0; i < COUNT(digipot_motor_current); ++i) set_current(i, pgm_read_float(&digipot_motor_current[i])); } diff --git a/Marlin/src/feature/powerloss.cpp b/Marlin/src/feature/powerloss.cpp index 7cb826674a..d9af336d3a 100644 --- a/Marlin/src/feature/powerloss.cpp +++ b/Marlin/src/feature/powerloss.cpp @@ -420,8 +420,11 @@ void PrintJobRecovery::resume() { #endif // Interpret the saved Z according to flags - const float z_print = resume_pos.z, - z_raised = z_print + info.zraise; + const float z_print = resume_pos.z; + + #if ANY(Z_HOME_TO_MAX, POWER_LOSS_RECOVER_ZHOME) || DISABLED(BELTPRINTER) + const float z_raised = z_print + info.zraise; + #endif // // Home the axes that can safely be homed, and diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp index af963cf4ce..5a3c1752d3 100644 --- a/Marlin/src/feature/tmc_util.cpp +++ b/Marlin/src/feature/tmc_util.cpp @@ -290,12 +290,13 @@ SString<50>(F(" driver overtemperature warning! ("), st.getMilliamps(), F("mA)")).echoln(); } - template - void report_polled_driver_data(TMC &st, const TMC_driver_data &data) { - const uint32_t pwm_scale = get_pwm_scale(st); - st.printLabel(); - SString<60> report(':', pwm_scale); - #if ENABLED(TMC_DEBUG) + #if ENABLED(TMC_DEBUG) + + template + void report_polled_driver_data(TMC &st, const TMC_driver_data &data) { + const uint32_t pwm_scale = get_pwm_scale(st); + st.printLabel(); + SString<60> report(':', pwm_scale); #if HAS_TMCX1X0_OR_2240 || HAS_TMC220x report.append('/', data.cs_actual); #endif @@ -306,22 +307,21 @@ else report += '-'; #endif - #endif - report += '|'; - if (st.error_count) report += 'E'; // Error - if (data.is_ot) report += 'O'; // Over-temperature - if (data.is_otpw) report += 'W'; // over-temperature pre-Warning - #if ENABLED(TMC_DEBUG) + report += '|'; + if (st.error_count) report += 'E'; // Error + if (data.is_ot) report += 'O'; // Over-temperature + if (data.is_otpw) report += 'W'; // over-temperature pre-Warning if (data.is_stall) report += 'G'; // stallGuard if (data.is_stealth) report += 'T'; // stealthChop if (data.is_standstill) report += 'I'; // standstIll - #endif - if (st.flag_otpw) report += 'F'; // otpw Flag - report += '|'; - if (st.otpw_count > 0) report += st.otpw_count; - report += '\t'; - report.echo(); - } + if (st.flag_otpw) report += 'F'; // otpw Flag + report += '|'; + if (st.otpw_count > 0) report += st.otpw_count; + report += '\t'; + report.echo(); + } + + #endif // TMC_DEBUG #if CURRENT_STEP_DOWN > 0 diff --git a/Marlin/src/gcode/feature/trinamic/M920.cpp b/Marlin/src/gcode/feature/trinamic/M920.cpp index 2852f8bf44..f123c41622 100644 --- a/Marlin/src/gcode/feature/trinamic/M920.cpp +++ b/Marlin/src/gcode/feature/trinamic/M920.cpp @@ -40,44 +40,44 @@ * M920: Set Homing Current for one or more axes * * Parameters: - * X[current] - Homing Current to use for X axis stepper(s) - * Y[current] - Homing Current to use for Y axis stepper(s) - * Z[current] - Homing Current to use for Z axis stepper(s) - * A[current] - Homing Current to use for A axis stepper(s) - * B[current] - Homing Current to use for B axis stepper(s) - * C[current] - Homing Current to use for C axis stepper(s) - * U[current] - Homing Current to use for U axis stepper(s) - * V[current] - Homing Current to use for V axis stepper(s) - * W[current] - Homing Current to use for W axis stepper(s) + * X - Homing Current to use for X axis stepper(s) + * Y - Homing Current to use for Y axis stepper(s) + * Z - Homing Current to use for Z axis stepper(s) + * A - Homing Current to use for A axis stepper(s) + * B - Homing Current to use for B axis stepper(s) + * C - Homing Current to use for C axis stepper(s) + * U - Homing Current to use for U axis stepper(s) + * V - Homing Current to use for V axis stepper(s) + * W - Homing Current to use for W axis stepper(s) * * I - For multi-stepper axes, the zero-based index of the stepper to modify in each axis. * If omitted all steppers of each axis will be set to the given axis current. */ void GcodeSuite::M920() { bool report = true; - const uint8_t index = parser.byteval(I_PARAM); + const int8_t index = parser.intval(I_PARAM, -1); LOOP_NUM_AXES(i) if (parser.seen(AXIS_CHAR(i))) { const int16_t value = parser.value_int(); report = false; switch (i) { #if X_HAS_HOME_CURRENT case X_AXIS: - if (index < 1) homing_current_mA.X = value; - TERN_(X2_HAS_HOME_CURRENT, if (!index || index == 1) homing_current_mA.X2 = value); + if (index <= 0) homing_current_mA.X = value; + TERN_(X2_HAS_HOME_CURRENT, if (index < 0 || index == 1) homing_current_mA.X2 = value); break; #endif #if Y_HAS_HOME_CURRENT case Y_AXIS: - if (index < 1) homing_current_mA.Y = value; - TERN_(Y2_HAS_HOME_CURRENT, if (!index || index == 1) homing_current_mA.Y2 = value); + if (index <= 0) homing_current_mA.Y = value; + TERN_(Y2_HAS_HOME_CURRENT, if (index < 0 || index == 1) homing_current_mA.Y2 = value); break; #endif #if Z_HAS_HOME_CURRENT case Z_AXIS: - if (index < 1) homing_current_mA.Z = value; - TERN_(Z2_HAS_HOME_CURRENT, if (!index || index == 1) homing_current_mA.Z2 = value); - TERN_(Z3_HAS_HOME_CURRENT, if (!index || index == 2) homing_current_mA.Z3 = value); - TERN_(Z4_HAS_HOME_CURRENT, if (!index || index == 3) homing_current_mA.Z4 = value); + if (index <= 0) homing_current_mA.Z = value; + TERN_(Z2_HAS_HOME_CURRENT, if (index < 0 || index == 1) homing_current_mA.Z2 = value); + TERN_(Z3_HAS_HOME_CURRENT, if (index < 0 || index == 2) homing_current_mA.Z3 = value); + TERN_(Z4_HAS_HOME_CURRENT, if (index < 0 || index == 3) homing_current_mA.Z4 = value); break; #endif OPTCODE(I_HAS_HOME_CURRENT, case I_AXIS: homing_current_mA.I = value; break) @@ -97,7 +97,7 @@ void GcodeSuite::M920_report(const bool forReplay/*=true*/) { report_heading(forReplay, F(STR_HOMING_CURRENT)); - auto say_M920 = [](const bool forReplay, int16_t index=-1) { + auto say_M920 = [](const bool forReplay, int8_t index=-1) { report_echo_start(forReplay); SERIAL_ECHOPGM(" M920"); if (index >= 0) SERIAL_ECHOPGM(" " I_PARAM_STR, index); @@ -113,6 +113,7 @@ void GcodeSuite::M920_report(const bool forReplay/*=true*/) { TERN_(Y_SENSORLESS, SERIAL_ECHOPGM_P(SP_Y_STR, homing_current_mA.Y)); TERN_(Z_SENSORLESS, SERIAL_ECHOPGM_P(SP_Z_STR, homing_current_mA.Z)); #if X2_SENSORLESS || Y2_SENSORLESS || Z2_SENSORLESS || Z3_SENSORLESS || Z4_SENSORLESS + SERIAL_EOL(); say_M920(forReplay); #endif TERN_(I_SENSORLESS, SERIAL_ECHOPGM_P(SP_I_STR, homing_current_mA.I)); diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5885f7dddd..463dc0e82c 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 "2025-06-23" + #define STRING_DISTRIBUTION_DATE "2025-06-29" #endif /** diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp index 359122f8b6..a7507bd1e8 100644 --- a/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp +++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.cpp @@ -853,9 +853,18 @@ void MarlinUI::draw_status_message(const bool blink) { if (printJobOngoing()) { char buffer[8]; const duration_t remaint = get_remaining_time(); - const uint8_t timepos = TPOFFSET - remaint.toDigital(buffer); - IF_DISABLED(LCD_INFO_SCREEN_STYLE, lcd_put_lchar(timepos - 1, 2, 0x20)); - lcd_put_lchar(TERN(LCD_INFO_SCREEN_STYLE, 11, timepos), 2, 'R'); + #if LCD_INFO_SCREEN_STYLE == 0 + const uint8_t timepos = TPOFFSET - remaint.toDigital(buffer); + lcd_put_lchar(timepos - 1, 2, ' '); + #endif + lcd_put_lchar( + #if LCD_INFO_SCREEN_STYLE == 0 + timepos + #else + 11 + #endif + , 2, 'R' + ); lcd_put_u8str(buffer); } } @@ -866,9 +875,18 @@ void MarlinUI::draw_status_message(const bool blink) { const duration_t interactt = interaction_time; if (printingIsActive() && interactt.value) { char buffer[8]; - const uint8_t timepos = TPOFFSET - interactt.toDigital(buffer); - IF_DISABLED(LCD_INFO_SCREEN_STYLE, lcd_put_lchar(timepos - 1, 2, 0x20)); - lcd_put_lchar(TERN(LCD_INFO_SCREEN_STYLE, 11, timepos), 2, 'C'); + #if LCD_INFO_SCREEN_STYLE == 0 + const uint8_t timepos = TPOFFSET - interactt.toDigital(buffer); + lcd_put_lchar(timepos - 1, 2, ' '); + #endif + lcd_put_lchar( + #if LCD_INFO_SCREEN_STYLE == 0 + timepos + #else + 11 + #endif + , 2, 'C' + ); lcd_put_u8str(buffer); } } @@ -879,9 +897,18 @@ void MarlinUI::draw_status_message(const bool blink) { if (printJobOngoing()) { char buffer[8]; const duration_t elapsedt = print_job_timer.duration(); - const uint8_t timepos = TPOFFSET - elapsedt.toDigital(buffer); - IF_DISABLED(LCD_INFO_SCREEN_STYLE, lcd_put_lchar(timepos - 1, 2, 0x20)); - lcd_put_lchar(TERN(LCD_INFO_SCREEN_STYLE, 11, timepos), 2, 'E'); + #if LCD_INFO_SCREEN_STYLE == 0 + const uint8_t timepos = TPOFFSET - elapsedt.toDigital(buffer); + lcd_put_lchar(timepos - 1, 2, ' '); + #endif + lcd_put_lchar( + #if LCD_INFO_SCREEN_STYLE == 0 + timepos + #else + 11 + #endif + , 2, 'E' + ); lcd_put_u8str(buffer); } } diff --git a/Marlin/src/lcd/extui/mks_ui/draw_advance_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_advance_settings.cpp index 92acae2a47..1d31e13cef 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_advance_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_advance_settings.cpp @@ -74,10 +74,13 @@ void lv_draw_advance_settings() { scr = lv_screen_create(ADVANCED_UI, machine_menu.AdvancedConfTitle); int index = 0; - lv_screen_menu_item(scr, machine_menu.PausePosition, PARA_UI_POS_X, PARA_UI_POS_Y, event_handler, ID_PAUSE_POS, index++); - lv_screen_menu_item(scr, machine_menu.FilamentConf, PARA_UI_POS_X, PARA_UI_POS_Y * 2, event_handler, ID_FILAMENT_SETTINGS, index++); + lv_screen_menu_item(scr, machine_menu.PausePosition, PARA_UI_POS_X, PARA_UI_POS_Y, event_handler, ID_PAUSE_POS, index); + index++; + lv_screen_menu_item(scr, machine_menu.FilamentConf, PARA_UI_POS_X, PARA_UI_POS_Y * 2, event_handler, ID_FILAMENT_SETTINGS, index); + index++; #if ENABLED(MKS_WIFI_MODULE) - lv_screen_menu_item(scr, machine_menu.WifiSettings, PARA_UI_POS_X, PARA_UI_POS_Y * 3, event_handler, ID_WIFI_PARA, index++); + lv_screen_menu_item(scr, machine_menu.WifiSettings, PARA_UI_POS_X, PARA_UI_POS_Y * 3, event_handler, ID_WIFI_PARA, index); + index++; #endif #if HAS_ROTARY_ENCODER lv_screen_menu_item(scr, machine_menu.EncoderSettings, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_ENCODER_SETTINGS, index); diff --git a/Marlin/src/lcd/extui/mks_ui/draw_motor_settings.cpp b/Marlin/src/lcd/extui/mks_ui/draw_motor_settings.cpp index 08e2dd8763..5800c74461 100644 --- a/Marlin/src/lcd/extui/mks_ui/draw_motor_settings.cpp +++ b/Marlin/src/lcd/extui/mks_ui/draw_motor_settings.cpp @@ -69,17 +69,21 @@ void lv_draw_motor_settings() { scr = lv_screen_create(MOTOR_SETTINGS_UI, machine_menu.MotorConfTitle); #if ENABLED(EDITABLE_STEPS_PER_UNIT) - lv_screen_menu_item(scr, machine_menu.StepsConf, PARA_UI_POS_X, PARA_UI_POS_Y, event_handler, ID_MOTOR_STEPS, index++); + lv_screen_menu_item(scr, machine_menu.StepsConf, PARA_UI_POS_X, PARA_UI_POS_Y, event_handler, ID_MOTOR_STEPS, index); + index++; #endif #if USE_SENSORLESS - lv_screen_menu_item(scr, machine_menu.HomingSensitivityConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_HOME_SENSE, index++); + lv_screen_menu_item(scr, machine_menu.HomingSensitivityConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_HOME_SENSE, index); + index++; #endif #if HAS_TRINAMIC_CONFIG - lv_screen_menu_item(scr, machine_menu.TMCcurrentConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_MOTOR_TMC_CURRENT, index++); + lv_screen_menu_item(scr, machine_menu.TMCcurrentConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_MOTOR_TMC_CURRENT, index); + index++; #if HAS_STEALTHCHOP - lv_screen_menu_item(scr, machine_menu.TMCStepModeConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_MOTOR_STEP_MODE, index++); + lv_screen_menu_item(scr, machine_menu.TMCStepModeConf, PARA_UI_POS_X, PARA_UI_POS_Y * (index + 1), event_handler, ID_MOTOR_STEP_MODE, index); + index++; #endif #endif lv_big_button_create(scr, "F:/bmp_back70x40.bin", common_menu.text_back, PARA_UI_BACK_POS_X + 10, PARA_UI_BACK_POS_Y, event_handler, ID_MOTOR_RETURN, true); diff --git a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp index e6adbcbc03..31f08d2852 100644 --- a/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp +++ b/Marlin/src/lcd/extui/mks_ui/wifi_module.cpp @@ -887,8 +887,6 @@ uint8_t exploreDisk(const char * const path, const uint8_t recu_level, const boo const int16_t fileCnt = card.get_num_items(); - MediaFile file; - MediaFile *diveDir; for (int16_t i = 0; i < fileCnt; i++) { card.selectFileByIndexSorted(i); @@ -913,7 +911,7 @@ uint8_t exploreDisk(const char * const path, const uint8_t recu_level, const boo } static void wifi_gcode_exec(uint8_t * const cmd_line) { - int8_t tempBuf[100] = { 0 }; + char tempBuf[100] = { '\0' }; int cmd_value; volatile int print_rate; @@ -961,7 +959,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { while (mStr[index] == ' ') index++; if (gCfgItems.wifi_type == ESP_WIFI) { - char * const path = (char *)tempBuf; + char * const path = tempBuf; if (strlen(&mStr[index]) < 80) { print_to_wifi(STR_BEGIN_FILE_LIST "\r\n"); @@ -1149,7 +1147,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED|| uiCfg.print_state == REPRINTING) { print_rate = uiCfg.totalSend; ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("M27 %d\r\n"), print_rate); + sprintf_P(tempBuf, PSTR("M27 %d\r\n"), print_rate); print_to_wifi(tempBuf); } break; @@ -1166,11 +1164,11 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { if (gCfgItems.fileSysType == FILE_SYS_SD) { ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("%s"), file_writer.saveFileName); + sprintf_P(tempBuf, PSTR("%s"), file_writer.saveFileName); } else if (gCfgItems.fileSysType == FILE_SYS_USB) { ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("%s"), (char *)file_writer.saveFileName); + sprintf_P(tempBuf, PSTR("%s"), (char *)file_writer.saveFileName); } mount_file_sys(gCfgItems.fileSysType); @@ -1181,7 +1179,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { ZERO(file_writer.saveFileName); strcpy((char *)file_writer.saveFileName, &mStr[index]); ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("Writing to file: %s\r\n"), (char *)file_writer.saveFileName); + sprintf_P(tempBuf, PSTR("Writing to file: %s\r\n"), (char *)file_writer.saveFileName); wifi_ret_ack(); print_to_wifi(tempBuf); wifi_link_state = WIFI_WAIT_TRANS_START; @@ -1203,7 +1201,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { send_ok_to_wifi(); - char *outBuf = (char *)tempBuf; + char *outBuf = tempBuf; char tbuf[34]; sprintf_P(tbuf, PSTR("%d /%d"), thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0)); @@ -1237,7 +1235,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { strcat_P(outBuf, PSTR(" @:0 B@:0\r\n")); } else { - sprintf_P((char *)tempBuf, PSTR("T:%d /%d B:%d /%d T0:%d /%d T1:%d /%d @:0 B@:0\r\n"), + sprintf_P(tempBuf, PSTR("T:%d /%d B:%d /%d T0:%d /%d T1:%d /%d @:0 B@:0\r\n"), thermalManager.wholeDegHotend(0), thermalManager.degTargetHotend(0), TERN0(HAS_HEATED_BED, thermalManager.wholeDegBed()), TERN0(HAS_HEATED_BED, thermalManager.degTargetBed()), @@ -1254,7 +1252,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { case 992: if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED) { ZERO(tempBuf); - sprintf_P((char *)tempBuf, PSTR("M992 %d%d:%d%d:%d%d\r\n"), print_time.hours/10, print_time.hours%10, print_time.minutes/10, print_time.minutes%10, print_time.seconds/10, print_time.seconds%10); + sprintf_P(tempBuf, PSTR("M992 %d%d:%d%d:%d%d\r\n"), print_time.hours/10, print_time.hours%10, print_time.minutes/10, print_time.minutes%10, print_time.seconds/10, print_time.seconds%10); wifi_ret_ack(); print_to_wifi(tempBuf); } @@ -1264,7 +1262,7 @@ static void wifi_gcode_exec(uint8_t * const cmd_line) { if (uiCfg.print_state == WORKING || uiCfg.print_state == PAUSED) { ZERO(tempBuf); if (strlen((char *)list_file.file_name[sel_id]) > (100 - 1)) return; - sprintf_P((char *)tempBuf, PSTR("M994 %s;%d\n"), list_file.file_name[sel_id], (int)gCfgItems.curFilesize); + sprintf_P(tempBuf, PSTR("M994 %s;%d\n"), list_file.file_name[sel_id], (int)gCfgItems.curFilesize); wifi_ret_ack(); print_to_wifi(tempBuf); } diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index b1f1f2cf40..8cacc7dfc2 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -107,6 +107,8 @@ xyz_pos_t Probe::offset; // Initialized by settings.load #if HAS_PROBE_XY_OFFSET const xy_pos_t &Probe::offset_xy = Probe::offset; +#else + constexpr xy_pos_t Probe::offset_xy; #endif #if ENABLED(SENSORLESS_PROBING) diff --git a/buildroot/bin/build_example b/buildroot/bin/build_example index 133f3c4cc9..433cdeb81a 100755 --- a/buildroot/bin/build_example +++ b/buildroot/bin/build_example @@ -188,7 +188,7 @@ echo "Building example $CONFIG..." # If doing many builds get a list of all environment names, # which also gives us the number of environments. if ((MANY)); then - ENVLIST=$(mfenvs) # BOARD_NAME_STRING (1234): [ env1 env2 env3 ... ] + ENVLIST=$(mfenvs -n) # BOARD_NAME_STRING (1234): [ env1 env2 env3 ... ] ENVLIST=${ENVLIST##*: [ } ENVARRAY=(${ENVLIST% ]}) ENVCOUNT=${#ENVARRAY[*]} @@ -236,7 +236,7 @@ while ((1)); do fi # When building many, create sub-folders for each build env name - if [[ -n $MANY && $ENVCOUNT -gt 1 ]]; then + if [[ -n $MANY ]]; then ENV=${ENVARRAY[BUILDINDEX-1]} ARCENVSUB="$ARCSUB/$ENV" else diff --git a/buildroot/bin/mfenvs b/buildroot/bin/mfenvs index 3c726af53c..38e5d55405 100755 --- a/buildroot/bin/mfenvs +++ b/buildroot/bin/mfenvs @@ -1,6 +1,7 @@ #!/usr/bin/env bash # # mfenvs Print the current board and environment information +# Use -n to remove "*_xfer" environments from the list. # Output -> "SHORT_NAME (###): [ env1 env2 env3 ... ]" # @@ -27,6 +28,7 @@ BLINE=$( grep -E "define\s+BOARD_$MB\b" Marlin/src/core/boards.h ) BNUM=$( sed -E 's/^.+BOARD_[^ ]+ +([0-9]+).+$/\1/' <<<"$BLINE" ) [[ -z $BNUM ]] && { echo "Error - Can't find BOARD_$MB in core/boards.h." ; exit 1 ; } ENVS=( $( grep -EA1 "MB\(.*\b$MB\b.*\)" Marlin/src/pins/pins.h | grep -E "#include.+//.+(env|$SYS):[^ ]+" | grep -oE "(env|$SYS):[^ ]+" | sed -E "s/(env|$SYS)://" ) ) +[[ "$1" = "-n" ]] && ENVS=( $(printf "%s\n" "${ENVS[@]}" | grep -v "_xfer$") ) [[ -z $ENVS ]] && { errout "Error - Can't find target(s) for $MB ($BNUM)." ; exit 1 ; } ECOUNT=${#ENVS[*]} [[ $ECOUNT == 1 ]] && EOUT=$ENVS || EOUT="${ENVS[@]}" diff --git a/ini/stm32f1-maple.ini b/ini/stm32f1-maple.ini index 17bcb2eb60..dd72b8980c 100644 --- a/ini/stm32f1-maple.ini +++ b/ini/stm32f1-maple.ini @@ -270,7 +270,7 @@ board_build.ldscript = mks_robin_pro.ld # [env:trigorilla_pro_maple] extends = env:mks_robin_maple -build_flags = ${env:mks_robin_maple} -DSTM32_FLASH_SIZE=512 +build_flags = ${env:mks_robin_maple.build_flags} -DSTM32_FLASH_SIZE=512 # # MKS Robin E3D (STM32F103RCT6) and