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

#
# input files: rfgunTriggers.sdds. rfgunMisc.sdds
#

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

#Find all PVs EPS:[00-40]:[ID-BM]:array0:15
for {set i 1} {$i < 40} {incr i} {
    append sectors "[format %02d $i] "
}
set tempdata(ColumnNames) "ControlName"
foreach sector $sectors {
    lappend controlnames "EPS:${sector}:BM:array0:15"
    lappend controlnames "EPS:${sector}:ID:array0:15"
#    lappend controlnames "EPS:${sector}:BM:array3:32"
#    lappend controlnames "EPS:${sector}:ID:array3:32"
}
set tempdata(Column.ControlName) [list $controlnames]

set tmpFile /tmp/[APSTmpString]
if {[catch {sdds save $tmpFile tempdata} result]} {
    catch {exec rm $tmpFile}
    puts stderr "Error: $result"
    exit
}

if {[catch {exec sddsselect $tmpFile /home/helios/oagData/pvdata/iocRecNamesOAG.sdds \
              -pipe=out -match=ControlName=rec_name -nowarning -reuse | \
              sdds2stream -pipe -col=ControlName} triggerPVs]} {
    catch {exec rm $tmpFile}
    puts stderr "Error: $triggerPVs"
    exit
}

catch {exec rm $tmpFile}

#Find all PVs EPS:[00-40]:[ID-BM]:[FLT1-Warn1]
set controlnames ""
foreach triggerPV $triggerPVs {
    lappend controlnames [string range $triggerPV 0 8]:FLT1
    lappend controlnames [string range $triggerPV 0 8]:Warn1
}
set tempdata(Column.ControlName) [list $controlnames]

if {[catch {sdds save $tmpFile tempdata} result]} {
    catch {exec rm $tmpFile}
    puts stderr "Error: $result"
    exit
}

if {[catch {exec sddsselect $tmpFile /home/helios/oagData/pvdata/iocRecNamesOAG.sdds \
              -pipe=out -match=ControlName=rec_name -nowarning -reuse | \
              sdds2stream -pipe -col=ControlName} triggerPVs]} {
    catch {exec rm $tmpFile}
    puts stderr "Error: $triggerPVs"
    exit
}

catch {exec rm $tmpFile}




#set data(ColumnNames) "ControlName ReadbackName ReadbackUnits"
set data(ColumnNames) "ControlName"
set data(ParameterNames) "InstallLocation OutputRootname TriggerControlName MajorAlarm MinorAlarm NoAlarm TransitionDirection TransitionThreshold GlitchScript"
set data(ParameterInfo.MajorAlarm)              "type SDDS_SHORT"
set data(ParameterInfo.MinorAlarm)              "type SDDS_SHORT"
set data(ParameterInfo.NoAlarm)                 "type SDDS_SHORT"
set data(ParameterInfo.TransitionDirection)     "type SDDS_SHORT"
set data(ParameterInfo.TransitionThreshold)     "type SDDS_DOUBLE"
set data(ParameterInfo.GlitchScript)            "type SDDS_STRING"




foreach triggerPV $triggerPVs {
    set root [string range $triggerPV 0 5]
    set beamline [string range $triggerPV 4 8]
    lappend data(Parameter.InstallLocation) "/home/helios/oagData/glitchLogs/FE-EPS/FE-EPS.atrig"

    lappend data(Parameter.OutputRootname)     "$triggerPV"
    lappend data(Parameter.TriggerControlName) "$triggerPV"
    lappend data(Parameter.MajorAlarm) 0
    lappend data(Parameter.MinorAlarm) 0
    lappend data(Parameter.NoAlarm) 0
    lappend data(Parameter.TransitionDirection) 1
    lappend data(Parameter.TransitionThreshold) .1
    lappend data(Parameter.GlitchScript) "/home/helios/oagData/glitchLogs/FE-EPS/emailFLT"

    set controlNames ""

    if {[string range $triggerPV end-3 end] == "FLT1"} {
        lappend controlNames ${triggerPV}:Year
        lappend controlNames ${triggerPV}:Month
        lappend controlNames ${triggerPV}:Day
        lappend controlNames ${triggerPV}:Hour
        lappend controlNames ${triggerPV}:Minute
        lappend controlNames ${triggerPV}:Second
    } else {
        lappend controlNames [string range $triggerPV 0 end-1]Year
        lappend controlNames [string range $triggerPV 0 end-1]Month
        lappend controlNames [string range $triggerPV 0 end-1]Day
        lappend controlNames [string range $triggerPV 0 end-1]Hour
        lappend controlNames [string range $triggerPV 0 end-1]Minute
        lappend controlNames [string range $triggerPV 0 end-1]Second
    }

    for {set c 8} {$c <= 24} {incr c} {
        lappend controlNames EPS:${beamline}:array0:$c
    }
    for {set c 26} {$c <= 35} {incr c} {
        lappend controlNames EPS:${beamline}:array0:$c
    }
    for {set c 37} {$c <= 37} {incr c} {
        lappend controlNames EPS:${beamline}:array0:$c
    }
    for {set c 41} {$c <= 59} {incr c} {
        lappend controlNames EPS:${beamline}:array0:$c
    }
    for {set c 8} {$c <= 9} {incr c} {
        lappend controlNames EPS:${beamline}:array1:$c
    }
    for {set c 11} {$c <= 15} {incr c} {
        lappend controlNames EPS:${beamline}:array1:$c
    }
    for {set c 17} {$c <= 20} {incr c} {
        lappend controlNames EPS:${beamline}:array1:$c
    }
    for {set c 32} {$c <= 35} {incr c} {
        lappend controlNames EPS:${beamline}:array1:$c
    }
    for {set c 42} {$c <= 44} {incr c} {
        lappend controlNames EPS:${beamline}:array1:$c
    }
    for {set c 8} {$c <= 20} {incr c} {
        lappend controlNames EPS:${beamline}:array2:$c
    }
    for {set c 24} {$c <= 36} {incr c} {
        lappend controlNames EPS:${beamline}:array2:$c
    }
    for {set c 40} {$c <= 52} {incr c} {
        lappend controlNames EPS:${beamline}:array2:$c
    }
    lappend data(Column.ControlName) $controlNames
}

if {[catch {sdds save ./glitchLogs/FE-EPS.atrig data} result]} {
    catch {exec rm $tmpFile}
    puts stderr "Error: $result"
    exit
}
