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

# input files:
# sr.alog.Template
# sr.alog.Misc
# sr-ps.alog.Template
# sr-ps.alog.Misc
#
# output files:
# sr.alog
# sr-ps.alog

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 listFile "/home/helios/oagData/sr/BPLDs/sectors.sdds"
set sectorList [APSGetSDDSColumn -fileName $listFile -column Sector]

#sr.alog

for {set i 1} {$i <= 40} {incr i} {
    puts stderr "Working on $i"
    set ii [format %02d $i]
    exec sddsprocess ./../Alarms/sr.alog.Template /tmp/sr-$i.alog \
        "-reedit=col,ControlName,%/<sector>/${i}/%/<Sector>/${ii}/" \
        "-reedit=col,RelatedControlName,%/<sector>/${i}/%/<Sector>/${ii}/"
    lappend fileList /tmp/sr-$i.alog

}

foreach sector $sectorList {
    puts stderr "Working on $sector"
    set sectorP1 [expr $sector+1]
    set filename [format /tmp/sr.alog.%02ld $sector]
    exec sddssequence -pipe=out -define=Channel,type=long -sequence=begin=1,end=2,delta=1 \
      | sddsprocess -pipe \
      -print=column,ControlName,S${sector}BPLD:CH%ld:IDgapBI,Channel \
      "-print=column,Description,S${sector} BPLD channel" \
      -print=column,ControlType,pv \
      -print=column,ControlMode,RO \
      -print=column,RelatedControlName, \
      | sddsconvert -pipe=in $filename -dele=col,Channel
    lappend fileList $filename
}

eval exec sddscombine $fileList ./../Alarms/sr.alog.Misc -merge -pipe=out | sddsprocess -pipe -edit=column,SimpleControlName,ControlName,S?/./K | sddssort -col=ControlName -pipe=in /tmp/sr.alog -nowarning -numericHigh

puts "Comparing against master PV list"
exec sddsselect /tmp/sr.alog /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out -match=SimpleControlName=rec_name -nowarning -reuse | sddsconvert -pipe=in ./../Alarms/sr.alog -delete=column,SimpleControlName

sdds load ./../Alarms/sr.alog data
set data(ParameterNames) "InstallLocation"
set data(Parameter.InstallLocation) [list /home/helios/oagData/Alarms/sr.alog]
set data(Layout.DataMode.Mode) "ascii"
sdds save ./../Alarms/sr.alog data

eval file delete $fileList /tmp/sr.snap /tmp/sr.alog /tmp/sr.alog~


#sr-ps.alog

set fileList ""
for {set i 1} {$i <= 40} {incr i} {
    puts stderr "Working on $i"
    set ii [format %02d $i]
    exec sddsprocess ./../Alarms/sr-ps.alog.Template /tmp/sr-ps-$i.alog \
        "-reedit=col,ControlName,%/<sector>/${i}/%/<Sector>/${ii}/" \
        "-reedit=col,RelatedControlName,%/<sector>/${i}/%/<Sector>/${ii}/"
    lappend fileList /tmp/sr-ps-$i.alog

}

foreach sector $sectorList {
    puts stderr "Working on $sector"
    set sectorP1 [expr $sector+1]
    set filename [format /tmp/sr-ps.alog.%02ld $sector]
    exec sddssequence -pipe=out -define=Channel,type=long -sequence=begin=1,end=2,delta=1 \
      | sddsprocess -pipe \
      -print=column,ControlName,S${sector}BPLD:CH%ld:IDgapBI,Channel \
      "-print=column,Description,S${sector} BPLD channel" \
      -print=column,ControlType,pv \
      -print=column,ControlMode,RO \
      -print=column,RelatedControlName, \
      | sddsconvert -pipe=in $filename -dele=col,Channel
    lappend fileList $filename
}

eval exec sddscombine $fileList ./../Alarms/sr-ps.alog.Misc -merge -pipe=out | sddsprocess -pipe -edit=column,SimpleControlName,ControlName,S?/./K | sddssort -col=ControlName -pipe=in /tmp/sr-ps.alog -nowarning -numericHigh

puts "Comparing against master PV list"
exec sddsselect /tmp/sr-ps.alog /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out -match=SimpleControlName=rec_name -nowarning -reuse | sddsconvert -pipe=in ./../Alarms/sr-ps.alog -delete=column,SimpleControlName

sdds load ./../Alarms/sr-ps.alog data
set data(ParameterNames) "InstallLocation"
set data(Parameter.InstallLocation) [list /home/helios/oagData/Alarms/sr-ps.alog]
set data(Layout.DataMode.Mode) "ascii"
sdds save ./../Alarms/sr-ps.alog data

eval file delete $fileList /tmp/sr-ps.snap /tmp/sr-ps.alog /tmp/sr-ps.alog~



puts "use cppatch to install sr.alog"
puts "use cppatch to install sr-ps.alog"






exec sddsprocess ./../Alarms/sr-ps.alog ./../Alarms/SR-PS-Status-Alarm-Filter.sdds "-match=column,ControlName=*StatusCALC,ControlName=*OnOffStatusM,|" -reprint=parameter,InstallLocation,/home/helios/oagData/Alarms/FilterFiles/SR-PS-Status-Alarm-Filter.sdds -retain=column,ControlName "-delete=array,*"

file delete ./../Alarms/SR-PS-Status-Alarm-Filter.sdds~

exec sddsprocess ./../Alarms/sr-ps.alog ./../Alarms/SR-PS-Faults-Alarm-Filter.sdds "-match=column,ControlName=*FaultsM,ControlName=*FaultStatusM,|" -reprint=parameter,InstallLocation,/home/helios/oagData/Alarms/FilterFiles/SR-PS-Faults-Alarm-Filter.sdds -retain=column,ControlName "-delete=array,*"

file delete ./../Alarms/SR-PS-Faults-Alarm-Filter.sdds~

exec sddsprocess ./../Alarms/sr.alog ./../Alarms/SR-Rad-Monitor-Alarm-Filter.sdds "-match=column,ControlName=*GRateM,ControlName=*NRateM,|,ControlName=*GMeasuredStatusM,|,ControlName=*NMeasuredStatusM,|,ControlName=*GStatusM,|,ControlName=*NStatusM,|,ControlName=*:AlarmM,|,ControlName=*:FailM,|,ControlName=*:MaskedM,|" -reprint=parameter,InstallLocation,/home/helios/oagData/Alarms/FilterFiles/SR-Rad-Monitor-Alarm-Filter.sdds -retain=column,ControlName "-delete=array,*"

file delete ./../Alarms/SR-Rad-Monitor-Alarm-Filter.sdds~

exec sddsprocess ./../Alarms/sr.alog ./../Alarms/SR-Vacuum-Pressure-Alarm-Filter.sdds "-match=column,ControlName=*PressureM" -reprint=parameter,InstallLocation,/home/helios/oagData/Alarms/FilterFiles/SR-Vacuum-Pressure-Alarm-Filter.sdds -retain=column,ControlName "-delete=array,*"

file delete ./../Alarms/SR-Vacuum-Pressure-Alarm-Filter.sdds~

exec sddsprocess ./../Alarms/sr.alog ./../Alarms/SR-H2O-Alarm-Filter.sdds "-match=column,ControlName=*H2O*" -reprint=parameter,InstallLocation,/home/helios/oagData/Alarms/FilterFiles/SR-H2O-Alarm-Filter.sdds -retain=column,ControlName "-delete=array,*"

file delete ./../Alarms/SR-H2O-Alarm-Filter.sdds~
