#!/bin/bash

. lib.sh


main() {
    LATESTER_OPTS="-d can0 -d can1 -d can2 $(traffic_and_length 8) -c $COUNT"

    sshgw cangw -A -s can0 -d can1
    latester $LATESTER_OPTS -n nop

    cleanupgw
    sshgw cangw -A -s can0 -d can1 -m OR:D:0.0.0000123400000000 \
    	  	      	      	   -m SET:IL:123.8.0000000000000000
    latester $LATESTER_OPTS -n mod

    cleanupgw
    sshgw cangw -A -s can0 -d can1 -m AND:ID:0.0.ffff000000000000 \
    	  	      	      	   -m OR:D:0.0.0000123400000000 \
				   -m XOR:D:0.0.0000000012345678 \
				   -m SET:IL:123.8.0000000000000000
    latester $LATESTER_OPTS -n mod2

    cleanupgw
    sshgw cangw -A -s can0 -d can1 -m AND:ID:0.0.ffff000000000000 \
    	  	      	      	   -m OR:D:0.0.0000123400000000 \
				   -m XOR:D:0.0.0000000012345678 \
				   -m SET:IL:123.8.0000000000000000 \
    				   -x 0:6:7:0
    latester $LATESTER_OPTS -n modcsxor
    cleanupgw
    sshgw cangw -A -s can0 -d can1 -m AND:ID:0.0.ffff000000000000 \
    	  	      	      	   -m OR:D:0.0.0000123400000000 \
				   -m XOR:D:0.0.0000000012345678 \
				   -m SET:IL:123.8.0000000000000000 \
    				   -p 3 -c 0:6:7:0:0:00D013C326F635E54C9C5F8F6ABA79A998488B5BBE6EAD7DD404C717F222E13183539040A575B666CF1FDC0CE939FA2A1BCB08D83DED2EFE5787449471A162B2B565A67693438050F929EA3ADF0FCC1C2DFD3EEE0BDB18C861B172A24797548436E625F510C003D37AAA69B95C8C4F9FAE7EBD6D88589B4BE232F121C414D707D909CA1AFF2FEC3C95458656B363A0704191528267B774A40DDD1ECE2BFB38E85A8A49997CAC6FBF16C605D530E023F3C212D101E434F7278E5E9D4DA878BB6B6CBC7FAF4A9A598920F033E306D615C5F424E737D202C111B868AB7B9E4E8D5DEF3FFC2CC919DA0AA373B0608555964677A764B4518142923BEB28F81DCD0EDE
    latester $LATESTER_OPTS -n modcscrc8
}

ADDITIONAL_PLOTS=detail

plot_cmds() {
    if [[ "$1" = detail ]]; then
	range=0.0:0.3
	echo "set logscale y"
	echo "set key left bottom reverse Left"
    else
	range=0.01:100
	echo "set logscale xy"
    fi
    cat <<EOF
set title "Single GW rule for all messages with modifications, 8 byte messages"
set grid xtics mxtics ytics mytics lw 1, lw 0.5
set xlabel "GW latency [ms]"
set ylabel "Latency profile [frames]"
plot [$range] [1:$COUNT] \\
          "nop-hist.txt" $using with lp lt 1 title "No modifications", \\
          "mod-hist.txt" $using with lp lt 2 title "Two modifications", \\
          "mod2-hist.txt" $using with lp lt 3 title "Four modifications", \\
          "modcsxor-hist.txt" $using with lp lt 4 title "Four modifications and XOR checksum",\\
          "modcscrc8-hist.txt" $using with lp lt 5 title "Four modifications and CRC8 checksum"
EOF
}
    
test_end