esrf

Beamline Instrument Software Support
SPEC Macro documentation: [ Macro Index | BCU Home ]

#%TITLE% SPECFIT.MAC
#
#%NAME%
#  SPECFIT.MAC - Macros for simplifying access to SpecfitServer
#
#%OVERVIEW%
#  This macro ...
#  %BR%
#
#
#%SETUP%
# The %B%xxx%B% macros requires ... and and inatallation of %B%SpecfitServer%B% 
# in the default NETHOST
#%END%

#%HISTORY%
#$Log: specfit_ebpm.mac,v $
#Revision 1.1  2012/07/04 14:10:24  domingue
#Initial revision
#
#
#
#%END%

#%UU% <sleep_time> [<progress_mode> [<progress_string>]]
#%MDESC%
#  to be moved to stlocal.mac %BR%
#  Sleeps for <sleep_time> in seconds while showing a progress indicator
#  
def sleep_progress(sleep_time, prgmode, prgstr) '{
   local t0 dt
   local prglength
   local progress last

   if (prgmode == "bar" || !prgmode || int(prgmode) > 0) {
      prglength = (prgmode > 0)? prgmode : 25
      prgstr = prgstr? substr(prgstr, 1, 1) : "."
      prgmode = "bar"
   } else if (prgmode == "wheel") {
      if (length(prgstr) <= 1) prgstr = "-\|/"
      prglength = int (2 * length(prgstr) * sleep_time)
      printf("%s", substr(prgstr, 1, 1))
   } else {
      sleep(sleep_time)
      return
   }

   for (t0 = time(), last = 0; (dt = (time() - t0)) < sleep_time; sleep(0.1)) {
      progress = int((dt / sleep_time) * prglength + 0.5)
      for (; last < progress; last++) {
         if (prgmode == "bar")
            printf("%s", prgstr)
         else if (prgmode == "wheel")
            printf("\b%s", substr(prgstr, 1 + last % length(prgstr), 1))
      }
   }
   if (prgmode == "bar")
      while (progress--) printf("\b")
   else if (prgmode == "wheel")
      printf("\b")
   tty_cntl("ce")
}'

#%UU% <specfit_device>
#%MDESC%Defines the name of the SpecfitServer device used for FFT calc.  
def specfit_define'{
   global SPECFIT_EBPM
   
   SPECFIT_EBPM = "$1"       
}'

def specfit_find(verbose) '{
   #return("//gwenn/id24/specfit/bpm")
   return(SPECFIT_EBPM)
}'

def specfit_start(verbose) '{
   local dev

   dev = specfit_find(verbose)
   if (!dev) {
      unix("bliss_dserver start SpecfitServer")
      if (verbose) print "Starting SpecfitServer "
      unix("SpecfitServer&")
      sleep_progress(3)
      dev = specfit_find(0)
      printf("%s\n", dev? "Done" : "Failed")
   }
   return(dev)
}'


def specfit_par(what) '{
   if (what == "maxfftpts")
     return(8192)
   else
     return("")
}'

#%MACROS%

#%AUTHOR% P.Fajardo, (Original 10/11).
#  $Revision: 1.1 $ / $Date: 2012/07/04 14:10:24 $
#%TOC%