esrf

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

#%TITLE% SC_dummy.mac
#%NAME% %B%SC_dummy.mac%B% macros to control the sample changer with MD2
#%DESCRIPTION%
# macros to handle the compliency between the minidiff and the microdiff
# in the context of the datacollection.
#%END%
global SC_MD_FLAGS
global MICRODIFF_AUTOCHK_BACKGROUND
global ENABLE_AUTO_LOOP_CENTRING
global ENABLE_AUTO_CRYSTAL_CENTRING
global ENABLE_PLAYBACK_CENTRING
global AUTO_CENTRING_FLAG
global KAPPA_IN_USE
SC_MD_FLAGS=7

def SCMoveToLoadingPosition(holder_length) '{
  printf ("moving to loading position\n")
  if (MICRODIFF_AUTOCHK_BACKGROUND) {
    printf("calling Microdiff device \'Check Background\'\n")
    tango_io(MICRODIFF_DEVICE, "CheckBackground")
  
    while (tango_io(MICRODIFF_DEVICE, "State") != 12) {
      sleep(1)
    }
  }
  helical_resetpos()
  #tango_io(MICRODIFF_DEVICE, "State")
}'

def SCMoveToUnloadingPosition(holder_length) '{
  printf ("moving to unloading position\n")
  helical_resetpos()
  #tango_io( MICRODIFF_DEVICE, "State")
}'


def SCMinidiffGetControl '{
 
}'

def SCMinidiffCanMove() '{
  return 1
}'

def _microdiff_split(s) '{
  local tmp[] tmp2[] tmp3[]
  split(s, tmp, ";")
  for (i in tmp) {
    split(tmp[i], tmp2, " ")
    tmp3[tmp2[0]]=tmp2[1]
  }
  return tmp3
}'

def minidiff_prepare_centring '{ 
  local tmp2[] motrole attr

  if (($# > 0)&&(length("$1")>0)) {
    tmp2 = _microdiff_split("$1")
    for (motrole in tmp2) {
      if (motrole=="blsampleid") {
        sample_id=tmp2[motrole]
        attr=sprintf("%s/SampleUID", MICRODIFF_DEVICE)
        esrf_io(attr, "DevWrite", int(sample_id))
      }
    }
  }
  wait_ready()
  AUTO_CENTRING_FLAG=AUTO_CENTRING_FLAG+1
}'

def minidiff_prepare_autocentring '{
  mv zoom 1
  microdiff_phase(1)
  wait_ready()
  mv flight 0
  microdiff_light_factor(1)
  AUTO_CENTRING_FLAG=0
}'

def SCMoveToLoadingPos() '{
  SCMoveToLoadingPosition()
}'

def SCMoveToUnloadingPos() '{
  SCMoveToUnloadingPosition()
}'

def SCKappaOn '{
  global KAPPA_IN_USE
  KAPPA_IN_USE = 1
  if (microdiff_kappaena(KAPPA_IN_USE) < 0)
    KAPPA_IN_USE = 0
}'

def SCKappaOff '{
  global KAPPA_IN_USE
  KAPPA_IN_USE = 0
  microdiff_kappaena(KAPPA_IN_USE)
}'

#%MACROS%
#%IMACROS%
#%TOC%
#%AUTHOR% BLISS%BR%
#$Revision: 1.13 $ $Date: 2012/11/22 17:53:23 $%BR%
#%END%
#%LOG%
#$Log: SC_dummy.mac,v $
#Revision 1.13  2012/11/22 17:53:23  beteva
#Added microdiff_light_factor
#
#Revision 1.12  2010/09/09 09:08:42  beteva
#made KAPPA_IN_USE global (used by mxCuBE)
#
#Revision 1.11  2010/06/29 16:51:38  beteva
#added helical_resetpos() when loading/unloading sample
#
#Revision 1.10  2010/06/02 14:35:25  guijarro
#added new variables for automatic centring
#
#Revision 1.9  2010/01/28 13:54:13  guijarro
#added waitReady for minidiff_prepare_centring
#added minidiff_prepare_autocentring and global variables
#
#Revision 1.8  2009/04/08 14:01:04  beteva
#added  microdiff_kappaena() to enable/disable minikappa
#
#Revision 1.7  2009/02/09 16:00:23  beteva
#changed esrf_io to tango_io, added SCKappaOn/Off