#!/bin/bash
# script to initialize registers to use pedestal memory as data, and load pedestal memory
#
# Usage: setmode.sh fec mode <pedestal_pattern>
#
# fec is DTC link number
#
# pedestal_pattern is 1 for ramp
#                     2 for invert
#                     3 for invert_8_15
#                     6 for peaks
#                     etc (from saltrowrmem.c)
# Leave out pedestal_pattern to skip writing data to pedestal memories
#
# mode is 10 for pedestal data
#          0 for normal data

#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 0  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 1  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 2  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 3  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 4  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 5  --pattern $3
#[ ! -z $3 ] && ./saltrowrmem --fec $1 --chip 6  --pattern $3
[ ! -z $3 ] && ./saltrobcmem --broadcast --fec $1 --chip 7  --pattern $3
# Load 0 into VFPED as pedestal value - to all channels and chip
./saltrowrrdreg --bcast --fec $1 --chip 7 --register 13 --channel 0 --write 0 --verify
# Load 0 threshold to ZSTRH
./saltrowrrdreg --bcast --fec $1 --chip 7 --register 8 --channel 0 --write 0 --verify
# Load DPCFG with mode = f(t) - fpd = 10,  postsamples (0-7), presamples (0-3), above threshold (0-3)
# To set back to normal mode mode=0.
mode=$2
post=$((0 << 14))
pre=$((0 << 17))
above=$((0 << 12))
value=`printf '%x' $((mode + post +pre + above))`
echo "DPCFG $value"
./saltrowrrdreg --bcast --fec $1 --chip 7 --register B --channel 0 --write $value --verify
