From: ian Date: Sat, 2 Feb 2008 00:52:24 +0000 (+0000) Subject: can analyse speeds into table, only not with accel X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=2787ee3662a9de5d24839703328d720679657174;p=trains.git can analyse speeds into table, only not with accel --- diff --git a/hostside/.cvsignore b/hostside/.cvsignore index 1962df4..db748ba 100644 --- a/hostside/.cvsignore +++ b/hostside/.cvsignore @@ -3,8 +3,12 @@ hostside-old hostside safety t +t.* layoutinfo.h *.d +*.tmp +*.speeds.ps +*.speeds.record proto-expanded auproto-* gui-plan-bot diff --git a/hostside/Makefile b/hostside/Makefile index 48e6c5b..7bd5193 100644 --- a/hostside/Makefile +++ b/hostside/Makefile @@ -1,8 +1,11 @@ # +TRAINS= santafe shinkansen + AUTOINCS= auproto-pic.h layoutinfo.h selectors.h retransmit-table.h \ errorcodes.h stastate.h record-y.h record-l.h -TARGETS= hostside-old gui-plan-bot realtime +TARGETS= hostside-old gui-plan-bot realtime \ + $(addsuffix .speeds.ps, $(TRAINS)) include ../common.make include ../cprogs.make @@ -59,6 +62,11 @@ selectors.h retransmit-table.h errorcodes.h stastate.h: %: %.gen safety: safety.o utils.o trackloc.o ../layout/ours.layout-data.o $(LINK) +%.speeds.ps: %.speeds.record + +%.speeds.record: ./speeds-analyse + ./$^ $* + hostside: hostside.o serialio.o client.o obc.o commands.o utils.o \ nmra.o encode.o retransmit.o output.o auproto-pic.o \ parseutils.o \ diff --git a/hostside/analyse-speeds b/hostside/analyse-speeds new file mode 100755 index 0000000..541ce44 --- /dev/null +++ b/hostside/analyse-speeds @@ -0,0 +1,81 @@ +#!/bin/bash +usage () { cat <&2; exit 1 \ + +usage: ./speeds-analyse + reads: -*.speeds + writes: .speeds.ps + writes: .speeds.record +END +} + +set -e + +test $# = 1 || usage +case "$1" in -*) usage ;; esac + +train=$1; shift + +o=$train.speeds + +>$o.all.tmp + +for f in $train-*.speeds; do + this="'$f'" + if head -1 $f | grep '^[A-Za-z]' >/dev/null; then + this="$this using 2:3" + fi + each="$each, $this" + perl -pe 's/^[A-Za-z]\w*//' $f >>$o.all.tmp +done + +gnuplot </dev/null +/^%%Title/ +s/\.tmp$// +w +END + +max=` + sort -rnu $train.speeds.all.tmp |head -1 |awk '{print $1}' + case "${PIPESTATUS[*]}" in "0 0 0" | "141 0 0");; + *) echo >&2 "? ${PIPESTATUS[*]}"; exit 127;; esac +` + +gnuplot <$o.record.tmp -ne ' + BEGIN { $nxt= 1; } + next if m/^\#/; next unless m/\S/; + die unless m/^\s*(\d+)\s+([0-9.]+)\s/; + $step= $1; + $speed= int($2*1e6+0.5); + die "$step $nxt" unless $step==$nxt; + print "train '$train' step $step=$speed ?/?\n" or die $!; + $nxt++; + END { warn "warning: '$train': expected 126 steps, found ". + ($nxt-1)."\n" + unless $nxt==127; } +' + +rm $o.all.tmp + +for f in ps record; do + mv -f $o.$f.tmp $o.$f +done