#!/bin/sh
# \
  exec tclsh "$0" "$@"
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 filename ""
set args $argv
set plot 0
set statusCallback ""
set steps 1
set archive 0
set updateTunePV 0
set interval 1
set tuneRangeLow 0.1
set system P0
set cronJob 0
APSParseArguments {filename plot statusCallback steps archive updateTunePV interval tuneRangeLow system cronJob}

if $cronJob {
    if {[catch {exec cavget -list=S:DesiredMode -num} mode]} {
        set mode 0
    }
    if {($mode != 1) && ($mode != 2) && ($mode != 4) && ($mode != 5)} {
        exit 0
    }
}

if [catch {exec cavget -list=SR:bunchPatternSO -pend=10} bunchPattern] {
    puts stderr "getP0FBTune(error): $bunchPattern"
    exit 1
}
if {$bunchPattern == {""}} {
    puts "The bunch pattern is empty string, quit"
    exit 0
}
if [catch {exec cavget -list=S-DCCT:CurrentM -pend=10} dcct] {
    puts stderr "Error reading SR current: $dcct"
    exit 0
}
if {$dcct == "?"} {
    exit 0
}
if [catch {APSMpMeasureP0FBTune -outputFile $filename -plot $plot -interval $interval -system $system \
             -statusCallback $statusCallback -tuneRangeLow $tuneRangeLow  \
             -update $updateTunePV -steps $steps -archive $archive} result] {
    puts stderr "getP0FBTune(error): $result"
    exit 1
}
    
exit 0
