#!/bin/sh ########################################################################### # # Copyright (c) 2019-2020 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) 2-Aug-2021 # @author (original) Behrouz NematiPour # @date (original) 28-Oct-2019 # ############################################################################ function currDate() { echo $(date +"%d%m%Y%H%M%S") } HOME=/home/root SDCARD_DEV=/dev/mmcblk1p1 SDCARD_MNT=/media/sd-card USB_DEV=/dev/sda1 USB_MNT=/media/usb #DO NOT MODIFY POST VARIABLES #unless the denali applicaiton is updated as well to match. POSTLOG=$HOME/post.log POSTMSG_CANBUS="CANBus passed" POSTMSG_SDCARD="SD-CARD passed" POSTMSG_TOUCH="Touch passed" POSTMSG_RTC="RTC passed" # cleanup the POST log file echo "Start: $(currDate)" > $POSTLOG #create folders for sd-card and usb if not exist mkdir -p $SDCARD_MNT mkdir -p $USB_MNT # ---------------------------------------- UPDATE #mounting usb mount $USB_DEV $USB_MNT if [ $? -eq 0 ]; then echo ":: USB drive found and mounted on $USB_MNT" fi #A simple none secure update if [ -e $USB_MNT/denali ]; then mv $HOME/denali $HOME/denali.$(currDate) cp $USB_MNT/denali $HOME/denali # check if update where successful if [ $? -eq 0 ]; then sync;sync;sync; echo ":: Denali application has been updated with the one on the USB drive" mv $USB_MNT/denali $USB_MNT/denali.updated sync;sync;sync; fi fi # ---------------------------------------- SETUP & POST #Here only passed is logged and if nothing added to the post.log means it failed. #setting up can interface ----------------- 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 echo $POSTMSG_CANBUS >> $POSTLOG fi #mounting sdcard -------------------------- SD-CARD mount $SDCARD_DEV $SDCARD_MNT if [ $? -eq 0 ]; then SDTEST="$(mount | grep "$SDCARD_DEV on $SDCARD_MNT.*(rw,")" if ! [ -z "$SDTEST" ]; then echo $SDTEST >> $POSTLOG echo $POSTMSG_SDCARD >> $POSTLOG fi fi #test the touch screen -------------------- Touch #if loaded successful it has a long description with "Touch" keyword, 'T' capital. #if fails has a one line error with "touch" keyword, 't' non-capital. #if there is other issues can even be empty. TSTEST="$(dmesg | grep Touch)" if [ $? -eq 0 ]; then echo $POSTMSG_TOUCH >> $POSTLOG fi #test the RTC ----------------------------- 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=$(cat /sys/class/rtc/rtc0/since_epoch) sleep 1 RTC2=$(cat /sys/class/rtc/rtc0/since_epoch) if [ $(($RTC2 - $RTC1)) -eq 1 ]; then echo $POSTMSG_RTC >> $POSTLOG fi fi # stop the connection manager daemon killall connmand # setup wifi killall wpa_supplicant >> $HOME/filesystem.out 2>> $HOME/filesystem.err #launching denali application, disable keep-alive $HOME/denali -u & udhcpc -i eth0 -n & echo "End: $(date +"%d%m%Y%H%M%S")" >> $POSTLOG