#!/usr/bin/env bash
#
# Build tests for LPC1769 (NXP ARM Cortex-M3)
#

# exit on first failure
set -e

#
# Build with the default configurations
#
use_example_configs Azteeg/X5GT
exec_test $1 $2 "Azteeg X5GT Example Configuration" "$3"

restore_configs
opt_set MOTHERBOARD BOARD_SMOOTHIEBOARD \
        EXTRUDERS 2 TEMP_SENSOR_0 -5 TEMP_SENSOR_1 -4 TEMP_SENSOR_BED 5 TEMP_0_CS_PIN P1_29 \
        MAG_MOUNTED_PROBE_SERVO_NR 0 GRID_MAX_POINTS_X 16 \
        NOZZLE_CLEAN_START_POINT "{ {  10, 10, 3 }, {  10, 10, 3 } }" \
        NOZZLE_CLEAN_END_POINT "{ {  10, 20, 3 }, {  10, 20, 3 } }"
opt_enable TFTGLCD_PANEL_SPI SDSUPPORT ADAPTIVE_FAN_SLOWING REPORT_ADAPTIVE_FAN_SLOWING TEMP_TUNING_MAINTAIN_FAN \
           MAX31865_SENSOR_OHMS_0 MAX31865_CALIBRATION_OHMS_0 \
           MAG_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR G29_RETRY_AND_RECOVER Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
           BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BED_TRAMMING_USE_PROBE BED_TRAMMING_VERIFY_RAISED \
           PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT \
           Z_SAFE_HOMING ADVANCED_PAUSE_FEATURE PARK_HEAD_ON_PAUSE \
           LCD_INFO_MENU ARC_SUPPORT BEZIER_CURVE_SUPPORT EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES SDCARD_SORT_ALPHA EMERGENCY_PARSER
exec_test $1 $2 "Smoothieboard with TFTGLCD_PANEL_SPI and many features" "$3"

#restore_configs
#opt_set MOTHERBOARD BOARD_AZTEEG_X5_MINI_WIFI
#opt_enable COREYX DAC_MOTOR_CURRENT_DEFAULT \
#           REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING \
#           AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS \
#           FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR FAN_SOFT_PWM \
#           SHOW_TEMP_ADC_VALUES HOME_Y_BEFORE_X EMERGENCY_PARSER \
#           SD_ABORT_ON_ENDSTOP_HIT ADVANCED_OK GCODE_MACROS \
#           VOLUMETRIC_DEFAULT_ON NO_WORKSPACE_OFFSETS \
#           EXTRA_FAN_SPEED FWRETRACT MENU_ADDAUTOSTART SDCARD_SORT_ALPHA
#opt_set FAN_MIN_PWM 50 FAN_KICKSTART_TIME 100 XY_FREQUENCY_LIMIT  15
#exec_test $1 $2 "Azteeg X5 MINI WIFI Many less common options" "$3"

restore_configs
use_example_configs delta/generic
opt_set MOTHERBOARD BOARD_COHESION3D_REMIX \
        TEMP_SENSOR_0 1 \
        X_DRIVER_TYPE TMC2130 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130 I_DRIVER_TYPE TB6560 \
        DEFAULT_AXIS_STEPS_PER_UNIT '{ 80, 80, 400, 500, 80 }' \
        DEFAULT_MAX_FEEDRATE '{ 187, 187, 5, 25, 187 }' \
        DEFAULT_MAX_ACCELERATION '{ 3000, 3000, 100, 10000, 3000 }' \
        MANUAL_FEEDRATE '{ 50*60, 50*60, 4*60, 2*60, 50*60 }' \
        AXIS_RELATIVE_MODES '{ false, false, false, false, false }' \
        HOMING_FEEDRATE_MM_M '{ (50*60), (50*60), (4*60), (50*60) }' \
        HOMING_BUMP_MM '{ 0, 0, 0, 0 }' HOMING_BUMP_DIVISOR '{ 1, 1, 1, 1 }' \
        NOZZLE_TO_PROBE_OFFSET '{ 0, 0, 0, 0 }' \
        I_MIN_PIN P1_25 \
        X_CURRENT_HOME 750 Y_CURRENT_HOME 750 Z_CURRENT_HOME 750
opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT MECHANICAL_GANTRY_CALIBRATION \
           TMC_USE_SW_SPI MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z HYBRID_THRESHOLD \
           SENSORLESS_HOMING Z_SAFE_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY Z_STALL_SENSITIVITY TMC_DEBUG \
           AUTO_BED_LEVELING_BILINEAR SENSORLESS_PROBING PROBING_USE_CURRENT_HOME \
           AXIS4_ROTATES I_MIN_POS I_MAX_POS I_HOME_DIR I_ENABLE_ON INVERT_I_DIR \
           EXPERIMENTAL_I2CBUS
opt_disable PSU_CONTROL Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
exec_test $1 $2 "Cohesion3D Remix DELTA | ABL Bilinear | EEPROM | Sensorless Homing/Probing | I Axis" "$3"

#
# SKR 1.4 Turbo with MMU3
#
restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO SERIAL_PORT -1 \
        BAUDRATE 115200 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209 \
        Z_DRIVER_TYPE TMC2209 Z2_DRIVER_TYPE TMC2209 E0_DRIVER_TYPE TMC2209 \
        EXTRUDERS 5 MMU_MODEL PRUSA_MMU3 HEATER_0_MAXTEMP 305 \
        BED_MAXTEMP 125 HOTEND_OVERSHOOT 5 INVERT_X_DIR true \
        INVERT_E0_DIR true X_BED_SIZE 235 Y_BED_SIZE 225 Z_MAX_POS 240 \
        GRID_MAX_POINTS_X 5 E0_AUTO_FAN_PIN FAN1_PIN \
        BLTOUCH_HS_MODE true BLTOUCH_HS_EXTRA_CLEARANCE 0 \
        Z_STEPPER_ALIGN_XY '{{10,110},{200,110}}' \
        Z_STEPPER_ALIGN_ITERATIONS 10 DEFAULT_STEPPER_TIMEOUT_SEC 0 \
        SLOWDOWN_DIVISOR 16 SDCARD_CONNECTION ONBOARD BLOCK_BUFFER_SIZE 64 \
        CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU_SERIAL_PORT 0 \
        Z_MIN_ENDSTOP_HIT_STATE HIGH
opt_enable PIDTEMPBED \
        FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE \
        BLTOUCH BLTOUCH_FORCE_SW_MODE USE_PROBE_FOR_Z_HOMING Z_SAFE_HOMING QUICK_HOME \
        Z_STEPPER_AUTO_ALIGN EVENT_GCODE_BEFORE_G34 EVENT_GCODE_AFTER_G34 \
        AUTO_BED_LEVELING_BILINEAR EXTRAPOLATE_BEYOND_GRID RESTORE_LEVELING_AFTER_G28 LCD_BED_LEVELING MESH_EDIT_MENU \
        EEPROM_SETTINGS EEPROM_AUTO_INIT \
        SDSUPPORT CR10_STOCKDISPLAY SPEAKER LCD_INFO_MENU STATUS_MESSAGE_SCROLLING \
        INPUT_SHAPING_X INPUT_SHAPING_Y SHAPING_MENU \
        BEZIER_CURVE_SUPPORT LIN_ADVANCE \
        TMC_DEBUG S_CURVE_ACCELERATION ADAPTIVE_STEP_SMOOTHING \
        SET_PROGRESS_MANUALLY M73_REPORT SHOW_REMAINING_TIME \
        PRINT_PROGRESS_SHOW_DECIMALS AUTO_REPORT_SD_STATUS USE_BIG_EDIT_FONT \
        BABYSTEPPING BABYSTEP_WITHOUT_HOMING BABYSTEP_ALWAYS_AVAILABLE \
        DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_DISPLAY_TOTAL \
        EMERGENCY_PARSER HOST_ACTION_COMMANDS HOST_PAUSE_M76 HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS \
        MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT MMU_MENUS MMU_DEBUG
opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE
exec_test $1 $2 "BigTreeTech SKR 1.4 Turbo | MMU3" "$3"
