#!/bin/bash

export VERSION_NAME=1.3
export VERSION_DATE=13.06.2024
export VERSION="v${VERSION_NAME}_d${VERSION_DATE}"
export CURRENT_PID=$$

whiptail --title "Текущая максимальная частота и объем оперативной памяти"  --msgbox "$(lscpu | grep "max") \n"Объем_оперативной_памяти" $(grep MemTotal /proc/meminfo | awk '{print $2 / 1024}') "Мегабайт"" 0 0

#222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222


Ubuntu_update() {
  apt-get update &&
  apt-get upgrade &&
  printf "Ожидаем 5 секунд до повторного запуска repka-config\n" &&
  sleep 5 &&
  exec repka-config
}

Repka_OS_update() {
  export REPKA_OS_UPDATE=/usr/local/repka-os-update
  wget -O $REPKA_OS_UPDATE --timeout=120 https://download.repka-pi.ru/repka_os_update/repka-os-update
  chmod +x $REPKA_OS_UPDATE
  $REPKA_OS_UPDATE
  rm $REPKA_OS_UPDATE
}

select_kernel () {
  wget -O - https://download.repka-pi.ru/kernel/kernel-update.sh | bash
  return 0
}

repka_config_update() {
  wget -qO - https://download.repka-pi.ru/repka-tools/repka-config/repka-config-update.sh | bash -s $CURRENT_PID
  return 0
}


DRAM_CLK_672() {
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-672.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}

DRAM_CLK_696() {
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-696.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}

DRAM_CLK_744() {
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-744.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}

DRAM_CLK_768() {
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-768.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}

boot_tty6() {
cp /boot/boot-tty6.scr /boot/boot.scr
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-672-nottys0.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}

boot_ttyS0() {
cp /boot/boot-ttyS0.scr /boot/boot.scr
dd if=/boot/spl/u-boot-sunxi-with-spl-dram-672.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notrunc
}



freq_1() {

	OPTION_F1=$(whiptail --title "Максимальная частота 1 GHz" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 8 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" "  - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" "  - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" "  - GPIO-11, UART-3, SPI-2, I2C-1 " \
	"4 Вариант" "  - GPIO-13, UART-1, SPI-2, I2C-2 " \
	"5 Вариант" "  - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1 " \
	"6 Вариант" "  - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F1" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-1ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}

freq_2() {
	OPTION_F2=$(whiptail --title "Максимальная частота 1.2 GHz" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 8 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F2" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-1.2ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}


freq_3() {
	OPTION_F3=$(whiptail --title "Максимальная частота 1.368 GHz" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 8 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F3" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-1.4ghz.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}


freq_4() {
	OPTION_F4=$(whiptail --title "Максимальная частота 1.368 GHz (для печатных плат v1.4 и выше)" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 8 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F4" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-v1.4.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}


freq_5() {
	OPTION_F5=$(whiptail --title "Максимальная частота 1.368 GHz (для печатных плат v1.4 и выше)" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 8 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F5" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-v1.4p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}



freq_6() {
	OPTION_F5=$(whiptail --title "Максимальная частота 1.416 GHz (для печатных плат v1.6)" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 9 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	"7 Вариант" " - GPIO-20, UART-1, I2C-1, I2S " \
	"8 Вариант" " - GPIO-20, UART-1, I2C-1, I2S-PCM5102 " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F5" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		7\ *) cp /boot/dtb/sun50i-h5-repka-pi3-i2s-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		8\ *) cp /boot/dtb/sun50i-h5-repka-pi3-i2s-pcm5102-v1.6.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}


freq_7() {
	OPTION_F5=$(whiptail --title "Максимальная частота 1.416 GHz (для печатных плат v1.6)" \
	--menu "Выберите вариант распиновки портов Repka-Pi" 15 80 9 \
	--cancel-button "Назад/Back" --ok-button "Выбрать/Select"\
	"1 Вариант" " - GPIO-26, UART-1 (По умолчанию) " \
	"2 Вариант" " - GPIO-15, UART-1, SPI-2, I2C-1 " \
	"3 Вариант" " - GPIO-11, UART-3, SPI-2, I2C-1, " \
	"4 Вариант" " - GPIO-13, UART-1, SPI-2, I2C-2" \
	"5 Вариант" " - GPIO-14, UART-1, SPI-2, I2C-1, PWM-1" \
	"6 Вариант" " - GPIO-11, UART-3, SPI-1, I2C-1, CAN-Внешний модуль " \
	"7 Вариант" " - GPIO-20, UART-1, I2C-1, I2S " \
	"8 Вариант" " - GPIO-20, UART-1, I2C-1, I2S-PCM5102 " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    interface_menu
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F5" in
		1\ *) cp /boot/dtb/sun50i-h5-repka-pi3-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		2\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		3\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		4\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-i2c2-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		5\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-pwm-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		6\ *) cp /boot/dtb/sun50i-h5-repka-pi3-alt-uart-can-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		7\ *) cp /boot/dtb/sun50i-h5-repka-pi3-i2s-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
		8\ *) cp /boot/dtb/sun50i-h5-repka-pi3-i2s-pcm5102-v1.6p.dtb /boot/sun50i-h5-repka-pi3.dtb ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}



#1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

debug_UART0() {

    FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
    --menu "Включить или отключить вывод отладочных сообщений на UART0" 15 80 8 \
    --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
	"debug-UART0-off " "Отключить вывод отладочных сообщений на UART0" \
	"debug-UART0-on " "Включить вывод отладочных сообщений на UART0" \
      3>&1 1>&2 2>&3)

  RET=$?

  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
    return 0
  elif [ $RET -eq 0 ]; then
    case "$FUN" in
      debug-UART0-off\ *) boot_tty6 ;;
      debug-UART0-on\ *) boot_ttyS0 ON;;
      *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
  fi

  if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}




frequency_and_pinout_options() {

    FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
    --menu "Выберите рекомендуемую частоту для вашего экземпляра Repka-Pi" 20 80 10 \
    --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
	"Freq1 " "   1.008 Ghz для плат ver 1.2 и 1.3 " \
	"Freq2 " "   1.200 Ghz для плат ver 1.3 " \
	"Freq3 " "   1.368 Ghz для плат ver 1.3 " \
	"Freq4 " "   1.368 Ghz для плат ver 1.4 и 1.5 с активным охлаждением " \
	"Freq5 " "   1.368 Ghz для плат ver 1.4 и 1.5 с пассивным охлаждением" \
	"Freq6 " "   1.416 Ghz для плат ver 1.6 с активным охлаждением " \
	"Freq7 " "   1.416 Ghz для плат ver 1.6 с пассивным охлаждением" \
      3>&1 1>&2 2>&3)

  RET=$?
  if [ $RET -eq 1 ]; then
    return 0
  elif [ $RET -eq 0 ]; then
    case "$FUN" in
      Freq1\ *) freq_1 ;;
      Freq2\ *) freq_2 ;;
      Freq3\ *) freq_3 ;;
      Freq4\ *) freq_4 ;;
      Freq5\ *) freq_5 ;;
      Freq6\ *) freq_6 ;;
      Freq7\ *) freq_7 ;;
      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
  fi
}

#-------------------------------------

gui_console() {	OPTION_F1=$(whiptail --title "Режим запуска операционной системы" --menu "Графический с рабочим столим или в консоле" 15 80 8 \
	"1 GUI" "  - Графический режим, работа в графическом окружении " \
	"2 Console" "  - Консольный режим, работа в коммандной строке " \
	 3>&1 1>&2 2>&3)

	  RET=$?
	  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
	    return 0
	  elif [ $RET -eq 0 ]; then
	    case "$OPTION_F1" in
		1\ *) systemctl set-default graphical.target ;;
		2\ *) systemctl set-default multi-user.target ;;
	      *) whiptail --msgbox "Ошибка" 20 60 1 ;;
	    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1
	  fi


if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
    echo "Перезагружаем $?."
      reboot
else
    echo "Ну ок... ^___^ $?."
fi
}

#-------------------------------------

networkmanager() {
  nmtui &&
  return 0
}


#-------------------------------------

overclocking() {
  whiptail --msgbox "В разработке $FUN" 20 60 1
}

#_overclocking() {
#
#	CHECKRAM=$(($(getconf _PHYS_PAGES) * $(getconf PAGE_SIZE) / 1048576))
# 	if [ $CHECKRAM -lt 1000 ] ; then
#
#     FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
#     --menu "Настройка тактовых частот" 15 80 8 \
#     --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
#	"DRAM-CLK-672 " "Штатная частота оперативной памяти 672 mHz" \
#	"DRAM-CLK-696 " "Частота оперативной памяти 696 mHz" \
#	"DRAM-CLK-744 " "Частота оперативной памяти 744 mHz" \
#	"DRAM-CLK-768 " "Частота оперативной памяти 768 mHz" \
#      3>&1 1>&2 2>&3)
#
#	else
#
#    FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
#    --menu "Настройка тактовых частот" 15 80 8 \
#    --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
#	"DRAM-CLK-672 " "Штатная частота оперативной памяти 672 mHz" \
#	"DRAM-CLK-696 " "Частота оперативной памяти 696 mHz" \
#      3>&1 1>&2 2>&3)
#
# 	fi
#  RET=$?
#
#  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
#    return 0
#  elif [ $RET -eq 0 ]; then
#    case "$FUN" in
#      DRAM-CLK-672\ *) DRAM_CLK_672 ;;
#      DRAM-CLK-696\ *) DRAM_CLK_696 ;;
#      DRAM-CLK-744\ *) DRAM_CLK_744 ;;
#      DRAM-CLK-768\ *) DRAM_CLK_768 ;;
#      *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
#    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
#  fi
#
#  if (whiptail --title "Чтобы изменения вступили в силу необходимо перезагрузить Repka-pi3" --yesno "Перезагрузить ?" 10 80) then
#    echo "Перезагружаем $?."
#      reboot
#else
#    echo "Ну ок... ^___^ $?."
#fi
#}

#-------------------------------------

update() {
 echo " А есть ли интернет....хм... ? "
 if ping -c 1 repka-pi.ru > /dev/null 2>&1; then
 echo " ура интернет ^___^ "

    FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
    --menu "Включить или отключить вывод сообщений на UART0" 15 80 8 \
    --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
	"U1 Ubuntu update pkg " "Обновить пакеты Ubuntu" \
	"U2 Repka OS update " "Обновить файлы Repka-OS" \
	"U3 repka-config update " "Обновить утилиту repka-config" \
      3>&1 1>&2 2>&3)

  RET=$?

  if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
    return 0
  elif [ $RET -eq 0 ]; then
    case "$FUN" in
      U1\ *) Ubuntu_update ;;
      U2\ *) Repka_OS_update ;;
      U3\ *) repka_config_update ;;
      *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
    esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
  fi


else
whiptail --msgbox "Отсутствует подключение к интернету  " 10 40 1 || return 0
fi

}



#---------------------------------------------

about() {
  if (whiptail --title  "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
  --yes-button  "История версий Repka OS" \
  --no-button  "Назад/Back" \
  --yesno  "Утилита Repka-config для удобной настройки основных функций одноплатного компьютера Repka-Pi.\nТекущая версия repka-config: ${VERSION}" 20 100 1); then
       xdg-open https://repka-pi.ru/project_documentation/repka-os-version/ > /dev/null 2>&1 &
       return 0
  else
       return 0
  fi
}
#---------------------------------------------------------------

system_options() {
  FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
      --menu "" 20 80 10 \
      --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
  	"S1 Select-kernel " "Выбрать ядро Linux" \
  	"S2 GUI / Console " "Графическая оболочка или консоль" \
  	"S3 NetworkManager " "Настройка сети" \
        3>&1 1>&2 2>&3)

    RET=$?

    if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
      return 0
    elif [ $RET -eq 0 ]; then
      case "$FUN" in
        S1\ *) select_kernel ;;
        S2\ *) gui_console ;;
        S3\ *) networkmanager ;;
        *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
      esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
    fi
}

#---------------------------------------------------------------

interface_options() {
  FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
      --menu "" 20 80 10 \
      --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
  	"I1 Debug UART0 " "Вывод отладочных сообщений" \
  	"I2 Frequency / Pinout Options" "Настройка производительности и распиновки" \
        3>&1 1>&2 2>&3)

    RET=$?

    if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
      return 0
    elif [ $RET -eq 0 ]; then
      case "$FUN" in
        I1\ *) debug_UART0 ;;
        I2\ *) frequency_and_pinout_options ;;
        *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
      esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
    fi
}

#---------------------------------------------------------------

performance_options() {
  FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}" \
      --menu "" 20 80 10 \
      --cancel-button "Назад/Back" --ok-button "Выбрать/Select" \
  	"P1 Overclocking " "Настройка тактовых частот" \
        3>&1 1>&2 2>&3)

    RET=$?

    if [ $RET -eq 1 ] || [ $RET -eq 255 ]; then
      return 0
    elif [ $RET -eq 0 ]; then
      case "$FUN" in
        P1\ *) overclocking ;;
        *) whiptail --msgbox "Ошибка" 20 60 1 || return 0;;
      esac || whiptail --msgbox "Что то тут не так $FUN" 20 60 1 || return 0
    fi
}

#---------------------------------------------------------------


#--------------------------------------------------------------------
  while true; do

      FUN=$(whiptail --title "Repka Pi утилита для настройки (repka-config) ${VERSION}"  \
      --menu "Выберите настраиваемую опцию. (Для выхода из repka-config нажмите ESC)" \
       20 80 10 --cancel-button "Выйти/Finish" --ok-button "Выбрать/Select" \
        "1 System Options" "Настройка системы" \
        "2 Display Options" "Настройка параметров дисплея" \
        "3 Interface Options" "Настройка подключения интерфейсов" \
        "4 Performance Options" "Настройка производительности" \
        "5 Localization Options" "Настройка региона и языка" \
        "6 Advanced Options" "Продвинутые настройки Repka OS" \
        "7 Update" "Обновление компонентов Repka OS" \
        "8 About repka-config" "Информация по утилите настройки" \
        3>&1 1>&2 2>&3)

    RET=$?
    if [ $RET -eq 1 ]; then
      exit
	  return 0
    elif [ $RET -eq 0 ]; then
      case "$FUN" in
        1\ *) system_options ;;
        2\ *) display_menu ;;
        3\ *) interface_options ;;
        4\ *) performance_options ;;
        5\ *) localization_options ;;
        6\ *) advanced_options ;;
        7\ *) update ;;
        8\ *) about ;;
        *) whiptail --msgbox "Ой" 20 60 1 ;;
      esac || whiptail --msgbox "В разработке $FUN" 20 60 1
    else
      exit 1
    fi
  done



#-------------------------------------------------------------------------------------------------------------
