#!/usr/bin/env bash
#
# Build tests for mega2560ext - AVR ATmega (extended)
#

# exit on first failure
set -e

#
# Build with the default config plus DGUS_LCD_UI FYSETC
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI FYSETC
exec_test $1 $2 "DGUS (FYSETC)" "$3"

#
# Test DGUS_LCD_UI MKS
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_SERIAL_PORT 1 DGUS_LCD_UI MKS
exec_test $1 $2 "DGUS (MKS)" "$3"

#
# Test DGUS_LCD_UI RELOADED
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 TEMP_SENSOR_BED 2 LCD_SERIAL_PORT 1 DGUS_LCD_UI RELOADED GRID_MAX_POINTS_X 5
opt_enable ADVANCED_PAUSE_FEATURE LCD_BED_TRAMMING CLASSIC_JERK BABYSTEPPING BABYSTEP_ALWAYS_AVAILABLE BABYSTEP_ZPROBE_OFFSET \
           BLTOUCH Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR NOZZLE_PARK_FEATURE
exec_test $1 $2 "ABL | DGUS (RELOADED)" "$3"

#
# Delta Config (FLSUN AC because it's complex)
#
use_example_configs delta/FLSUN/auto_calibrate
opt_set MOTHERBOARD BOARD_FYSETC_F6_13
exec_test $1 $2 "DELTA / FLSUN Auto-Calibrate" "$3"

#
# Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2
#
use_example_configs delta/generic
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 LCD_LANGUAGE ko_KR
opt_enable RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS EEPROM_CHITCHAT \
           Z_PROBE_ALLEN_KEY AUTO_BED_LEVELING_UBL UBL_MESH_WIZARD \
           OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY DELTA_CALIBRATION_MENU BABYSTEPPING
exec_test $1 $2 "DELTA | UBL | Allen Key | EEPROM | OLED_PANEL_TINYBOY2..." "$3"

#
# Test mixed TMC config
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \
        LCD_LANGUAGE vi LCD_LANGUAGE_2 fr \
        X_DRIVER_TYPE TMC2160 Y_DRIVER_TYPE TMC5160 Z_DRIVER_TYPE TMC2208_STANDALONE E0_DRIVER_TYPE TMC2130 \
        X_MIN_ENDSTOP_HIT_STATE LOW Y_MIN_ENDSTOP_HIT_STATE LOW
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER \
           MARLIN_BRICKOUT MARLIN_INVADERS MARLIN_SNAKE \
           MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD \
           SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY TMC_DEBUG M114_DETAIL AUTO_REPORT_POSITION
exec_test $1 $2 "Mixed TMC | Sensorless | RRDFGSC | Games" "$3"

#
# Delta Config (FLSUN AC because it's complex)
#
use_example_configs delta/FLSUN/auto_calibrate
opt_set MOTHERBOARD BOARD_FYSETC_F6_13
exec_test $1 $2 "RAMPS 1.3 | DELTA | FLSUN AC Config" "$3"

#
# SCARA with Mixed TMC
#
use_example_configs SCARA/Morgan
opt_set MOTHERBOARD BOARD_FYSETC_F6_13 \
        LCD_LANGUAGE es \
        X_MAX_ENDSTOP_HIT_STATE HIGH \
        X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2130 Z_DRIVER_TYPE TMC2130_STANDALONE E0_DRIVER_TYPE TMC2660 \
        X_HARDWARE_SERIAL Serial2
opt_enable FIX_MOUNTED_PROBE AUTO_BED_LEVELING_BILINEAR PAUSE_BEFORE_DEPLOY_STOW \
           FYSETC_242_OLED_12864 EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL Z_SAFE_HOMING \
           STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD SENSORLESS_HOMING X_STALL_SENSITIVITY Y_STALL_SENSITIVITY EDGE_STEPPING
exec_test $1 $2 "SCARA | Mixed TMC | EEPROM" "$3"
