
To build for the MAXv, you will need omsBase and omsMAXv and you may 
comment out omsMaxnet and omsMAXvEncFunc in the Makefile.

omsMAXvEncFunc is derived from omsMAXv and uses a very specific feature
(two encoders for one motor), which might not be of interest for anybody else.

It is possible to mix the older (drvMAXv) driver and this driver in the
same IOCs if you have more than one card.


There are two alternatives to configure the driver in the startup script
1. "traditional"

   omsMAXvSetup(1, 16, 0x0000, 190, 5, 10)
   omsMAXvConfig(a,b,c,d,e,f)
   a: "number of card"
   b: "asyn motor port name"
   c: "number of axes"
   d: "moving poll rate"
   e: "idle poll rate"
   f: "initstring"

   e.g.
   omsMAXvSetup(1, 16, 0x0000, 190, 5, 10)
	MAXvConfig(0,"MAXv0", 8, 100, 500, "AX LH PSO;")

2. "new"
   if you need more flexibility (nonconsecutive board addresses possible) use this
   command once for every card:

   omsMAXvConfig2(a,b,c,d,e,f,g,h,i,j,k,l)
   a "Slot number", any unique number for this card, e.g. use the VME slot number 
   b "Address type: A16,A24,A32" (string)
   c "Board Address on 4K (0x1000) boundary"
   d "Interrupt Vector: noninterrupting(0), (64-255)"
   e "Interrupt level (1-6)"
   f "Asyn motor port name"
   g "Number of axes"
   h "Task priority: 0 => medium"
   i "Stack size: 0 => medium"
   j "Moving poll rate"
   k "Idle poll rate"
   l "Initstring"

   e.g.
   omsMAXvConfig2(2, "A16", 0x1000, 191, 5, "MAXv2", 8, 0, 0, 100, 500, "AX LH PSO;")
   omsMAXvConfig2(3, "A16", 0x4000, 192, 5, "MAXv3", 8, 0, 0, 100, 500, "AX LH PSO;")
   omsMAXvConfig2(4, "A16", 0x6000, 193, 5, "MAXv4", 8, 0, 0, 100, 500, "AX LH PSO;")

It is possible to send command strings to the controller and receive the answer.
Use the omsAsynString.template to generate appropriate PVs in the database.

