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

cd /home/helios/oagData/Alarms


scan [exec date +%H] %ld hour
scan [exec date +%M] %ld mins
#set tag [clock format [clock seconds] -format "%Y-%j-%m%d"]

set inputList          {booster.alog linac.alog mps.alog par.alog sr.alog  sr-ps.alog  timing.alog srf.alog acis.alog runControl.alog topup.alog lea.alog S-RFNS.alog S-DAQ.alog}
set runControlPVList   {OAG099RC     OAG098RC   OAG097RC OAG096RC OAG095RC OAG088RC    OAG094RC    OAG093RC OAG092RC  OAG090RC        OAG089RC   OAG087RC OAG091RC OAG086RC}
set runControlDescList {booster      linac      mps      par      sr       sr-ps       timing      srf      acis      runControl      topup      lea       s-rfns s-daq}

#set inputList          {booster.alog linac.alog mps.alog par.alog sr.alog  timing.alog srf.alog acis.alog srRTFB.alog runControl.alog topup.alog SCU0.alog SCU1.alog lea.alog}
#set runControlPVList   {OAG099RC     OAG098RC   OAG097RC OAG096RC OAG095RC OAG094RC    OAG093RC OAG092RC  OAG091RC    OAG090RC        OAG089RC   OAG119RC  OAG122RC  OAG087RC}
#set runControlDescList {booster      linac      mps      par      sr       timing      srf      acis      srRTFB      runControl      topup      SCU0      SCU1      lea}

#set inputList          {booster.alog linac.alog mps.alog par.alog sr.alog timing.alog srf.alog acis.alog srRTFB.alog runControl.alog topup.alog SRDCPS-100Hz.alog SCU0.alog SCU1.alog lea.alog}
#set runControlPVList   {OAG099RC     OAG098RC   OAG097RC OAG096RC OAG095RC OAG094RC   OAG093RC OAG092RC OAG091RC     OAG090RC        OAG089RC   OAG088RC OAG119RC OAG122RC OAG087RC}
#set runControlDescList {booster      linac      mps      par      sr      timing      srf      acis      srRTFB      runControl      topup      SRDCPS-100Hz SCU0 SCU1 lea}

if {[catch {exec cavget -list=[join $runControlPVList ,] -list=.RUN,.PID -printErrors} values]} {
    
} else {
    foreach "run pid" $values rcPV $runControlPVList {
        if {($run == 0) && ($pid != "")} {
            catch {exec cavput -list=$rcPV -list=.CLR=1}
        }
    }
}

foreach input $inputList rcPV $runControlPVList rcDesc $runControlDescList {
    set group [file root $input]
    if ![file exists $group.logfile] {
        exec date > $group.logfile
    } else {
        exec date >> $group.logfile
    }
#    set root "$group/$group-${tag}"
    set root "$group/$group"
    set count($input) [llength [glob -nocomplain ${root}.????]]
    if [file exists $group.logfile] {
        if [file exists $group.logfile.tmp] {
            file delete $group.logfile.tmp
        }
        exec tail -500 $group.logfile > $group.logfile.tmp
        file rename -force $group.logfile.tmp $group.logfile
    }
    if {0} {
        exec sddsalarmlog $input $root -watchInput \
          -inhibitPV=name=DataLoggersOnOffBO,pend=120 -pend=30 \
          -requireChange=severity -time=365,days -dailyFiles \
          -runControlPV=string=${rcPV},pingTimeout=80 \
          "-runControlDescription=string=${rcDesc} sddslogger" >>& $group.logfile &
    } else {
        if {$input == "sr.alog"} {
            exec sddsalarmlog $input $root -watchInput \
              -time=365,days -dailyFiles \
              -runControlPV=string=${rcPV},pingTimeout=80 \
              "-runControlDescription=string=${rcDesc} sddslogger" >>& $group.logfile &
        } else {
            exec sddsalarmlog $input $root -watchInput \
              -requireChange=severity -time=365,days -dailyFiles \
              -runControlPV=string=${rcPV},pingTimeout=80 \
              "-runControlDescription=string=${rcDesc} sddslogger" >>& $group.logfile &
        }
    }
}
    
exec sleep 60

set newJobs 0

foreach input $inputList {
    set group [file root $input]
#    set root "$group/[file root $input]-${tag}"
    set root "$group/[file root $input]"
    set count1($input) [llength [glob -nocomplain ${root}.????]]
    if {$count1($input)!=$count($input)} {
        set group [file root $input]
        if $count($input) {
            exec echo "Alarm logger restarted for $input at $hour:$mins" >> $group.logfile
        } else {
            exec echo "New alarm logger started for $input at $hour:$mins" >> $group.logfile
        }
        incr newJobs
    }
}
