# BEGIN vme.cmd ---------------------------------------------------------------

##### Motors

# OMS VME driver setup parameters:
#     (1)cards, (2)base address(short, 16-byte boundary),
#     (3)interrupt vector (0=disable or  64 - 255), (4)interrupt level (1 - 6),
#     (5)motor task polling rate (min=1Hz,max=60Hz)
#omsSetup(2, 0xFC00, 180, 5, 10)

# OMS VME58 driver setup parameters:
#     (1)cards, (2)base address(short, 4k boundary),                  
#     (3)interrupt vector (0=disable or  64 - 255), (4)interrupt level (1 - 6),
#     (5)motor task polling rate (min=1Hz,max=60Hz)
#oms58Setup(2, 0x4000, 190, 5, 10)

# OMS MAXv driver setup parameters: 
#     (1)number of cards in array.
#     (2)VME Address Type (16,24,32).
#     (3)Base Address on 4K (0x1000) boundary.
#     (4)interrupt vector (0=disable or  64 - 255).
#     (5)interrupt level (2 - 6).
#     (6)motor task polling rate (min=1Hz,max=60Hz).
#drvMAXvdebug=4
MAXvSetup(2, 16, 0xE000, 180, 5, 10)

# OMS MAXv configuration string:
#     (1) number of card being configured (0-14).
#     (2) configuration string; axis type (PSO/PSE/PSM) MUST be set here.
#         For example, set which TTL signal level defines an active limit
#         switch.  The "config" example below sets X,Y,Z,T to active low (LTL),
#         sets U,V,R,S to active high (LTH) and sets all axes to open-loop
#         stepper (PSO). See MAXv User's Manual for LTL/LTH and PSO/PSE/PSM
#         commands.
#config="AX LTL PSO; AY LTL PSO; AZ LTL PSO; AT LTL PSO; AU LTH PSO; AV LTH PSO; AR LTH PSO; AS LTH PSO;"
#     (3) SSI based absolute encoder bit flag. Bit #0 for Axis X, bit #1 for
#         Axis Y, etc.. Set a bit flag to '1' for absolute encoder values; '0'
#         for the standard incremental encoder values.
#     (4) SSI based absolute encoder grey code flags (0/1 - yes/no, 0x12 -> UY)

epicsEnvSet("config0", "AA; LMH,H,H,H,H,H,H,H; AX LTH PSO; AY LTH PSO; AZ LTL PSO; AT LTL PSO; AU LTL PSO; AV LTL PSO; AR LTL PSO; AS LTL PSO;")
epicsEnvSet("config1", "AA; LMH,H,H,H,H,H,H,H; AX LTL PSE; AY LTL PSE; AZ LTL PSE; AT LTL PSO; AU LTL PSO; AV LTL PSO; AR LTL PSO; AS LTL PSO;")
MAXvConfig(0, "$(config0)", 0, 0)
MAXvConfig(1, "$(config1)", 0, 0)


### Scalers: Joerger VSC8/16
#dbLoadRecords("$(STD)/stdApp/Db/scaler.db","P=$(PREFIX),S=scaler2,OUT=#C1 S0 @,DTYP=Joerger VSC8/16,FREQ=10000000")
# scaler database with modified calcs (user calcs for all 16 channels)
dbLoadRecords("$(STD)/stdApp/Db/scaler16m.db","P=$(PREFIX),S=scaler1,OUT=#C0 S0 @,DTYP=Joerger VSC8/16,FREQ=10000000")
# Joerger VSC setup parameters:
#     (1)cards, (2)base address(ext, 256-byte boundary),
#     (3)interrupt vector (0=disable or  64 - 255)
VSCSetup(2, 0xB0000000, 200)

# Joerger VS
# scalerVS_Setup(int num_cards, /* maximum number of cards in crate */
#       char *addrs,            /* address (0x800-0xf800, 2048-byte (0x800) boundary) */
#       unsigned vector,        /* valid vectors(64-255) */
#       int intlevel)
#scalerVS_Setup(1, 0x2000, 205, 5)
#epicsEnvSet("devScaler_VSDebug", 0)
#dbLoadRecords("$(STD)/stdApp/Db/scaler16m.db","P=$(PREFIX),S=scaler3,OUT=#C0 S0 @, DTYP=Joerger VS, FREQ=10000000")

# Heidenhain IK320 VME encoder interpolator
#dbLoadRecords("$(VME)/vmeApp/Db/IK320card.db","P=$(PREFIX),sw2=card0:,axis=1,switches=41344,irq=3")
#dbLoadRecords("$(VME)/vmeApp/Db/IK320card.db","P=$(PREFIX),sw2=card0:,axis=2,switches=41344,irq=3")
#dbLoadRecords("$(VME)/vmeApp/Db/IK320group.db","P=$(PREFIX),group=5")

# Struck 3801 MCS setup. mca 7-3-1
#< st_SIS3801.iocsh

# Struck 3820 MCS setup. mca 7-3-1
#< st_SIS3820.iocsh


# VMI4116 setup parameters: 
#     (1)cards, (2)base address(short, 36-byte boundary), 
#devAoVMI4116Debug = 20
#VMI4116_setup(1, 0xff00)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=1,S=0,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=2,S=1,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=3,S=2,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=4,S=3,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=5,S=4,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=6,S=5,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=7,S=6,DTYP=VMIVME-4116,H=65536,L=0", std)
#dbLoadRecords("$(VME)/vmeApp/Db/VME_DAC.db", "P=$(PREFIX),D=2,C=0,N=8,S=7,DTYP=VMIVME-4116,H=65536,L=0", std)

# vme test record
dbLoadRecords("$(VME)/vmeApp/Db/vme.db", "P=$(PREFIX),Q=vme1")

# Hewlett-Packard 10895A Laser Axis (interferometer)
#iocshLoad("$(VME)/iocsh/HP_10895A.iocsh", "PREFIX=$(PREFIX), MAX_CARDS=2, ADDRESS=0x1000, INSTANCE=HPLaser1, CARD=0")
#iocshLoad("$(VME)/iocsh/HP_10895A.iocsh", "PREFIX=$(PREFIX), INSTANCE=HPLaser2, CARD=1")

# Acromag general purpose Digital I/O
#iocshLoad("$(VME)/iocsh/Acromag_9440.iocsh", "PREFIX=$(PREFIX), MAX_CARDS=2, ADDRESS=0x0400, INT_VEC=0x78, INSTANCE=1, CARD=0")
#iocshLoad("$(VME)/iocsh/Acromag_9440.iocsh", "PREFIX=$(PREFIX), INSTANCE=2, CARD=1")

# Bunch-clock generator
#iocshLoad("$(VME)/iocsh/BunchClkGen.iocsh", "PREFIX=$(PREFIX), INSTANCE=1, CARD=0, ADDRESS=0x8c00")

### GP307 Vacuum Controller
#dbLoadRecords("$(VME)/vmeApp/Db/gp307.db","P=$(PREFIX)")

# Machine Status Link (MSL) board (MRD 100)
#iocshLoad("$(VME)/iocsh/MSL_MRD100.iocsh", "PREFIX=$(PREFIX), INSTANCE=01, ADDRESS=0xB0000200, INT_VEC=0xA0, CARD=0")

# Allen-Bradley 6008 scanner
#abConfigNlinks(1)
#abConfigVme(0,0xc00000,0x60,5)
#abConfigAuto()

# APS quad electrometer
#< quadEM.cmd

# END vme.cmd -----------------------------------------------------------------