#!/bin/sh ########################################################################### # # Copyright (c) 2019-2022 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 run.sh # # @author (last) Behrouz NematiPour # @date (last) 28-Sep-2022 # @author (original) Behrouz NematiPour # @date (original) 28-Oct-2019 # @date 09-Dec-2022 ############################################################################ echo "HOME : $HOME " > /home/root/post.debug HOME="$1" source ./globals.sh COUT="/dev/$(echo $(dmesg | grep "printk: console") | sed 's/.*printk: console.*\(tty.*\)].*/\1/')" echo "COMMENT_DASH: $COMMENT_DASH " >> /home/root/post.debug echo "HOME : $HOME " >> /home/root/post.debug echo "COUT : $COUT " >> /home/root/post.debug echo "POSTLOG : $POSTLOG " >> /home/root/post.debug # cleanup the POST log file post_log_clear post_err_clear post_out_clear post_log_star " ***** " post_log "Start: $(timestamp)" # log the current date, time #create folders for sd-card and usb if not exist mkdir -p $SDCARD_MNT mkdir -p $USB_MNT # ---------------------------------------- STOP denali in case running (sys not rebooted) killall $DENALI_BIN #setting up can interface ----------------- CANBus post_log_dash " CANBus " #current settings can be retrieved by the command below #$ ip -details -statistics link show can0 ip link set can0 up type can bitrate 250000 restart-ms 100 ifconfig can0 txqueuelen 4000 candump can0 -T1 # check if candump can successfully use the port. will terminate in 1ms if [ $? -eq 0 ]; then post_log_pass "$POSTMSG_CANBUS$POSTMSG_POSTFIX_PASSED" post_log "$(ip link show can0)" # -details -statistics else post_log_fail "$POSTMSG_CANBUS$POSTMSG_POSTFIX_FAILED" fi #mounting sdcard -------------------------- SD-CARD post_log_dash " SD-CARD " mount $SDCARD_PRT $SDCARD_MNT SDCTEST="$(mount | grep "$SDCARD_PRT on $SDCARD_MNT type $SDCARD_TYP_NAME (rw,")" if ! [ -z "$SDCTEST" ]; then SDINFO="$(df -h | grep -i $SDCARD_MNT)" post_log_pass "$POSTMSG_SDCARD$POSTMSG_POSTFIX_PASSED" post_log "$SDCTEST" post_log "$SDINFO" else post_log_fail "$POSTMSG_SDCARD$POSTMSG_POSTFIX_FAILED" fi #test the touch screen -------------------- Touch post_log_dash " Touch " # when successfully connected and can be loaded # Sitronix touch driver 2.10.2 Release date: 20180809 # atmel_mxt_ts 3-004a: Direct firmware load for maxtouch.cfg failed with error -2 # atmel_mxt_ts 3-004a: Touchscreen size X1279Y799 # input: Atmel maXTouch Touchscreen as /devices/platform/soc@0/soc@0:bus@30800000/30a50000.i2c/i2c-3/3-004a/input/input2 # When NOT connected # Sitronix touch driver 2.10.2 Release date: 20180809 TSTEST="$(dmesg | grep "input: Atmel maXTouch Touchscreen as ")" if [ "$?" -eq 0 ]; then post_log_pass "$POSTMSG_TOUCH$POSTMSG_POSTFIX_PASSED" post_log "$TSTEST" else post_log_fail "$POSTMSG_TOUCH$POSTMSG_POSTFIX_FAILED" fi #test the RTC ----------------------------- RTC post_log_dash " RTC" #may not be an accurate test but sufficient for now #and could not find a way to get the rtc clock with the higher resolusion #it should not be confused with date command which is system date/time and not hwclock hwclock -r # if there is any issue with rtc hwclock will show errors if [ $? -eq 0 ]; then RTC1=$($CMD_RTC_EPOCH) sleep 1 RTC2=$($CMD_RTC_EPOCH) if [ $(($RTC2 - $RTC1)) -eq 1 ]; then post_log_pass "$POSTMSG_RTC$POSTMSG_POSTFIX_PASSED" else post_log_fail "$POSTMSG_RTC$POSTMSG_POSTFIX_FAILED" fi fi # ----------------------------------------- Bluetooth post_log_dash " Bluetooth " /usr/share/silex-uart/silex-uart.sh start 1>> $POSTOUT 2>> $POSTERR sleep 5 hciconfig hci0 up if [ $? -eq 0 ]; then post_log_pass "$POSTMSG_BLUETOOTH$POSTMSG_POSTFIX_PASSED" post_log "$(hciconfig hci0)" else post_log_fail "$POSTMSG_BLUETOOTH$POSTMSG_POSTFIX_FAILED" fi # ----------------------------------------- WiFi post_log_dash " WiFi " killall wpa_supplicant 1>> $POSTOUT 2>> $POSTERR if [[ ! -z $(dmesg | grep "wlan: driver loaded") ]]; then post_log_pass "$POSTMSG_WIFI$POSTMSG_POSTFIX_PASSED" post_log "$(dmesg | grep -i wlan:)" post_log "$(ip link show wlan0)" # -details -statistics else post_log_fail "$POSTMSG_WIFI$POSTMSG_POSTFIX_FAILED" fi # ----------------------------------------- Sha256Sum post_log_dash " Sha256Sum " #check the denali applicatoin checksum SHA_ACT=$(tail -c 83 $HOME/$DENALI_BIN | cut -c19-82) SHA_EXP=$(head -c -83 $HOME/$DENALI_BIN | sha256sum -b --tag | cut -c14-77) if [ "$SHA_ACT" == "$SHA_EXP" ]; then post_log_pass "$POSTMSG_SHASUM$POSTMSG_POSTFIX_PASSED" else post_log_fail "$POSTMSG_SHASUM$POSTMSG_POSTFIX_FAILED" fi # ----------------------------------------- CloudSync post_log_dash " CloudSync " if [ -d $HOME/$CLOUDSYNC_FOLDER ]; then # moving/ backing up the previous treatment logs so the new buff starts with fresh sequence echo "Backing up CloudSync I/O buff" CLOUDSYNC_PATH="$SDCARD_MNT"/"$CLOUDSYNC_FOLDER" CLOUDSYNC_BACKUP="$CLOUDSYNC_PATH"_backup/$(timestamp)/ mkdir -p $CLOUDSYNC_BACKUP mv $CLOUDSYNC_PATH/* $CLOUDSYNC_BACKUP 1>> $POSTOUT 2>> $POSTERR rm $HOME/$CLOUDSYNC_FOLDER/data/* 1>> $POSTOUT 2>> $POSTERR cd $HOME/$CLOUDSYNC_FOLDER/ python3 ./cs.py start & sleep 2 CLOUDSYNC_STATUS="$(python3 ./cs.py status)" if [ "$CLOUDSYNC_STATUS" == "$POSTMSG_CLOUDSYNC_RUNNING" ]; then post_log_pass "$POSTMSG_CLOUDSYNC$POSTMSG_POSTFIX_PASSED" else post_log_fail "$POSTMSG_CLOUDSYNC$POSTMSG_POSTFIX_FAILED" fi post_log "$CLOUDSYNC_STATUS" cd else post_log_fail "$POSTMSG_CLOUDSYNC$POSTMSG_POSTFIX_FAILED" fi # ----------------------------------------- Denali post_log_dash " Denali " #launching denali application DENALI_VERSION="$($HOME/$DENALI_BIN -v)" if [ -n "$DENALI_VERSION" ]; then post_log_pass "$($HOME/$DENALI_BIN -v)" # log UI Software version $HOME/$DENALI_BIN -u -C & # -C to disable cloudsync for now sync it blocks the system and no cloudsync has been installed. else post_log_fail "Unknown Applicaion Version" fi # ----------------------------------------- END # tag the end time in the POST log file post_log "End: $(timestamp)" post_log_star " ***** " # ----------------------------------------- Ethernet # setup ethernet # note: At this time the application is running and also the ehternet connection is not necessary # so the sleep here is not hurtung any part of the applicaion progress. sleep 10 udhcpc eth0 & exit 0