#!/bin/sh ########################################################################### # # Copyright (c) 2019-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 run.sh # # @author (last) Behrouz NematiPour # @date (last) 05-Apr-2023 # @author (original) Behrouz NematiPour # @date (original) 28-Oct-2019 # ############################################################################ time_start=$(date +%s) echo nameserver 8.8.8.8 > /etc/resolv.conf echo nameserver 192.168.10.20 >> /etc/resolv.conf echo nameserver 192.168.10.21 > /etc/resolv.conf systemctl start systemd-resolved.service 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 ethernet----------------------- Ethernet post_log_dash " Ethernet " ieth=eth0 udhcpc --timeout=5 --retries=1 -n -i $ieth post_log "$(ip addr show $ieth)" # -details -statistics #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 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 # ----------------------------------------- WiFi post_log_dash " WiFi " # create the wpa supplicant folder for conf storing iwlan=wlan0 WPA_SUPPLICANT_DIR="/etc/wpa_supplicant/" WPA_SUPPLICANT_CNF="wpa_supplicant-$iwlan.conf" mkdir -p $WPA_SUPPLICANT_DIR # remove any software blocks rfkill unblock wlan if [[ ! -z $(dmesg | grep "wlan: driver loaded") ]]; then post_log_pass "$POSTMSG_WIFI$POSTMSG_POSTFIX_PASSED [driver]" post_log "$(dmesg | grep -i wlan:)" # start the wpa_supplicant service systemctl start wpa_supplicant@$iwlan.service post_log "start wpa_supplicant service" if [ $? -eq 0 ]; then post_log_pass "$POSTMSG_WIFI$POSTMSG_POSTFIX_PASSED [service]" # try to connect to WiFi if [ -f $WPA_SUPPLICANT_DIR$WPA_SUPPLICANT_CNF ]; then post_log_dash " WiFi Connection " killall udhcpc post_log "connecting to WiFi" # run this manually in terminal if didn't work on bootup udhcpc --timeout=5 --retries=2 -n -i $iwlan fi post_log "$(ip link show $iwlan)" # -details -statistics else post_log_fail "$POSTMSG_WIFI$POSTMSG_POSTFIX_FAILED" post_log "$(systemctl --failed | grep wpa)" fi else post_log_fail "$POSTMSG_WIFI$POSTMSG_POSTFIX_FAILED" 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 #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 # ----------------------------------------- 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 # ----------------------------------------- Cloud post_log_dash " CloudSystem " post_log "$(ip addr show $iwlan)" # -details -statistics post_log "$(ping device-api.diality.qa.kebormed.com -I $iwlan -c 3 -4)" 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 # Note: # The denali application needs to run with -E for the first time during manufacturing. # Ther need to be an indication in the application itself to go to the manufacturing mode (-E). # otherwise on each update it want to set to -E mode # a good indication would be the Service Password, and it will be implemented soon. # The -E has been removed for now from run.sh to prevent the setuation mentioned above. $HOME/$DENALI_BIN -K & else post_log_fail "Unknown Applicaion Version" fi # ----------------------------------------- END # tag the end time in the POST log file post_log "End: $(timestamp)" time_end=$(date +%s) post_log "time spent: "$(( $time_end - $time_start ))" seconds" post_log_star " ***** " exit 0