Use hooks to prepare sindex, used by VcExecutor

We assume that a VcExecutor needs a variable that is incremented for every scan point, sindex. The pre-scan and the pre-move hooks maintain the Macroserver environment variable sindex. Here is an example code:

class gh_pre_scan(Macro):
    ”'
    ...
    ”'
    def run( self):
        self.output( "general_features.pre_scan hook")
        #
        # initialize sindex
        #
        self.setEnv( "sindex", 0)
        #
        ...

class gh_pre_move(Macro):
    def run( self):
        self.setEnv( "sindex", self.getEnv( "sindex") + 1) 
        self.output( "general_features.pre_move hook, sindex %d" % self.getEnv( "sindex"))
        return True

The hooks have to be enabled by:

spock> gh_enable gh_pre_scan pre-scan
spock> gh_enable gh_pre_move pre-move

Here is an example of a VcExecutor using sindex:

#!/bin/env python
#
# this Vc counter returns the value of sindex
#
import HasyUtils
import PyTango

class VC:
    def __init__(self, devicename = None):
        print( " VC.init, sindex.py")
        pass
    #
    # dev_state
    #
    def dev_state( self):
        return PyTango.DevState.ON
    #
    # Counts
    #
    def read_Counts( self):
        argout = HasyUtils.getEnv( "sindex")
        if argout is None:
            argout = -1.
        return float( argout)

    def write_Counts( self, argin):
        return 1
    #
    # Offset
    #
    def read_Offset( self):
        return 0

    def write_Offset( self, argin):        
        return 1
    #
    # reset
    #
    def Reset(self):
        return True