#!/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 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 [ ! -z "$debug" ] ; then echo debug=$debug echo REALTIME=$REALTIME echo XMLFILE=$XMLFILE echo HALFILE=$HALFILE echo COMPNAME=$COMPNAME fi cd $(dirname "$XMLFILE") ;# to allow relative includes 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 cd $(dirname "$HALFILE") ;# so HALFILE can source relative files halmsg=$(halcmd -f $HALFILE 2>&1) halstatus=$? if [ $halstatus != 0 ] ; then IFS=$'\n' # split lines newmsg= # put extra blank line between lines of output for line in $halmsg ; do newmsg="$newmsg $line " done popup "$newmsg" kill $pyvcpjob exit 1 fi wait $pyvcpjob halrun -U exit 0