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

# output files: RunControl.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

exec sddsprocess /home/helios/oagData/pvdata/iocRecNamesOAG.sdds -pipe=out \
  "-match=column,rec_name=*RC,rec_name=S:RC:*,|" "-match=column,ioc_name=siocrunctrl,ioc_name=siocrunctrl2,|" | \
  sddsprocess -pipe -delete=column,ioc_name -reedit=column,rec_name,ei/.RUN/ | \
  sddsconvert -pipe \
  -rename=column,rec_name=ControlName | \
  sddssort -pipe=in ../DataLogging/RunControl.mon.new \
  -col=ControlName -num -uniq

sdds load ../DataLogging/RunControl.mon.new data
unset data(Description.Text)
unset data(Description.Contents)
sdds save ../DataLogging/RunControl.mon.new data

exec sddscainfo ../DataLogging/RunControl.mon.new ../DataLogging/RunControl.mon.new.info -pend=10
file delete ../DataLogging/RunControl.mon.new

exec sddsprocess ../DataLogging/RunControl.mon.new.info -pipe=out -match=column,Active=y -nowarn \
  "-print=parameter,InstallLocation,/home/helios/oagData/monitoring/RunControl/RunControl.mon" | \
  sddsprocess -pipe -delete=column,Active,IOCHost,ReadAccess,WriteAccess,StructureID | \
  sddsconvert -pipe=in ../DataLogging/RunControl.mon.new -ascii -rename=column,ElementCount=ExpectElements,FieldType=ExpectFieldType,Units=ReadbackUnits
file delete ../DataLogging/RunControl.mon.new.info

sdds load ../DataLogging/RunControl.mon.new data
set data(ColumnInfo.ReadbackName) "type SDDS_STRING"
#set data(Column.ReadbackName) $data(Column.ControlName)

set data(ColumnNames) "ReadbackName ReadbackUnits ControlName Provider ExpectNumeric ExpectFieldType ExpectElements"
set data(ColumnInfo.ExpectElements) "type SDDS_LONG"
set data(ColumnInfo.ExpectNumeric) "type SDDS_CHARACTER"
set en ""
foreach ndt [lindex $data(Column.NativeDataType) 0] \
  eft [lindex $data(Column.ExpectFieldType) 0] \
  ee [lindex $data(Column.ExpectElements) 0] \
  cn [lindex $data(Column.ControlName) 0] {
      if {($ndt == "double") || ($ndt == "int") || ($ndt == "short")} {
          lappend en y
      } else {
          puts "makeRunControlLoggerInput: Unexepected native data type: $ndt"
          exit
      }
      if {$ee == 1} {
          lappend eftList scalar
      } else {
          puts "makeRunControlLoggerInput: Unexepected element count: $ndt"
          exit
      }
      if {[string range $cn 0 4] == "S:RC:"} {
          lappend rbList [string range $cn 0 end-5]Running
      } else {
          lappend rbList [string range $cn 0 end-6]Running
      }
  }
set data(Column.ExpectNumeric) [list $en]
set data(Column.ExpectFieldType) [list $eftList]
set data(Column.ReadbackName) [list $rbList]



sdds save ../DataLogging/RunControl.mon data
file delete ../DataLogging/RunControl.mon.new

exec sddscombine ../DataLogging/RunControl.mon ../DataLogging/RunControl.mon.misc -pipe=out -merge | \
  sddsconvert -pipe -ascii -delete=parameter,NumberCombined | \
  sddssort -pipe=in ../DataLogging/RunControl.mon -col=ControlName -num -unique
