/*------------------------------------------------------------------------
  this is a motor driver for the Risoe motor controllers within the
  ECB system. The motor is controlled through functions invoked in the
  Z80 processor of the ECB system which is connected through a GPIB
  bus to the wider world. This driver has to do a lot of extra things:
  - it has to convert from physical values to motor steps.
  - Quite a few parameters, such as ramping parameters,
    have to be downloaded to the ECB
  - Risoe motors may have a virtual encoder or a real encoder. 
  - The motor may have to control air cushions as well.
  - Tricky backlash handling. Backlash handling ensures that a position is
    always arrived at from a defined direction. If backlash is applied
    a restart flag is set in ECBRunTo. ECBGetStatus checks for that and
    causes the motor to drive back to the position actually desired. 

  This driver support only P2048a motor controllers, as these are the
  only ones which seem to have arrived at PSI. The P1648 and Tridynamic 
  things are not supported. 

  Multiplexed motors: Originally the ECB supported 24 motors. This did 
  prove to be not enough. Therefore another device called P2234e was 
  introduced which allowed to run 8 motors from one controller port. In this 
  case the motor parameters have to be copied to the ECB before 
  driving the motor. Multiplexing is selected through the parameter MULT.
  MULT 0 means no multiplexing, MULT > 0 makes MULT the number of the 
  motor in the multiplexer. MULT is now also used to flag a download of
  parameters to the ECB. In such a case  MULT is -1. 
 

  Some of this code was taken from the tascom driver for the ECB.

  copyright: see file COPYRIGHT

  Mark Koennecke, January 2003
  
--------------------------------------------------------------------------*/
#ifndef ECBDRIV
#define ECBDRIV

MotorDriver *CreateECBMotor(SConnection *pCon, int argc, char *argv[]);
void        KillECBMotor(void *driver);

#endif

 
