#!/bin/sh ########################################################################### # # Copyright (c) 2020-2023 Diality Inc. - All Rights Reserved. # # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # @file setup.sh # # @author (last) Behrouz NematiPour # @date (last) 16-Dec-2022 # @author (original) Behrouz NematiPour # @date (original) 13-Mar-2020 # ############################################################################ # @details # This script is part of setting up the newly flashed SoM which will run on the device # after the start.sh script is done copying files on the device. source ./globals.sh "$1" "$2" function check_sdcard() { while true; do if [ ! "$($CMD_SDCARD_DEV)" == "$SDCARD_DEV" ];then # if no SD-Card found ask operator to install on and retry after power-cycle. echo_dash_comment echo_dash_message "No SD-Card detected" echo_dash_message "UI Software logging will not work without a SD-Card" echo_dash_message "Insert a SD-Card and continue when ready" echo_dash_comment confirm "Continue" if [ $? -eq $FALSE ]; then # Since the UI will still work without the SD-Card, but won't log, #exit $ERR_SD_CARD # Do not exit the setup for now, return $FALSE # And let the user to format and insert the sd-card later. fi else break fi done if [ ! "$($CMD_SDCARD_PRT)" == "$SDCARD_PRT" ]; then return $FALSE; fi # if partition 1 doesn't exist , do the format if [ ! "$($CMD_LINUX_TYPE)" == "$SDCARD_TYP_NUMB" ]; then return $FALSE; fi # if partition 1 type is not Linux(83) , do the format return $TRUE # otherwise , do not format } function format_sdcard() { check_sdcard if [ $? -eq $TRUE ]; then # if sd-card is OK echo "Found the SD-Card $SDCARD_DEV" confirm "Do you want to format the SD-Card" if [ $? -eq $FALSE ]; then # give user an option to skip the format return $? fi fi echo "Unmount the SD-Card if is in use" umount "$SDCARD_PRT" echo "Removing current partitions" sfdisk --delete $SDCARD_DEV 1>/dev/null 2>/dev/null echo "Create new partition" echo "label:MBR" | sfdisk $SDCARD_DEV 1>/dev/null 2>/dev/null echo "type=83" | sfdisk $SDCARD_DEV 1>/dev/null 2>/dev/null echo "Create a ext4 file system" mkfs.ext4 $SDCARD_PRT -L "Denali_Log" -F # 1>/dev/null 2>/dev/null check_sdcard if [ $? -eq $TRUE ]; then echo "SD-Card format PASSED" else echo "SD-Card format FAILED !!!" fi } function set_timezone() { echo "setup the time/date controller" # to use the system time/date and not use the network time protocol timedatectl set-ntp $TDCTL_NTP_USED echo "Setup the timezone (PDT Pacific)" timedatectl set-timezone $TDCTL_TIMEZONE timedatectl set-local-rtc $TDCTL_RTC_LOCL } function set_datetime() { echo "Setup the time/date" while true; do timedatectl set-time "$DATETIME" 1>/dev/null 2>/dev/null if [ $? -eq 0 ]; then break else read -p "please enter the date (yyyy-MM-dd HH:mm): " -e -i "$DATETIME" -r DATETIME fi done } function diable_b2qt_services() { echo "Disabling boot2Qt setvices" systemctl disable b2qt systemctl disable connman systemctl disable qtlauncher systemctl disable ebikedata } function setup_denali() { echo "Setting denali as default auto start application" chmod a+x $HOME/$INITD_AUTOSTART chmod a+x $HOME/$LAUNCH_SCR chmod a+x $HOME/$DENALI_BIN rm -f "$POSTLOG" "$POSTERR" "$POSTOUT" echo "Syncing file system updates" sync;sync;sync } function disable_autostart() { # in case the device is alread setup, disable the autostart of the application until the setup script enables it. rm -f $INITD_LOCATION$INITD_AUTOSTART } function enable_autostart() { mkdir -p $INITD_LOCATION mv $INITD_AUTOSTART $INITD_LOCATION update-rc.d $INITD_AUTOSTART defaults } function manufacturingMode() { if [ "$(grep $SETUP_ENABLE_MANUFACTURING_MODE $SETUP_CONF_FILE)" != "" ]; then # -E for Maunufacturing mode # -a for disabling the non-minimizable Alarms APPLICATION_PARAMS="-E -a" # don't use '&', we have to wait until user is done with UI applicationPOST fi } function confirm_reboot() { read -p "ready to reboot? [y,n]" -n 1 -r CONFIRM if [ "$CONFIRM" == "y" ]; then rm $0 reboot fi echo "" } function cleanup() { rm $SETUP_CONF_FILE rm $(basename $0) rm -frd $HOME/.ssh } function main() { disable_autostart format_sdcard set_timezone set_datetime "$1" "$2" diable_b2qt_services setup_denali enable_autostart manufacturingMode cleanup } main "$1" "$2" confirm_reboot exit 0