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

# output files: BLS.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=S??-BLS:*M,rec_name=S??-BLS:*C,|" -delete=column,ioc_name | \
  sddsprocess -pipe \
  "-match=column,rec_name=*EvtdbgCntSelM,!,rec_name=*FastBeamAbortTS_M,!,&,rec_name=*IDN_M,!,&,rec_name=*e_unitsM,!,&,rec_name=*faultStatusM,!,&,rec_name=*model_M,!,&,rec_name=*serial_M,!,&,rec_name=*NamC,!,&,rec_name=*NameC,!,&,rec_name=*WaveM,!,&,rec_name=*FileM,!,&,rec_name=*parWaveControlM,!,&,rec_name=*parWaveTimeAxisM,!,&,rec_name=S38-BLS:LLRF:EvtdbgCntSelC,!,&" | \
  sddsconvert -pipe \
  -rename=column,rec_name=ControlName | \
  sddssort -pipe=in ../DataLogging/BLS.mon.new \
  -col=ControlName -num -uniq

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

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

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

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

set data(ColumnNames) "ControlName ReadbackName ReadbackUnits 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] \
  cn [lindex $data(Column.ControlName) 0] \
  ee [lindex $data(Column.ExpectElements) 0] {
      if {($ndt == "double") || ($ndt == "int") || ($eft == "ENUM structure")} {
          lappend en y
      } elseif {$ndt == "string"} {
          puts "makeBLSLoggerInput: Cant log string PVs with the data logger: $cn"
#          lappend en n
          exit
      } else {
          puts "makeBLSLoggerInput: Unexepected native data type: $ndt"
          exit
      }
      if {$ee == 1} {
          lappend eftList scalar
      } else {
          puts "makeBLSLoggerInput: Unexepected element count: $ee $cn"
          exit
      }
  }
set data(Column.ExpectNumeric) [list $en]
set data(Column.ExpectFieldType) [list $eftList]


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


