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

#Input: RadMonitors.sector.template
#       RadMonitors.otherPVs
#Output: RadMonitors.mon
#        RadMonitors.loc

#Input: RadMonitorsFast.sector.template
#       RadMonitorsFast.otherPVs
#Output: RadMonitorsFast.mon

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)]
APSStandardSetup

set root RadMonitors

for {set sector 0} {$sector<41} {incr sector} {
    # sectoru is the unformatted sector value.
    exec sddsprocess ./../DataLogging/${root}.sector.template /tmp/${root}.sector.$sector \
      -reedit=column,ControlName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/ \
      -reedit=column,ReadbackName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/ \
      -redefine=col,sector,$sector,type=long 
    lappend fileList /tmp/${root}.sector.$sector
}

if [catch {eval exec sddscombine $fileList ./../DataLogging/${root}.otherPVs -pipe=out -merge | \
             sddssort -pipe -col=ControlName -numericHigh -unique | \
             sddsprocess -pipe=in /tmp/${root}.mon \
             -edit=column,SimpleControlName,ControlName,S?/./K \
             -delete=col,sector} result] {
    puts stderr "error: $result"
    exit
}

eval file delete $fileList

puts "Comparing against master PV list"
exec sddsselect /tmp/${root}.mon /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out -match=SimpleControlName=rec_name -nowarning -reuse | sddsconvert -pipe=in ./../DataLogging/${root}.mon -delete=column,SimpleControlName

file delete -force /tmp/${root}.mon

sdds load ./../DataLogging/${root}.mon data
set data(ParameterNames) "InstallLocation"
set data(Parameter.InstallLocation) [list /home/helios/oagData/logging/${root}/${root}.mon]
set data(Layout.DataMode.Mode) "ascii"
sdds save ./../DataLogging/${root}.mon data


exec sddsprocess ../DataLogging/${root}.mon ../DataLogging/${root}.loc \
  "-match=column,ControlName=*RateM" \
  -define=column,Tolerance,.05,type=double \
  -reprint=para,InstallLocation,/home/helios/oagData/logonchange/${root}/${root}.loc

set fileList ""
set root RadMonitorsFast

for {set sector 0} {$sector<41} {incr sector} {
    # sectoru is the unformatted sector value.
    exec sddsprocess ./../DataLogging/${root}.sector.template /tmp/${root}.sector.$sector \
      -reedit=column,ControlName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/ \
      -reedit=column,ReadbackName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/ \
      -redefine=col,sector,$sector,type=long 
    lappend fileList /tmp/${root}.sector.$sector
}

if [catch {eval exec sddscombine $fileList ./../DataLogging/${root}.otherPVs -pipe=out -merge | \
             sddssort -pipe -col=ControlName -numericHigh -unique | \
             sddsprocess -pipe=in /tmp/${root}.mon \
             -edit=column,SimpleControlName,ControlName,S?/./K \
             -delete=col,sector} result] {
    puts stderr "error: $result"
    exit
}

eval file delete $fileList

puts "Comparing against master PV list"
exec sddsselect /tmp/${root}.mon /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out -match=SimpleControlName=rec_name -nowarning -reuse | sddsconvert -pipe=in ./../DataLogging/${root}.mon -delete=column,SimpleControlName

file delete -force /tmp/${root}.mon

sdds load ./../DataLogging/${root}.mon data
set data(ParameterNames) "InstallLocation"
set data(Parameter.InstallLocation) [list /home/helios/oagData/logging/${root}/${root}.mon]
set data(Layout.DataMode.Mode) "ascii"
sdds save ./../DataLogging/${root}.mon data
