Skip to content
Snippets Groups Projects
Commit d45e8706 authored by Ron Sluiter's avatar Ron Sluiter
Browse files

R3.14 update.

parent 00cc8d0b
No related branches found
No related tags found
No related merge requests found
Showing
with 1362 additions and 50 deletions
#Makefile at top of application tree
TOP = .
include $(TOP)/config/CONFIG_APP
DIRS += config
DIRS += $(wildcard *App)
DIRS += $(wildcard *app)
DIRS += $(wildcard iocBoot)
DIRS += $(wildcard iocboot)
include $(TOP)/config/RULES_TOP
include $(TOP)/configure/CONFIG
DIRS := $(DIRS) $(filter-out $(DIRS), configure)
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *App))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *app))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocBoot))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocboot))
include $(TOP)/configure/RULES_TOP
#CONFIG
include $(TOP)/configure/CONFIG_APP
# Add any changes to make definitions here
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
# Use this when your IOC and the host use different paths
# to access the application. Typically this will be
# used with the Microsoft FTP server or with NFS mounts. Use
# is indicated by failure of the cdCommands script on
# vxWorks. You must rebuild in the iocBoot directory
# before this takes effect.
#IOCS_APPL_TOP = <the top of the application as seen by the IOC>
# CONFIG_APP
include $(TOP)/configure/RELEASE
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH)
CONFIG=$(EPICS_BASE)/configure
include $(CONFIG)/CONFIG
INSTALL_LOCATION = $(TOP)
ifdef INSTALL_LOCATION_APP
INSTALL_LOCATION = $(INSTALL_LOCATION_APP)
endif
ifdef T_A
-include $(TOP)/configure/O.$(T_A)/CONFIG_APP_INCLUDE
endif
# dbst based database optimization (default: NO)
DB_OPT = NO
# Makefile
TOP=..
include $(TOP)/configure/CONFIG
# Set the following to NO to disable consistency checking of
# the support applications defined in $(TOP)/configure/RELEASE
CHECK_RELEASE = YES
TARGETS = $(CONFIG_TARGETS)
CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
include $(TOP)/configure/RULES
# RELEASE - Location of external products
#
# (Architecture dependent declarations should go into RELEASE.<arch>)
#
# Note: This file will be scanned to automatically generate
# include path definitions etc.
# The order of the following declarations will be retained
# within those definitions.
#
# Add your declarations here
SUPPORT=/home/oxygen/SLUITER/local/epics/Vx_5-5_R3-14-4/support
include $(SUPPORT)/config/IP_RELEASE
include $(SUPPORT)/config/IP330_RELEASE
include $(SUPPORT)/config/CAMAC_RELEASE
include $(SUPPORT)/config/MCA_RELEASE
include $(SUPPORT)/config/LOVE_RELEASE
include $(SUPPORT)/config/IPUNIDIG_RELEASE
include $(SUPPORT)/config/DAC128V_RELEASE
include $(SUPPORT)/config/MOTOR_RELEASE
include $(SUPPORT)/config/STD_RELEASE
include $(SUPPORT)/config/BITBUS_RELEASE
include $(SUPPORT)/config/MPFGPIB_RELEASE
include $(SUPPORT)/config/MPF_RELEASE
include $(SUPPORT)/config/ALLEN_BRADLEY_RELEASE
include $(SUPPORT)/config/IPAC_RELEASE
include $(SUPPORT)/config/SNCSEQ_RELEASE
include $(SUPPORT)/config/VXSTATS_RELEASE
include $(SUPPORT)/config/RELEASE
TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
#CONFIG
include $(EPICS_BASE)/configure/RULES
# Library should be rebuilt because LIBOBJS may have changed.
$(LIBNAME): ../Makefile
#RULES.ioc
include $(EPICS_BASE)/configure/RULES.ioc
#RULES.iocBoot
DIRS += $(wildcard *ioc*)
DIRS += $(wildcard as*)
include $(EPICS_BASE)/configure/RULES_DIRS
#RULES_DIRS
include $(EPICS_BASE)/configure/RULES_DIRS
#RULES_TOP
include $(EPICS_BASE)/configure/RULES_TOP
TOP = ../..
include $(TOP)/config/CONFIG_APP
ARCH = mv167
include $(TOP)/config/RULES.ioc
include $(TOP)/configure/CONFIG
ARCH = vxWorks-68040
TARGETS = cdCommands
include $(TOP)/configure/RULES.ioc
Assuming the EPICS_HOST_ARCH environment variable is set correctly,
start the ioc from this directory by executing the following command.
../../bin/${EPICS_HOST_ARCH}/xxx st.cmd.solaris
OR,
../../bin/${EPICS_HOST_ARCH}/xxx st.cmd.linux
This diff is collapsed.
dbLoadDatabase("dbPath.dbd")
dbLoadDatabase("../../dbd/xxxVx.dbd")
registerRecordDeviceDriver(pdbbase)
routerInit
localMessageRouterStart(1)
# Configure the MPF server code. This MUST be configured too!
< st_mpfserver.cmd.solaris
# Love Controllers
#devLoveDebug=1
#loveServerDebug=1
#dbLoadDatabase("ipApp/Db/love.db", ip, "P=xxx:,Q=Love_0,C=0,PORT=PORT2,ADDR=1");
# interpolation
#dbLoadDatabase("stdApp/Db/interp.db", std, "P=xxx:")
# 4-step measurement
#dbLoadDatabase("stdApp/Db/4step.db", std, "P=xxx:")
# X-ray Instrumentation Associates Huber Slit Controller
# supported by a customized version of the SNL program written by Pete Jemian
#dbLoadDatabase("stdApp/Db/xia_slit.db", std, "P=xxx:, HSC=hsc1:")
#dbLoadDatabase("stdApp/Db/xia_slit.db", std, "P=xxx:, HSC=hsc2:")
#dbLoadDatabase("ipApp/Db/generic_serial.db", ip, "P=xxx:,C=0,IPSLOT=a,CHAN=6,BAUD=9600,PRTY=None,DBIT=8,SBIT=1")
##### Pico Motors (Ernest Williams MHATT-CAT)
##### Motors (see picMot.substitutions in same directory as this file) ####
#!AuxdbLoadTemplate("picMot.substitutions", ip)
################################
# Sector 2 custom databases
################################
#M1 mirror stripe change database
#dbLoadDatabase("sectorApp/Db/stripe_change.db", top, "P=xxx:,M=m21")
#M2B 6 position select database
#bt dbLoadDatabase("sectorApp/Db/2motor_position_selector.db", top, "P=xxx:,D=M2B,M1=m29,M2=m30")
#M2C 6 position select database
#bt dbLoadDatabase("sectorApp/Db/2motor_position_selector.db", top, "P=xxx:,D=M2C,M1=m28,M2=m27")
################################
# End Sector 2 Custom databases
################################
##############################################################################
# Insertion-device control
dbLoadDatabase("stdApp/Db/IDctrl.db", std, "P=xxx:,xx=02us")
dbLoadDatabase("stdApp/Db/IDctrl.db", std, "P=xxx:,xx=02ds")
# test generic gpib record
#dbLoadDatabase("stdApp/Db/gpib.db", std, "P=xxx:")
# test generic camac record
#dbLoadDatabase("stdApp/Db/camac.db", std, "P=xxx:")
# string sequence (sseq) record
#dbLoadDatabase("stdApp/Db/yySseq.db", std, "P=xxx:,S=Sseq1")
#dbLoadDatabase("stdApp/Db/yySseq.db", std, "P=xxx:,S=Sseq2")
#dbLoadDatabase("stdApp/Db/yySseq.db", std, "P=xxx:,S=Sseq3")
###############################################################################
##### Motors (see motors.substitutions in same directory as this file) ####
#AuxdbLoadTemplate("basic_motor.substitutions", motor)
AuxdbLoadTemplate("motor.substitutions.rls", motor)
# OMS VME driver setup parameters:
# (1)cards, (2)axes per card, (3)base address(short, 16-byte boundary),
# (4)interrupt vector (0=disable or 64 - 255), (5)interrupt level (1 - 6),
# (6)motor task polling rate (min=1Hz,max=60Hz)
#omsSetup(2, 8, 0xFC00, 180, 5, 10)
# OMS VME58 driver setup parameters:
# (1)cards, (2)axes per card, (3)base address(short, 4k boundary),
# (4)interrupt vector (0=disable or 64 - 255), (5)interrupt level (1 - 6),
# (6)motor task polling rate (min=1Hz,max=60Hz)
#oms58Setup(3, 8, 0x3000, 190, 5, 10)
# Highland V544 driver setup parameters:
# (1)cards, (2)axes per card, (3)base address(short, 4k boundary),
# (4)interrupt vector (0=disable or 64 - 255), (5)interrupt level (1 - 6),
# (6)motor task polling rate (min=1Hz,max=60Hz)
#v544Setup(0, 4, 0xDD00, 0, 5, 10)
# Newport MM4000 driver setup parameters:
# (1) max. controllers, (2)Unused, (3)polling rate (min=1Hz,max=60Hz)
MM4000Setup(3, 0, 10)
# Newport MM4000 driver configuration parameters:
# (1)controller# being configured,
# (2)port type: 0-GPIB_PORT or 1-RS232_PORT,
# (3)GPIB link or MPF server location
# (4)GPIB address or hideos_task name
MM4000Config(0, 1, MPF_Server_Location, "a-Serial[0]")
# Newport PM500 driver setup parameters:
# (1) maximum number of controllers in system
# (2) maximum number of channels on any controller
# (3) motor task polling rate (min=1Hz,max=60Hz)
#PM500Setup(1, 3, 10)
# Newport PM500 configuration parameters:
# (1) card being configured
# (2) port type (0-GPIB_PORT, 1-RS232_PORT)
# (3) link for GPIB or hideos_card for RS-232
# (3)GPIB link or MPF server location
# (4) GPIB address (int) or mpf serial server name (string)
#PM500Config(0, 1, 1, "a-Serial[4]")
# A set of scan parameters for each positioner. This is a convenience
# for the user. It can contain an entry for each scannable thing in the
# crate.
AuxdbLoadTemplate("scanParms.substitutions", std)
###############################################################################
### Scalers: Joerger VSC8/16
dbLoadDatabase("stdApp/Db/Jscaler.db", std, "P=xxx:,S=scaler1,C=0")
# Joerger VSC setup parameters:
# (1)cards, (2)base address(ext, 256-byte boundary),
# (3)interrupt vector (0=disable or 64 - 255)
VSCSetup(1, 0xD0000000, 200)
### Allstop, alldone
# This database must agree with the motors and other positioners you've actually loaded.
# Several versions (e.g., all_com_32.db) are in stdApp/Db
dbLoadDatabase("stdApp/Db/all_com_32.db", std, "P=xxx:")
### Scan-support software
# crate-resident scan. This executes 1D, 2D, 3D, and 4D scans, and caches
# 1D data, but it doesn't store anything to disk. (See 'saveData' below for that.)
dbLoadDatabase("stdApp/Db/scan.db", std, "P=xxx:,MAXPTS1=2000,MAXPTS2=200,MAXPTS3=10,MAXPTS4=10,MAXPTSH=200")
# Slits
dbLoadDatabase("stdApp/Db/2slit.db", std, "P=xxx:,SLIT=Slit1V,mXp=m24,mXn=m26")
dbLoadDatabase("stdApp/Db/2slit.db", std, "P=xxx:,SLIT=Slit1H,mXp=m23,mXn=m25")
# under development...
#dbLoadDatabase("stdApp/Db/2slit_soft.db", std, "P=xxx:,SLIT=Slit2V,mXp=m13,mXn=m14")
#dbLoadDatabase("stdApp/Db/2slit_soft.db", std, "P=xxx:,SLIT=Slit2H,mXp=m15,mXn=m16")
# 2-post mirror
#dbLoadDatabase("stdApp/Db/2postMirror.db", std, "P=xxx:,Q=M1,mDn=m18,mUp=m17,LENGTH=0.3")
# User filters
#dbLoadDatabase("stdApp/Db/filterMotor.db", std, "P=xxx:,Q=fltr1:,MOTOR=m1,LOCK=fltr_1_2:")
#dbLoadDatabase("stdApp/Db/filterMotor.db", std, "P=xxx:,Q=fltr2:,MOTOR=m2,LOCK=fltr_1_2:")
#dbLoadDatabase("stdApp/Db/filterLock.db", std, "P=xxx:,Q=fltr2:,LOCK=fltr_1_2:,LOCK_PV=xxx:DAC1_1.VAL")
# Optical tables
#tableRecordDebug=1
# command line would be too long ( >128 chars). One way to shorten it...
cd std
dbLoadDatabase("stdApp/Db/table.db", 0, "P=xxx:,Q=Table1,T=table1,M0X=m31,M0Y=m12,M1Y=m13,M2X=m32,M2Y=m14,M2Z=m18,GEOM=SRI")
cd startup
### Monochromator support ###
# Kohzu and PSL monochromators: Bragg and theta/Y/Z motors
# standard geometry (geometry 1)
#dbLoadDatabase("stdApp/Db/kohzuSeq.db", std, "P=xxx:,M_THETA=m9,M_Y=m10,M_Z=m11,yOffLo=17.4999,yOffHi=17.5001")
# modified geometry (geometry 2)
#dbLoadDatabase("stdApp/Db/kohzuSeq.db", std, "P=xxx:,M_THETA=m9,M_Y=m10,M_Z=m11,yOffLo=4,yOffHi=36")
# Heidenhain ND261 encoder (for PSL monochromator)
#dbLoadDatabase("ipApp/Db/heidND261.db", ip, "P=xxx:,C=0,IPSLOT=a,CHAN=0")
# Heidenhain IK320 VME encoder interpolator
#dbLoadDatabase("stdApp/Db/IK320card.db", std, "P=xxx:,sw2=card0:,axis=1,switches=41344,irq=3")
#dbLoadDatabase("stdApp/Db/IK320card.db", std, "P=xxx:,sw2=card0:,axis=2,switches=41344,irq=3")
#dbLoadDatabase("stdApp/Db/IK320group.db" std, "P=xxx:,group=5")
#drvIK320RegErrStr()
# Spherical grating monochromator
#dbLoadDatabase("stdApp/Db/SGM.db", std, "P=xxx:,N=1,M_x=m7,M_rIn=m6,M_rOut=m8,M_g=m9")
# 4-bounce high-resolution monochromator
#dbLoadDatabase("stdApp/Db/hrSeq.db", std,"P=xxx:,N=1,M_PHI1=m9, M_PHI2=m10")
#dbLoadDatabase("stdApp/Db/hrSeq.db", std,"P=xxx:,N=2,M_PHI1=m11,M_PHI2=m12")
# dispersive-monochromator protection
#dbLoadDatabase("stdApp/Db/bprotect.db", std, "P=xxx:,M_BTHETA=m25,M_BTRANS=m26")
### Canberra AIM Multichannel Analyzer ###
#mcaRecordDebug=0
#devMcaMpfDebug=0
#mcaAIMServerDebug=0
#aimDebug=0
# AIMConfig(serverName, int etherAddr, int port, int maxChans,
# int maxSignals, int maxSequences, etherDev, queueSize)
#
# serverName: defined here, must agree with dbLoadDatabase command
# etherAddr: ethernet address of AIM module
# port: Which ADC port of the AIM module does this config involve? [1,2]
# maxChans: Histogram bins per signal per sequence. (If a multiplexor or
# MCS module is in use, this must agree with hardware setting.)
# maxSignals: How many signals (multiplexed ADC inputs)? (If a multiplexor
# or MCS module is in use, this must agree with hardware setting.)
# maxSequences: How many sequences (usually, a sequence is a "time slice")?
# etherDev: vxWorks device used to communicate over the network to AIM.
# Typically "ei0" for mv16x, mv17x; "dc0" for Motorola PowerPC
# queueSize: size of MPF message queue for this server (100 should be plenty)
#AIMConfig("AIM1/2", 0x674, 2, 2048, 1, 1, "ei0", 100)
#dbLoadDatabase("mcaApp/Db/mca.db", mca, "P=xxx:,M=mca1,INP=#C0 S0 @AIM1/2,DTYPE=MPF MCA,NCHAN=2048")
# Create ICB server for ADC, amplifier and HVPS
# picbServer = icbConfig(icbServer, maxModules, icbAddress, queueSize)
# This creates the ICB server and allocates configures the first module, module 0.
# Additional modules are added to this server with icbAddModule().
#picbServer = icbConfig("icb/1", 10, "NI674:3", 100)
# In the dbLoadDatabase commands CARD=(0,1) for (local/remote), SERVER=icbServer name from
# icbConfig, ADDR=module number from icbConfig() or icbAddModule().
#icbAddModule(picbServer, module, icbAddress)
# Note: ADDR is the module number, not the icb address. The correspondence between
# module number and icb address is made in icbConfig (for module number 0) or in
# icbAddModule.
#icbAddModule(picbServer, 1, "NI674:2")
#dbLoadDatabase("mcaApp/Db/icb_adc.db", mca, "P=xxx:,ADC=icbAdc1,CARD=0,SERVER=icb/1,ADDR=0")
#icbTcaConfig("icbTca/1", 1, "NI674:1", 100)
#dbLoadDatabase("mcaApp/Db/icb_tca.db", mca, "P=xxx:,TCA=icbTca1,MCA=mca1,CARD=0,SERVER=icb/1,ADDR=1")
#icbAddModule(picbServer, 2, "NI674:2")
#dbLoadDatabase("mcaApp/Db/icb_hvps.db",mca, "P=xxx:,HVPS=icbHvps1,CARD=0,SERVER=icb/1,ADDR=2")
#icbAddModule(picbServer, 3, "NI674:4")
#dbLoadDatabase("mcaApp/Db/icb_amp.db", mca, "P=xxx:,AMP=icbAmp1,CARD=0,SERVER=icb/1,ADDR=4")
# Load 13 element detector software
#< 13element.cmd
# Load 3 element detector software
#< 3element.cmd
### Struck 7201 multichannel scaler (same as SIS 3806 multichannel scaler)
#mcaRecordDebug = 10
#devSTR7201Debug = 10
#drvSTR7201Debug = 10
#dbLoadDatabase("mcaApp/Db/Struck8.db", mca, "P=xxx:mcs:")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca1,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S0 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca2,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S1 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca3,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S2 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca4,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S3 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca5,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S4 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca6,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S5 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca7,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S6 @,CHANS=1000")
#dbLoadDatabase("mcaApp/Db/simple_mca.db", mca, "P=xxx:mcs:,M=mca8,DTYP=Struck STR7201 MCS,PREC=3,INP=#C0 S7 @,CHANS=1000")
# STR7201Setup(int numCards, int baseAddress, int interruptVector, int interruptLevel)
#STR7201Setup(2, 0xA0000000, 210, 6)
# STR7201Config(int card, int maxSignals, int maxChans, int 1=enable internal 25MHZ clock)
#STR7201Config(0, 8, 1000, 0)
### Acromag IP330 in sweep mode ###
#dbLoadDatabase("mcaApp/Db/mca.db", mca, "P=xxx:,M=mADC_1,DTYPE=ip330Sweep,NCHAN=2048,INP=#C0 S0 @d-Ip330Sweep")
### Stand-alone user calculations ###
dbLoadDatabase("stdApp/Db/userCalcs10.db", std, "P=xxx:")
dbLoadDatabase("stdApp/Db/userStringCalcs10.db", std, "P=xxx:")
dbLoadDatabase("stdApp/Db/userTransforms10.db", std, "P=xxx:")
# extra userCalcs (must also load userCalcs10.db for the enable switch)
dbLoadDatabase("stdApp/Db/userCalcN.db", std, "P=xxx:,N=I_Detector")
### serial support ###
# generic serial ports
#dbLoadDatabase("ipApp/Db/generic_serial.db", ip, "P=xxx:,C=0,IPSLOT=a,CHAN=0,BAUD=9600,PRTY=None,DBIT=8,SBIT=1")
# serial O/I block (generic serial record with format and parse string calcs)
# on epics/mpf processor
#dbLoadDatabase("ipApp/Db/serial_OI_block.db", ip, "P=xxx:,N=0_1,C=0,IPSLOT=a,CHAN=4")
# on stand-alone mpf processor
#dbLoadDatabase("ipApp/Db/serial_OI_block.db", ip, "P=xxx:,N=1_1,C=0,IPSLOT=a,CHAN=4")
# Stanford Research Systems SR570 Current Preamplifier
#dbLoadDatabase("ipApp/Db/SR570.db", ip, "P=xxx:,A=A1,C=0,IPSLOT=a,CHAN=0")
# Lakeshore DRC-93CA Temperature Controller
#dbLoadDatabase("ipApp/Db/LakeShoreDRC-93CA.db", ip, "P=xxx:,Q=TC1,C=0,IPSLOT=a,CHAN=3")
# Huber DMC9200 DC Motor Controller
#dbLoadDatabase("ipApp/Db/HuberDMC9200.db", ip, "P=xxx:,Q=DMC1:,C=0,IPSLOT=a,CHAN=5")
# Oriel 18011 Encoder Mike
#dbLoadDatabase("ipApp/Db/eMike.db", ip, "P=xxx:,M=em1,C=0,IPSLOT=a,CHAN=2")
# Keithley 2000 DMM
dbLoadDatabase("ipApp/Db/Keithley2kDMM.db", ip, "P=xxx:,Dmm=D1,C=0,IPSLOT=a,CHAN=0")
# Oxford Cyberstar X1000 Scintillation detector and pulse processing unit
#dbLoadDatabase("ipApp/Db/Oxford_X1k.db", ip, "P=xxx:,S=s1,C=0,IPSLOT=a,CHAN=3")
# Oxford ILM202 Cryogen Level Meter (Serial)
#dbLoadDatabase("ipApp/Db/Oxford_ILM202.db", ip, "P=xxx:,S=s1,C=0,IPSLOT=c,CHAN=2")
### GPIB support ###
# GPIB O/I block (generic gpib record with format and parse string calcs)
# See HiDEOSGpibLinkConfig() below.
#dbLoadDatabase("ipApp/Db/GPIB_OI_block.db", ip, "P=xxx:,N=1,L=10")
# Heidenhain AWE1024 at GPIB address $(A)
#dbLoadDatabase("ipApp/Db/HeidAWE1024.db", ip, "P=xxx:,L=10,A=6")
# Keithley 199 DMM at GPIB address $(A)
#dbLoadDatabase("stdApp/Db/KeithleyDMM.db", std, "P=xxx:,L=10,A=26")
### Miscellaneous ###
# Systran DAC database
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=1,S=0,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=2,S=1,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=3,S=2,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=4,S=3,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=5,S=4,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=6,S=5,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=7,S=6,IPSLOT=c")
#dbLoadDatabase("ipApp/Db/DAC.db", ip, "P=xxx:,D=1,C=1,N=8,S=7,IPSLOT=c")
# vme test record
#dbLoadDatabase("stdApp/Db/vme.db", std, "P=xxx:,Q=vme1")
# Hewlett-Packard 10895A Laser Axis (interferometer)
#dbLoadDatabase("stdApp/Db/HPLaserAxis.db", std, "P=xxx:,Q=HPLaser1, C=0")
# hardware configuration
# example: devHP10895LaserAxisConfig(ncards,a16base)
#devHPLaserAxisConfig(2,0x1000)
# Acromag general purpose Digital I/O
#dbLoadDatabase("stdApp/Db/Acromag_16IO.db", std, "P=xxx:, A=1")
# Acromag AVME9440 setup parameters:
# devAvem9440Config (ncards,a16base,intvecbase)
#devAvme9440Config(1,0x0400,0x78)
# Miscellaneous PV's, such as burtResult
dbLoadDatabase("stdApp/Db/misc.db", std, "P=xxx:")
dbLoadDatabase("stdApp/Db/VXstats.db", std, "P=xxx:")
# Elcomat autocollimator
#dbLoadDatabase("ipApp/Db/Elcomat.db", ip, "P=xxx:,C=0,IPSLOT=a,CHAN=7")
# Bunch-clock generator
#dbLoadDatabase("stdApp/Db/BunchClkGen.db", std, "P=xxx:")
#dbLoadDatabase("stdApp/Db/BunchClkGenA.db", std, "UNIT=xxx")
# hardware configuration
# example: BunchClkGenConfigure(intCard, unsigned long CardAddress)
#BunchClkGenConfigure(0, 0x8c00)
### Queensgate piezo driver
#dbLoadDatabase("stdApp/Db/pzt_3id.db", std, "P=xxx:")
#dbLoadDatabase("stdApp/Db/pzt.db" , std, "P=xxx:")
### GP307 Vacuum Controller
#dbLoadDatabase("stdApp/Db/gp307.db", std, "P=xxx:")
### Queensgate Nano2k piezo controller
#dbLoadDatabase("stdApp/Db/Nano2k.db", std, "P=xxx:,S=s1")
# Eurotherm temp controller
#dbLoadDatabase("ipApp/Db/Eurotherm.db", ip, "P=xxx:,C=0,IPSLOT=a,CHAN=6")
#devAoEurothermDebug=20
# Analog I/O (Acromag IP330 ADC)
#AuxdbLoadTemplate("ip330Scan.substitutions", ip330)
# Machine-status board (MRD 100)
#####################################################
# dev32VmeConfig(card,a32base,nreg,iVector,iLevel)
# card = card number
# a32base = base address of card
# nreg = number of A32 registers on this card
# iVector = interrupt vector (MRD100 Only !!)
# iLevel = interrupt level (MRD100 Only !!)
# For Example
# devA32VmeConfig(0, 0x80000000, 44, 0, 0)
#####################################################
# Configure the MSL MRD 100 module.....
#devA32VmeConfig(0, 0xa0000200, 30, 0xa0, 5)
# VVVVVVVVVVVVVVVVVVVVV This doesn't look right (tmm) VVVVVVVVVVVVVVVVVVVVVVVVVVV
#dbLoadDatabase("stdApp/Db/msl_mrd100.db", std, "C=0,S=01,ID1=00,ID2=00us")
### Bit Bus configuration
# BBConfig(Link, LinkType, BaseAddr, IrqVector, IrqLevel)
# Link: ?
# LinkType: 0:hosed; 1:xycom; 2:pep
#BBConfig(3,1,0x2400,0xac,5)
###############################################################################
# Set shell prompt (otherwise it is left at mv167 or mv162)
shellPromptSet "iocxxx> "
#reboot_restoreDebug=5
iocLogDisable=1
iocInit
### startup State Notation Language programs
#seq &kohzuCtl, "P=xxx:, M_THETA=m9, M_Y=m10, M_Z=m11, GEOM=1, logfile=kohzuCtl.log"
#seq &hrCtl, "P=xxx:, N=1, M_PHI1=m9, M_PHI2=m10, logfile=hrCtl1.log"
#seq &Keithley2kDMM, "P=xxx:, Dmm=D1"
# Bunch clock generator
#seq &getFillPat, "unit=xxx"
# X-ray Instrumentation Associates Huber Slit Controller
# supported by a SNL program written by Pete Jemian and modified (tmm) for use with the
# sscan record
#seq &xia_slit, "name=hsc1, P=xxx:, HSC=hsc1:, S=xxx:seriala[6]"
### Start up the autosave task and tell it what to do.
# The task is actually named "save_restore".
# (See also, 'initHooks' above, which is the means by which the values that
# will be saved by the task we're starting here are going to be restored.
#
# save positions every five seconds
create_monitor_set("auto_positions.req",5)
# save other things every thirty seconds
create_monitor_set("auto_settings.req",30)
### Start the saveData task.
# saveData_MessagePolicy
# 0: wait forever for space in message queue, then send message
# 1: send message only if queue is not full
# 2: send message only if queue is not full and specified time has passed (SetCptWait()
# sets this time.)
# 3: if specified time has passed, wait for space in queue, then send message
# else: don't send message
#debug_saveData = 2
saveData_MessagePolicy = 2
saveData_SetCptWait(.1)
saveData_Init("saveData.req", "P=xxx:")
#saveData_PrintScanInfo("xxx:scan1")
# This configures the MPF server stuff
initTtyPort("port0","/dev/ttyb",9600,"N",1,8,"N",1000)
initSerialServer("serial0","port0",1000,2,"")
# This configures the MPF server stuff
# slot a: IP-Octal (serial RS-232)
# slot b: EMPTY
# slot c: EMPTY
# slot d: EMPTY
###############################################################################
# Initialize IP carrier
# ipacAddCarrier(ipac_carrier_t *pcarrier, char *cardParams)
# pcarrier - pointer to carrier driver structure
# cardParams - carrier-specific init parameters
carrier = "ipac"
ipacAddCarrier(&ipmv162, "A:l=3,3 m=0xe0000000,64;B:l=3,3 m=0xe0010000,64;C:l=3,3 m=0xe0020000,64;D:l=3,3 m=0xe0030000,64")
# Number of tyGSOctal modules to support:
tyGSOctalDrv(1)
taskDelay(10)
# tyGSOctalModuleInit(IP module type, Interrupt number, carrier board [0-n],
# module number on carrier [0-m])
octalUart0 = tyGSOctalModuleInit("GSIP_OCTAL232", 0x80, 0, 0)
taskDelay(3)
###############################################################################
# Initialize GPIB stuff
#initGpibGsTi9914("GS-IP488-0",carrier,"IP_b",104)
#initGpibServer("GPIB0","GS-IP488-0",1024,1000)
###############################################################################
# Initialize Octal UART stuff
port0 = tyGSOctalDevCreate("/tyGS/0/0",octalUart0,0,1000,1000)
port1 = tyGSOctalDevCreate("/tyGS/0/1",octalUart0,1,1000,1000)
port2 = tyGSOctalDevCreate("/tyGS/0/2",octalUart0,2,1000,1000)
port3 = tyGSOctalDevCreate("/tyGS/0/3",octalUart0,3,1000,1000)
port4 = tyGSOctalDevCreate("/tyGS/0/4",octalUart0,4,1000,1000)
port5 = tyGSOctalDevCreate("/tyGS/0/5",octalUart0,5,1000,1000)
port6 = tyGSOctalDevCreate("/tyGS/0/6",octalUart0,6,1000,1000)
port7 = tyGSOctalDevCreate("/tyGS/0/7",octalUart0,7,1000,1000)
tyGSOctalConfig(port0,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port1,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port2,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port3,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port4,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port5,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port6,9600,'N',1,8,'N') /* */
tyGSOctalConfig(port7,9600,'N',1,8,'N') /* */
initTtyVxPort("UART[0]","/tyGS/0/0",9600,1000)
initTtyVxPort("UART[1]","/tyGS/0/1",9600,1000)
initTtyVxPort("UART[2]","/tyGS/0/2",9600,1000)
initTtyVxPort("UART[3]","/tyGS/0/3",9600,1000)
initTtyVxPort("UART[4]","/tyGS/0/4",9600,1000)
initTtyVxPort("UART[5]","/tyGS/0/5",9600,1000)
initTtyVxPort("UART[6]","/tyGS/0/6",9600,1000)
initTtyVxPort("UART[7]","/tyGS/0/7",9600,1000)
initSerialServer("a-Serial[0]","UART[0]",1000,20,"\r",1)
initSerialServer("a-Serial[1]","UART[1]",1000,20,"\r",1)
initSerialServer("a-Serial[2]","UART[2]",1000,20,"\r",1)
initSerialServer("a-Serial[3]","UART[3]",1000,20,"\r",1)
initSerialServer("a-Serial[4]","UART[4]",1000,20,"\r",1)
initSerialServer("a-Serial[5]","UART[5]",1000,20,"\r",1)
initSerialServer("a-Serial[6]","UART[6]",1000,20,"\r",1)
initSerialServer("a-Serial[7]","UART[7]",1000,20,"\r",1)
###############################################################################
# Initialize Systran DAC
# initDAC128V(char *serverName, char *carrierName, char *siteName,
# int queueSize)
# serverName = name to give this server
# carrierName = name of IPAC carrier from initIpacCarrier above
# siteName = name of IP site, e.g. "IP_a"
# queueSize = size of output queue for EPICS
#
#initDAC128V("c-DAC",carrier,"IP_c",20)
###############################################################################
# Initialize Acromag ADC
# Ip330 *pIp330 = initIp330(
# const char *moduleName, const char *carrierName, const char *siteName,
# const char *typeString, const char *rangeString,
# int firstChan, int lastChan,
# int maxClients, int intVec)
#
# pIp330 = pointer to the Ip330 object, needed by configIp330(), and
# needed to initialize the application-specific classes
# moduleName = name to give this module
# carrierName = name of IPAC carrier from initIpacCarrier() above
# siteName = name of IP site on the carrier, e.g. "IP_a"
# typeString = "D" or "S" for differential or single-ended
# rangeString = "-5to5","-10to10","0to5", or "0to10"
# This value must match hardware setting selected
# firstChan = first channel to be digitized. This must be in the range:
# 0 to 31 (single-ended)
# 0 to 15 (differential)
# lastChan = last channel to be digitized
# maxClients = Maximum number of Ip330 tasks which will attach to this
# Ip330 module. For example Ip330Scan, Ip330Sweep, etc. This
# does not refer to the number of EPICS clients. A value of
# 10 should certainly be safe.
# intVec = Interrupt vector
#pIp330 = initIp330("d-ADC", carrier, "IP_d", "D", "-10to10", 0, 15, 10, 205)
# int configIp330(Ip330 *pIp330, scanModeType scanMode,
# const char *triggerString, int microSecondsPerScan,
# int secondsBetweenCalibrate)
#
# pIp330 = pointer to the Ip330 object, returned by initIp330 above
# scanMode = scan mode:
# 0 = disable
# 1 = uniformContinuous
# 2 = uniformSingle
# 3 = burstContinuous (normally recommended)
# 4 = burstSingle
# 5 = convertOnExternalTriggerOnly
# triggerString = "Input" or "Output". Selects the direction of the external
# trigger signal.
# microSecondsPerScan = repeat interval to digitize all channels
# The minimum theoretical time is 15 microseconds times the
# number of channels, but a practical limit is probably 100
# microseconds.
# secondsBetweenCalibrate = number of seconds between calibration cycles.
# If zero then there will be no periodic calibration, but
# one calibration will still be done at initialization.
#configIp330(pIp330, 3, "Input", 1000, 60)
# initIp330Scan(Ip330 *pIp330, char *serverName, int firstChan, int lastChan,
# int milliSecondsToAverage, int queueSize)
# pIp330 = pointer returned by initIp330 above
# serverName = name to give this server
# firstChan = first channel to be used by Ip330Scan. This must be in the
# range firstChan to lastChan specified in initIp330
# lastChan = last channel to be used by Ip330Scan. This must be in the range
# firstChan to lastChan specified in initIp330
# milliSecondsToAverage = number of milliseconds to average for values
# returned to EPICS
# queueSize = size of output queue for EPICS
#initIp330Scan(pIp330,"d-Ip330Scan",0,15,100,20)
# initIp330Sweep(Ip330 *pIp330, char *serverName, int firstChan, int lastChan,
# int maxPoints, int queueSize)
# pIp330 = pointer returned by initIp330 above
# serverName = name to give this server
# firstChan = first channel to be used by Ip330Sweep. This must be in the
# range firstChan to lastChan specified in initIp330
# lastChan = last channel to be used by Ip330Sweep. This must be in the
# range firstChan to lastChan specified in initIp330
# maxPoints = maximum number of points in a sweep. The amount of memory
# allocated will be maxPoints*(lastChan-firstChan+1)*4 bytes
# queueSize = size of output queue for EPICS
#initIp330Sweep(pIp330,"d-Ip330Sweep",0,12,2048,20)
# initIp330PID(char *serverName, Ip330 *pIp330, int ADCChan,
# DAC128V *pDAC128V, int DACChan,
# double KP, double KI, double KD,
# int interval, int feedbackOn, int lowLimit, int highLimit,
# int queueSize)
# serverName = name to give this server
# pIp330 = pointer returned by initIp330 above
# ADCChan = ADC channel to be used by Ip330PID. This must be in the range
# firstChan to lastChan specified in initIp330
# pDAC128V = pointer returned by initDAC128V above
# DACChan = DAC channel to be used by Ip330PID, in the range 0 to 7
# KP = proportional gain, must be a floating point value
# KI = integral gain, must be a floating point value
# KD = derivative gain, must be a floating point value
# interval = number of microseconds per feedback loop
# feedbackOn = initial state of feedback. 0 = off, 1 = on
# lowLimit = lower limit on the DAC output, in the range 0-2047
# highLimit = upper limit on the DAC output, in the range 0-2047
# queueSize = size of output queue for EPICS
#pIp330PID = initIp330PID("Ip330PID_1", pIp330, 0, pDAC128V, 0, 20)
#configIp330PID(pIp330PID, .1, 10., 0., 1000, 0, 500, 1500)
###############################################################################
# Initialize Greenspring IP-Unidig
#initIpUnidig("b-Unidig", carrier, "IP_b", 20)
# Love controllers
#initOctalUARTPort("UART[7]","octalUart0",7,19200,"N",1,8,"N")
#initLoveServer("PORT7","UART[7]",112)
TOP=../..
include $(TOP)/config/CONFIG_APP
include $(TOP)/config/RULES_ARCHS
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#----------------------------------------------------
# Optimization of db files using dbst (DEFAULT: NO)
#DB_OPT = YES
#----------------------------------------------------
# Create and install (or just install) into <top>/db
# databases, templates, substitutions like this
#DB += xxx.db
#----------------------------------------------------
# If <anyname>.db template is not named <anyname>*.template add
# <anyname>_template = <templatename>
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
# Makefile.Host
TOP = ../../..
include $(TOP)/config/CONFIG_APP
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#----------------------------------------------------
# Optimization of DB files using dbst (default: NO)
#DB_OPT = YES
#----------------------------------------------------
# Optimization needs the name of the appropriate
# dbd file (compare with ../src/Makefile.Vx)
#DBDNAME = xxx.dbd
#----------------------------------------------------
# Add databases, templates, substitutions like this
#DB += xxx.db
#----------------------------------------------------
# Declare template files which do not show up in DB
#USES_TEMPLATE += xxx.template
#----------------------------------------------------
# The following lines are for local dbd expansion
#DBDEXPAND = xxxInclude.dbd
include $(TOP)/config/RULES.Db
#----------------------------------------
# ADD RULES AFTER THIS LINE
TOP = ..
include $(TOP)/config/CONFIG_APP
DIRS += $(wildcard *src*)
DIRS += $(wildcard *Src*)
DIRS += $(wildcard *db*)
DIRS += $(wildcard *Db*)
include $(TOP)/config/RULES_DIRS
include $(TOP)/configure/CONFIG
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*))
DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*))
include $(TOP)/configure/RULES_DIRS
# Makefile
TOP=../..
include $(TOP)/config/CONFIG_APP
include $(TOP)/config/RULES_ARCHS
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
DBD += xxx.dbd
DBD += xxxVx.dbd
PROD_IOC_DEFAULT = xxx
PROD_IOC_vxWorks = xxxVx
xxx_SRCS += xxx_registerRecordDeviceDriver.cpp
xxxVx_SRCS += xxxVx_registerRecordDeviceDriver.cpp
xxx_SRCS_DEFAULT += xxxMain.cpp
#The following adds support from base/src/vxWorks
xxxVx_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
# Support from ipac
xxxVx_LDOBJS_vxWorks += $(IPAC_BIN)/ipacLib
xxxVx_OBJS_vxWorks += $(IPAC_BIN)/tyGSOctal
# MCA libraries
xxxVx_LIBS += mcaSIS
xxxVx_LIBS += mcaCanberra
xxxVx_LIBS += mca
# IP libraries.
xxxVx_LIBS += ip
# IP330 libraries
xxxVx_LIBS += ip330
xxxVx_LIBS += devIp330
# STD libraries
xxx_LIBS += std
xxxVx_LIBS += std
#xxxVx_OBJS_vxWorks += $(STD_BIN)/module_types.o
# MOTOR libraries
xxx_LIBS += Newport softMotor motorCOM_mpf motor
xxxVx_LIBS += oms Newport softMotor motorCOM_mpf motor
# LOVE libraries
xxxVx_LIBS += love
# IPUNIDIG libraries
xxxVx_LIBS += ipUnidig
# DAC128V libraries
xxxVx_LIBS += dac128V
# MPF libraries.
xxx_LIBS += mpfSerial mpfEpics mpf
xxxVx_LIBS += mpfSerial mpfEpics mpf
# SNCSEQ libraries.
xxx_LIBS += seq pv
xxxVx_LIBS += seq pv
# Support from vxStats
xxxVx_OBJS_vxWorks += $(VXSTATS_BIN)/devVXStats
xxx_LIBS += $(EPICS_BASE_IOC_LIBS)
xxxVx_LIBS += $(EPICS_BASE_IOC_LIBS)
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment