#!/bin/sh
# \
exec oagwish "$0" "$@"

set auto_path [linsert $auto_path 0 /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0  /usr/local/oag/lib_patch/$env(HOST_ARCH)]
APSDebugPath
APSStandardSetup

set xList {}; # list of horizontal bpms created from h.default configuration
set yList {}; # list of vertical bpms created from v.default configuration
set xConfigFile {/home/helios/oagData/sr/rtfeedback/lattices/default/h.default/config};
set yConfigFile {/home/helios/oagData/sr/rtfeedback/lattices/default/v.default/config};
set sddsFileName {/home/helios/oagData/ADTFiles/srOther/sr.bpm.error.rtfb.pv}; # file name for the adt sdds file that is created

################################################################################

# write the sdds configuration file
proc CreateSdds {} {
	global xList
	global yList
	global sddsFileName
	if [catch {sdds open $sddsFileName w SDDS_BINARY} result] {
		APSAlertBox .alert -errormessage "Unable to open $sddsFileName for writing: $result"
		exit
	} else {
		set fd $result
	}
	
	# define parameters and columns
	sdds defineParameter $fd User -type SDDS_STRING
	sdds defineParameter $fd InstallLocation -type SDDS_STRING
	sdds defineParameter $fd ADTFileType -type SDDS_STRING
	sdds defineParameter $fd ADTNArrays -type SDDS_SHORT
	sdds defineParameter $fd ADTNAreas -type SDDS_SHORT
	sdds defineParameter $fd ADTLatticeFile -type SDDS_STRING
	sdds defineParameter $fd ADTHeading -type SDDS_STRING
	sdds defineParameter $fd ADTUnits -type SDDS_STRING
	sdds defineParameter $fd ADTUnitsPerDiv -type SDDS_DOUBLE
	sdds defineParameter $fd ADTScaleFactor -type SDDS_DOUBLE
	sdds defineParameter $fd ADTCenterVal -type SDDS_DOUBLE
	sdds defineParameter $fd ADTZoomArea -type SDDS_SHORT
	sdds defineParameter $fd ADTColor -type SDDS_STRING
	sdds defineColumn $fd ControlName -type SDDS_STRING
	sdds defineColumn $fd ControlType -type SDDS_STRING
	sdds defineColumn $fd ControlMode -type SDDS_STRING
	sdds defineColumn $fd StatusName -type SDDS_STRING
	sdds defineColumn $fd BPMName -type SDDS_STRING
	
	sdds writeLayout $fd
	
	sdds startPage $fd 160
	
	sdds setParameter $fd User "gfystro"
	sdds setParameter $fd InstallLocation "/home/helios/oagData/ADTFiles/srOther/sr.bpm.error.rtfb.pv"
	sdds setParameter $fd ADTFileType "ADTPV"
	sdds setParameter $fd ADTNArrays 2
	sdds setParameter $fd ADTNAreas 2
	sdds setParameter $fd ADTLatticeFile "sr.lat"
	sdds setParameter $fd ADTHeading "SR RTFB in use BPM errors Horizontal"
	sdds setParameter $fd ADTUnits "mm"
	sdds setParameter $fd ADTUnitsPerDiv 5.000000e-03
	sdds setParameter $fd ADTScaleFactor 1.000000e+00
	sdds setParameter $fd ADTCenterVal 0.000000e+00
	sdds setParameter $fd ADTZoomArea 1
	sdds setParameter $fd ADTColor "Red"
	
		set xControlName {}
		set xControlType {}
		set xControlMode {}
		set xStatusName {}
		set xBPMName {}
	foreach bpm $xList {	
		set cn {}
		set ct {pv}
		set cm {RO}
		set sn {}
		
		append cn $bpm ":msAve:x:ErrorCC"
		append sn $bpm ":ms.XAVS"
		
		lappend xControlName $cn
		lappend xControlType $ct
		lappend xControlMode $cm
		lappend xStatusName $sn
		lappend xBPMName $bpm
		
	}
	
	eval sdds setColumn $fd ControlName $xControlName
	eval sdds setColumn $fd ControlType $xControlType
	eval sdds setColumn $fd ControlMode $xControlMode
	eval sdds setColumn $fd StatusName $xStatusName
	eval sdds setColumn $fd BPMName $xBPMName

	sdds writePage $fd
	
	
	sdds startPage $fd 160
	
	sdds setParameter $fd User "gfystro"
	sdds setParameter $fd InstallLocation ""
	sdds setParameter $fd ADTFileType "ADTPV"
	sdds setParameter $fd ADTNArrays 2
	sdds setParameter $fd ADTNAreas 2
	sdds setParameter $fd ADTLatticeFile "sr.lat"
	sdds setParameter $fd ADTHeading "SR RTFB in use BPM errors Vertical"
	sdds setParameter $fd ADTUnits "mm"
	sdds setParameter $fd ADTUnitsPerDiv 5.000000e-03
	sdds setParameter $fd ADTScaleFactor 1.000000e+00
	sdds setParameter $fd ADTCenterVal 0.000000e+00
	sdds setParameter $fd ADTZoomArea 1
	sdds setParameter $fd ADTColor "Blue"
	
		set yControlName {}
		set yControlType {}
		set yControlMode {}
		set yStatusName {}
		set yBPMName {}
	foreach bpm $yList {	
		set cn {}
		set ct {pv}
		set cm {RO}
		set sn {}
		
		append cn $bpm ":msAve:y:ErrorCC"
		append sn $bpm ":ms.YAVS"
		
		lappend yControlName $cn
		lappend yControlType $ct
		lappend yControlMode $cm
		lappend yStatusName $sn
		lappend yBPMName $bpm
		
	}
	
	eval sdds setColumn $fd ControlName $yControlName
	eval sdds setColumn $fd ControlType $yControlType
	eval sdds setColumn $fd ControlMode $yControlMode
	eval sdds setColumn $fd StatusName $yStatusName
	eval sdds setColumn $fd BPMName $yBPMName
	
	sdds writePage $fd
	
	sdds close $fd
}

# create the x bpm list from the h.default config
proc CreateXList {} {
	global xList
	global xConfigFile
	if [catch {sdds open $xConfigFile r SDDS_BINARY} result] {
		APSAlertBox .alert -errormessage "Unable to open $xConfigFile for reading: $result"
		exit
	} else {
		set fd $result
	}
	set xList [sdds getColumn $fd Name -page 1]
	sdds close $fd
}

# create the y bpm list from the v.default config
proc CreateYList {} {
	global yList
	global yConfigFile
	if [catch {sdds open $yConfigFile r SDDS_BINARY} result] {
		APSAlertBox .alert -errormessage "Unable to open $yConfigFile for reading: $result"
		exit
	} else {
		set fd $result
	}
	set yList [sdds getColumn $fd Name -page 1]
	sdds close $fd
}

################################################################################ 

CreateXList
CreateYList
CreateSdds

#set launchAdt "adt -f $sddsFileName &"
#eval exec $launchAdt

exit
