MPICommandParams

MPICommandParams

 

typedef union {
    struct {	/* *'dst' = 'value' */
        MPICommandAddress	dst;
        MPICommandConstant	value;
        MPIControl		control;	/* Ignored by Sequence */
    } assign;

    struct {	/* branch to 'label' on 'expr' */
        char		*label;		/* NULL => stop sequence */
        MPICommandExpr	expr;		/* expr.oper => MPICommandOperatorLogical */
        MPIControl	control;	/* Ignored by Sequence */
    } branch;

    struct {	/* branch to 'label' on MPIEventMask('handle') 'oper' 'mask' */
        char			*label;		/* NULL => stop sequence */
        MPIHandle		handle;		/* [MPIMotor|MPIMotion|...] */
        MPICommandOperator	oper;		/* EQUAL/NOT_EQUAL/BIT_CLEAR/BIT_SET */
        MPIEventMask		mask;		/* MPIEventMask('handle') 'oper' 'mask' */
    } branchEvent;

    struct {	/* branch to 'label' on Io.input 'oper' 'mask' */
        char			*label;		/* NULL => stop sequence */
        MPIIoType		type;		/* MOTOR,   USER */
        MPIIoSource		source;		/* MPIMotor	index */
        MPICommandOperator	oper;		/* EQUAL/NOT_EQUAL/BIT_CLEAR/BIT_SET */
        long			mask;		/* [motor|user]Io.input 'oper' 'mask' */
    } branchIO;

    struct {	/* *'dst' = 'expr' */
        MPICommandAddress	dst;
        MPICommandExpr		expr;		/* expr.oper => MPICommandOperatorArithmetic */
        MPIControl		control;	/* Ignored by Sequence */
    } compute;

    struct {	/* Io.output = Io.output 'oper' 'mask' */
    MPIIoType			type;		/* MOTOR,   USER */
        MPIIoSource		source;		/* MPIMotor	index */
        MPICommandOperator	oper;		/* AND/OR/XOR */
        long	mask;
    } computeIO;

    struct {	/* memcpy(dst, src, count) */
        void		*dst;
        void		*src;
        long		count;
        MPIControlcontrol;	/* Ignored by Sequence */
    } copy;

    float	delay;	/* seconds */

    struct {
        long		value;	/* MPIEventStatus.type    = MPIEventTypeEXTERNAL */
				/*		 .source  = MPISequence/MPIProgram */
				/*		 .info[0] = value */
        MPIEventMgr	eventMgr;	/* Ignored by Sequence */
    } event;

    struct {	/* mpiMotion[Abort|EStop|Reset|Resume|Start|Stop](motion[, type, params]) */
        MPICommandMotion	motionCommand;
        MPIMotion		motion;
        MPIMotionType		type;	/* MPICommandMotionSTART */
        MPIMotionParams		params;	/* MPICommandMotionSTART */
    } motion;

    struct {	/* wait until 'expr' */
        MPICommandExpr		expr;	/* expr.oper => MPICommandOperatorLogical */
        MPIControl		control;/* Ignored by Sequence */
    } wait;

    struct {	/* wait until MPIEventMask('handle') 'oper' 'mask' */
        MPIHandle		handle;	/* [MPIMotor|MPIMotion|...] */
        MPICommandOperator	oper;	/* EQUAL/NOT_EQUAL/BIT_CLEAR/BIT_SET */
        MPIEventMask		mask;	/* MPIEventMask('handle') 'oper' 'mask' */
    } waitEvent;

    struct {	/* wait until Io.input 'oper' 'mask' */
        MPIIoType		type;	/* MOTOR,   USER */
        MPIIoSource		source;	/* MPIMotor	index */
        MPICommandOperator	oper;	/* EQUAL/NOT_EQUAL/BIT_CLEAR/BIT_SET */
        long			mask;	/* [motor|user]Io.input 'oper' 'mask' */
    } waitIO;
} MPICommandParams;
Description
  assign Assign a value to a particular controller address: *dst = value
assign.control is currently not supported and is reserved for future use.
  branch Branch to a particular command (similar to a goto statement) if a particular comparison evaluates to TRUE: branch to label on expr
If label = NULL, then no more commands will be executed if the comparison evaluates to TRUE. branch.control is currently not supported and is reserved for future use.
  branchEvent Branch to a particular command (similar to a goto statement) if a particular event occurs or has occured: branch to label on MPIEventMask(handle) oper mask
If label = NULL, then no more commands will be executed if a particular event occurs or has occured.
  branchIO Branch to a particular command (similar to a goto statement) if a particular i/o state matches a specified condition: branch to label on Io.input oper mask
If label = NULL, then no more commands will be executed if a particular i/o state matches a specified condition.
  compute perform some computation and place the result at some controller address: *dst = expr compute.control is currently not supported and is reserved for future use.
  computeIO Performs a computation on a set of i/o bits: Io.output = Io.output oper mask
  copy Copies controller memory from one place to another: memcpy(dst, src, count);
Remember: count represents the number of bytes copied, NOT the number of controller words. event.control is currently not supported and is reserved for future use.
  delay Delays execution of the next command delay seconds.
  event Generates an event:
MPIEventStatus.type = MPIEventTypeEXTERNAL
MPIEventStatus.source = MPISequence
MPIEventStatus.info[0] = value
event.eventMgr is currently not supported and is reserved for future use.
  motion Commands a motion action (See MPICommandMotion):
mpiMotionStart (motion, type, params]);
or
mpiMotionAction(motion, MPIAction[ABORT | E_STOP | E_STOP_ABORT | RESET | RESUME | STOP]);
  wait Delays execution of the next command until a particular comparison evaluates to TRUE: wait until expr wait.control is currently not supported and is reserved for future use.
  waitEvent Delays execution of the next command until a particular event occurs: wait until MPIEventMask(handle) oper mask
  waitIO Delays execution of the next command until a particular i/o state matches a specified condition: wait until Io.input oper mask
See Also MPICommand | MPICommandType | mpiCommandCreate | mpiCommandParams