Skip to content

Commit

Permalink
Update from latest axisCore code base
Browse files Browse the repository at this point in the history
Squashed commit of the following:

Add field MsgTxt in driver

  Add a text field to show what the motor is doing.
  The base idea is taken from motor8x.opi, which has a number of texts
  displayed like "Moving" or "Soft limit".
  On the long run, it is better to prepare these texts already in the IOC,
  and use which display whatever to display it, including camonitor.

  The current implementation does not (yet) show soft limit violations,
  like the widget does.

  The main advantage is that the driver can put in human readable texts,
  which are fetched from the motion controller.

Status of limit switches updated independent of movement direction. Issue epics-modules#35

  The raw limit switches found in the MSTA field are converted into
  LLS and HLS:
  - When the DIR field is 1, they are swapped
  - When the limit switch is not in the direction of the
    commanded direction, it is not shown.
    This is useful when a controller has only one bit which reports
    both limit switches.
    It had been useful when these controllers where more common.
    Today there are different reasons to remove this filtering
    from the record:
    - the motor can be moved outside the record into the other direction
    - The motor is slowly creeping towards the limit switch and hits it
    - The cable is broken or disconnected
    - The HOMF button is pressed and the motor starts his own homing sequence,
      which hits the low limit switch.

  In any case, this kind of filtering can be done in the driver, if needed.
  When hitting a limit switch while doing retries or backlash, the filter
  is still used to stop (or not) the motor.
  (I think that it would be safer to stop the motor whenever any limit switch
   is hit, but that is a seperate discussion, don't change this now)

Improve handling of ramp-down after stop

  Handle the case where the motor runs into a limit switch and stops:
  Once the limit switch is activated, the motor is ramped down to stop.
  (At least some controllers do this)
  While ramping down, the controller is not ready to receive new commands.

Record recognizes motor stop while jogging

  The following situation came up while debugging soft limits in a
  motion controller which had different values then the record.

  The motor is at position 50mm (RBV=50), the low soft limit is 15 (LLM=15),
  jogging velocity is 10 mm/sec (JVEL=10).

  The motion controller has an internal soft limit which is 35 mm, which
  we want to test.
  Set JOGR to 1, the motor will move backwards.
  (Side note: it would be stopped by the record once it passed 25mm).

  Before that, the motion controller stops the motor and reports DONE.
  The state machine in the record is not prepared to handle this,  JOGR stays 1.
  The expected behavior is that JOGR returns to 0.
  Because this is an unexpected stop, reset even pending home requests.
  In other words: call clear_buttons(pmr)

  Whether or not an alarm is raised may be another question.
  The natural thing would be to set LVIO to 1, but we don't know why
  the controller stopped the motion.
  Unless we add a bit in MSTA like "RA_LVIO"...
  But in any case this can and should go into a separate commit.

Make "stop if driver returns RA_PROBLEM true" optional.

  Commit 303a920 introduced the feature to stop
  a motor when the driver sets the PROBLEM bit.

  This has been problematic for different reasons:
  - The commit message does not mention which controller/driver
    actually need this feature.
  - The driver itself could have been fixed to do the stop
  - Some controllers (like XPS) report a PROBLEM when the axis
    is not homed.
  - Other controllers report errors and stop the motor on their own.
    But as soon as the axis is stopped, the error disappears and
    there is no chance for the user to see it.
    (This happens e.g. when an axis is below the low soft limit
     and a TWF is done. The record allows this, but the controller
     does not, as the new set point is out of range)

  After some forth and back changes I come to the conclusion that this
  feature is worth to keep, but the driver must enable it.
  In other words, it does what versions of motorRecord < 6.9 did.

Record: motor record DLY and STOP problem

  Fix the problem that the record gets stuck when STOP is
  pressed while the record is in MIP_DELAY (and the motor
  is standing still, so that there is no record processing).

  Currently the MIP_DELAY bits are set to 0, when a STOP is issued.
  As the motor already hase stopped, the DMOV field never goes to 1.
  There are 2 possible solutions here:
  a) STOP wins:
    pmr->dmov = FALSE;
    MARK(M_DMOV);

  b) DELAY wins
    Send a STOP to the controller (just to be sure), but wait for the DELAY.

  a) may cause probles later, whena new positionioning is done after the STOP
  and a new DELAY is triggered.
  As the old callback is still active, it may be executed before the new
  callback. And the time will be too short.
  For this reason go with b)

  http://www.aps.anl.gov/epics/tech-talk/2015/msg01786.php

Make it possible to use encoder readback > 32 bit

  Some encoders use more than 32 bit and those are not handled very well:
  - The model 3 driver puts a C-double into the parameter library:
    setDoubleParam(pC_->motorEncoderPosition_, value)
  - The callback forwards the double into device support:
    update_values() in devAxisAsyn.c gets the value here:
    pPvt->status.encoderPosition
  - Now the value must go into a record field.
    The choice we have is the REP field, which is 32 bit integer:
      rawvalue = (epicsInt32)floor(pPvt->status.encoderPosition + 0.5);
      if (pmr->rep != rawvalue)
      {
          pmr->rep = rawvalue;
          db_post_events(pmr, &pmr->rep, DBE_VAL_LOG);
      }
  - After the value is stored here, the record later decides which value to
    use for the readback: Either it is based on REP, RMP or RDBL.
    Both REP and RMP are 32 bit integer, and are now multiplied with the
    respective resolution into DRBV, which is (again) a double.

  The old logic worked like this:

  Controller       -> Driver  -> devSupport -> .REP  -> .DRBV
  (double or int)     (double)   (double)      (int)    (double)

  The new code allows to "by-pass" the double-int-double conversion:
  Controller       -> Driver  -> devSupport -> .REP
  (double or int)     (double)   (double)      (int)
                                 devSupport -> "priv"  -> .DRBV
                                 (double)      (double)    (double)

  The double value from the driver is stored in a "private" data structure
  and later used in the record.
  "private" means not exposed to EPICS, in other words, we don't add another
  field. but have a private data structure to communicate from device
  support to the record.

  Note1:
  There is a fallback in the record:
  When device support does not fill in pmr->priv->readBack.encoderPosition,
  the record will fall back to use RMP.

  Note2:
  A similar "double preventing" is done for REP

  Note3:
  Even the RDBL field is not crippled to int any more.

  Note4:
  We could have defined new fields in the record.
  I didn't do that for 2 reasons:
  - If there was a new field, then device support must update it
  - We try to reduce the number of fields
  - The REP and RMP using integer feel like legacy for external programs
    that need it
  - If there is a need to see the encoder value, it could easily be added as
    a "model 3" ai record.

Add a "priv" field to contain local data

  So far all data in the record has been exposed as record fields.
  Some of them are simply private, like all the last fields.
  Prepare a new field holding the private data, but don't use it yet.
  This will be done in the next commit.

motorRecord: Factor out functions.
  See motorDevSup.c

Add SDBD field

  Add "Set point Dead Band" field:
  Movements smaller than SDBD are not send to the controller
  (But DMOV blinks once)
  When SDBD is 0, the value is copied from MRES.

  This allows 3 things:
  - avoid "small" movements, independent of MRES.
    Especially when the auto-power feature is used, we can skip a useless
    poweron - power off cycle.
  - Use a higer deadband value when an encoder is used which has a lower
    resolution than the motor.
  - Set MRES to 1.0 and send EGU from the record to the controller.
    (Today we often use a dummy MRES of 0.001 and compensate this in
     the driver by reverting the MRES scaling with another scaling)

Respect "read only" soft limits from controller

  If the driver has reported that controller has "read only" soft limts
  for this motor, setting of DHLM and DLLM will respect these:
  Whenever DHLM is above the "read only" soft limit, it will be clipped
  to that value. Similar for DLLM.

  When changing HLM and LLM in user coordinates, they are converted into
  dial coordinates, clipped if needed, and converted back into user coords.

  Dial- and user values stay always synchronized.

axisRecord: maybeRetry() needs the commanded position

  There was a possible race condition, when RTRY == 1 and the
  DVAL field was changed while the motor was moving.

  At the end of the move, the DRBV field was compared to DVAL,
  and this didn't work as expected.
  Because the DVAL had changed under the time, the record did set
  the "MISS" field.

  Steps to reproduce:
  Tweek the motor a couple of times fast after each other.

  Introduse a private variable last.commandedDval, and compare it
  with DRBV at the end of the move.

motorRecord: Reset JOGF/JOGR when jogging stops

  When the motor is jogging and stopped by setting CNEN to 0, JOGF/JOGR may
  stay at 1.
  (This assumes that CNEN controls the amplifier, as it does in the simulator
  and test 141).

  Correct an over-critical check: pmr->mip may be either
  exactly MIP_JOGF or exactly MIP_JOGR.
  After this change the MIP_JOG_REQ bit may be 1 (or 0).
  The
  "Motor stopped while jogging and we didn't stop it"
  code is executed, the movement is done, no backlash.

init_record() Controller offline error handling (part 1)

  This was changed in bbdce8ce077e44f63547779ee3e53f03844f:
  >  When the record is initialized, the current postion of the axis is read
  >  from the controller. If the position is 0 and if "auto save and restore"
  >  for this axis is configured, the position will be set into the controller.

  >  If the communication is not established (yet) this all fails and the
  >  record should be put into an error state.

  Improve the situation, if "auto save and restore" is not needed:
  - Introduce  load_pos_needed() in devAxisAsyn.c, break code out from
    init_controller_load_pos_if_needed()
  - Introduce initial_poll(), break out code from init_record()

  Look at the return value of process_reason = (*pdset->update_values)
  in axisrecord.cc and change the processing:

  If the initial poll fails and "load position" is not needed,
  put the record into UDF state.
  After the first poll, move it out of the UDF state.

  If the initial poll fails and "load position" -is- needed,
  put the record into UDF state and set PACT to 1, making
  the record unusable. The IOC must be restarted.

  This improves the situation when auto save & restore is not used.
  On the log run, all this initializion code should become more
  asyn-ish and be part of the poller. Stay tuned.

axisRecord.cc: Reset MIP_EXTERNAL when motor has stopped

  When the motor has stopped, MIP_EXTERNAL must be reset.
  Otherwise maybeRetry() will be called and my set the MISS bit,
  which is wrong for external moves.

Make it possible to compile under ESS EPICS Environment (EEE)
  Split the Makefile into Makefile.epics and Makefile.EEE
  This allows to compile the code both at ESS and outside.
  • Loading branch information
tboegi committed Jan 31, 2018
1 parent 004c862 commit abaf485
Show file tree
Hide file tree
Showing 16 changed files with 2,350 additions and 1,093 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ O.*
*.swp
*BAK.adl
bin/
builddir/
configure/RELEASE_LIBS.local
configure/RELEASE_PATHS.local
db/
Expand Down
34 changes: 13 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
#Makefile at top of application tree
# "#!" marks lines that can be uncommented.

TOP = .
include $(TOP)/configure/CONFIG

DIRS += configure motorApp
motorApp_DEPEND_DIRS = configure

# To build motor examples;
# 1st - uncomment lines below.
# 2nd - uncomment required support module lines at the bottom of
# <motor>/configure/RELEASE.
# 3rd - make clean uninstall
# 4th - make

#!DIRS += motorExApp iocBoot
#!motorExApp_DEPEND_DIRS = motorApp
#!iocBoot_DEPEND_DIRS = motorExApp

include $(TOP)/configure/RULES_TOP
ifdef EPICS_ENV_PATH
ifeq ($(EPICS_MODULES_PATH),/opt/epics/modules)
ifeq ($(EPICS_BASES_PATH),/opt/epics/bases)
include Makefile.EEE
else
include Makefile.epics
endif
else
include Makefile.epics
endif
else
include Makefile.epics
endif
344 changes: 344 additions & 0 deletions Makefile.EEE
Original file line number Diff line number Diff line change
@@ -0,0 +1,344 @@
EXCLUDE_VERSIONS=3.14.12.5
# Temporally removed to speed up
EXCLUDE_ARCHS += eldk

include ${EPICS_ENV_PATH}/module.Makefile

AUTO_DEPENDENCIES = NO
USR_DEPENDENCIES = asyn,4.31.0

TEMPLATES += motorApp/Db/asyn_auto_power.db
TEMPLATES += motorApp/Db/asyn_motor.db
TEMPLATES += motorApp/Db/basic_asyn_motor.db
TEMPLATES += motorApp/Db/basic_motor.db
TEMPLATES += motorApp/Db/coordTrans2D.db
TEMPLATES += motorApp/Db/motor.db
TEMPLATES += motorApp/Db/motorUtil.db
TEMPLATES += motorApp/Db/pseudoMotor.db
TEMPLATES += motorApp/Db/softMotorTest.db

SUBSTITUTIONS=-none-
PROJECT=motor

#SOURCES += motorApp/ACRSrc/ACRMotorDriver.cpp
#HEADERS += motorApp/ACRSrc/ACRMotorDriver.h
#SOURCES += motorApp/AcsSrc/AcsRegister.cc
#HEADERS += motorApp/AcsSrc/AcsRegister.h
#SOURCES += motorApp/AcsSrc/devMCB4B.cc
#SOURCES += motorApp/AcsSrc/drvMCB4B.cc
#HEADERS += motorApp/AcsSrc/drvMCB4B.h
#SOURCES += motorApp/AcsSrc/MCB4BDriver.cpp
#HEADERS += motorApp/AcsSrc/MCB4BDriver.h
#SOURCES += motorApp/AcsTech80Src/ACSTech80Register.cc
#HEADERS += motorApp/AcsTech80Src/ACSTech80Register.h
#SOURCES += motorApp/AcsTech80Src/devSPiiPlus.cc
#SOURCES += motorApp/AcsTech80Src/drvSPiiPlus.cc
#HEADERS += motorApp/AcsTech80Src/drvSPiiPlus.h
#HEADERS += motorApp/AerotechSrc/A3200CommonStructures.h
#HEADERS += motorApp/AerotechSrc/A3200ParameterId.h
#SOURCES += motorApp/AerotechSrc/AerotechRegister.cc
#HEADERS += motorApp/AerotechSrc/AerotechRegister.h
#SOURCES += motorApp/AerotechSrc/concatString.c
#SOURCES += motorApp/AerotechSrc/devSoloist.cc
#SOURCES += motorApp/AerotechSrc/drvA3200Asyn.cc
#HEADERS += motorApp/AerotechSrc/drvA3200Asyn.h
#SOURCES += motorApp/AerotechSrc/drvEnsembleAsyn.cc
#HEADERS += motorApp/AerotechSrc/drvEnsembleAsyn.h
#SOURCES += motorApp/AerotechSrc/drvSoloist.cc
#HEADERS += motorApp/AerotechSrc/drvSoloist.h
#HEADERS += motorApp/AerotechSrc/EnsembleTrajectoryScan.h
#HEADERS += motorApp/AerotechSrc/ParameterId.h
#SOURCES += motorApp/AttocubeSrc/drvANC150Asyn.cc
#SOURCES += motorApp/DeltaTauSrc/devPmac.cc
#SOURCES += motorApp/DeltaTauSrc/drvPmac.cc
#HEADERS += motorApp/DeltaTauSrc/drvPmac.h
#SOURCES += motorApp/FaulhaberSrc/devMCDC2805.cc
#SOURCES += motorApp/FaulhaberSrc/drvMCDC2805.cc
#HEADERS += motorApp/FaulhaberSrc/drvMCDC2805.h
#SOURCES += motorApp/HytecSrc/HytecMotorDriver.cpp
#HEADERS += motorApp/HytecSrc/HytecMotorDriver.h
#SOURCES += motorApp/ImsSrc/devIM483PL.cc
#SOURCES += motorApp/ImsSrc/devIM483SM.cc
#SOURCES += motorApp/ImsSrc/devMDrive.cc
#HEADERS += motorApp/ImsSrc/drvIM483.h
#SOURCES += motorApp/ImsSrc/drvIM483PL.cc
#SOURCES += motorApp/ImsSrc/drvIM483SM.cc
#SOURCES += motorApp/ImsSrc/drvMDrive.cc
#SOURCES += motorApp/ImsSrc/ImsMDrivePlusMotorAxis.cpp
#HEADERS += motorApp/ImsSrc/ImsMDrivePlusMotorAxis.h
#SOURCES += motorApp/ImsSrc/ImsMDrivePlusMotorController.cpp
#HEADERS += motorApp/ImsSrc/ImsMDrivePlusMotorController.h
#SOURCES += motorApp/ImsSrc/ImsRegister.cc
#SOURCES += motorApp/KohzuSrc/devSC800.cc
#SOURCES += motorApp/KohzuSrc/drvSC800.cc
#HEADERS += motorApp/KohzuSrc/drvSC800.h
#SOURCES += motorApp/MclennanSrc/devPM304.cc
#SOURCES += motorApp/MclennanSrc/drvPM304.cc
#HEADERS += motorApp/MclennanSrc/drvPM304.h
#SOURCES += motorApp/MclennanSrc/MclennanRegister.cc
#SOURCES += motorApp/MicosSrc/devMicos.cc
#SOURCES += motorApp/MicosSrc/drvMicos.cc
#HEADERS += motorApp/MicosSrc/drvMicos.h
#SOURCES += motorApp/MicosSrc/MicosRegister.cc
#SOURCES += motorApp/MicosSrc/SMChydraDriver.cpp
#HEADERS += motorApp/MicosSrc/SMChydraDriver.h
#SOURCES += motorApp/MicroMoSrc/devMVP2001.cc
#SOURCES += motorApp/MicroMoSrc/drvMVP2001.cc
#HEADERS += motorApp/MicroMoSrc/drvMVP2001.h
#SOURCES += motorApp/MicroMoSrc/MicroMoRegister.cc
#SOURCES += motorApp/MicroMoSrc/MVP2001Driver.cpp
#HEADERS += motorApp/MicroMoSrc/MVP2001Driver.h
#SOURCES += motorApp/MicronixSrc/MMC200Driver.cpp
#HEADERS += motorApp/MicronixSrc/MMC200Driver.h
SOURCES += motorApp/MotorSimSrc/devMotorSim.c
SOURCES += motorApp/MotorSimSrc/drvMotorSim.c
HEADERS += motorApp/MotorSimSrc/drvMotorSim.h
SOURCES += motorApp/MotorSimSrc/motorSimDriver.cpp
HEADERS += motorApp/MotorSimSrc/motorSimDriver.h
SOURCES += motorApp/MotorSimSrc/motorSimMain.cpp
SOURCES += motorApp/MotorSimSrc/motorSimRegister.cc
SOURCES += motorApp/MotorSimSrc/route.c
HEADERS += motorApp/MotorSimSrc/route.h
SOURCES += motorApp/MotorSrc/asynMotorAxis.cpp
HEADERS += motorApp/MotorSrc/asynMotorAxis.h
SOURCES += motorApp/MotorSrc/asynMotorController.cpp
HEADERS += motorApp/MotorSrc/asynMotorController.h
SOURCES += motorApp/MotorSrc/devMotorAsyn.c
SOURCES += motorApp/MotorSrc/drvMotorAsyn.c
SOURCES += motorApp/MotorSrc/motordevCom.cc
HEADERS += motorApp/MotorSrc/motordevCom.h
SOURCES += motorApp/MotorSrc/motordrvCom.cc
HEADERS += motorApp/MotorSrc/motordrvComCode.h
HEADERS += motorApp/MotorSrc/motordrvCom.h
HEADERS += motorApp/MotorSrc/motor.h
HEADERS += motorApp/MotorSrc/motor_interface.h
SOURCES += motorApp/MotorSrc/motorRecord.cc
SOURCES += motorApp/MotorSrc/motorUtilAux.cc
SOURCES += motorApp/MotorSrc/motorUtil.cc
SOURCES += motorApp/MotorSrc/paramLib.c
HEADERS += motorApp/MotorSrc/paramLib.h
SOURCES += motorApp/MotorSrc/motorDevSup.c
#SOURCES += motorApp/MXmotorSrc/devMXmotor.cc
#SOURCES += motorApp/MXmotorSrc/drvMXmotor.cc
#HEADERS += motorApp/MXmotorSrc/MXmotor.h
#SOURCES += motorApp/MXmotorSrc/MXRegister.cc
#SOURCES += motorApp/NewFocusSrc/devPMNC87xx.cc
#SOURCES += motorApp/NewFocusSrc/drvPMNC87xx.cc
#HEADERS += motorApp/NewFocusSrc/drvPMNCCom.h
#SOURCES += motorApp/NewFocusSrc/NewFocusRegister.cc
#HEADERS += motorApp/NewFocusSrc/NewFocusRegister.h
#SOURCES += motorApp/NewportSrc/AG_CONEX.cpp
#HEADERS += motorApp/NewportSrc/AG_CONEX.h
#SOURCES += motorApp/NewportSrc/AG_UC.cpp
#HEADERS += motorApp/NewportSrc/AG_UC.h
#SOURCES += motorApp/NewportSrc/asynOctetSocket.cpp
#HEADERS += motorApp/NewportSrc/asynOctetSocket.h
#SOURCES += motorApp/NewportSrc/devESP300.cc
#SOURCES += motorApp/NewportSrc/devMM3000.cc
#SOURCES += motorApp/NewportSrc/devMM4000.cc
#SOURCES += motorApp/NewportSrc/devPM500.cc
#SOURCES += motorApp/NewportSrc/drvESP300.cc
#SOURCES += motorApp/NewportSrc/drvMM3000.cc
#SOURCES += motorApp/NewportSrc/drvMM4000Asyn.c
#HEADERS += motorApp/NewportSrc/drvMM4000Asyn.h
#SOURCES += motorApp/NewportSrc/drvMM4000.cc
#HEADERS += motorApp/NewportSrc/drvMMCom.h
#SOURCES += motorApp/NewportSrc/drvPM500.cc
#SOURCES += motorApp/NewportSrc/drvXPSAsynAux.c
#SOURCES += motorApp/NewportSrc/drvXPSAsyn.c
#HEADERS += motorApp/NewportSrc/drvXPSAsyn.h
#SOURCES += motorApp/NewportSrc/HXPDriver.cpp
#HEADERS += motorApp/NewportSrc/HXPDriver.h
#SOURCES += motorApp/NewportSrc/hxp_drivers.cpp
#HEADERS += motorApp/NewportSrc/hxp_drivers.h
#HEADERS += motorApp/NewportSrc/hxp_errors.h
#SOURCES += motorApp/NewportSrc/NewportRegister.cc
#HEADERS += motorApp/NewportSrc/NewportRegister.h
#HEADERS += motorApp/NewportSrc/seqPVmacros.h
#SOURCES += motorApp/NewportSrc/SMC100Driver.cpp
#HEADERS += motorApp/NewportSrc/SMC100Driver.h
#SOURCES += motorApp/NewportSrc/SMC100Register.cc
#HEADERS += motorApp/NewportSrc/SMC100Register.h
#SOURCES += motorApp/NewportSrc/Socket.cpp
#HEADERS += motorApp/NewportSrc/Socket.h
#SOURCES += motorApp/NewportSrc/strtok_r.c
#HEADERS += motorApp/NewportSrc/strtok_r.h
#SOURCES += motorApp/NewportSrc/tclCall.cc
#HEADERS += motorApp/NewportSrc/tclCall.h
#HEADERS += motorApp/NewportSrc/trajectoryScan.h
#SOURCES += motorApp/NewportSrc/XPSAsynInterpose.c
#HEADERS += motorApp/NewportSrc/XPSAsynInterpose.h
#SOURCES += motorApp/NewportSrc/XPSAxis.cpp
#HEADERS += motorApp/NewportSrc/XPSAxis.h
#SOURCES += motorApp/NewportSrc/XPS_C8_drivers.cpp
#HEADERS += motorApp/NewportSrc/XPS_C8_drivers.h
#HEADERS += motorApp/NewportSrc/XPS_C8_errors.h
#SOURCES += motorApp/NewportSrc/XPSController.cpp
#HEADERS += motorApp/NewportSrc/XPSController.h
#SOURCES += motorApp/NewportSrc/xps_ftp.c
#HEADERS += motorApp/NewportSrc/xps_ftp.h
#SOURCES += motorApp/NewportSrc/XPSGathering2.c
#SOURCES += motorApp/NewportSrc/XPSGathering.c
#SOURCES += motorApp/NewportSrc/XPSGatheringMain.c
#SOURCES += motorApp/NewportSrc/XPSGatheringRegister.c
#SOURCES += motorApp/NPointSrc/C300MotorDriver.cpp
#HEADERS += motorApp/NPointSrc/C300MotorDriver.h
#SOURCES += motorApp/OmsAsynSrc/omsBaseAxis.cpp
#HEADERS += motorApp/OmsAsynSrc/omsBaseAxis.h
#SOURCES += motorApp/OmsAsynSrc/omsBaseController.cpp
#HEADERS += motorApp/OmsAsynSrc/omsBaseController.h
#SOURCES += motorApp/OmsAsynSrc/omsMAXnet.cpp
#HEADERS += motorApp/OmsAsynSrc/omsMAXnet.h
#SOURCES += motorApp/OmsAsynSrc/omsMAXv.cpp
#SOURCES += motorApp/OmsAsynSrc/omsMAXvEncFunc.cpp
#HEADERS += motorApp/OmsAsynSrc/omsMAXvEncFunc.h
#HEADERS += motorApp/OmsAsynSrc/omsMAXv.h
#SOURCES += motorApp/OmsSrc/devMAXv.cc
#SOURCES += motorApp/OmsSrc/devOms58.cc
#SOURCES += motorApp/OmsSrc/devOms.cc
#SOURCES += motorApp/OmsSrc/devOmsCom.cc
#HEADERS += motorApp/OmsSrc/devOmsCom.h
#SOURCES += motorApp/OmsSrc/devOmsPC68.cc
#SOURCES += motorApp/OmsSrc/drvMAXv.cc
#HEADERS += motorApp/OmsSrc/drvMAXv.h
#SOURCES += motorApp/OmsSrc/drvOms58.cc
#HEADERS += motorApp/OmsSrc/drvOms58.h
#SOURCES += motorApp/OmsSrc/drvOms.cc
#HEADERS += motorApp/OmsSrc/drvOmsCom.h
#HEADERS += motorApp/OmsSrc/drvOms.h
#SOURCES += motorApp/OmsSrc/drvOmsPC68.cc
#HEADERS += motorApp/OmsSrc/drvOmsPC68Com.h
#HEADERS += motorApp/OmsSrc/MAX_trajectoryScan.h
#SOURCES += motorApp/OrielSrc/devEMC18011.cc
#SOURCES += motorApp/OrielSrc/drvEMC18011.cc
#HEADERS += motorApp/OrielSrc/drvEMC18011.h
#SOURCES += motorApp/OrielSrc/OrielRegister.cc
#HEADERS += motorApp/OrielSrc/OrielRegister.h
#SOURCES += motorApp/PC6KSrc/devPC6K.cc
#SOURCES += motorApp/PC6KSrc/drvPC6K.cc
#HEADERS += motorApp/PC6KSrc/drvPC6K.h
#SOURCES += motorApp/PC6KSrc/ParkerRegister.cc
#HEADERS += motorApp/PC6KSrc/ParkerRegister.h
#SOURCES += motorApp/PhytronSrc/phytronAxisMotor.cpp
#HEADERS += motorApp/PhytronSrc/phytronAxisMotor.h
#SOURCES += motorApp/PIGCS2Src/PIasynAxis.cpp
#HEADERS += motorApp/PIGCS2Src/PIasynAxis.h
#SOURCES += motorApp/PIGCS2Src/PIasynController.cpp
#HEADERS += motorApp/PIGCS2Src/PIasynController.h
#SOURCES += motorApp/PIGCS2Src/PIC702Controller.cpp
#HEADERS += motorApp/PIGCS2Src/PIC702Controller.h
#HEADERS += motorApp/PIGCS2Src/picontrollererrors.h
#SOURCES += motorApp/PIGCS2Src/PIE517Controller.cpp
#HEADERS += motorApp/PIGCS2Src/PIE517Controller.h
#SOURCES += motorApp/PIGCS2Src/PIE755Controller.cpp
#HEADERS += motorApp/PIGCS2Src/PIE755Controller.h
#SOURCES += motorApp/PIGCS2Src/PIGCS2_HexapodController.cpp
#HEADERS += motorApp/PIGCS2Src/PIGCS2_HexapodController.h
#SOURCES += motorApp/PIGCS2Src/PIGCSController.cpp
#HEADERS += motorApp/PIGCS2Src/PIGCSController.h
#SOURCES += motorApp/PIGCS2Src/PIGCSMotorController.cpp
#HEADERS += motorApp/PIGCS2Src/PIGCSMotorController.h
#SOURCES += motorApp/PIGCS2Src/PIGCSPiezoController.cpp
#HEADERS += motorApp/PIGCS2Src/PIGCSPiezoController.h
#SOURCES += motorApp/PIGCS2Src/PIHexapodController.cpp
#HEADERS += motorApp/PIGCS2Src/PIHexapodController.h
#SOURCES += motorApp/PIGCS2Src/PIInterface.cpp
#HEADERS += motorApp/PIGCS2Src/PIInterface.h
#SOURCES += motorApp/PIGCS2Src/translateerror.c
#SOURCES += motorApp/PiJenaSrc/devPIJEDS.cc
#SOURCES += motorApp/PiJenaSrc/drvPIJEDS.cc
#HEADERS += motorApp/PiJenaSrc/drvPIJEDS.h
#SOURCES += motorApp/PiJenaSrc/PIJEDS_Register.cc
#SOURCES += motorApp/PiSrc/devPIC630.cc
#SOURCES += motorApp/PiSrc/devPIC662.cc
#SOURCES += motorApp/PiSrc/devPIC663.cc
#SOURCES += motorApp/PiSrc/devPIC844.cc
#SOURCES += motorApp/PiSrc/devPIC848.cc
#SOURCES += motorApp/PiSrc/devPIC862.cc
#SOURCES += motorApp/PiSrc/devPIE516.cc
#SOURCES += motorApp/PiSrc/devPIE710.cc
#SOURCES += motorApp/PiSrc/devPIE816.cc
#SOURCES += motorApp/PiSrc/drvPIC630.cc
#HEADERS += motorApp/PiSrc/drvPIC630.h
#SOURCES += motorApp/PiSrc/drvPIC662.cc
#HEADERS += motorApp/PiSrc/drvPIC662.h
#SOURCES += motorApp/PiSrc/drvPIC663.cc
#HEADERS += motorApp/PiSrc/drvPIC663.h
#SOURCES += motorApp/PiSrc/drvPIC844.cc
#SOURCES += motorApp/PiSrc/drvPIC848.cc
#HEADERS += motorApp/PiSrc/drvPIC848.h
#SOURCES += motorApp/PiSrc/drvPIC862.cc
#HEADERS += motorApp/PiSrc/drvPIC862.h
#SOURCES += motorApp/PiSrc/drvPIE516.cc
#HEADERS += motorApp/PiSrc/drvPIE516.h
#SOURCES += motorApp/PiSrc/drvPIE710.cc
#HEADERS += motorApp/PiSrc/drvPIE710.h
#SOURCES += motorApp/PiSrc/drvPIE816.cc
#HEADERS += motorApp/PiSrc/drvPIE816.h
#HEADERS += motorApp/PiSrc/drvPI.h
#SOURCES += motorApp/PiSrc/PIC630Register.cc
#HEADERS += motorApp/PiSrc/PIC630Register.h
#SOURCES += motorApp/PiSrc/PIC662Register.cc
#SOURCES += motorApp/PiSrc/PIC663Register.cc
#SOURCES += motorApp/PiSrc/PIC848Register.cc
#SOURCES += motorApp/PiSrc/PIC862Register.cc
#SOURCES += motorApp/PiSrc/PIE516Register.cc
#SOURCES += motorApp/PiSrc/PIE710Register.cc
#SOURCES += motorApp/PiSrc/PIE816Register.cc
#SOURCES += motorApp/PiSrc/PiRegister.cc
#SOURCES += motorApp/SmarActMCSSrc/smarActMCSMotorDriver.cpp
#HEADERS += motorApp/SmarActMCSSrc/smarActMCSMotorDriver.h
#SOURCES += motorApp/SmartMotorSrc/devSmartMotor.cc
#SOURCES += motorApp/SmartMotorSrc/drvSmartMotor.cc
#HEADERS += motorApp/SmartMotorSrc/drvSmartMotor.h
#SOURCES += motorApp/SoftMotorSrc/devSoftAux.cc
#SOURCES += motorApp/SoftMotorSrc/devSoft.cc
#HEADERS += motorApp/SoftMotorSrc/devSoft.h
#SOURCES += motorApp/ThorLabsSrc/devMDT695.cc
#SOURCES += motorApp/ThorLabsSrc/drvMDT695.cc
#HEADERS += motorApp/ThorLabsSrc/drvMDT695.h
#SOURCES += motorApp/ThorLabsSrc/ThorLabsRegister.cc
#HEADERS += motorApp/ThorLabsSrc/ThorLabsRegister.h
#SOURCES += motorExApp/NoAsyn/NoAsynMain.c
#SOURCES += motorExApp/WithAsyn/WithAsynMain.c
#
#DBDS += motorApp/ACRSrc/ACRMotorSupport.dbd
#DBDS += motorApp/AcsSrc/devAcsMotor.dbd
#DBDS += motorApp/AcsTech80Src/devSPiiPlus.dbd
#DBDS += motorApp/AerotechSrc/devAerotech.dbd
#DBDS += motorApp/AerotechSrc/devAerotechSeq.dbd
#DBDS += motorApp/AttocubeSrc/devAttocube.dbd
#DBDS += motorApp/DeltaTauSrc/devDeltaTau.dbd
#DBDS += motorApp/FaulhaberSrc/devFaulhaberMotor.dbd
#DBDS += motorApp/HytecSrc/HytecMotorDriver.dbd
#DBDS += motorApp/ImsSrc/devImsMotor.dbd
#DBDS += motorApp/KohzuSrc/devKohzuMotor.dbd
#DBDS += motorApp/MclennanSrc/devMclennanMotor.dbd
#DBDS += motorApp/MicosSrc/devMicos.dbd
#DBDS += motorApp/MicroMoSrc/devMicroMo.dbd
#DBDS += motorApp/MicronixSrc/MicronixSupport.dbd
DBDS += motorApp/MotorSrc/motorSupport.dbd
DBDS += motorApp/MotorSimSrc/motorSimSupport.dbd
#DBDS += motorApp/MotorSrc/motorRecord.dbd
#DBDS += motorApp/MXmotorSrc/devMXmotor.dbd
#DBDS += motorApp/NewFocusSrc/devNewFocus.dbd
#DBDS += motorApp/NewportSrc/devNewport.dbd
#DBDS += motorApp/NewportSrc/devNewportSeq.dbd
#DBDS += motorApp/NPointSrc/NPointMotorSupport.dbd
#DBDS += motorApp/OmsAsynSrc/omsAsynSupport.dbd
#DBDS += motorApp/OmsSrc/devOms.dbd
#DBDS += motorApp/OrielSrc/devOriel.dbd
#DBDS += motorApp/PC6KSrc/devPC6K.dbd
#DBDS += motorApp/PhytronSrc/phytron.dbd
#DBDS += motorApp/PIGCS2Src/PI_GCS2Support.dbd
#DBDS += motorApp/PiJenaSrc/devPIJena.dbd
#DBDS += motorApp/PiSrc/devPIMotor.dbd
#DBDS += motorApp/SmarActMCSSrc/devSmarActMCSMotor.dbd
#DBDS += motorApp/SmartMotorSrc/devSmartMotorMotor.dbd
#DBDS += motorApp/SoftMotorSrc/devSoftMotor.dbd
#DBDS += motorApp/ThorLabsSrc/devThorLabs.dbd
#DBDS += motorExApp/NoAsyn/Misc.dbd
#DBDS += motorExApp/NoAsyn/MiscVx.dbd
#DBDS += motorExApp/WithAsyn/LdevNewport.dbd
#DBDS += motorExApp/WithAsyn/LdevNewportTS.dbd
#DBDS += motorExApp/WithAsyn/MiscVx.dbd
Loading

0 comments on commit abaf485

Please sign in to comment.