#!/bin/sh

PATH=..:$PATH

usage()
{
	echo "usage: $0 [-f font] [-m] [-o fft_file] [-p png_file] prefix \
frequency" 1>&2
	exit 1
}


font=
term=
output=
show_max=false
out=

while true; do
	case "$1" in
	-f)	[ "$2" ] || usage
		shift
		font=$1;;
	-m)	show_max=true;;
	-o)	[ "$2" ] || usage
		shift
		out=$1;;
	-p)	[ "$2" ] || usage
		shift
		term="set term png"
		output="set output \"$1\"";;
	-*)	usage;;
	*)
		break;;
	esac
	shift
done

[ "$2" ] || usage
[ "$3" ] && usage

tmp=${out:-_tmp}
prefix=$1
f=$2

fft -s 100 -d -w hamming 100 <$prefix-$f >$tmp
set `norm $tmp`

xm=$1.0		# sample number of y peak
ym=$2		# magnitude of y peak
n=$3		# total number of samples
span=6.25	# ADC sample rate in MHz / decimation (100 MHz/16)

if [ ${ym#-} = $ym ]; then
	ymbar=-$ym
	ymbarlt=2
else
	ymbar=$ym
	ymbarlt=1
fi

gnuplot -persist <<EOF
$term
$output

set label "$prefix" at graph 0.03, graph 0.93 font "$font,22"
set label sprintf("%+.1f dB", $ym) at graph 0.03, graph 0.82 font "$font,18"

set label sprintf("%.1f MHz", $f-0.5) \
  at graph 0.97, graph 0.93 right font "$font,22"
set label sprintf("%+.1f ppm", (($xm/$n-0.5)*$span+0.5)/($f-0.5)*1000000) \
  at graph 0.97, graph 0.82 right font "$font,18"

set xrange [-2.5:2.5]
set yrange [-70:0]

set mxtics 10
set mytics 2
set grid

set xlabel "MHz from nominal frequency of test wave"

set style fill solid 1
plot "$tmp" using ((\$0/$n-0.5)*$span+0.5):(\$1-$ym) with lines notitle, \
  "<echo -0.9 $ymbar 0.2" with boxes lt $ymbarlt notitle
EOF

[ "$out" ] || rm -f $tmp
$show_max && echo $ym
