#!/bin/bash # This file is used for scripts that demonstrate pyvcp # The scripts typically use an extension of .demo # 1) start realtime # 2) run pyvcp with supplied xml and hal files # 3) stop realtime # Copyright: 2014 # Author: Dewey Garrett # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. prog=$(basename "$0") function usage () { cat </dev/null status=$? if [ "$status" = 0 ] ; then msg="$prog: Realtime is already active" echo "$msg" popup "$msg" exit 1 else $REALTIME start fi case $# in 0|1) usage;; 2) XMLFILE=${1} HALFILE=${2} COMPNAME=pyvcp ;; 3) XMLFILE=${1} HALFILE=${2} COMPNAME=${3} ;; *) usage;; esac if [ -n "$debug" ] ; then echo "debug=$debug" echo "REALTIME=$REALTIME" echo "XMLFILE=$XMLFILE" echo "HALFILE=$HALFILE" echo "COMPNAME=$COMPNAME" fi # to allow relative includes cd "$(dirname "$XMLFILE")" || { echo "E: Could not change directory to '$(dirname "$XMLFILE")'"; exit 1; } pyvcp -c "$COMPNAME" "$XMLFILE" & pyvcpjob=$! ct=0 # wait for pins to be created before creating signals while true ; do halcmd show|grep "${COMPNAME}.*ready" >/dev/null 2>&1 status=$? sleep 1 if [ "$status" = 0 ] ; then #echo "ready after ct=$ct" break fi if [ $ct -ge 10 ] ; then echo "$0: hal-pyvcp startup failed" exit 1 fi ct=$((ct + 1)) done # so HALFILE can source relative files cd "$(dirname "$HALFILE")" || { echo "E: Could not change directory to '$(dirname "$HALFILE")'"; exit 1; } halmsg=/tmp/pyvcp_demo_halcmd.err halcmd -f "$HALFILE" >| "$halmsg" 2>&1 halstatus=$? if [ "$halstatus" != 0 ] ; then IFS=$'\n' # split lines newmsg= # put extra blank line between lines of output while read -r line; do newmsg="$newmsg $line " done < "$halmsg" popup "$newmsg" kill $pyvcpjob halrun -U exit 1 fi wait $pyvcpjob halrun -U exit 0