#!/usr/bin/env bash
#
# Build tests for AVR ATmega FYSETC F6 1.3
#

# exit on first failure
set -e

#
# Build with the default configurations
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13
opt_enable DGUS_LCD_UI_FYSETC
exec_test $1 $2 "FYSETC F6 1.3 with DGUS" "$3"

#
# Delta Config (generic) + UBL + ALLEN_KEY + EEPROM_SETTINGS + OLED_PANEL_TINYBOY2
#
use_example_configs delta/generic
opt_set MOTHERBOARD BOARD_FYSETC_F6_13
opt_enable RESTORE_LEVELING_AFTER_G28 EEPROM_SETTINGS EEPROM_CHITCHAT \
           Z_PROBE_ALLEN_KEY AUTO_BED_LEVELING_UBL \
           OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY DELTA_CALIBRATION_MENU
opt_set LCD_LANGUAGE ko_KR
opt_set X_DRIVER_TYPE L6470
opt_set Y_DRIVER_TYPE L6470
opt_set Z_DRIVER_TYPE L6470
opt_add L6470_CHAIN_SCK_PIN  53
opt_add L6470_CHAIN_MISO_PIN 49
opt_add L6470_CHAIN_MOSI_PIN 40
opt_add L6470_CHAIN_SS_PIN   42
opt_add "ENABLE_RESET_L64XX_CHIPS(V) NOOP"
exec_test $1 $2 "DELTA, RAMPS, L6470, UBL, Allen Key, EEPROM, OLED_PANEL_TINYBOY2..." "$3"

#
# Test mixed TMC config
#
restore_configs
opt_set MOTHERBOARD BOARD_FYSETC_F6_13
opt_set LCD_LANGUAGE vi
opt_set LCD_LANGUAGE_2 fr
opt_set X_DRIVER_TYPE TMC2160
opt_set Y_DRIVER_TYPE TMC5160
opt_set Z_DRIVER_TYPE TMC2208_STANDALONE
opt_set E0_DRIVER_TYPE TMC2130
opt_set X_MIN_ENDSTOP_INVERTING true
opt_set Y_MIN_ENDSTOP_INVERTING true
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 \
           USE_ZMIN_PLUG SENSORLESS_HOMING TMC_DEBUG M114_DETAIL
exec_test $1 $2 "RAMPS | 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
opt_set LCD_LANGUAGE es
opt_enable USE_ZMIN_PLUG 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 SQUARE_WAVE_STEPPING
opt_set X_MAX_ENDSTOP_INVERTING false
opt_set X_DRIVER_TYPE TMC2209
opt_set Y_DRIVER_TYPE TMC2130
opt_set Z_DRIVER_TYPE TMC2130_STANDALONE
opt_set E0_DRIVER_TYPE TMC2660
opt_add X_HARDWARE_SERIAL Serial2
exec_test $1 $2 "FYSETC_F6 | SCARA | Mixed TMC | EEPROM" "$3"

# clean up
restore_configs
