A virtual motor to move the gap, obsolete

If the gap of the undulator has to be moved/scanned, a virtual motors needs to be installed:

#!/usr/bin/perl -w
#
my ($method, $value_new) = @ARGV; 

my $status = 1;

if( $method eq "set_position")
{
    $status = Spectra::tng_attrFloatWrt( "Undulator", "Gap", $value_new); 
    #
    # takes some time for the undulator to change state to MOVING (6)
    #
    sleep(2); 
    my $startTime = Spectra::Secnds(); 
    while( Spectra::tng_state( "Undulator") == 6)
    {
        Spectra::wait( 0.1); 
        #
        # refresh motor positions and sense 'Stop' clicks
        #
        Util::refresh(); 
        if( (Spectra::secnds() - $startTime) > 20)
        {
            $status = Spectra::error( "vm1: move didn't finish within 20s"); 
            goto finish;
        }
    }
}
elsif( $method eq "get_position")
{
    $SYM{RETURN_VALUE} = Spectra::tng_attrFloatRd( "Undulator", "Gap"); 
}
elsif( $method eq "get_limit_min")
{
    $SYM{RETURN_VALUE} = 11.1;
}
elsif( $method eq "get_limit_max")
{
    $SYM{RETURN_VALUE} = 220.
}
elsif( $method eq "exec_stop")
{
    $status = Spectra::tng_inout( "Undulator", "StopMove");
}

finish:
 $status;