From 385e09904d15f6e91bb682058f63705cc36f955f Mon Sep 17 00:00:00 2001 From: Ron Sluiter Date: Fri, 8 Jun 2012 14:41:16 +0000 Subject: [PATCH] Moved PI_GCS2 to PI_GCS2_Src --- motorApp/PI_GCS2/.cproject | 586 --- motorApp/PI_GCS2/.project | 83 - motorApp/PI_GCS2/PI_GCS2_App/Db/Makefile | 23 - motorApp/PI_GCS2/PI_GCS2_App/Makefile | 7 - .../PI_GCS2/PI_GCS2_App/PI_GCS2_Src/Makefile | 36 - .../PI_GCS2_Src/PIC702Controller.cpp | 187 - .../PI_GCS2_Src/PIC702Controller.h | 45 - .../PI_GCS2_Src/PIE517Controller.cpp | 73 - .../PI_GCS2_Src/PIE517Controller.h | 42 - .../PI_GCS2_Src/PIE755Controller.cpp | 40 - .../PI_GCS2_Src/PIE755Controller.h | 41 - .../PI_GCS2_Src/PIGCSController.cpp | 811 ----- .../PI_GCS2_App/PI_GCS2_Src/PIGCSController.h | 114 - .../PI_GCS2_Src/PIGCSMotorController.cpp | 189 - .../PI_GCS2_Src/PIGCSMotorController.h | 53 - .../PI_GCS2_Src/PIGCSPiezoController.cpp | 37 - .../PI_GCS2_Src/PIGCSPiezoController.h | 38 - .../PI_GCS2_Src/PIHexapodController.cpp | 444 --- .../PI_GCS2_Src/PIHexapodController.h | 74 - .../PI_GCS2_Src/PI_GCS2Support.dbd | 6 - .../PI_GCS2_App/PI_GCS2_Src/PIasynAxis.cpp | 305 -- .../PI_GCS2_App/PI_GCS2_Src/PIasynAxis.h | 74 - .../PI_GCS2_Src/PIasynController.cpp | 527 --- .../PI_GCS2_Src/PIasynController.h | 80 - .../PI_GCS2_App/PI_GCS2_Src/ReadMe.txt | 61 - .../PI_GCS2_Src/picontrollererrors.h | 1075 ------ .../PI_GCS2_App/PI_GCS2_Src/translateerror.c | 3132 ----------------- motorApp/PI_GCS2/configure/CONFIG | 29 - motorApp/PI_GCS2/configure/CONFIG_SITE | 33 - motorApp/PI_GCS2/configure/Makefile | 8 - motorApp/PI_GCS2/configure/RELEASE | 36 - motorApp/PI_GCS2/configure/RULES | 6 - motorApp/PI_GCS2/configure/RULES.ioc | 2 - motorApp/PI_GCS2/configure/RULES_DIRS | 2 - motorApp/PI_GCS2/configure/RULES_TOP | 3 - 35 files changed, 8302 deletions(-) delete mode 100755 motorApp/PI_GCS2/.cproject delete mode 100755 motorApp/PI_GCS2/.project delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/Db/Makefile delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/Makefile delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/Makefile delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PI_GCS2Support.dbd delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.cpp delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/ReadMe.txt delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/picontrollererrors.h delete mode 100755 motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/translateerror.c delete mode 100755 motorApp/PI_GCS2/configure/CONFIG delete mode 100755 motorApp/PI_GCS2/configure/CONFIG_SITE delete mode 100755 motorApp/PI_GCS2/configure/Makefile delete mode 100755 motorApp/PI_GCS2/configure/RELEASE delete mode 100755 motorApp/PI_GCS2/configure/RULES delete mode 100755 motorApp/PI_GCS2/configure/RULES.ioc delete mode 100755 motorApp/PI_GCS2/configure/RULES_DIRS delete mode 100755 motorApp/PI_GCS2/configure/RULES_TOP diff --git a/motorApp/PI_GCS2/.cproject b/motorApp/PI_GCS2/.cproject deleted file mode 100755 index ab6e2da4..00000000 --- a/motorApp/PI_GCS2/.cproject +++ /dev/null @@ -1,586 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/motorApp/PI_GCS2/.project b/motorApp/PI_GCS2/.project deleted file mode 100755 index 46c24945..00000000 --- a/motorApp/PI_GCS2/.project +++ /dev/null @@ -1,83 +0,0 @@ - - - PIasynSrcHg - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/PIasynSrcHg} - - - org.eclipse.cdt.make.core.cleanBuildTarget - clean - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - all - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/Db/Makefile b/motorApp/PI_GCS2/PI_GCS2_App/Db/Makefile deleted file mode 100755 index 2e4b8cb2..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/Db/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -TOP=../.. -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 /db -# databases, templates, substitutions like this -DB += PI_Support.db -DB += PI_SupportCtrl.db - -#---------------------------------------------------- -# If .db template is not named *.template add -# _template = - -include $(TOP)/configure/RULES -#---------------------------------------- -# ADD RULES AFTER THIS LINE - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/Makefile b/motorApp/PI_GCS2/PI_GCS2_App/Makefile deleted file mode 100755 index 8a9f763d..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -TOP = .. -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 diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/Makefile b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/Makefile deleted file mode 100755 index c0560cfb..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -TOP=../.. - -include $(TOP)/configure/CONFIG -#---------------------------------------- -# ADD MACRO DEFINITIONS AFTER THIS LINE -#============================= - -#================================================== -# Build an IOC support library - -LIBRARY_IOC += PI_GCS2Support - -# motorRecord.h will be created from motorRecord.dbd -# install devMotorSoft.dbd into /dbd -DBD += PI_GCS2Support.dbd - -# The following are compiled and added to the Support library -PI_GCS2Support_SRCS += PIasynController.cpp -PI_GCS2Support_SRCS += PIasynAxis.cpp -PI_GCS2Support_SRCS += PIGCSController.cpp -PI_GCS2Support_SRCS += PIGCSMotorController.cpp -PI_GCS2Support_SRCS += PIGCSPiezoController.cpp -PI_GCS2Support_SRCS += PIE517Controller.cpp -PI_GCS2Support_SRCS += PIE755Controller.cpp -PI_GCS2Support_SRCS += PIHexapodController.cpp -PI_GCS2Support_SRCS += PIC702Controller.cpp -PI_GCS2Support_SRCS += translateerror.c - -PI_GCS2Support_LIBS += motor -PI_GCS2Support_LIBS += asyn -PI_GCS2Support_LIBS += $(EPICS_BASE_IOC_LIBS) - -include $(TOP)/configure/RULES -#---------------------------------------- -# ADD RULES AFTER THIS LINE - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.cpp deleted file mode 100755 index 102ab904..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* - * PIC702Controller - * - * Author: sra - */ - -#include "PIC702Controller.h" -#include "PIasynAxis.h" -#include -#include - - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - - -asynStatus PIC702Controller::getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) -{ - int busy; - - epicsTimeStamp now; - epicsTimeGetCurrent(&now); - if(epicsTimeDiffInSeconds(&now,&m_timeREFstarted) < 1.0) - { - homing = 1; - moving = 1; - return asynSuccess; - } - - - asynStatus status = getBusy(pAxis, busy); - if (status != asynSuccess) - { - return status; - } - - negLimit = 0; - posLimit = 0; - homing = busy; - if (busy) - { - moving = busy; - return status; - } - - status = getMoving(pAxis, moving); - if (status != asynSuccess) - { - return status; - } - - return status; -} - -asynStatus PIC702Controller::findConnectedAxes() -{ - // GCS! - axes are not separated by LineFeeds - // axis identifier is only one single char, all axes returned as single "word" - m_nrFoundAxes = 0; - for (size_t i=0; im_maxAcceleration = maxAcc; - } - else - { - pAxis->m_maxAcceleration = maxDec; - } - return status; -} - -asynStatus PIC702Controller::hasReferenceSensor(PIasynAxis* pAxis) -{ - double hasref; - asynStatus status = getGCSParameter(pAxis, PI_PARA_MOT_HAT_REF, hasref); - if (asynSuccess != status) - { - return status; - } - pAxis->m_bHasReference = hasref > 0.1; - - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIC702Controller::hasReferenceSwitch() axis has %sreference sensor\n", - pAxis->m_bHasReference?"":"no "); - return status; -} - -asynStatus PIC702Controller::getReferencedState(PIasynAxis* pAxis) -{ - double isref; - asynStatus status = getGCSParameter(pAxis, PI_PARA_C702_REFERENCED, isref); - if (status != asynSuccess) - { - return status; - } - pAxis->m_homed = (isref > 0.1)?1:0; - - return status; -} - -asynStatus PIC702Controller::referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards) -{ - asynStatus status = setServo(pAxis, 1); - if (asynSuccess != status) - return status; - - status = setVelocityCts(pAxis, velocity); - if (asynSuccess != status) - return status; - - char cmd[100]; - if (pAxis->m_bHasReference) - { - // call REF - find reference - sprintf(cmd,"REF %s", pAxis->m_szAxisName); - } - else if (pAxis->m_bHasLimitSwitches) - { - if (forwards) - { - // call MPL - find positive limit switch - sprintf(cmd,"MPL %s", pAxis->m_szAxisName); - } - else - { - // call MNL - find negative limit switch - sprintf(cmd,"MNL %s", pAxis->m_szAxisName); - } - } - else - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR, - "PIC702Controller::referenceVelCts() failed - axis has no reference/limit switch\n"); - epicsSnprintf(pAxis->m_pasynUser->errorMessage,pAxis->m_pasynUser->errorMessageSize, - "PIC702Controller::referenceVelCts() failed - axis has no reference/limit switch\n"); - return asynError; - } - status = sendOnly(cmd); - if (asynSuccess != status) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR, - "PIC702Controller::referenceVelCts() failed\n"); - return status; - } - pAxis->m_isHoming = 1; - epicsTimeGetCurrent(&m_timeREFstarted); - - return asynSuccess; -} - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.h deleted file mode 100755 index f1e20d00..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIC702Controller.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * PIC702Controller.h - * - * Author: sra - */ - -#ifndef PIC702CONTROLLER_H_ -#define PIC702CONTROLLER_H_ - -#include "PIGCSMotorController.h" -#include - -/** - * class representing PI C-702. - * - */ -class PIC702Controller : public PIGCSMotorController -{ -public: - PIC702Controller(asynUser* pCom, const char* szIDN) - : PIGCSMotorController(pCom, szIDN) - { - } - ~PIC702Controller() {} - - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl); - virtual asynStatus getMaxAcceleration( PIasynAxis* pAxis ); - virtual asynStatus hasReferenceSensor(PIasynAxis* pAxis); - virtual asynStatus getReferencedState(PIasynAxis* axis); - virtual asynStatus referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards); - - virtual bool IsGCS2() { return false; } - -protected: - virtual asynStatus findConnectedAxes(); - enum - { - PI_PARA_C702_REFERENCED = 0x000001CUL - }; - -private: - epicsTimeStamp m_timeREFstarted; -}; - -#endif /* PIC702CONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.cpp deleted file mode 100755 index 22b5b552..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * PIGCSPiezoController - * - * Created on: 15.12.2010 - * Author: sra - */ - -#include "PIE517Controller.h" -#include "PIasynAxis.h" -#include -#include - -#undef asynPrint -#define asynPrint(user,reason,format...) 0 - - -asynStatus PIE517Controller::init() -{ - asynStatus status; - status = PIGCSPiezoController::init(); - if (asynSuccess != status) - { - return status; - } - - // all output channels need to be set "online" before - // any commands are accepted over the interface. - status = getNrOutputChannels(); - if (asynSuccess != status) - { - return status; - } - for (int ch=1; ch<=m_nrOutputChannels; ch++) - { - status = setOnline(ch, 1); - if (asynSuccess != status) - { - return status; - } - } - - return status; -} - -asynStatus PIE517Controller::setOnline(int channel, int onlineState) -{ - char cmd[100]; - sprintf(cmd, "ONL %d %d", channel, onlineState); - asynStatus status = sendOnly(cmd); - return status; -} - -asynStatus PIE517Controller::getNrOutputChannels() -{ - char buf[255]; - asynStatus status = sendAndReceive("TPC?", buf, 99); - if (status != asynSuccess) - { - return status; - } - m_nrOutputChannels = atoi(buf); - return status; - -} - -asynStatus PIE517Controller::initAxis(PIasynAxis* pAxis) -{ - pAxis->m_movingStateMask = pow(2.0, pAxis->getAxisNo()); - - return setServo(pAxis, 1); -} - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.h deleted file mode 100755 index f17724f6..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE517Controller.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * PIGCScontroller.h - * - * Created on: 15.12.2010 - * Author: sra - */ - -#ifndef PIE517CONTROLLER_H_ -#define PIE517CONTROLLER_H_ - -#include "PIGCSPiezoController.h" - -/** - * class representing PI E-517 and E-545 controllers. - * - * Basically these controllers have the same functionality as a - * digital piezo controller. Specialties are "velocity control" mode - * and the "online" state. Output channels must be set to "online" mode - * before commands are accepted over the interface. This is done in - * init() - */ -class PIE517Controller : public PIGCSPiezoController -{ -public: - PIE517Controller(asynUser* pCom, const char* szIDN) - : PIGCSPiezoController(pCom, szIDN) - { - } - ~PIE517Controller() {} - - virtual asynStatus init(void); - virtual asynStatus initAxis(PIasynAxis* pAxis); - -private: - asynStatus setOnline(int outputChannel, int onlineState); - asynStatus getNrOutputChannels(); - - int m_nrOutputChannels; - -}; - -#endif /* PIE517CONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.cpp deleted file mode 100755 index 725f6a01..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * PIE755Controller - * - * Author: sra - */ - -#include "PIE755Controller.h" -#include "PIasynAxis.h" -#include - -#undef asynPrint -#define asynPrint(user,reason,format...) 0 - - -asynStatus PIE755Controller::getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) -{ - int busy; - asynStatus status = getBusy(pAxis, busy); - if (status != asynSuccess) - { - return status; - } - - negLimit = 0; - posLimit = 0; - homing = busy; - if (busy) - { - moving = busy; - return status; - } - - status = getMoving(pAxis, moving); - if (status != asynSuccess) - { - return status; - } - - return status; -} diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.h deleted file mode 100755 index 3f0e9687..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIE755Controller.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * PIE755Controller.h - * - * Author: sra - */ - -#ifndef PIE755CONTROLLER_H_ -#define PIE755CONTROLLER_H_ - -#include "PIGCSMotorController.h" - -/** - * class representing PI E-755. - * - * These controllers share most of the parameters with digital piezo controllers. - * Encoders for Nexline stages are often only incremental, so they need to be homed. - * Homing works with "hard stops" and "Limit switches". - * From an EPICS point of view this behaves more like a motor than a piezo controller. - */ -class PIE755Controller : public PIGCSMotorController -{ -public: - PIE755Controller(asynUser* pCom, const char* szIDN) - : PIGCSMotorController(pCom, szIDN) - { - } - ~PIE755Controller() {} - - virtual asynStatus getResolution(PIasynAxis* pAxis, double& resolution ) - { - return PIGCSController::getResolution(pAxis, resolution); - } - virtual asynStatus setAccelerationCts( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus setAcceleration( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl); - -private: - -}; - -#endif /* PIE755CONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.cpp deleted file mode 100755 index 80357598..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.cpp +++ /dev/null @@ -1,811 +0,0 @@ -/* - * PIGCSController.cpp - * - * Created on: 15.12.2010 - * Author: sra - */ - -#include -#include -#include -#include "PIGCSController.h" -#include "PIasynAxis.h" -#include "PIGCSMotorController.h" -#include "PIGCSPiezoController.h" -#include "PIE517Controller.h" -#include "PIE755Controller.h" -#include "PIHexapodController.h" -#include "PIC702Controller.h" - - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - - -extern "C" { -int TranslatePIError(const int error, char* szBuffer, const int maxlen); -} - -double PIGCSController::TIMEOUT = 5.0; - -/** - * create instance of GCS controller depending on identification (\a szIDN) - */ -PIGCSController* PIGCSController::CreateGCSController(asynUser* pInterface, const char* szIDN) -{ - if ( strstr(szIDN, "C-663") != NULL - || strstr(szIDN, "C-863") != NULL - || strstr(szIDN, "C-867") != NULL - ) - { - return new PIGCSMotorController(pInterface, szIDN); - } - else if ( strstr(szIDN, "E-517") != NULL) - { - return new PIE517Controller(pInterface, szIDN); - } - else if ( strstr(szIDN, "E-755") != NULL) - { - return new PIE755Controller(pInterface, szIDN); - } - else if ( strstr(szIDN, "C-702") != NULL) - { - return new PIC702Controller(pInterface, szIDN); - } - else if ( strstr(szIDN, "HEXAPOD") != NULL - || strstr(szIDN, "F-HEX") != NULL - || strstr(szIDN, "F-206") != NULL - || strstr(szIDN, "M-8") != NULL - || strstr(szIDN, "C-887") != NULL - ) - { - return new PIHexapodController(pInterface, szIDN); - } - else - { - return NULL; - } -} - -asynStatus PIGCSController::sendOnly(asynUser* pInterface, const char *outputBuff, asynUser* logSink) -{ - size_t nRequested=strlen(outputBuff); - size_t nActual; - asynStatus status; - - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendOnly() sending \"%s\"\n", outputBuff); - //printf("PIGCSController::sendOnly() sending \"%s\"\n", outputBuff); - - status = pasynOctetSyncIO->write(pInterface, outputBuff, - nRequested, TIMEOUT, &nActual); - if (nActual != nRequested) - status = asynError; - status = pasynOctetSyncIO->write(pInterface, "\n", - 1, TIMEOUT, &nActual); - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController:sendOnly: error sending command %s, sent=%d, status=%d\n", - outputBuff, nActual, status); - } - return(status); -} - -asynStatus PIGCSController::sendOnly(asynUser* pInterface, char c, asynUser* logSink) -{ - size_t nActual; - asynStatus status; - - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendOnly() sending \"#%d\"\n", int(c)); - //printf("PIGCSController::sendOnly() sending \"#%d\"\n", int(c)); - - status = pasynOctetSyncIO->write(pInterface, &c, - 1, TIMEOUT, &nActual); - if (nActual != 1) - status = asynError; - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController:sendOnly: error sending command %d, sent=%d, status=%d\n", - int(c), nActual, status); - //printf("PIGCSController::sendOnly() sending \"#%d\"\n", int(c)); - } - return(status); -} - - -asynStatus PIGCSController::sendAndReceive(asynUser* pInterface, const char *outputBuff, char *inputBuff, int inputSize, asynUser* logSink) -{ - size_t nWriteRequested=strlen(outputBuff); - size_t nWrite, nRead; - int eomReason; - asynStatus status; - size_t pos = 0; - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendAndReceive() sending \"%s\"\n", outputBuff); -// //printf("PIGCSController::sendAndReceive() sending \"%s\"\n", outputBuff); - - status = pasynOctetSyncIO->write(pInterface, outputBuff, - nWriteRequested, TIMEOUT, &nWrite); - if (nWrite != nWriteRequested) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController:sendAndReceive error calling write, output=%s status=%d, error=%s\n", - outputBuff, status, pInterface->errorMessage); - return asynError; - } - - status = pasynOctetSyncIO->writeRead(pInterface, - "\n", 1, - inputBuff, inputSize, - TIMEOUT, &nWrite, &nRead, &eomReason); - if (nWrite != 1) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController:sendAndReceive error calling write, output=%s status=%d, error=%s\n", - outputBuff, status, pInterface->errorMessage); - return asynError; - } - - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController:sendAndReceive error calling writeRead, output=%s status=%d, error=%s\n", - outputBuff, status, pInterface->errorMessage); - } - while(inputBuff[strlen(inputBuff)-1] == ' ') - { - inputBuff[strlen(inputBuff)] = '\n'; - pos += nRead + 1; - status = pasynOctetSyncIO->read(logSink, - inputBuff+pos, inputSize-pos, - TIMEOUT, &nRead, &eomReason); - - } - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendAndReceive() received \"%s\"\n", inputBuff); - // //printf("PIGCSController::sendAndReceive() received \"%s\"\n", inputBuff); - - return(status); -} - -asynStatus PIGCSController::sendOnly(const char *outputBuff) -{ - asynUser* logSink = m_pCurrentLogSink; - if (NULL == logSink) - logSink = m_pInterface; - m_interfaceMutex.lock(); - asynStatus status = sendOnly(m_pInterface, outputBuff, logSink); - m_interfaceMutex.unlock(); - return status; -} - -asynStatus PIGCSController::sendOnly(char c) -{ - asynUser* logSink = m_pCurrentLogSink; - if (NULL == logSink) - logSink = m_pInterface; - m_interfaceMutex.lock(); - asynStatus status = sendOnly(m_pInterface, c, logSink); - m_interfaceMutex.unlock(); - return status; -} - -asynStatus PIGCSController::sendAndReceive(char c, char *inputBuff, int inputSize) -{ - asynUser* logSink = m_pCurrentLogSink; - if (NULL == logSink) - logSink = m_pInterface; - m_interfaceMutex.lock(); - asynStatus status = sendAndReceive(m_pInterface, c, inputBuff, inputSize, logSink); - m_interfaceMutex.unlock(); - return status; -} - -asynStatus PIGCSController::sendAndReceive(const char* output, char *inputBuff, int inputSize) -{ - asynUser* logSink = m_pCurrentLogSink; - if (NULL == logSink) - logSink = m_pInterface; - m_interfaceMutex.lock(); - asynStatus status = sendAndReceive(m_pInterface, output, inputBuff, inputSize, logSink); - m_interfaceMutex.unlock(); - return status; -} - -asynStatus PIGCSController::sendAndReceive(asynUser* pInterface, char c, char *inputBuff, int inputSize, asynUser* logSink) -{ - size_t nWrite, nRead; - int eomReason; - asynStatus status; - size_t pos = 0; - - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendAndReceive() sending \"#%d\"\n", int(c)); - //printf("PIGCSController::sendAndReceive() sending \"#%d\"\n", int(c)); - status = pasynOctetSyncIO->writeRead(pInterface, - &c, 1, - inputBuff, inputSize, - TIMEOUT, &nWrite, &nRead, &eomReason); - if (nWrite != 1) - status = asynError; - - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_ERROR|ASYN_TRACEIO_DRIVER, - "PIGCSController::sendAndReceive error calling writeRead, output=%d status=%d, error=%s\n", - int(c), status, pInterface->errorMessage); - //printf("PIGCSController::sendAndReceive error calling writeRead, output=%d status=%d, error=%s\n", int(c), status, pInterface->errorMessage); - } - - while(inputBuff[strlen(inputBuff)-1] == ' ') - { - pos += nRead; - status = pasynOctetSyncIO->writeRead(logSink, - &c, 1, - inputBuff+pos, inputSize-pos, - TIMEOUT, &nWrite, &nRead, &eomReason); -//printf("PIGCSController::sendAndReceive(char) in while loop. inputBuff: \"%s\"\n", inputBuff); - } - asynPrint(logSink, ASYN_TRACEIO_DRIVER, - "PIGCSController::sendAndReceive() received \"%s\"\n", inputBuff); - //printf("PIGCSController::sendAndReceive() received \"%s\" - (0x%02X)\n", inputBuff, int(inputBuff[0])); - - return(status); -} - -asynStatus PIGCSController::setVelocityCts( PIasynAxis* pAxis, double velocity ) -{ - char cmd[100]; - velocity = fabs(velocity) * pAxis->m_CPUdenominator / pAxis->m_CPUnumerator; - sprintf(cmd,"VEL %s %f", pAxis->m_szAxisName, velocity); - asynStatus status = sendOnly(cmd); - if (asynSuccess == status) - { - pAxis->m_velocity = velocity; - } - return status; -} - -asynStatus PIGCSController::moveCts( PIasynAxis** pAxesArray, int* pTargetCtsArray, int numAxes) -{ -//TODO: "Use MVE or set vel/acc so axes reach target at the same time"" - - - asynStatus status; - char cmd[1000] = "MOV"; - char subCmd[100]; - for (int axis = 0; axis m_CPUdenominator / pAxis->m_CPUnumerator; - sprintf(subCmd," %s %f", pAxis->m_szAxisName, target); - strcat(cmd, subCmd); - pAxis->m_lastDirection = (pTargetCtsArray[axis] > pAxis->m_positionCts) ? 1 : 0; - } - status = sendOnly(cmd); - if (asynSuccess != status) - { - return status; - } - int errorCode = getGCSError(); - if (errorCode == 0) - return asynSuccess; - - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::moveCts(array) failed, GCS error %d\n", errorCode); - return asynError; -} - - - -asynStatus PIGCSController::moveCts( PIasynAxis* pAxis, int targetCts ) -{ - asynStatus status; - char cmd[100]; - double target = double(targetCts) * pAxis->m_CPUdenominator / pAxis->m_CPUnumerator; - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::moveCts(, %d) \n", targetCts); - return move(pAxis, target); -} - -asynStatus PIGCSController::move( PIasynAxis* pAxis, double target ) -{ - asynStatus status; - char cmd[100]; - sprintf(cmd,"MOV %s %f", pAxis->m_szAxisName, target); - status = sendOnly(cmd); - if (asynSuccess != status) - { - return status; - } - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::move() sent \"%s\"\n", cmd); - pAxis->m_lastDirection = (target > pAxis->m_position) ? 1 : 0; - int errorCode = getGCSError(); - if (errorCode == 0) - return asynSuccess; - - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::move() failed, GCS error %d\n", errorCode); - return asynError; -} - -int PIGCSController::getGCSError() -{ - char buf[256]; - asynStatus status = sendAndReceive("ERR?", buf, 255); - if (asynTimeout == status) - { - return COM_TIMEOUT; - } - else if (asynSuccess != status) - { - return COM_ERROR; - } - int errorCode = atoi(buf); - if (0 != errorCode) - { - m_LastError = errorCode; - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "PIGCSController::getGCSError() GCS error code = %d\n", - errorCode); - char szErrorMsg[1024]; - if (TranslatePIError(errorCode, szErrorMsg, 1024)) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "PIGCSController::getGCSError() GCS error, %s\n", - szErrorMsg); - - } - } - return errorCode; -} - -asynStatus PIGCSController::haltAxis(PIasynAxis* pAxis) -{ - char cmd[100]; - sprintf(cmd,"HLT %s", pAxis->m_szAxisName); - asynStatus status = sendOnly(cmd); - if (status != asynSuccess) - { - return status; - } - int err = getGCSError(); - // controller will set error code to PI_CNTR_STOP (10) - if (err != PI_CNTR_STOP) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::haltAxis() failed, GCS error %d", err); - return asynError; - } - return status; -} - -/** - * get position of axis in physical units (EGU) as defined on the controller - */ -asynStatus PIGCSController::getAxisPosition(PIasynAxis* pAxis, double& position) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "POS? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - if (!getValue(buf, position)) - { - status = asynError; - } - return status; -} - -/** - * get velocity of axis in physical units (EGU) as defined on the controller - * and set PIasynAxis::m_velocity - */ -asynStatus PIGCSController::getAxisVelocity(PIasynAxis* pAxis) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "VEL? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - if (!getValue(buf, pAxis->m_velocity)) - { - status = asynError; - } - return status; - -} - -/** - * Find travel range for axis. - */ -asynStatus PIGCSController::getTravelLimits(PIasynAxis* pAxis, double& negLimit, double& posLimit) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "TMN? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - if (!getValue(buf, negLimit)) - { - return asynError; - } - sprintf(cmd, "TMX? %s", pAxis->m_szAxisName); - status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - if (!getValue(buf, posLimit)) - { - return asynError; - } - - return status; -} - -asynStatus PIGCSController::hasLimitSwitches(PIasynAxis* pAxis) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "LIM? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - if (!getValue(buf, pAxis->m_bHasLimitSwitches)) - { - return asynError; - } - if (!pAxis->m_bHasLimitSwitches) - { - sprintf(cmd, "HAR? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status == asynSuccess) - { - if (!getValue(buf, pAxis->m_bHasLimitSwitches)) - { - return asynError; - } - } - else if (status == asynTimeout) - { - int err = getGCSError(); - if (err == PI_CNTR_UNKNOWN_COMMAND) - { - // "HAR?" not known - pAxis->m_bHasLimitSwitches = false; - } - else - { - return status; - } - } - else - { - return status; - } - } - - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::hasLimitSwitches() axis has %slimit switches\n", - pAxis->m_bHasLimitSwitches?"":"no "); - return status; -} - -asynStatus PIGCSController::hasReferenceSensor(PIasynAxis* pAxis) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "TRS? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - - if (!getValue(buf, pAxis->m_bHasReference)) - { - return asynError; - } - - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::hasReferenceSwitch() axis has %sreference sensor\n", - pAxis->m_bHasReference?"":"no "); - return status; -} - -/** - * get position of axis in counts as used in EPICS. - * getAxisPosition() is called and position is covnerted to counts using the - * counts-per-unit (CPU) fraction of the axis. - */ -asynStatus PIGCSController::getAxisPositionCts(PIasynAxis* pAxis) -{ - double pos; - asynStatus status = getAxisPosition(pAxis, pos); - if (status != asynSuccess) - { - return status; - } - pAxis->m_position = pos; - if (pAxis->m_CPUdenominator==0 || pAxis->m_CPUnumerator==0) - { - pAxis->m_positionCts = pos; - return status; - } - - pAxis->m_positionCts = int( (pos * double(pAxis->m_CPUnumerator) / double(pAxis->m_CPUdenominator))+0.5); - if (m_pCurrentLogSink != NULL) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::getAxisPositionCts() pos:%d\n", - pAxis->m_positionCts); - } - return status; -} - -//void PIGCSController::calcAxisPositionCts(); - -asynStatus PIGCSController::setServo(PIasynAxis* pAxis, int servoState) -{ - char cmd[100]; - sprintf(cmd, "SVO %s %d", pAxis->m_szAxisName, servoState); - asynStatus status = sendOnly(cmd); - if (status != asynSuccess) - { - return status; - } - int err = getGCSError(); - if (COM_NO_ERROR == err) - { - pAxis->m_bServoControl = (servoState == 1); - if (pAxis->m_bProblem && pAxis->m_bServoControl) - { - pAxis->m_bProblem = false; - } - return asynSuccess; - } - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "Could not set servo state!\n"); - return asynError; - -} - -asynStatus PIGCSController::getMoving(PIasynAxis* pAxis, int& moving) -{ - char buf[255]; - asynStatus status = sendAndReceive(char(5), buf, 99);; - if (status != asynSuccess) - { -//printf("PIGCSController::getMoving() failed, status %d", status); -return status; - } - - char* pStr; - long movingState = strtol(buf, &pStr, 16); - moving = (movingState & pAxis->m_movingStateMask) != 0 ? 1 : 0; - - return status; -} - -asynStatus PIGCSController::getBusy(PIasynAxis* pAxis, int& busy) -{ - char buf[255]; - asynStatus status = sendAndReceive(char(7), buf, 99);; - if (status != asynSuccess) - { - return status; - } - - unsigned char c = (unsigned char)buf[0]; - busy = (c==0xB0); - - return status; -} - -asynStatus PIGCSController::setGCSParameter(PIasynAxis* pAxis, unsigned int paramID, double value) -{ - char cmd[100]; - sprintf(cmd, "SPA %s %d %.12g", pAxis->m_szAxisName, paramID, value); - asynStatus status = sendOnly(cmd); - return status; -} - -asynStatus PIGCSController::getGCSParameter(PIasynAxis* pAxis, unsigned int paramID, double& value) -{ - char cmd[100]; - char buf[255]; - sprintf(cmd, "SPA? %s %d", pAxis->m_szAxisName, paramID); - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - - if (!getValue(buf, value)) - { - return asynError; - } - return status; - -} - -PIGCSController::PIGCSController(asynUser* pCom, const char* szIDN) -: m_pCurrentLogSink(NULL) -, m_bAnyAxisMoving(false) -, m_pInterface(pCom) -, m_nrFoundAxes(0) -, m_LastError(0) -{ - strncpy(szIdentification, szIDN, 199); -} - -PIGCSController::~PIGCSController() -{ -} - -asynStatus PIGCSController::initAxis(PIasynAxis* pAxis) -{ - // read stage name - to have it in logfile and find - // problems because of mis/non-configured controllers - char cmd[100]; - char buf[255]; - sprintf(cmd, "CST? %s", pAxis->m_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99);; - if (status != asynSuccess) - { - return status; - } - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::initAxis() stage configuration: %s\n", buf); - } - pAxis->m_movingStateMask = pow(2.0, pAxis->getAxisNo()); - - return setServo(pAxis, 1); -} - -asynStatus PIGCSController::init(void) -{ - asynStatus status; - status = findConnectedAxes(); - return status; -} - -asynStatus PIGCSController::findConnectedAxes() -{ - m_nrFoundAxes = 0; - for (size_t i=0; im_szAxisName); - asynStatus status = sendAndReceive(cmd, buf, 99);; - if (status != asynSuccess) - { - return status; - } - if (getValue(buf, pAxis->m_homed)) - { - return asynError; - } - return status; -} - -asynStatus PIGCSController::getResolution(PIasynAxis* pAxis, double& resolution ) -{ - resolution = 0.0001; - pAxis->m_CPUnumerator = 10000; - pAxis->m_CPUdenominator = 1; - return asynSuccess; -} - -asynStatus PIGCSController::SetPivotX(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::SetPivotX() ignored"); - } - return asynSuccess; -} - -asynStatus PIGCSController::SetPivotY(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::SetPivotY() ignored"); - } - return asynSuccess; -} - -asynStatus PIGCSController::SetPivotZ(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSController::SetPivotZ() ignored"); - } - return asynSuccess; -} - -bool PIGCSController::getValue(const char* szMsg, double& value) -{ - const char* p = strstr(szMsg, "="); - if (p==NULL || *p == '\0') - { - return false; - } - value = atof(p+1); - return true; -} - -bool PIGCSController::getValue(const char* szMsg, int& value) -{ - const char* p = strstr(szMsg, "="); - if (p==NULL || *p == '\0') - { - return false; - } - value = atoi(p+1); - return true; -} - -bool PIGCSController::getValue(const char* szMsg, bool& value) -{ - const char* p = strstr(szMsg, "="); - if (p==NULL || *p == '\0') - { - return false; - } - int ivalue = atoi(p+1); - value = (ivalue =! 0); - return true; -} diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.h deleted file mode 100755 index 361f91e2..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSController.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * PIGCScontroller.h - * - * Created on: 15.12.2010 - * Author: sra - */ - -#ifndef PIGCSCONTROLLER_H_ -#define PIGCSCONTROLLER_H_ - -#include -#include -#include -#include "picontrollererrors.h" - - -class PIasynAxis; -class asynMotorAxis; - -/** - * Base class for all PI GCS(2) controllers. - * - * Most functions will be implemented here, since for basic functionality - * GCS commands are always the same. - */ -class PIGCSController -{ -public: - PIGCSController(asynUser* pCom, const char* szIDN); - virtual ~PIGCSController(); - - static PIGCSController* CreateGCSController(asynUser* pCom, const char* szIDN); - - virtual asynStatus init(void); - virtual asynStatus initAxis(PIasynAxis* pAxis); - - static asynStatus sendOnly(asynUser* pInterface, char c, asynUser* logSink); - static asynStatus sendOnly(asynUser* pInterface, const char *outputBuff, asynUser* logSink); - static asynStatus sendAndReceive(asynUser* pInterface, const char *outputBuff, char *inputBuff, int inputSize, asynUser* logSink); - static asynStatus sendAndReceive(asynUser* pInterface, char c, char *inputBuff, int inputSize, asynUser* logSink); - - bool getValue(const char* szMsg, double& value); - bool getValue(const char* szMsg, int& value); - bool getValue(const char* szMsg, bool& value); - - virtual asynStatus setVelocityCts( PIasynAxis* pAxis, double velocity ); - virtual asynStatus setAccelerationCts( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus setAcceleration( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus move( PIasynAxis* pAxis, double target); - virtual asynStatus moveCts( PIasynAxis* pAxis, int target); - virtual asynStatus moveCts( PIasynAxis** pAxesArray, int* pTargetCtsArray, int numAxes); - virtual asynStatus referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards) { return asynSuccess; } - virtual asynStatus haltAxis(PIasynAxis* pAxis); - - virtual asynStatus getAxisPosition(PIasynAxis* pAxis, double& position); - virtual asynStatus getAxisVelocity(PIasynAxis* pAxis); - virtual asynStatus getAxisPositionCts(PIasynAxis* pAxis); - virtual asynStatus setServo(PIasynAxis* pAxis, int servoState); - virtual asynStatus getResolution(PIasynAxis* pAxis, double& resolution ); - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) = 0; - virtual asynStatus getGlobalState( asynMotorAxis** Axes, int numAxes ) { return asynSuccess; } - virtual asynStatus getMoving(PIasynAxis* pAxis, int& homing); - virtual asynStatus getBusy(PIasynAxis* pAxis, int& busy); - virtual asynStatus getTravelLimits(PIasynAxis* pAxis, double& negLimit, double& posLimit); - virtual asynStatus hasLimitSwitches(PIasynAxis* pAxis); - virtual asynStatus hasReferenceSensor(PIasynAxis* pAxis); - virtual asynStatus getReferencedState(PIasynAxis* axis); - - virtual asynStatus SetPivotX(double value); - virtual asynStatus SetPivotY(double value); - virtual asynStatus SetPivotZ(double value); - - virtual double GetPivotX() { return 0.0; } - virtual double GetPivotY() { return 0.0; } - virtual double GetPivotZ() { return 0.0; } - - virtual bool AcceptsNewTarget() { return true; } - virtual bool CanCommunicateWhileHoming() { return true; } - - asynStatus sendOnly(const char *outputBuff); - asynStatus sendOnly(char c); - asynStatus sendAndReceive(const char *outputBuff, char *inputBuff, int inputSize); - asynStatus sendAndReceive(char c, char *inputBuff, int inputSize); - - const char* getAxesID(size_t axisIdx) { return m_axesIDs[axisIdx]; } - size_t getNrFoundAxes() { return m_nrFoundAxes; } - - virtual bool IsGCS2() { return true; } - - int getGCSError(); - - int GetLastError() { return m_LastError; } - - asynUser* m_pCurrentLogSink; - static const size_t MAX_NR_AXES = 64; - bool m_bAnyAxisMoving; -protected: - asynStatus setGCSParameter(PIasynAxis* pAxis, unsigned int paramID, double value); - asynStatus getGCSParameter(PIasynAxis* pAxis, unsigned int paramID, double& value); - - virtual asynStatus findConnectedAxes(); - - asynUser* m_pInterface; - epicsMutex m_interfaceMutex; - static double TIMEOUT; - char szIdentification[200]; - int m_nrAxesOnController; - char* m_axesIDs[MAX_NR_AXES]; - size_t m_nrFoundAxes; - char m_allAxesIDs[255]; - int m_LastError; -}; - -#endif /* PIGCSCONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.cpp deleted file mode 100755 index 323bde9f..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.cpp +++ /dev/null @@ -1,189 +0,0 @@ -/* - * PIGCSMotorController.cpp - * - * Created on: 15.12.2010 - * Author: sra - */ - -#include "PIGCSMotorController.h" -#include "PIasynAxis.h" -#include -#include - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - - -asynStatus PIGCSMotorController::initAxis(PIasynAxis* pAxis) -{ - asynStatus status = hasLimitSwitches(pAxis); - if (asynSuccess != status) - { - return status; - } - status = hasReferenceSensor(pAxis); - if (asynSuccess != status) - { - return status; - } - return PIGCSController::initAxis(pAxis); -} - -asynStatus PIGCSMotorController::setAccelerationCts( PIasynAxis* pAxis, double accelerationCts) -{ - double acceleration = fabs(accelerationCts) * pAxis->m_CPUdenominator / pAxis->m_CPUnumerator; - if (acceleration == pAxis->m_acceleration) - return asynSuccess; - if (pAxis->m_maxAcceleration < 0) - { - getMaxAcceleration(pAxis); - } - if (acceleration > pAxis->m_maxAcceleration) - acceleration = pAxis->m_maxAcceleration; - - return setAcceleration(pAxis, acceleration); -} - -asynStatus PIGCSMotorController::referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards) -{ - asynStatus status = setServo(pAxis, 1); - if (asynSuccess != status) - return status; - - char cmd[100]; - if (velocity != 0) - { - velocity = fabs(velocity) * pAxis->m_CPUdenominator / pAxis->m_CPUnumerator; - sprintf(cmd,"SPA %s 0x50 %f", pAxis->m_szAxisName, velocity); - sendOnly(cmd); - } - - if (pAxis->m_bHasReference) - { - // call FRF - find reference - sprintf(cmd,"FRF %s", pAxis->m_szAxisName); - } - else if (pAxis->m_bHasLimitSwitches) - { - if (forwards) - { - // call FPL - find positive limit switch - sprintf(cmd,"FPL %s", pAxis->m_szAxisName); - } - else - { - // call FNL - find negative limit switch - sprintf(cmd,"FNL %s", pAxis->m_szAxisName); - } - } - else - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR, - "PIGCSMotorController::referenceVelCts() failed - axis has no reference/limit switch\n"); - epicsSnprintf(pAxis->m_pasynUser->errorMessage,pAxis->m_pasynUser->errorMessageSize, - "PIGCSMotorController::referenceVelCts() failed - axis has no reference/limit switch\n"); - return asynError; - } - status = sendOnly(cmd); - if (asynSuccess != status) - return status; - int errorCode = getGCSError(); - if (errorCode == 0) - { - return asynSuccess; - } - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR, - "PIGCSMotorController::referenceVelCts() failed\n"); - epicsSnprintf(pAxis->m_pasynUser->errorMessage,pAxis->m_pasynUser->errorMessageSize, - "PIGCSMotorController::referenceVelCts() failed - GCS Error %d\n",errorCode); - return asynError; - -} - -/** - * Get encoder resolution from counts-per-unit (CPU) fraction of the axis. - */ -asynStatus PIGCSMotorController::getResolution(PIasynAxis* pAxis, double& resolution ) -{ - // CPU is "Counts Per Unit" - // this is stored as two integers in the controller - double num, denom; - asynStatus status = getGCSParameter(pAxis, PI_PARA_MOT_CPU_Z, num); - if (status != asynSuccess) - { - return status; - } - status = getGCSParameter(pAxis, PI_PARA_MOT_CPU_N, denom); - if (status != asynSuccess) - { - return status; - } - pAxis->m_CPUnumerator = num; - pAxis->m_CPUdenominator = denom; - resolution = double(pAxis->m_CPUdenominator) / double(pAxis->m_CPUnumerator) ; - return status; - -} - -asynStatus PIGCSMotorController::getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) -{ - char buf[255]; - asynStatus status = sendAndReceive(char(4), buf, 99); - if (status != asynSuccess) - { - return status; - } - // TODO this is for a single axis C-863/867 controller!!!! - // TODO a) change it to multi-axis code. - // TODO b) support other controllers which do not understand #4 or have different bit masks - - int idx = 2 + pAxis->getAxisNo()*4; - buf[idx+4] = '\0'; - char* szMask = buf+idx; - long mask = strtol(szMask, NULL, 16); - moving = (mask & 0x2000) ? 1 : 0; - homing = (mask & 0x4000) ? 1 : 0; - negLimit = (mask & 0x0001) ? 1 : 0; - posLimit = (mask & 0x0004) ? 1 : 0; - servoControl = (mask & 0x1000) ? 1 : 0; - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIGCSMotorController::getStatus() buf:%s moving %d, svo: %d\n", - buf, moving, servoControl); - - return status; -} - -asynStatus PIGCSMotorController::getMaxAcceleration(PIasynAxis* pAxis) -{ - double maxAcc, maxDec; - asynStatus status = getGCSParameter(pAxis, PI_PARA_MOT_MAX_ACCEL, maxAcc); - if (asynSuccess != status) - return status; - status = getGCSParameter(pAxis, PI_PARA_MOT_MAX_DECEL, maxDec); - if (asynSuccess != status) - return status; - - if (maxAcc < maxDec) - { - pAxis->m_maxAcceleration = maxAcc; - } - else - { - pAxis->m_maxAcceleration = maxDec; - } - return status; -} - -asynStatus PIGCSMotorController::setAcceleration( PIasynAxis* pAxis, double acceleration) -{ - asynStatus status = setGCSParameter(pAxis, PI_PARA_MOT_CURR_ACCEL, acceleration); - if (asynSuccess != status) - return status; - status = setGCSParameter(pAxis, PI_PARA_MOT_CURR_DECEL, acceleration); - if (asynSuccess != status) - return status; - pAxis->m_acceleration = acceleration; - return status; -} - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.h deleted file mode 100755 index be8b7ec6..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSMotorController.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * PIGCScontroller.h - * - * Created on: 15.12.2010 - * Author: sra - */ - -#ifndef PIGCSMOTORCONTROLLER_H_ -#define PIGCSMOTORCONTROLLER_H_ - -#include "PIGCSController.h" -#include - -/** - * class representing PI GCS2 motor controllers. - * - * "motor" does not strictly restrict the driving principle to DC stages or - * stepper but includes other controller families (e.g. for piezo motors) also. - */ -class PIGCSMotorController : public PIGCSController -{ -public: - PIGCSMotorController(asynUser* pCom, const char* szIDN) - : PIGCSController(pCom, szIDN) - { - } - ~PIGCSMotorController() {} - virtual asynStatus initAxis(PIasynAxis* pAxis); - - virtual asynStatus setAccelerationCts( PIasynAxis* pAxis, double acceleration); - virtual asynStatus setAcceleration( PIasynAxis* pAxis, double acceleration); - virtual asynStatus getMaxAcceleration( PIasynAxis* pAxis ); - virtual asynStatus referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards); - virtual asynStatus getResolution(PIasynAxis* pAxis, double& resolution ); - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl); - -protected: - enum - { - PI_PARA_MOT_CURR_ACCEL = 0x000000BUL, - PI_PARA_MOT_CURR_DECEL = 0x000000CUL, - PI_PARA_MOT_CPU_Z = 0x000000EUL, - PI_PARA_MOT_CPU_N = 0x000000FUL, - PI_PARA_MOT_HAT_REF = 0x0000014UL, - PI_PARA_MOT_MAX_ACCEL = 0x000004AUL, - PI_PARA_MOT_MAX_DECEL = 0x000004BUL - }; - -private: - -}; - -#endif /* PIGCSMOTORCONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.cpp deleted file mode 100755 index 97d2c4d5..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * PIGCSPiezoController - * - * Created on: 15.12.2010 - * Author: sra - */ - -#include "PIGCSPiezoController.h" -#include "PIasynAxis.h" -#include -#include - -#undef asynPrint -#define asynPrint(user,reason,format...) 0 - - -asynStatus PIGCSPiezoController::getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) -{ - asynStatus status = getMoving(pAxis, moving); - if (status != asynSuccess) - { - return status; - } - - homing = 0; - negLimit = 0; - posLimit = 0; - - return status; -} - -asynStatus PIGCSPiezoController::getReferencedState(PIasynAxis* pAxis) -{ - pAxis->m_homed = 1; - return asynSuccess; -} - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.h deleted file mode 100755 index afe09386..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIGCSPiezoController.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * PIGCScontroller.h - * - * Created on: 15.12.2010 - * Author: sra - */ - -#ifndef PIGCSPIEZOCONTROLLER_H_ -#define PIGCSPIEZOCONTROLLER_H_ - -#include "PIGCSController.h" -#include - -/** - * Class representing PI's GCS2 digital piezo controllers. - * - * Main difference to motor controllers is the usage of absolute sensors. - */ -class PIGCSPiezoController : public PIGCSController -{ -public: - PIGCSPiezoController(asynUser* pCom, const char* szIDN) - : PIGCSController(pCom, szIDN) - { - } - ~PIGCSPiezoController() {} - - virtual asynStatus init(void) { return PIGCSController::init(); } - - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl); - virtual asynStatus getReferencedState(PIasynAxis* pAxis); - - -private: - -}; - -#endif /* PIGCSPIEZOCONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.cpp deleted file mode 100755 index 399a3d8d..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.cpp +++ /dev/null @@ -1,444 +0,0 @@ -/* - * PIE755Controller - * - * Author: sra - */ - -#include "PIHexapodController.h" -#include "PIasynAxis.h" -#include -#include - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - -asynStatus PIHexapodController::init(void) -{ - asynStatus status = PIGCSController::init(); - if (status != asynSuccess) - { - return status; - } - - // Try to find out if #4 is supported - char buf[200]; - status = sendAndReceive(char(4), buf, 199); - if (status == asynSuccess) - { - m_bCanReadStatusWithChar4 = true; - } - else if (status == asynTimeout) - { - m_bCanReadStatusWithChar4 = false; - getGCSError(); // clear error UNKNOWN COMMAND - } -// status = sendAndReceive(char(3), buf, 199); -// if (status == asynSuccess) -// { -// m_bCanReadPosWithChar3 = true; -// } -// else if (status == asynTimeout) - { - m_bCanReadPosWithChar3 = false; - getGCSError(); // clear error UNKNOWN COMMAND - } - - m_bHoming = false; - - ReadPivotSettings(); - - return status; -} - - -asynStatus PIHexapodController::getGlobalState(asynMotorAxis** pAxes, int numAxes) -{ - // do not call moving here, at least simulation software does return - // values != 0 with bit 1 not set (e.g. "2") - char buf[255]; - asynStatus status = sendAndReceive(char(5), buf, 99);; - if (status != asynSuccess) - { -printf("PIGCSController::getGlobalState() failed, status %d", status); -return status; - } - - char* pStr; - long moving = strtol(buf, &pStr, 16); - m_bAnyAxisMoving = (moving != 0); - if (m_bHoming && (moving == 0)) - { - m_bHoming = false; - } - for(int i=0; im_bMoving = (moving != 0); - } - return asynSuccess; - -} - -asynStatus PIHexapodController::getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl) -{ - negLimit = 0; - posLimit = 0; - homing = m_bHoming ? 1:0; - - moving = pAxis->m_bMoving || pAxis->deferred_move; - return asynSuccess; -} - -asynStatus PIHexapodController::findConnectedAxes() -{ - for (size_t i=0; im_movingStateMask = 1; - return setServo(pAxis, 1); -} - -asynStatus PIHexapodController::getReferencedState(PIasynAxis* pAxis) -{ - if (!m_bCanReadStatusWithChar4) - { - pAxis->m_homed = 1; - return asynSuccess; - } - - char buf[255]; - asynStatus status = sendAndReceive(char(4), buf, 99); - if (status != asynSuccess) - { - return status; - } - long mask = strtol(buf, NULL, 10); - pAxis->m_homed = (mask & 0x10000) ? 1 : 0; - return status; -} - -asynStatus PIHexapodController::moveCts( PIasynAxis* pAxis, int targetCts ) -{ -// printf("PIHexapodController::moveCts(,%d)...\n",targetCts); - asynStatus status; - char cmd[100]; - double target = double(targetCts) * pAxis->m_CPUdenominator / pAxis->m_CPUnumerator; - sprintf(cmd,"MOV %s %f", pAxis->m_szAxisName, target); - status = sendOnly(cmd); - if (asynSuccess != status) - { - return status; - } - epicsThreadSleep( 0.2 ); // TODO test if we do need this - asynMotorAxis* pAsynAxis = (asynMotorAxis*)pAxis; - status = getGlobalState(&pAsynAxis, 1); - if (asynSuccess != status) - { -// printf("PIHexapodController::moveCts(,%d) - getGlobalState() failed, status=%d\n", targetCts, status); - return status; - } - if (!pAxis->m_bMoving) - { - int errorCode = getGCSError(); -// printf("PIHexapodController::moveCts(,%d) - not moving after MOV() gcserror=%d\n",targetCts, errorCode); - if (errorCode != 0) - { - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIHexapodController::moveCts() failed, GCS error %d\n", errorCode); - return asynError; - } - } - m_bAnyAxisMoving = true; - pAxis->m_lastDirection = (targetCts > pAxis->m_positionCts) ? 1 : 0; - printf("PIHexapodController::moveCts(,%d) - OK!\n",targetCts); - return status; -} - -asynStatus PIHexapodController::moveCts( PIasynAxis** pAxesArray, int* pTargetCtsArray, int numAxes) -{ - asynStatus status; - char cmd[1000] = "MOV"; - char subCmd[100]; - for (int axis = 0; axis m_CPUdenominator / pAxis->m_CPUnumerator; - sprintf(subCmd," %s %f", pAxis->m_szAxisName, target); - strcat(cmd, subCmd); - pAxis->m_lastDirection = (pTargetCtsArray[axis] > pAxis->m_positionCts) ? 1 : 0; - } - status = sendOnly(cmd); - if (asynSuccess != status) - { - return status; - } - epicsThreadSleep(0.2); - status = getGlobalState((asynMotorAxis**)pAxesArray, numAxes); - if (asynSuccess != status) - { - return status; - } - if (!pAxesArray[0]->m_bMoving) - { - int errorCode = getGCSError(); - if (errorCode != 0) - { - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIHexapodController::moveCts() failed, GCS error %d\n", errorCode); - return asynError; - } - } - m_bAnyAxisMoving = true; - return status; -} - - -asynStatus PIHexapodController::getAxisPosition(PIasynAxis* pAxis, double& position) -{ - if (!m_bAnyAxisMoving) - { - return PIGCSController::getAxisPosition(pAxis, position); - } - if (m_bCanReadPosWithChar3) - { - char buf[255]; - asynStatus status = sendAndReceive(char(3), buf, 99); - if (status != asynSuccess) - { - return status; - } - char *pStart = buf; - for(;;) - { - bool bEnd = false; - while(*pStart == ' ') pStart++; - char *pLF = strstr(pStart, "\n"); - if (pLF != NULL) - { - *pLF = '\0'; - } - else - { - bEnd = true; - } - // single line will look like "X = 1.0 \n" - if (pStart[0] == pAxis->m_szAxisName[0] ) - { - double value; - if (!getValue(pStart, value)) - { - return asynError; - } - position = value; - return status; - } - if (bEnd) - { - break; - } - pStart = pLF + 1; - if (*pStart == '\0') - { - break; - } - } - // should not come here! - return asynError; - } - // return last position - position = double(pAxis->m_positionCts) * double(pAxis->m_CPUdenominator) / double(pAxis->m_CPUnumerator); - - return asynSuccess; -} - -asynStatus PIHexapodController::SetPivotX(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIHexapodController::SetPivotX() value %f", value); - } - asynStatus status = SetPivot('R', value); - if (status== asynSuccess) - { - m_PivotX = value; - } - return status; -} - -asynStatus PIHexapodController::SetPivotY(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIHexapodController::SetPivotY() value %f", value); - } - asynStatus status = SetPivot('S', value); - if (status== asynSuccess) - { - m_PivotY = value; - } - return status; -} - -asynStatus PIHexapodController::SetPivotZ(double value) -{ - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIHexapodController::SetPivotZ() value %f", value); - } - asynStatus status = SetPivot('T', value); - if (status== asynSuccess) - { - m_PivotZ = value; - } - return status; -} - -asynStatus PIHexapodController::SetPivot(char cAxis, double value) -{ - if (m_bAnyAxisMoving) - { - if (NULL != m_pCurrentLogSink) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW, - "PIHexapodController::SetPivot() cannot change pivot point while platform is moving"); - } - return asynError; - } - - asynStatus status; - char cmd[100]; - sprintf(cmd,"SPI %c %f", cAxis, value); - status = sendOnly(cmd); - if (asynSuccess != status) - { - return status; - } - - int errorCode = getGCSError(); - if (errorCode != 0) - { - asynPrint(m_pInterface, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIHexapodController::SetPivot() failed, GCS error %d\n", errorCode); - return asynError; - } - return status; - -} - -asynStatus PIHexapodController::ReadPivotSettings() -{ - char buf[100]; - char cmd[] = "SPI? RST"; - asynStatus status = sendAndReceive(cmd, buf, 99); - if (status != asynSuccess) - { - return status; - } - char* pStart = buf; - bool bEnd = false; - double px = 0.0; - double py = 0.0; - double pz = 0.0; - for(;;) - { - while(*pStart == ' ') pStart++; - char *pLF = strstr(pStart, "\n"); - if (pLF != NULL) - { - *pLF = '\0'; - } - else - { - bEnd = true; - } - // single line will look like "R = 1.0 \n" - double value; - if (!getValue(pStart, value)) - { - return asynError; - } - switch(pStart[0]) - { - case'R': px = value; break; - case'S': py = value; break; - case'T': pz = value; break; - } - if (bEnd) - { - break; - } - pStart = pLF + 1; - if (*pStart == '\0') - { - break; - } - } - m_PivotX = px; - m_PivotY = py; - m_PivotZ = pz; - - return status; -} - -asynStatus PIHexapodController::referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards) -{ - asynStatus status = sendOnly("INI X"); - if (asynSuccess != status) - { - int errorCode = getGCSError(); - asynPrint(m_pCurrentLogSink, ASYN_TRACE_ERROR, - "PIHexapodController::referenceVelCts() failed\n"); - epicsSnprintf(pAxis->m_pasynUser->errorMessage,pAxis->m_pasynUser->errorMessageSize, - "PIHexapodController::referenceVelCts() failed - GCS Error %d\n",errorCode); - return status; - } - m_bHoming = true; - return asynSuccess; -} - -asynStatus PIHexapodController::haltAxis(PIasynAxis* pAxis) -{ - asynStatus status = sendOnly(char(24)); - if (status != asynSuccess) - { - return status; - } - //epicsThreadSleep(0.1); // TODO test value - int err = getGCSError(); - // controller will set error code to PI_CNTR_STOP (10) - if (err != PI_CNTR_STOP) - { - asynPrint(m_pCurrentLogSink, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIGCSController::haltAxis() failed, GCS error %d", err); - return asynError; - } - return status; -} - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.h deleted file mode 100755 index bcf8ad50..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIHexapodController.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * PIE755Controller.h - * - * Author: sra - */ - -#ifndef PIHEXAPODCONTROLLER_H_ -#define PIHEXAPODCONTROLLER_H_ - -#include "PIGCSController.h" - -/** - * class representing PI Hexapods. - */ -class PIHexapodController : public PIGCSController -{ -public: - PIHexapodController(asynUser* pCom, const char* szIDN) - : PIGCSController(pCom, szIDN) - { - } - ~PIHexapodController() {} - - virtual asynStatus init(void); - virtual asynStatus initAxis(PIasynAxis* pAxis); - - virtual asynStatus setAccelerationCts( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus setAcceleration( PIasynAxis* pAxis, double acceleration) { return asynSuccess; } - virtual asynStatus getStatus(PIasynAxis* pAxis, int& homing, int& moving, int& negLimit, int& posLimit, int& servoControl); - virtual asynStatus getGlobalState(asynMotorAxis** Axes, int numAxes); - virtual asynStatus getTravelLimits(PIasynAxis* pAxis, double& negLimit, double& posLimit) - { - negLimit = -100; - posLimit = 100; - return asynSuccess; - } - virtual asynStatus getReferencedState(PIasynAxis* pAxis); - - virtual asynStatus haltAxis(PIasynAxis* pAxis); - - virtual bool AcceptsNewTarget() { return !m_bAnyAxisMoving; } - virtual bool CanCommunicateWhileHoming() { return false; } - - virtual asynStatus moveCts( PIasynAxis* pAxis, int target); - virtual asynStatus moveCts( PIasynAxis** pAxesArray, int* pTargetCtsArray, int numAxes); - virtual asynStatus getAxisPosition(PIasynAxis* pAxis, double& position); - - virtual asynStatus SetPivotX(double value); - virtual asynStatus SetPivotY(double value); - virtual asynStatus SetPivotZ(double value); - - virtual double GetPivotX() { return m_PivotX; } - virtual double GetPivotY() { return m_PivotY; } - virtual double GetPivotZ() { return m_PivotZ; } - - virtual asynStatus referenceVelCts( PIasynAxis* pAxis, double velocity, int forwards); - -protected: - virtual asynStatus findConnectedAxes(); - asynStatus ReadPivotSettings(); - asynStatus SetPivot(char cAxis, double value); - - double m_PivotX; - double m_PivotY; - double m_PivotZ; - - bool m_bHoming; - -private: - bool m_bCanReadStatusWithChar4; - bool m_bCanReadPosWithChar3; -}; - -#endif /* PIHEXAPODCONTROLLER_H_ */ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PI_GCS2Support.dbd b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PI_GCS2Support.dbd deleted file mode 100755 index 34831af5..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PI_GCS2Support.dbd +++ /dev/null @@ -1,6 +0,0 @@ -include "asyn.dbd" -include "motorRecord.dbd" -##device(motor,VME_IO,devPIasyn,"PI Motor GCS2") -##driver(PIasyn) -registrar(PIasynDriverRegister) -##registrar(PIasynRegister) diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.cpp deleted file mode 100755 index a1126636..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.cpp +++ /dev/null @@ -1,305 +0,0 @@ -/* -FILENAME... PIasynController.cpp -USAGE... Simulated Motor Support. - -Based on drvMotorSim.c - -Mark Rivers -December 13, 2009 - -*/ - - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "PIasynAxis.h" -#include "PIasynController.h" -#include "PIGCSController.h" - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - -static const char *driverName = "PIasynAxis"; - -PIasynAxis::PIasynAxis(PIasynController *pController, PIGCSController* pGCSController, int axis, const char* szName ) -: asynMotorAxis((asynMotorController*)pController, axis) -, pController_(pController) -, m_szAxisName(NULL) -, m_isHoming(0) -, m_homed(0) -, m_acceleration(0.0) -, m_maxAcceleration(-1.0) -, m_lastDirection(0) -, m_CPUnumerator(1000) -, m_CPUdenominator(1) -, m_pasynUser(NULL) -, m_bHasLimitSwitches(false) -, m_bHasReference(false) -, m_bProblem(false) -, m_bServoControl(false) -, m_bMoving(false) -, m_pGCSController(pGCSController) -{ - if (szName != NULL) - { - m_szAxisName = new char[strlen(szName)+1]; - strcpy(m_szAxisName, szName); - } - - printf("PIasynAxis::PIasynAxis() %d: %s\n", - axis, m_szAxisName); -} - - -void PIasynAxis::Init(const char *portName) -{ - asynUser* logSink = pasynManager->createAsynUser(0,0); - asynStatus status = pasynManager->connectDevice(logSink, portName, getAxisNo()); - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIasynController::configAxis() - connectDevice() failed\n"); - return; - } - m_pGCSController->m_pCurrentLogSink = logSink; - - setIntegerParam(motorAxisHasClosedLoop, 1); - - m_pGCSController->initAxis(this); - double resolution; - m_pGCSController->getResolution(this, resolution); - m_pGCSController->getAxisVelocity(this); - m_pGCSController->getAxisPositionCts(this); - setDoubleParam(pController_->motorPosition_, m_positionCts); - setDoubleParam(pController_->motorMoveAbs_, m_positionCts); - m_pGCSController->getTravelLimits(this, negLimit_, posLimit_); - setDoubleParam(pController_->motorLowLimit_, negLimit_); - setDoubleParam(pController_->motorHighLimit_, posLimit_); - m_pGCSController->getReferencedState(this); - setIntegerParam( pController_->motorStatusHomed_, m_homed ); - callParamCallbacks(); - - pasynManager->freeAsynUser(logSink); - -} - -PIasynAxis::~PIasynAxis() -{ - if (m_szAxisName != NULL) - { - delete [] m_szAxisName; - } -} - -asynStatus PIasynAxis::poll(bool *returnMoving) -{ - int done = 0; - - int moving, negLimit, posLimit, servoControl; - int oldHoming = m_isHoming; - m_pGCSController->getStatus(this, m_isHoming, moving, negLimit, posLimit, servoControl); - if (moving == 0 && m_isHoming == 0) - done = 1; - - m_bMoving = (done!=1); - if (!m_isHoming || m_pGCSController->CanCommunicateWhileHoming()) - { - if (oldHoming && oldHoming != m_isHoming) - { - m_pGCSController->getReferencedState(this); - asynPrint(pasynUser_, ASYN_TRACE_ERROR, //FIXME: ASYN_TRACE_FLOW, - "PIasynAxis::poll() axis %d referencing state changed, homed = %d\n", - axisNo_, m_homed ); - } - if (m_bServoControl && servoControl == 0) // servo changed without user interaction! - { - m_bProblem = true; - } - if (!m_isHoming || m_pGCSController->IsGCS2()) - { - m_bServoControl = (servoControl == 1); - m_pGCSController->getAxisPositionCts(this); - double realPosition; - m_pGCSController->getAxisPosition(this, realPosition); - setDoubleParam(pController_->PI_SUP_POSITION, realPosition ); - } - } - if (m_isHoming) - { - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "PIasynAxis::poll() axis %d referencing ...\n", axisNo_ ); - } - setDoubleParam(pController_->motorPosition_, m_positionCts ); - setDoubleParam(pController_->motorEncoderPosition_, m_positionCts); - setIntegerParam(pController_->motorStatusDirection_, m_lastDirection); - setIntegerParam(pController_->motorStatusDone_, done ); - setIntegerParam(pController_->motorStatusHighLimit_, posLimit); - setIntegerParam(pController_->motorStatusHomed_, m_homed ); - setIntegerParam(pController_->motorStatusMoving_, !done ); - setIntegerParam(pController_->motorStatusLowLimit_, negLimit); - setIntegerParam(pController_->motorStatusGainSupport_, true); - setIntegerParam(pController_->motorStatusProblem_, m_bProblem); - setIntegerParam(pController_->motorStatusPowerOn_, m_bServoControl); - setIntegerParam(pController_->PI_SUP_SERVO, m_bServoControl ); - - callParamCallbacks(); - - *returnMoving = m_bMoving; -} - -asynStatus PIasynAxis::move(double position, int relative, double minVelocity, double maxVelocity, double acceleration) -{ - m_pGCSController->m_pCurrentLogSink = pasynUser_; - asynStatus status = asynError; - static const char *functionName = "moveAxis"; - - if (!m_pGCSController->AcceptsNewTarget()) - { - asynPrint(pasynUser_, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "%s:%s: Set port %s, axis %d - controller does not accept new target (busy?)\n", - driverName, functionName, pC_->portName, axisNo_ ); - printf("%s:%s: Set port %s, axis %d - controller does not accept new target (busy?)\n", - driverName, functionName, pC_->portName, axisNo_ ); - return status; - } - - if (relative) - { - //TODO: MVR oder letztes target! - //TODO: when is this used? - } - - if (pController_->movesDeferred != 0) - { /*Deferred moves.*/ - deferred_position = position; - deferred_move = 1; - deferred_relative = relative; - setIntegerParam(pController_->motorStatusDone_, 0); - callParamCallbacks(); - return asynSuccess; - } - else - { - if (maxVelocity != 0) - { - status = m_pGCSController->setVelocityCts(this, maxVelocity); - if (asynSuccess != status) - { - return status; - } - } - if (acceleration != 0) - { - status = m_pGCSController->setAccelerationCts(this, acceleration); - if (asynSuccess != status) - { - return status; - } - } - - setIntegerParam(pController_->motorStatusDone_, 0); - callParamCallbacks(); - - status = m_pGCSController->moveCts(this, position); - } - epicsEventSignal(pController_->pollEventId_); - - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "%s:%s: Set driver %s, axis %d move to %f, min vel=%f, max_vel=%f, accel=%f, deffered=%d - status=%d\n", - driverName, functionName, pC_->portName, axisNo_, position, minVelocity, maxVelocity, acceleration, pController_->movesDeferred, int(status) ); - return status; -} - -asynStatus PIasynAxis::moveVelocity(double minVelocity, double maxVelocity, double acceleration) -{ - m_pGCSController->m_pCurrentLogSink = pasynUser_; - asynStatus status = asynError; - static const char *functionName = "moveVelocityAxis"; - - if (!m_pGCSController->AcceptsNewTarget()) - { - asynPrint(pasynUser_, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "%s:%s: Set port %s, axis %d - controller does not accept new target (busy?)", - driverName, functionName, pController_->portName, axisNo_ ); - return status; - } - - - setIntegerParam(pController_->motorStatusDone_, 0); - callParamCallbacks(); - - - double target = maxVelocity > 0 ? posLimit_ : negLimit_; - - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "%s:%s: Set port %s, axis %d move with velocity of %f, accel=%f / target %f - BEFORE MOV\n", - driverName, functionName, pController_->portName, axisNo_, maxVelocity, acceleration, target ); - - m_pGCSController->setVelocityCts(this, maxVelocity); - m_pGCSController->move(this, target); - - epicsEventSignal(pController_->pollEventId_); - - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "%s:%s: Set port %s, axis %d move with velocity of %f, accel=%f / target %f - AFTER MOV\n", - driverName, functionName, pController_->portName, axisNo_, maxVelocity, acceleration, target ); - return status; -} - -asynStatus PIasynAxis::stop(double acceleration) -{ - m_pGCSController->m_pCurrentLogSink = pasynUser_; - static const char *functionName = "stopAxis"; - - deferred_move = 0; - - m_pGCSController->haltAxis(this); - - epicsEventSignal(pController_->pollEventId_); - - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "%s:%s: Set axis %d to stop with accel=%f", - driverName, functionName, axisNo_, acceleration ); - return asynSuccess; -} - - - -asynStatus PIasynAxis::home(double minVelocity, double maxVelocity, double acceleration, int forwards) -{ - m_pGCSController->m_pCurrentLogSink = pasynUser_; - asynStatus status = asynError; - static const char *functionName = "homeAxis"; - - m_isHoming = 1; - setIntegerParam(pController_->motorStatusDone_, 0 ); - callParamCallbacks(); - - status = m_pGCSController->referenceVelCts(this, maxVelocity, forwards); - if (asynSuccess != status) - { - return status; - } - setIntegerParam(pController_->motorStatusHomed_, m_homed ); - epicsEventSignal(pController_->pollEventId_); - - asynPrint(pasynUser_, ASYN_TRACE_FLOW, - "%s:%s: Set driver %s, axis %d to home %s, min vel=%f, max_vel=%f, accel=%f", - driverName, functionName, pController_->portName, axisNo_, (forwards?"FORWARDS":"REVERSE"), minVelocity, maxVelocity, acceleration ); - return status; -} - - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.h deleted file mode 100755 index bd41b194..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynAxis.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -FILENAME... PIasynController.cpp -USAGE... PI GCS Motor Support. - -Based on drvMotorSim.c - -Mark Rivers -December 13, 2009 - -Steffen Rau, -January 2011 -*/ - - -#include // for asynStatus -#include - -class PIasynController; -class PIGCSController; - -class PIasynAxis : public asynMotorAxis -{ -public: - PIasynAxis(class PIasynController *pController, PIGCSController* pGCSController, int axis, const char* szName); - virtual~PIasynAxis(); - - void Init(const char *portName); - - class PIasynController *pController_; - int getAxisNo() { return axisNo_; } - - virtual asynStatus poll(bool *moving); - virtual asynStatus move(double position, int relative, double minVelocity, double maxVelocity, double acceleration); - virtual asynStatus moveVelocity(double minVelocity, double maxVelocity, double acceleration); - virtual asynStatus home(double minVelocity, double maxVelocity, double acceleration, int forwards); - virtual asynStatus stop(double acceleration); - - - char* m_szAxisName; ///< GCS name - - int m_isHoming; ///< if \b TRUE indicating that axis is currently homing/referencing - double deferred_position; ///< currently not used - int deferred_move; ///< currently not used - int deferred_relative; ///< currently not used - int m_homed; ///< if \b TRUE axis was homed and absolute positions are correct - - double m_velocity; - double m_acceleration; - double m_maxAcceleration; - int m_positionCts; - double m_position; - int m_lastDirection; - - int m_CPUnumerator; - int m_CPUdenominator; - - asynUser* m_pasynUser; - - bool m_bHasLimitSwitches; - bool m_bHasReference; - bool m_bProblem; - bool m_bServoControl; - bool m_bMoving; - int m_movingStateMask; - - friend class PIasynController; -private: - - double negLimit_; - double posLimit_; - PIGCSController* m_pGCSController; - -}; - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.cpp b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.cpp deleted file mode 100755 index 63d60e34..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.cpp +++ /dev/null @@ -1,527 +0,0 @@ -/* -FILENAME... PIasynController.cpp -USAGE... PI GCS2 Motor Support. - -Based on drvMotorSim.c -from Mark Rivers, December 13, 2009 - -Steffen Rau, Physik Instrumente (PI) GmbH & Co KG - -*/ - - -#include -#include -#include -#include - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "PIasynController.h" -#include "PIGCSController.h" -#include "PIasynAxis.h" - - -//#undef asynPrint -//#define asynPrint(user,reason,format...) 0 - - -static const char *driverName = "PIasynDriver"; - - -static ELLLIST PIasynControllerList; -static int PIasynControllerListInitialized = 0; - -PIasynController::PIasynController(const char *portName, const char* asynPort, int numAxes, int priority, int stackSize, int movingPollPeriod, int idlePollPeriod) - : asynMotorController(portName, numAxes, 10, - asynInt32Mask | asynFloat64Mask, - asynInt32Mask | asynFloat64Mask, - ASYN_CANBLOCK | ASYN_MULTIDEVICE, - 1, // autoconnect - priority, stackSize) - , m_pGCSController( NULL ) -{ - createParam(PI_SUP_POSITION_String, asynParamFloat64, &PI_SUP_POSITION); - createParam(PI_SUP_TARGET_String, asynParamFloat64, &PI_SUP_TARGET); - createParam(PI_SUP_SERVO_String, asynParamInt32, &PI_SUP_SERVO); - createParam(PI_SUP_LAST_ERR_String, asynParamInt32, &PI_SUP_LAST_ERR); - createParam(PI_SUP_PIVOT_X_String, asynParamFloat64, &PI_SUP_PIVOT_X); - createParam(PI_SUP_PIVOT_Y_String, asynParamFloat64, &PI_SUP_PIVOT_Y); - createParam(PI_SUP_PIVOT_Z_String, asynParamFloat64, &PI_SUP_PIVOT_Z); - createParam(PI_SUP_RBPIVOT_X_String, asynParamFloat64, &PI_SUP_RBPIVOT_X); - createParam(PI_SUP_RBPIVOT_Y_String, asynParamFloat64, &PI_SUP_RBPIVOT_Y); - createParam(PI_SUP_RBPIVOT_Z_String, asynParamFloat64, &PI_SUP_RBPIVOT_Z); - - int axis; - PIasynAxis *pAxis; - PIasynControllerNode *pNode; - - if (!PIasynControllerListInitialized) - { - PIasynControllerListInitialized = 1; - ellInit(&PIasynControllerList); - } - - // We should make sure this portName is not already in the list */ - pNode = (PIasynControllerNode*) calloc(1, sizeof(PIasynControllerNode)); - pNode->portName = epicsStrDup(portName); - pNode->pController = this; - ellAdd(&PIasynControllerList, (ELLNODE *)pNode); - - - asynStatus status; - asynUser* pInterface; - status = pasynOctetSyncIO->connect(asynPort, 0, &pInterface, NULL); - if (status) - { - asynPrint(pInterface, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "echoHandler: unable to connect to port %s\n", - asynPort); - return; - } - status = pasynOctetSyncIO->setInputEos(pInterface, "\n", 1); - if (status) { - asynPrint(pInterface, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "echoHandler: unable to set input EOS on %s: %s\n", - asynPort, pInterface->errorMessage); - return; - } - status = pasynOctetSyncIO->setOutputEos(pInterface, "", 0); - if (status) { - asynPrint(pInterface, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "echoHandler: unable to set output EOS on %s: %s\n", - asynPort, pInterface->errorMessage); - return; - } - - char inputBuff[256]; - inputBuff[0] = '\0'; - status = PIGCSController::sendAndReceive(pInterface, "*IDN?", inputBuff, 255, pInterface); - asynPrint(pInterface, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "read from %s: %s\n", - asynPort, inputBuff); - - char* p = inputBuff; - while (*p != '\0') { *p = toupper(*p); p++; } - - m_pGCSController = PIGCSController::CreateGCSController(pInterface, inputBuff); - if (NULL == m_pGCSController) - { - asynPrint(pInterface, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "PIasynController: unknown controller type %s: %s\n", - asynPort, inputBuff); - return; - } - - m_pGCSController->init(); - - if (numAxes < 1 ) numAxes = 1; - this->numAxes_ = numAxes; - - if (m_pGCSController->getNrFoundAxes()getNrFoundAxes())); - delete m_pGCSController; - m_pGCSController = NULL; - return; - } - - for (axis=0; axisgetAxesID(axis)); - pAxis->Init(portName); - } - - startPoller(double(movingPollPeriod)/1000, double(idlePollPeriod)/1000, 10); -} - - - - -void PIasynController::report(FILE *fp, int level) -{ - int axis; - PIasynAxis *pAxis; - - fprintf(fp, "Simulation motor driver %s, numAxes=%d\n", - this->portName, this->numAxes_); - - for (axis=0; axisnumAxes_; axis++) - { - pAxis = getPIAxis(axis); - fprintf(fp, " axis %d\n", - pAxis->axisNo_); - - if (level > 0) - { - if (pAxis->m_isHoming) - { - fprintf(fp, " Currently homing axis\n" ); - } - } - } - - // Call the base class method - asynMotorController::report(fp, level); -} - -//PIasynAxis * PIasynController::getPIAxis(asynUser *pasynUser) -//{ -// int axis; -// PIasynAxis *pAxis; -// -// getAddress(pasynUser, &axis); -// pAxis = this->m_pAxes[axis]; -// pAxis->m_pasynUser = pasynUser; -// return(pAxis); -//} - - - -asynStatus PIasynController::processDeferredMoves() -{ - asynStatus status = asynError; - int axis; - PIasynAxis *pAxesArray[PIGCSController::MAX_NR_AXES]; - int targetsCts[PIGCSController::MAX_NR_AXES]; - - int numDeferredAxes = 0; - for (axis=0; axisnumAxes_; axis++) - { - PIasynAxis *pAxis = getPIAxis(axis); - if (pAxis->deferred_move) - { - pAxesArray[numDeferredAxes] = pAxis; - targetsCts[numDeferredAxes] = pAxis->deferred_position; - pAxis->setIntegerParam(motorStatusDone_, 0); - pAxis->callParamCallbacks(); - numDeferredAxes++; - } - } - if (numDeferredAxes > 0) - { - status = m_pGCSController->moveCts(pAxesArray, targetsCts, numDeferredAxes); - } - - for (axis=0; axisnumAxes_; axis++) - { - if (getPIAxis(axis)->deferred_move) - { - getPIAxis(axis)->deferred_move = 0; - } - } - epicsEventSignal(pollEventId_); - - return status; -} - - -asynStatus PIasynController::writeInt32(asynUser *pasynUser, epicsInt32 value) -{ - if (NULL == m_pGCSController) - { - asynPrint(pasynUser, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "PIasynController::writeInt32() GCS controller not initialized!\n"); - - return asynError; - } - m_pGCSController->m_pCurrentLogSink = pasynUser; - int function = pasynUser->reason; - asynStatus status = asynSuccess; - PIasynAxis *pAxis = (PIasynAxis *)this->getAxis(pasynUser); - static const char *functionName = "writeInt32"; - - lock(); - /* Set the parameter and readback in the parameter library. This may be overwritten when we read back the - * status at the end, but that's OK */ - status = pAxis->setIntegerParam(function, value); - - if (function == motorSetClosedLoop_) - { - asynPrint(pasynUser, ASYN_TRACE_FLOW, - "%s:%s: %sing Closed-Loop Control flag on driver %s\n", - value != 0.0?"Enabl":"Disabl", - driverName, functionName, this->portName); - status = m_pGCSController->setServo(pAxis, (value!=0)?1:0); - - } - else if (function == motorDeferMoves_) - { - asynPrint(pasynUser, ASYN_TRACE_FLOW, - "%s:%s: %sing Deferred Move flag on driver %s\n", - value != 0.0?"Sett":"Clear", - driverName, functionName, this->portName); - if (value == 0.0 && this->movesDeferred != 0) - { - processDeferredMoves(); - } - this->movesDeferred = value; - } else { - /* Call base class call its method (if we have our parameters check this here) */ - status = asynMotorController::writeInt32(pasynUser, value); - } - unlock(); - /* Do callbacks so higher layers see any changes */ - pAxis->callParamCallbacks(); - if (status) - asynPrint(pasynUser, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "%s:%s: error, status=%d function=%d, value=%d\n", - driverName, functionName, status, function, value); - else - asynPrint(pasynUser, ASYN_TRACEIO_DRIVER, - "%s:%s: function=%d, value=%d\n", - driverName, functionName, function, value); - return status; -} - -asynStatus PIasynController::writeFloat64(asynUser *pasynUser, epicsFloat64 value) -{ - if (NULL == m_pGCSController) - { - asynPrint(pasynUser, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "PIasynController::writeFloat64() GCS controller not initialized!\n"); - - return asynError; - } - m_pGCSController->m_pCurrentLogSink = pasynUser; - int function = pasynUser->reason; - asynStatus status = asynSuccess; - PIasynAxis *pAxis = (PIasynAxis *)this->getAxis(pasynUser); - static const char *functionName = "writeFloat64"; - - /* Set the parameter and readback in the parameter library. This may be overwritten when we read back the - * status at the end, but that's OK */ - status = pAxis->setDoubleParam(function, value); - - if (function == PI_SUP_TARGET) - { - printf("PI_SUP_TargetAO: %f for axis %d\n", value, pAxis->axisNo_); - } - else if (function == PI_SUP_PIVOT_X) - { - status = m_pGCSController->SetPivotX(value); - } - else if (function == PI_SUP_PIVOT_Y) - { - status = m_pGCSController->SetPivotY(value); - } - else if (function == PI_SUP_PIVOT_Z) - { - status = m_pGCSController->SetPivotZ(value); - } - else if (function == motorPosition_) // Entspricht das DFH ? - { - // pAxis->enc_offset = (double) value - pAxis->nextpoint.axis[0].p; - asynPrint(pasynUser, ASYN_TRACE_FLOW, - "%s:%s: Set axis %d to position %d", - driverName, functionName, pAxis->axisNo_, value); - } - else if (function == motorResolution_ ) - { - /* Call base class call its method (if we have our parameters check this here) */ - status = asynMotorController::writeFloat64(pasynUser, value); - } - else if (function == motorEncRatio_ ) - { - /* Call base class call its method (if we have our parameters check this here) */ - status = asynMotorController::writeFloat64(pasynUser, value); - } - else - { - /* Call base class call its method (if we have our parameters check this here) */ - status = asynMotorController::writeFloat64(pasynUser, value); - } - /* Do callbacks so higher layers see any changes */ - pAxis->callParamCallbacks(); - if (status) - asynPrint(pasynUser, ASYN_TRACE_ERROR|ASYN_TRACE_FLOW, - "%s:%s: error, status=%d function=%d, value=%f\n", - driverName, functionName, status, function, value); - else - asynPrint(pasynUser, ASYN_TRACEIO_DRIVER, - "%s:%s: function=%d, value=%f\n", - driverName, functionName, function, value); - return status; -} - - - - -asynStatus PIasynController::profileMove(asynUser *pasynUser, int npoints, double positions[], double times[], int relative, int trigger ) -{ - asynPrint(pasynUser, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIasynController::profileMove() - not implemented\n"); - return asynError; -} - -asynStatus PIasynController::triggerProfile(asynUser *pasynUser) -{ - asynPrint(pasynUser, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIasynController::profileMove() - not implemented\n"); - return asynError; -} - -asynStatus PIasynController::configAxis(PIasynAxis *pAxis) -{ - asynUser* logSink = pasynManager->createAsynUser(0,0); - asynStatus status = pasynManager->connectDevice(logSink, portName, pAxis->getAxisNo()); - if (status != asynSuccess) - { - asynPrint(logSink, ASYN_TRACE_FLOW|ASYN_TRACE_ERROR, - "PIasynController::configAxis() - connectDevice() failed\n"); - return status; - } - m_pGCSController->m_pCurrentLogSink = logSink; - - pAxis->setIntegerParam(motorAxisHasClosedLoop, 1); - pAxis->callParamCallbacks(); - - m_pGCSController->initAxis(pAxis); - double resolution; - m_pGCSController->getResolution(pAxis, resolution); - m_pGCSController->getAxisVelocity(pAxis); - m_pGCSController->getAxisPositionCts(pAxis); - pAxis->setDoubleParam(this->motorPosition_, pAxis->m_positionCts); - pAxis->setDoubleParam(this->motorMoveAbs_, pAxis->m_positionCts); - double negLimit, posLimit; - m_pGCSController->getTravelLimits(pAxis, negLimit, posLimit); - pAxis->setDoubleParam(this->motorLowLimit_, negLimit); - pAxis->setDoubleParam(this->motorHighLimit_, posLimit); - m_pGCSController->getReferencedState(pAxis); - pAxis->setIntegerParam( this->motorStatusHomed_, pAxis->m_homed ); - - pasynManager->freeAsynUser(logSink); - - /* Send a signal to the poller task which will make it do a poll, - * updating values for this axis to use the new resolution (stepSize) */ - epicsEventSignal(pollEventId_); - - return(asynSuccess); -} - -/**\defgroup PIasynTask Routines to implement the motor axis simulation task -@{ -*/ - -/** Process one iteration of an axis - - This routine takes a single axis and propogates its motion forward a given amount - of time. - - \param pAxis [in] Pointer to axis information. - \param delta [in] Time in seconds to propogate motion forwards. - - \return Integer indicating 0 (asynSuccess) for success or non-zero for failure. -*/ - - -// -//static void PIasynTaskC(void *drvPvt) -//{ -// PIasynController *pController = (PIasynController*)drvPvt; -// pController->PIasynTask(); -//} -// -// -// -//void PIasynController::PIasynTask() -//{ -// double timeout = m_idlePollingRate; -// int axis; -// PIasynAxis *pAxis; -// epicsEventSignal(pollEventId_); /* Force on poll at startup */ -// -// int status; -// while ( 1 ) -// { -// if (timeout != 0.) status = epicsEventWaitWithTimeout(pollEventId_, timeout); -// else status = epicsEventWait(pollEventId_); -// -// lock(); -// m_pGCSController->getGlobalState(pAxes_, numAxes_); -// unlock(); -// -// bool bAnyAxisMoving = false; -// for (axis=0; axisnumAxes_; axis++) -// { -// lock(); -// pAxis = getPIAxis(axis); -// process(pAxis); -// pAxis->callParamCallbacks(); -// unlock(); -// bAnyAxisMoving = (pAxis->m_bMoving != 0); -// } -// m_pGCSController->m_bAnyAxisMoving = bAnyAxisMoving; -// if (m_pGCSController->m_bAnyAxisMoving) -// timeout = m_movingPollingRate; -// else -// timeout = m_idlePollingRate; -// } -//} - -asynStatus PIasynController::poll() -{ - return m_pGCSController->getGlobalState(pAxes_, numAxes_); - - setDoubleParam( 0, PI_SUP_RBPIVOT_X, m_pGCSController->GetPivotX()); - setDoubleParam( 0, PI_SUP_RBPIVOT_Y, m_pGCSController->GetPivotY()); - setDoubleParam( 0, PI_SUP_RBPIVOT_Z, m_pGCSController->GetPivotZ()); - - setIntegerParam( 0, PI_SUP_LAST_ERR, m_pGCSController->GetLastError() ); - - callParamCallbacks(); -} - - -/** Configuration command, called directly or from iocsh */ -extern "C" int PI_GCS2_CreateController(const char *portName, const char* asynPort, int numAxes, int priority, int stackSize, int movingPollingRate, int idlePollingRate) -{ - PIasynController *pasynController - = new PIasynController(portName, asynPort, numAxes, priority, stackSize, movingPollingRate, idlePollingRate); - pasynController = NULL; - return(asynSuccess); -} - -/** Code for iocsh registration */ -static const iocshArg PI_GCS2_CreateControllerArg0 = {"Port name", iocshArgString}; -static const iocshArg PI_GCS2_CreateControllerArg1 = {"asyn Port name", iocshArgString}; -static const iocshArg PI_GCS2_CreateControllerArg2 = {"Number of axes", iocshArgInt}; -static const iocshArg PI_GCS2_CreateControllerArg3 = {"priority", iocshArgInt}; -static const iocshArg PI_GCS2_CreateControllerArg4 = {"stackSize", iocshArgInt}; -static const iocshArg PI_GCS2_CreateControllerArg5 = {"moving polling time [msec]", iocshArgInt}; -static const iocshArg PI_GCS2_CreateControllerArg6 = {"idle polling time [msec]", iocshArgInt}; -static const iocshArg * const PI_GCS2_CreateControllerArgs[] = {&PI_GCS2_CreateControllerArg0, - &PI_GCS2_CreateControllerArg1, - &PI_GCS2_CreateControllerArg2, - &PI_GCS2_CreateControllerArg3, - &PI_GCS2_CreateControllerArg4, - &PI_GCS2_CreateControllerArg5, - &PI_GCS2_CreateControllerArg6}; -static const iocshFuncDef PI_GCS2_CreateControllerDef = {"PI_GCS2_CreateController", 7, PI_GCS2_CreateControllerArgs}; -static void PI_GCS2_CreateControllerCallFunc(const iocshArgBuf *args) -{ - PI_GCS2_CreateController(args[0].sval, args[1].sval, args[2].ival, args[3].ival, args[4].ival, args[5].ival, args[6].ival); -} - - -static void PIasynDriverRegister(void) -{ - iocshRegister(&PI_GCS2_CreateControllerDef, PI_GCS2_CreateControllerCallFunc); -} - -extern "C" { -epicsExportRegistrar(PIasynDriverRegister); -} diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.h deleted file mode 100755 index 9090bbe9..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/PIasynController.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -FILENAME... PIasynController.cpp -USAGE... Simulated Motor Support. - -Based on drvMotorSim.c - -Mark Rivers -December 13, 2009 - -*/ - -#ifndef PI_ASYN_DRIVER_INCLUDED_ -#define PI_ASYN_DRIVER_INCLUDED_ - -#include "asynMotorController.h" -#include "asynMotorAxis.h" - -class PIasynAxis; -class PIGCSController; - -class PIasynController : asynMotorController { -public: - PIasynController(const char *portName, const char* asynPort, int numAxes, int priority, int stackSize, int movingPollPeriod, int idlePollPeriod); - asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value); - asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value); - void report(FILE *fp, int level); - asynStatus profileMove(asynUser *pasynUser, int npoints, double positions[], double times[], int relative, int trigger); - asynStatus triggerProfile(asynUser *pasynUser); - asynStatus configAxis(PIasynAxis *pAxis); - - PIasynAxis* getPIAxis(asynUser *pasynUser) { return (PIasynAxis*)asynMotorController::getAxis(pasynUser); } - PIasynAxis* getPIAxis(int axisNo) { return (PIasynAxis*)asynMotorController::getAxis(axisNo); } - - virtual asynStatus poll(); - - friend class PIasynAxis; - -private: -// void process(PIasynAxis *pAxis); - epicsThreadId motorThread; - int movesDeferred; - //int numAxes; - asynStatus processDeferredMoves(); - //PIasynAxis** m_pAxes; - - PIGCSController* m_pGCSController; - - int PI_SUP_POSITION; - int PI_SUP_TARGET; - int PI_SUP_SERVO; - int PI_SUP_LAST_ERR; - int PI_SUP_PIVOT_X; - int PI_SUP_PIVOT_Y; - int PI_SUP_PIVOT_Z; - int PI_SUP_RBPIVOT_X; - int PI_SUP_RBPIVOT_Y; - int PI_SUP_RBPIVOT_Z; - -}; - - -#define PI_SUP_POSITION_String "PI_SUP_POSITION" -#define PI_SUP_TARGET_String "PI_SUP_TARGET" -#define PI_SUP_SERVO_String "PI_SUP_SERVO" -#define PI_SUP_LAST_ERR_String "PI_SUP_LAST_ERR" -#define PI_SUP_PIVOT_X_String "PI_SUP_PIVOT_X" -#define PI_SUP_PIVOT_Y_String "PI_SUP_PIVOT_Y" -#define PI_SUP_PIVOT_Z_String "PI_SUP_PIVOT_Z" -#define PI_SUP_RBPIVOT_X_String "PI_SUP_RBPIVOT_X" -#define PI_SUP_RBPIVOT_Y_String "PI_SUP_RBPIVOT_Y" -#define PI_SUP_RBPIVOT_Z_String "PI_SUP_RBPIVOT_Z" - - -typedef struct PIasynControllerNode { - ELLNODE node; - const char *portName; - PIasynController *pController; -} PIasynControllerNode; - -#endif // PI_ASYN_DRIVER_INCLUDED_ diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/ReadMe.txt b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/ReadMe.txt deleted file mode 100755 index 39e304bb..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/ReadMe.txt +++ /dev/null @@ -1,61 +0,0 @@ -Readme for PIasyn - EPICS support for PI GCS2 stages -======================================================== - -The PIasyn driver is written to support PI motion controllers which -support GCS2 (General Command Set) as commanding language. -Currently this is implemented with different C++ classes where the -differences and specialties are handled. This can be implemented -by querying the controller what features are supported. So in future -developments these classes may disappear. - - Homing -======== - -a) stages with absolute sensors -Some PI stages, mostly piezo stages, use an absolute position sensor. -The correct absolute position is known to the controller immediately after power up. -For these stages homing is not necessary and thus not supported. -These stages will ignore HOMF and HOMR. -The HOME flag of the MSTA field is meaningless for these stages -and HOMED is always true, - -b) stages with incremental sensors -Some PIStages needs to be referenced after controller power up. The state -is reflected by the HOMED flag of MSTA. There are different ways to home -a stage. The default is by using the reference switch. If a stage has -a reference switch HOMF and HOMR will move to this switch. The direction is -determined by the controller. The reference signal is edge based, so the controller -can find out on which side of the reference the stage is and can move using -the shortest path. HOMF and HOMR will trigger the same move. If the stage has -no reference switch the built in limit switches can be used to determine the absolute -position. In this case HOMF will send the stage to its positive limit switch and -HOMR to its negative limit switch. As the reference is edge based or not present the -HOME bit of the MSTA field is meaningless for these stages. - -c) setting the homing velocity -Reducing the velocity used for homing is usually done to improve the accuracy. -PI controllers reach the reference every time from the same "side". So only this -last approach is performed with the homing velocity set with HVEL. The coarse move -to the proximity of the reference is done with the a velocity limited by the current -velocity (set with VELO) and the maximum possible velocity to decelerate in case of -hitting a limit switch. - - "Motion Errors" -================= - -If the controller detects a "motion error", i.e. the difference between target and -current position is greater than some given limit (also known as "following error"), -the driver will set the PROBLEM bit in MSTA. Servo control is also switched off. -The EA_POSITION bit of MSTA will reflect the "servo control" state. To re-enable -servo control use CNEN. - - - C-702 -======= - -The C-702 controller uses an older "dialect" of GCS1. -That's why at some points different parameter IDs are used and why there is no communication -during homing. So the position cannot be updated during homing and will "jump" to the final -position after homing is finished. - - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/picontrollererrors.h b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/picontrollererrors.h deleted file mode 100755 index 4b5bf5de..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/picontrollererrors.h +++ /dev/null @@ -1,1075 +0,0 @@ -// PIControllerErrors.h -// -// This file defines symbols for each error code used in C/C++ programs. -// -// This file is automagically generated from the central error code list. -// DO NOT ADD ERROR CODES IN THIS FILE! Use the error list and the generation tool instead! -// -// after generation open file in VS and create the constants with numbers. -// This can be done by performing 2 search/replace actions with regulyr expression activetad: -// search for "\#define:b{:i}:b*{:z}L" replace with "#define \1__\2 \2L\n#define \1 \2L" -// search for "\#define:b{:i}:b*-{:z}L" replace with "#define \1__MINUS\2 -\2L\n#define \1 -\2L" - -#ifndef __PI_CONTROLLER_ERROS_H__ -#define __PI_CONTROLLER_ERROS_H__ - -////////////////////////////////////////////////// -// -// Dll Errors - DLL errors occured in GCS DLL -// -#define PI_UNKNOWN_AXIS_IDENTIFIER__MINUS1001 -1001L -#define PI_UNKNOWN_AXIS_IDENTIFIER -1001L /**< \ingroup err - Unknown axis identifier */ -#define PI_NR_NAV_OUT_OF_RANGE__MINUS1002 -1002L -#define PI_NR_NAV_OUT_OF_RANGE -1002L /**< \ingroup err - Number for NAV out of range--must be in [1,10000] */ -#define PI_INVALID_SGA__MINUS1003 -1003L -#define PI_INVALID_SGA -1003L /**< \ingroup err - Invalid value for SGA--must be one of {1, 10, 100, 1000} */ -#define PI_UNEXPECTED_RESPONSE__MINUS1004 -1004L -#define PI_UNEXPECTED_RESPONSE -1004L /**< \ingroup err - Controller sent unexpected response */ -#define PI_NO_MANUAL_PAD__MINUS1005 -1005L -#define PI_NO_MANUAL_PAD -1005L /**< \ingroup err - No manual control pad installed, calls to SMA and related commands are not allowed */ -#define PI_INVALID_MANUAL_PAD_KNOB__MINUS1006 -1006L -#define PI_INVALID_MANUAL_PAD_KNOB -1006L /**< \ingroup err - Invalid number for manual control pad knob */ -#define PI_INVALID_MANUAL_PAD_AXIS__MINUS1007 -1007L -#define PI_INVALID_MANUAL_PAD_AXIS -1007L /**< \ingroup err - Axis not currently controlled by a manual control pad */ -#define PI_CONTROLLER_BUSY__MINUS1008 -1008L -#define PI_CONTROLLER_BUSY -1008L /**< \ingroup err - Controller is busy with some lengthy operation (e.g. reference move, fast scan algorithm) */ -#define PI_THREAD_ERROR__MINUS1009 -1009L -#define PI_THREAD_ERROR -1009L /**< \ingroup err - Internal error--could not start thread */ -#define PI_IN_MACRO_MODE__MINUS1010 -1010L -#define PI_IN_MACRO_MODE -1010L /**< \ingroup err - Controller is (already) in macro mode--command not valid in macro mode */ -#define PI_NOT_IN_MACRO_MODE__MINUS1011 -1011L -#define PI_NOT_IN_MACRO_MODE -1011L /**< \ingroup err - Controller not in macro mode--command not valid unless macro mode active */ -#define PI_MACRO_FILE_ERROR__MINUS1012 -1012L -#define PI_MACRO_FILE_ERROR -1012L /**< \ingroup err - Could not open file to write or read macro */ -#define PI_NO_MACRO_OR_EMPTY__MINUS1013 -1013L -#define PI_NO_MACRO_OR_EMPTY -1013L /**< \ingroup err - No macro with given name on controller, or macro is empty */ -#define PI_MACRO_EDITOR_ERROR__MINUS1014 -1014L -#define PI_MACRO_EDITOR_ERROR -1014L /**< \ingroup err - Internal error in macro editor */ -#define PI_INVALID_ARGUMENT__MINUS1015 -1015L -#define PI_INVALID_ARGUMENT -1015L /**< \ingroup err - One or more arguments given to function is invalid (empty string, index out of range, ...) */ -#define PI_AXIS_ALREADY_EXISTS__MINUS1016 -1016L -#define PI_AXIS_ALREADY_EXISTS -1016L /**< \ingroup err - Axis identifier is already in use by a connected stage */ -#define PI_INVALID_AXIS_IDENTIFIER__MINUS1017 -1017L -#define PI_INVALID_AXIS_IDENTIFIER -1017L /**< \ingroup err - Invalid axis identifier */ -#define PI_COM_ARRAY_ERROR__MINUS1018 -1018L -#define PI_COM_ARRAY_ERROR -1018L /**< \ingroup err - Could not access array data in COM server */ -#define PI_COM_ARRAY_RANGE_ERROR__MINUS1019 -1019L -#define PI_COM_ARRAY_RANGE_ERROR -1019L /**< \ingroup err - Range of array does not fit the number of parameters */ -#define PI_INVALID_SPA_CMD_ID__MINUS1020 -1020L -#define PI_INVALID_SPA_CMD_ID -1020L /**< \ingroup err - Invalid parameter ID given to SPA or SPA? */ -#define PI_NR_AVG_OUT_OF_RANGE__MINUS1021 -1021L -#define PI_NR_AVG_OUT_OF_RANGE -1021L /**< \ingroup err - Number for AVG out of range--must be >0 */ -#define PI_WAV_SAMPLES_OUT_OF_RANGE__MINUS1022 -1022L -#define PI_WAV_SAMPLES_OUT_OF_RANGE -1022L /**< \ingroup err - Incorrect number of samples given to WAV */ -#define PI_WAV_FAILED__MINUS1023 -1023L -#define PI_WAV_FAILED -1023L /**< \ingroup err - Generation of wave failed */ -#define PI_MOTION_ERROR__MINUS1024 -1024L -#define PI_MOTION_ERROR -1024L /**< \ingroup err - Motion error: position error too large, servo is switched off automatically */ -#define PI_RUNNING_MACRO__MINUS1025 -1025L -#define PI_RUNNING_MACRO -1025L /**< \ingroup err - Controller is (already) running a macro */ -#define PI_PZT_CONFIG_FAILED__MINUS1026 -1026L -#define PI_PZT_CONFIG_FAILED -1026L /**< \ingroup err - Configuration of PZT stage or amplifier failed */ -#define PI_PZT_CONFIG_INVALID_PARAMS__MINUS1027 -1027L -#define PI_PZT_CONFIG_INVALID_PARAMS -1027L /**< \ingroup err - Current settings are not valid for desired configuration */ -#define PI_UNKNOWN_CHANNEL_IDENTIFIER__MINUS1028 -1028L -#define PI_UNKNOWN_CHANNEL_IDENTIFIER -1028L /**< \ingroup err - Unknown channel identifier */ -#define PI_WAVE_PARAM_FILE_ERROR__MINUS1029 -1029L -#define PI_WAVE_PARAM_FILE_ERROR -1029L /**< \ingroup err - Error while reading/writing wave generator parameter file */ -#define PI_UNKNOWN_WAVE_SET__MINUS1030 -1030L -#define PI_UNKNOWN_WAVE_SET -1030L /**< \ingroup err - Could not find description of wave form. Maybe WG.INI is missing? */ -#define PI_WAVE_EDITOR_FUNC_NOT_LOADED__MINUS1031 -1031L -#define PI_WAVE_EDITOR_FUNC_NOT_LOADED -1031L /**< \ingroup err - The WGWaveEditor DLL function was not found at startup */ -#define PI_USER_CANCELLED__MINUS1032 -1032L -#define PI_USER_CANCELLED -1032L /**< \ingroup err - The user cancelled a dialog */ -#define PI_C844_ERROR__MINUS1033 -1033L -#define PI_C844_ERROR -1033L /**< \ingroup err - Error from C-844 Controller */ -#define PI_DLL_NOT_LOADED__MINUS1034 -1034L -#define PI_DLL_NOT_LOADED -1034L /**< \ingroup err - DLL necessary to call function not loaded, or function not found in DLL */ -#define PI_PARAMETER_FILE_PROTECTED__MINUS1035 -1035L -#define PI_PARAMETER_FILE_PROTECTED -1035L /**< \ingroup err - The open parameter file is protected and cannot be edited */ -#define PI_NO_PARAMETER_FILE_OPENED__MINUS1036 -1036L -#define PI_NO_PARAMETER_FILE_OPENED -1036L /**< \ingroup err - There is no parameter file open */ -#define PI_STAGE_DOES_NOT_EXIST__MINUS1037 -1037L -#define PI_STAGE_DOES_NOT_EXIST -1037L /**< \ingroup err - Selected stage does not exist */ -#define PI_PARAMETER_FILE_ALREADY_OPENED__MINUS1038 -1038L -#define PI_PARAMETER_FILE_ALREADY_OPENED -1038L /**< \ingroup err - There is already a parameter file open. Close it before opening a new file */ -#define PI_PARAMETER_FILE_OPEN_ERROR__MINUS1039 -1039L -#define PI_PARAMETER_FILE_OPEN_ERROR -1039L /**< \ingroup err - Could not open parameter file */ -#define PI_INVALID_CONTROLLER_VERSION__MINUS1040 -1040L -#define PI_INVALID_CONTROLLER_VERSION -1040L /**< \ingroup err - The version of the connected controller is invalid */ -#define PI_PARAM_SET_ERROR__MINUS1041 -1041L -#define PI_PARAM_SET_ERROR -1041L /**< \ingroup err - Parameter could not be set with SPA--parameter not defined for this controller! */ -#define PI_NUMBER_OF_POSSIBLE_WAVES_EXCEEDED__MINUS1042 -1042L -#define PI_NUMBER_OF_POSSIBLE_WAVES_EXCEEDED -1042L /**< \ingroup err - The maximum number of wave definitions has been exceeded */ -#define PI_NUMBER_OF_POSSIBLE_GENERATORS_EXCEEDED__MINUS1043 -1043L -#define PI_NUMBER_OF_POSSIBLE_GENERATORS_EXCEEDED -1043L /**< \ingroup err - The maximum number of wave generators has been exceeded */ -#define PI_NO_WAVE_FOR_AXIS_DEFINED__MINUS1044 -1044L -#define PI_NO_WAVE_FOR_AXIS_DEFINED -1044L /**< \ingroup err - No wave defined for specified axis */ -#define PI_CANT_STOP_OR_START_WAV__MINUS1045 -1045L -#define PI_CANT_STOP_OR_START_WAV -1045L /**< \ingroup err - Wave output to axis already stopped/started */ -#define PI_REFERENCE_ERROR__MINUS1046 -1046L -#define PI_REFERENCE_ERROR -1046L /**< \ingroup err - Not all axes could be referenced */ -#define PI_REQUIRED_WAVE_NOT_FOUND__MINUS1047 -1047L -#define PI_REQUIRED_WAVE_NOT_FOUND -1047L /**< \ingroup err - Could not find parameter set required by frequency relation */ -#define PI_INVALID_SPP_CMD_ID__MINUS1048 -1048L -#define PI_INVALID_SPP_CMD_ID -1048L /**< \ingroup err - Command ID given to SPP or SPP? is not valid */ -#define PI_STAGE_NAME_ISNT_UNIQUE__MINUS1049 -1049L -#define PI_STAGE_NAME_ISNT_UNIQUE -1049L /**< \ingroup err - A stage name given to CST is not unique */ -#define PI_FILE_TRANSFER_BEGIN_MISSING__MINUS1050 -1050L -#define PI_FILE_TRANSFER_BEGIN_MISSING -1050L /**< \ingroup err - A uuencoded file transfered did not start with \"begin\" followed by the proper filename */ -#define PI_FILE_TRANSFER_ERROR_TEMP_FILE__MINUS1051 -1051L -#define PI_FILE_TRANSFER_ERROR_TEMP_FILE -1051L /**< \ingroup err - Could not create/read file on host PC */ -#define PI_FILE_TRANSFER_CRC_ERROR__MINUS1052 -1052L -#define PI_FILE_TRANSFER_CRC_ERROR -1052L /**< \ingroup err - Checksum error when transfering a file to/from the controller */ -#define PI_COULDNT_FIND_PISTAGES_DAT__MINUS1053 -1053L -#define PI_COULDNT_FIND_PISTAGES_DAT -1053L /**< \ingroup err - The PiStages.dat database could not be found. This file is required to connect a stage with the CST command */ -#define PI_NO_WAVE_RUNNING__MINUS1054 -1054L -#define PI_NO_WAVE_RUNNING -1054L /**< \ingroup err - No wave being output to specified axis */ -#define PI_INVALID_PASSWORD__MINUS1055 -1055L -#define PI_INVALID_PASSWORD -1055L /**< \ingroup err - Invalid password */ -#define PI_OPM_COM_ERROR__MINUS1056 -1056L -#define PI_OPM_COM_ERROR -1056L /**< \ingroup err - Error during communication with OPM (Optical Power Meter), maybe no OPM connected */ -#define PI_WAVE_EDITOR_WRONG_PARAMNUM__MINUS1057 -1057L -#define PI_WAVE_EDITOR_WRONG_PARAMNUM -1057L /**< \ingroup err - WaveEditor: Error during wave creation, incorrect number of parameters */ -#define PI_WAVE_EDITOR_FREQUENCY_OUT_OF_RANGE__MINUS1058 -1058L -#define PI_WAVE_EDITOR_FREQUENCY_OUT_OF_RANGE -1058L /**< \ingroup err - WaveEditor: Frequency out of range */ -#define PI_WAVE_EDITOR_WRONG_IP_VALUE__MINUS1059 -1059L -#define PI_WAVE_EDITOR_WRONG_IP_VALUE -1059L /**< \ingroup err - WaveEditor: Error during wave creation, incorrect index for integer parameter */ -#define PI_WAVE_EDITOR_WRONG_DP_VALUE__MINUS1060 -1060L -#define PI_WAVE_EDITOR_WRONG_DP_VALUE -1060L /**< \ingroup err - WaveEditor: Error during wave creation, incorrect index for floating point parameter */ -#define PI_WAVE_EDITOR_WRONG_ITEM_VALUE__MINUS1061 -1061L -#define PI_WAVE_EDITOR_WRONG_ITEM_VALUE -1061L /**< \ingroup err - WaveEditor: Error during wave creation, could not calculate value */ -#define PI_WAVE_EDITOR_MISSING_GRAPH_COMPONENT__MINUS1062 -1062L -#define PI_WAVE_EDITOR_MISSING_GRAPH_COMPONENT -1062L /**< \ingroup err - WaveEditor: Graph display component not installed */ -#define PI_EXT_PROFILE_UNALLOWED_CMD__MINUS1063 -1063L -#define PI_EXT_PROFILE_UNALLOWED_CMD -1063L /**< \ingroup err - User Profile Mode: Command is not allowed, check for required preparatory commands */ -#define PI_EXT_PROFILE_EXPECTING_MOTION_ERROR__MINUS1064 -1064L -#define PI_EXT_PROFILE_EXPECTING_MOTION_ERROR -1064L /**< \ingroup err - User Profile Mode: First target position in User Profile is too far from current position */ -#define PI_EXT_PROFILE_ACTIVE__MINUS1065 -1065L -#define PI_EXT_PROFILE_ACTIVE -1065L /**< \ingroup err - Controller is (already) in User Profile Mode */ -#define PI_EXT_PROFILE_INDEX_OUT_OF_RANGE__MINUS1066 -1066L -#define PI_EXT_PROFILE_INDEX_OUT_OF_RANGE -1066L /**< \ingroup err - User Profile Mode: Block or Data Set index out of allowed range */ -#define PI_PROFILE_GENERATOR_NO_PROFILE__MINUS1067 -1067L -#define PI_PROFILE_GENERATOR_NO_PROFILE -1067L /**< \ingroup err - ProfileGenerator: No profile has been created yet */ -#define PI_PROFILE_GENERATOR_OUT_OF_LIMITS__MINUS1068 -1068L -#define PI_PROFILE_GENERATOR_OUT_OF_LIMITS -1068L /**< \ingroup err - ProfileGenerator: Generated profile exceeds limits of one or both axes */ -#define PI_PROFILE_GENERATOR_UNKNOWN_PARAMETER__MINUS1069 -1069L -#define PI_PROFILE_GENERATOR_UNKNOWN_PARAMETER -1069L /**< \ingroup err - ProfileGenerator: Unknown parameter ID in Set/Get Parameter command */ -#define PI_PROFILE_GENERATOR_PAR_OUT_OF_RANGE__MINUS1070 -1070L -#define PI_PROFILE_GENERATOR_PAR_OUT_OF_RANGE -1070L /**< \ingroup err - ProfileGenerator: Parameter out of allowed range */ -#define PI_EXT_PROFILE_OUT_OF_MEMORY__MINUS1071 -1071L -#define PI_EXT_PROFILE_OUT_OF_MEMORY -1071L /**< \ingroup err - User Profile Mode: Out of memory */ -#define PI_EXT_PROFILE_WRONG_CLUSTER__MINUS1072 -1072L -#define PI_EXT_PROFILE_WRONG_CLUSTER -1072L /**< \ingroup err - User Profile Mode: Cluster is not assigned to this axis */ -#define PI_EXT_PROFILE_UNKNOWN_CLUSTER_IDENTIFIER__MINUS1073 -1073L -#define PI_EXT_PROFILE_UNKNOWN_CLUSTER_IDENTIFIER -1073L /**< \ingroup err - Unknown cluster identifier */ -#define PI_INVALID_DEVICE_DRIVER_VERSION__MINUS1074 -1074L -#define PI_INVALID_DEVICE_DRIVER_VERSION -1074L /**< \ingroup err - The installed device driver doesn't match the required version. Please see the documentation to determine the required device driver version. */ -#define PI_INVALID_LIBRARY_VERSION__MINUS1075 -1075L -#define PI_INVALID_LIBRARY_VERSION -1075L /**< \ingroup err - The library used doesn't match the required version. Please see the documentation to determine the required library version. */ -#define PI_INTERFACE_LOCKED__MINUS1076 -1076L -#define PI_INTERFACE_LOCKED -1076L /**< \ingroup err - The interface is currently locked by another function. Please try again later. */ -#define PI_PARAM_DAT_FILE_INVALID_VERSION__MINUS1077 -1077L -#define PI_PARAM_DAT_FILE_INVALID_VERSION -1077L /**< \ingroup err - Version of parameter DAT file does not match the required version. Current files are available at www.pi.ws. */ -#define PI_CANNOT_WRITE_TO_PARAM_DAT_FILE__MINUS1078 -1078L -#define PI_CANNOT_WRITE_TO_PARAM_DAT_FILE -1078L /**< \ingroup err - Cannot write to parameter DAT file to store user defined stage type. */ -#define PI_CANNOT_CREATE_PARAM_DAT_FILE__MINUS1079 -1079L -#define PI_CANNOT_CREATE_PARAM_DAT_FILE -1079L /**< \ingroup err - Cannot create parameter DAT file to store user defined stage type. */ -#define PI_PARAM_DAT_FILE_INVALID_REVISION__MINUS1080 -1080L -#define PI_PARAM_DAT_FILE_INVALID_REVISION -1080L /**< \ingroup err - Parameter DAT file does not have correct revision. */ -#define PI_USERSTAGES_DAT_FILE_INVALID_REVISION__MINUS1081 -1081L -#define PI_USERSTAGES_DAT_FILE_INVALID_REVISION -1081L /**< \ingroup err - User stages DAT file does not have correct revision. */ -#define PI_SOFTWARE_TIMEOUT__MINUS1082 -1082L -#define PI_SOFTWARE_TIMEOUT -1082L /**< \ingroup err - Timeout Error. Some lengthy operation did not finish within expected time. */ -// -// End of Dll Errors -////////////////////////////////////////////////// - -////////////////////////////////////////////////// -// -// Controller Errors - Errors set by the controller or the GCS DLL -// -#define PI_CNTR_NO_ERROR__0 0L -#define PI_CNTR_NO_ERROR 0L /**< \ingroup err - No error */ -#define PI_CNTR_PARAM_SYNTAX__1 1L -#define PI_CNTR_PARAM_SYNTAX 1L /**< \ingroup err - Parameter syntax error */ -#define PI_CNTR_UNKNOWN_COMMAND__2 2L -#define PI_CNTR_UNKNOWN_COMMAND 2L /**< \ingroup err - Unknown command */ -#define PI_CNTR_COMMAND_TOO_LONG__3 3L -#define PI_CNTR_COMMAND_TOO_LONG 3L /**< \ingroup err - Command length out of limits or command buffer overrun */ -#define PI_CNTR_SCAN_ERROR__4 4L -#define PI_CNTR_SCAN_ERROR 4L /**< \ingroup err - Error while scanning */ -#define PI_CNTR_MOVE_WITHOUT_REF_OR_NO_SERVO__5 5L -#define PI_CNTR_MOVE_WITHOUT_REF_OR_NO_SERVO 5L /**< \ingroup err - Unallowable move attempted on unreferenced axis, or move attempted with servo off */ -#define PI_CNTR_INVALID_SGA_PARAM__6 6L -#define PI_CNTR_INVALID_SGA_PARAM 6L /**< \ingroup err - Parameter for SGA not valid */ -#define PI_CNTR_POS_OUT_OF_LIMITS__7 7L -#define PI_CNTR_POS_OUT_OF_LIMITS 7L /**< \ingroup err - Position out of limits */ -#define PI_CNTR_VEL_OUT_OF_LIMITS__8 8L -#define PI_CNTR_VEL_OUT_OF_LIMITS 8L /**< \ingroup err - Velocity out of limits */ -#define PI_CNTR_SET_PIVOT_NOT_POSSIBLE__9 9L -#define PI_CNTR_SET_PIVOT_NOT_POSSIBLE 9L /**< \ingroup err - Attempt to set pivot point while U,V and W not all 0 */ -#define PI_CNTR_STOP__10 10L -#define PI_CNTR_STOP 10L /**< \ingroup err - Controller was stopped by command */ -#define PI_CNTR_SST_OR_SCAN_RANGE__11 11L -#define PI_CNTR_SST_OR_SCAN_RANGE 11L /**< \ingroup err - Parameter for SST or for one of the embedded scan algorithms out of range */ -#define PI_CNTR_INVALID_SCAN_AXES__12 12L -#define PI_CNTR_INVALID_SCAN_AXES 12L /**< \ingroup err - Invalid axis combination for fast scan */ -#define PI_CNTR_INVALID_NAV_PARAM__13 13L -#define PI_CNTR_INVALID_NAV_PARAM 13L /**< \ingroup err - Parameter for NAV out of range */ -#define PI_CNTR_INVALID_ANALOG_INPUT__14 14L -#define PI_CNTR_INVALID_ANALOG_INPUT 14L /**< \ingroup err - Invalid analog channel */ -#define PI_CNTR_INVALID_AXIS_IDENTIFIER__15 15L -#define PI_CNTR_INVALID_AXIS_IDENTIFIER 15L /**< \ingroup err - Invalid axis identifier */ -#define PI_CNTR_INVALID_STAGE_NAME__16 16L -#define PI_CNTR_INVALID_STAGE_NAME 16L /**< \ingroup err - Invalid stage name */ -#define PI_CNTR_PARAM_OUT_OF_RANGE__17 17L -#define PI_CNTR_PARAM_OUT_OF_RANGE 17L /**< \ingroup err - Parameter out of range */ -#define PI_CNTR_INVALID_MACRO_NAME__18 18L -#define PI_CNTR_INVALID_MACRO_NAME 18L /**< \ingroup err - Invalid macro name */ -#define PI_CNTR_MACRO_RECORD__19 19L -#define PI_CNTR_MACRO_RECORD 19L /**< \ingroup err - Error while recording macro */ -#define PI_CNTR_MACRO_NOT_FOUND__20 20L -#define PI_CNTR_MACRO_NOT_FOUND 20L /**< \ingroup err - Macro not found */ -#define PI_CNTR_AXIS_HAS_NO_BRAKE__21 21L -#define PI_CNTR_AXIS_HAS_NO_BRAKE 21L /**< \ingroup err - Axis has no brake */ -#define PI_CNTR_DOUBLE_AXIS__22 22L -#define PI_CNTR_DOUBLE_AXIS 22L /**< \ingroup err - Axis identifier specified more than once */ -#define PI_CNTR_ILLEGAL_AXIS__23 23L -#define PI_CNTR_ILLEGAL_AXIS 23L /**< \ingroup err - Illegal axis */ -#define PI_CNTR_PARAM_NR__24 24L -#define PI_CNTR_PARAM_NR 24L /**< \ingroup err - Incorrect number of parameters */ -#define PI_CNTR_INVALID_REAL_NR__25 25L -#define PI_CNTR_INVALID_REAL_NR 25L /**< \ingroup err - Invalid floating point number */ -#define PI_CNTR_MISSING_PARAM__26 26L -#define PI_CNTR_MISSING_PARAM 26L /**< \ingroup err - Parameter missing */ -#define PI_CNTR_SOFT_LIMIT_OUT_OF_RANGE__27 27L -#define PI_CNTR_SOFT_LIMIT_OUT_OF_RANGE 27L /**< \ingroup err - Soft limit out of range */ -#define PI_CNTR_NO_MANUAL_PAD__28 28L -#define PI_CNTR_NO_MANUAL_PAD 28L /**< \ingroup err - No manual pad found */ -#define PI_CNTR_NO_JUMP__29 29L -#define PI_CNTR_NO_JUMP 29L /**< \ingroup err - No more step-response values */ -#define PI_CNTR_INVALID_JUMP__30 30L -#define PI_CNTR_INVALID_JUMP 30L /**< \ingroup err - No step-response values recorded */ -#define PI_CNTR_AXIS_HAS_NO_REFERENCE__31 31L -#define PI_CNTR_AXIS_HAS_NO_REFERENCE 31L /**< \ingroup err - Axis has no reference sensor */ -#define PI_CNTR_STAGE_HAS_NO_LIM_SWITCH__32 32L -#define PI_CNTR_STAGE_HAS_NO_LIM_SWITCH 32L /**< \ingroup err - Axis has no limit switch */ -#define PI_CNTR_NO_RELAY_CARD__33 33L -#define PI_CNTR_NO_RELAY_CARD 33L /**< \ingroup err - No relay card installed */ -#define PI_CNTR_CMD_NOT_ALLOWED_FOR_STAGE__34 34L -#define PI_CNTR_CMD_NOT_ALLOWED_FOR_STAGE 34L /**< \ingroup err - Command not allowed for selected stage(s) */ -#define PI_CNTR_NO_DIGITAL_INPUT__35 35L -#define PI_CNTR_NO_DIGITAL_INPUT 35L /**< \ingroup err - No digital input installed */ -#define PI_CNTR_NO_DIGITAL_OUTPUT__36 36L -#define PI_CNTR_NO_DIGITAL_OUTPUT 36L /**< \ingroup err - No digital output configured */ -#define PI_CNTR_NO_MCM__37 37L -#define PI_CNTR_NO_MCM 37L /**< \ingroup err - No more MCM responses */ -#define PI_CNTR_INVALID_MCM__38 38L -#define PI_CNTR_INVALID_MCM 38L /**< \ingroup err - No MCM values recorded */ -#define PI_CNTR_INVALID_CNTR_NUMBER__39 39L -#define PI_CNTR_INVALID_CNTR_NUMBER 39L /**< \ingroup err - Controller number invalid */ -#define PI_CNTR_NO_JOYSTICK_CONNECTED__40 40L -#define PI_CNTR_NO_JOYSTICK_CONNECTED 40L /**< \ingroup err - No joystick configured */ -#define PI_CNTR_INVALID_EGE_AXIS__41 41L -#define PI_CNTR_INVALID_EGE_AXIS 41L /**< \ingroup err - Invalid axis for electronic gearing, axis can not be slave */ -#define PI_CNTR_SLAVE_POSITION_OUT_OF_RANGE__42 42L -#define PI_CNTR_SLAVE_POSITION_OUT_OF_RANGE 42L /**< \ingroup err - Position of slave axis is out of range */ -#define PI_CNTR_COMMAND_EGE_SLAVE__43 43L -#define PI_CNTR_COMMAND_EGE_SLAVE 43L /**< \ingroup err - Slave axis cannot be commanded directly when electronic gearing is enabled */ -#define PI_CNTR_JOYSTICK_CALIBRATION_FAILED__44 44L -#define PI_CNTR_JOYSTICK_CALIBRATION_FAILED 44L /**< \ingroup err - Calibration of joystick failed */ -#define PI_CNTR_REFERENCING_FAILED__45 45L -#define PI_CNTR_REFERENCING_FAILED 45L /**< \ingroup err - Referencing failed */ -#define PI_CNTR_OPM_MISSING__46 46L -#define PI_CNTR_OPM_MISSING 46L /**< \ingroup err - OPM (Optical Power Meter) missing */ -#define PI_CNTR_OPM_NOT_INITIALIZED__47 47L -#define PI_CNTR_OPM_NOT_INITIALIZED 47L /**< \ingroup err - OPM (Optical Power Meter) not initialized or cannot be initialized */ -#define PI_CNTR_OPM_COM_ERROR__48 48L -#define PI_CNTR_OPM_COM_ERROR 48L /**< \ingroup err - OPM (Optical Power Meter) Communication Error */ -#define PI_CNTR_MOVE_TO_LIMIT_SWITCH_FAILED__49 49L -#define PI_CNTR_MOVE_TO_LIMIT_SWITCH_FAILED 49L /**< \ingroup err - Move to limit switch failed */ -#define PI_CNTR_REF_WITH_REF_DISABLED__50 50L -#define PI_CNTR_REF_WITH_REF_DISABLED 50L /**< \ingroup err - Attempt to reference axis with referencing disabled */ -#define PI_CNTR_AXIS_UNDER_JOYSTICK_CONTROL__51 51L -#define PI_CNTR_AXIS_UNDER_JOYSTICK_CONTROL 51L /**< \ingroup err - Selected axis is controlled by joystick */ -#define PI_CNTR_COMMUNICATION_ERROR__52 52L -#define PI_CNTR_COMMUNICATION_ERROR 52L /**< \ingroup err - Controller detected communication error */ -#define PI_CNTR_DYNAMIC_MOVE_IN_PROCESS__53 53L -#define PI_CNTR_DYNAMIC_MOVE_IN_PROCESS 53L /**< \ingroup err - MOV! motion still in progress */ -#define PI_CNTR_UNKNOWN_PARAMETER__54 54L -#define PI_CNTR_UNKNOWN_PARAMETER 54L /**< \ingroup err - Unknown parameter */ -#define PI_CNTR_NO_REP_RECORDED__55 55L -#define PI_CNTR_NO_REP_RECORDED 55L /**< \ingroup err - No commands were recorded with REP */ -#define PI_CNTR_INVALID_PASSWORD__56 56L -#define PI_CNTR_INVALID_PASSWORD 56L /**< \ingroup err - Password invalid */ -#define PI_CNTR_INVALID_RECORDER_CHAN__57 57L -#define PI_CNTR_INVALID_RECORDER_CHAN 57L /**< \ingroup err - Data Record Table does not exist */ -#define PI_CNTR_INVALID_RECORDER_SRC_OPT__58 58L -#define PI_CNTR_INVALID_RECORDER_SRC_OPT 58L /**< \ingroup err - Source does not exist; number too low or too high */ -#define PI_CNTR_INVALID_RECORDER_SRC_CHAN__59 59L -#define PI_CNTR_INVALID_RECORDER_SRC_CHAN 59L /**< \ingroup err - Source Record Table number too low or too high */ -#define PI_CNTR_PARAM_PROTECTION__60 60L -#define PI_CNTR_PARAM_PROTECTION 60L /**< \ingroup err - Protected Param: current Command Level (CCL) too low */ -#define PI_CNTR_AUTOZERO_RUNNING__61 61L -#define PI_CNTR_AUTOZERO_RUNNING 61L /**< \ingroup err - Command execution not possible while Autozero is running */ -#define PI_CNTR_NO_LINEAR_AXIS__62 62L -#define PI_CNTR_NO_LINEAR_AXIS 62L /**< \ingroup err - Autozero requires at least one linear axis */ -#define PI_CNTR_INIT_RUNNING__63 63L -#define PI_CNTR_INIT_RUNNING 63L /**< \ingroup err - Initialization still in progress */ -#define PI_CNTR_READ_ONLY_PARAMETER__64 64L -#define PI_CNTR_READ_ONLY_PARAMETER 64L /**< \ingroup err - Parameter is read-only */ -#define PI_CNTR_PAM_NOT_FOUND__65 65L -#define PI_CNTR_PAM_NOT_FOUND 65L /**< \ingroup err - Parameter not found in non-volatile memory */ -#define PI_CNTR_VOL_OUT_OF_LIMITS__66 66L -#define PI_CNTR_VOL_OUT_OF_LIMITS 66L /**< \ingroup err - Voltage out of limits */ -#define PI_CNTR_WAVE_TOO_LARGE__67 67L -#define PI_CNTR_WAVE_TOO_LARGE 67L /**< \ingroup err - Not enough memory available for requested wave curve */ -#define PI_CNTR_NOT_ENOUGH_DDL_MEMORY__68 68L -#define PI_CNTR_NOT_ENOUGH_DDL_MEMORY 68L /**< \ingroup err - Not enough memory available for DDL table; DDL can not be started */ -#define PI_CNTR_DDL_TIME_DELAY_TOO_LARGE__69 69L -#define PI_CNTR_DDL_TIME_DELAY_TOO_LARGE 69L /**< \ingroup err - Time delay larger than DDL table; DDL can not be started */ -#define PI_CNTR_DIFFERENT_ARRAY_LENGTH__70 70L -#define PI_CNTR_DIFFERENT_ARRAY_LENGTH 70L /**< \ingroup err - The requested arrays have different lengths; query them separately */ -#define PI_CNTR_GEN_SINGLE_MODE_RESTART__71 71L -#define PI_CNTR_GEN_SINGLE_MODE_RESTART 71L /**< \ingroup err - Attempt to restart the generator while it is running in single step mode */ -#define PI_CNTR_ANALOG_TARGET_ACTIVE__72 72L -#define PI_CNTR_ANALOG_TARGET_ACTIVE 72L /**< \ingroup err - Motion commands and wave generator activation are not allowed when analog target is active */ -#define PI_CNTR_WAVE_GENERATOR_ACTIVE__73 73L -#define PI_CNTR_WAVE_GENERATOR_ACTIVE 73L /**< \ingroup err - Motion commands are not allowed when wave generator output is active; use WGO to disable generator output */ -#define PI_CNTR_AUTOZERO_DISABLED__74 74L -#define PI_CNTR_AUTOZERO_DISABLED 74L /**< \ingroup err - No sensor channel or no piezo channel connected to selected axis (sensor and piezo matrix) */ -#define PI_CNTR_NO_WAVE_SELECTED__75 75L -#define PI_CNTR_NO_WAVE_SELECTED 75L /**< \ingroup err - Generator started (WGO) without having selected a wave table (WSL). */ -#define PI_CNTR_IF_BUFFER_OVERRUN__76 76L -#define PI_CNTR_IF_BUFFER_OVERRUN 76L /**< \ingroup err - Interface buffer did overrun and command couldn't be received correctly */ -#define PI_CNTR_NOT_ENOUGH_RECORDED_DATA__77 77L -#define PI_CNTR_NOT_ENOUGH_RECORDED_DATA 77L /**< \ingroup err - Data Record Table does not hold enough recorded data */ -#define PI_CNTR_TABLE_DEACTIVATED__78 78L -#define PI_CNTR_TABLE_DEACTIVATED 78L /**< \ingroup err - Data Record Table is not configured for recording */ -#define PI_CNTR_OPENLOOP_VALUE_SET_WHEN_SERVO_ON__79 79L -#define PI_CNTR_OPENLOOP_VALUE_SET_WHEN_SERVO_ON 79L /**< \ingroup err - Open-loop commands (SVA, SVR) are not allowed when servo is on */ -#define PI_CNTR_RAM_ERROR__80 80L -#define PI_CNTR_RAM_ERROR 80L /**< \ingroup err - Hardware error affecting RAM */ -#define PI_CNTR_MACRO_UNKNOWN_COMMAND__81 81L -#define PI_CNTR_MACRO_UNKNOWN_COMMAND 81L /**< \ingroup err - Not macro command */ -#define PI_CNTR_MACRO_PC_ERROR__82 82L -#define PI_CNTR_MACRO_PC_ERROR 82L /**< \ingroup err - Macro counter out of range */ -#define PI_CNTR_JOYSTICK_ACTIVE__83 83L -#define PI_CNTR_JOYSTICK_ACTIVE 83L /**< \ingroup err - Joystick is active */ -#define PI_CNTR_MOTOR_IS_OFF__84 84L -#define PI_CNTR_MOTOR_IS_OFF 84L /**< \ingroup err - Motor is off */ -#define PI_CNTR_ONLY_IN_MACRO__85 85L -#define PI_CNTR_ONLY_IN_MACRO 85L /**< \ingroup err - Macro-only command */ -#define PI_CNTR_JOYSTICK_UNKNOWN_AXIS__86 86L -#define PI_CNTR_JOYSTICK_UNKNOWN_AXIS 86L /**< \ingroup err - Invalid joystick axis */ -#define PI_CNTR_JOYSTICK_UNKNOWN_ID__87 87L -#define PI_CNTR_JOYSTICK_UNKNOWN_ID 87L /**< \ingroup err - Joystick unknown */ -#define PI_CNTR_REF_MODE_IS_ON__88 88L -#define PI_CNTR_REF_MODE_IS_ON 88L /**< \ingroup err - Move without referenced stage */ -#define PI_CNTR_NOT_ALLOWED_IN_CURRENT_MOTION_MODE__89 89L -#define PI_CNTR_NOT_ALLOWED_IN_CURRENT_MOTION_MODE 89L /**< \ingroup err - Command not allowed in current motion mode */ -#define PI_CNTR_DIO_AND_TRACING_NOT_POSSIBLE__90 90L -#define PI_CNTR_DIO_AND_TRACING_NOT_POSSIBLE 90L /**< \ingroup err - No tracing possible while digital IOs are used on this HW revision. Reconnect to switch operation mode. */ -#define PI_CNTR_COLLISION__91 91L -#define PI_CNTR_COLLISION 91L /**< \ingroup err - Move not possible, would cause collision */ -#define PI_CNTR_SLAVE_NOT_FAST_ENOUGH__92 92L -#define PI_CNTR_SLAVE_NOT_FAST_ENOUGH 92L /**< \ingroup err - Stage is not capable of following the master. Check the gear ratio(SRA). */ -#define PI_CNTR_CMD_NOT_ALLOWED_WHILE_AXIS_IN_MOTION__93 93L -#define PI_CNTR_CMD_NOT_ALLOWED_WHILE_AXIS_IN_MOTION 93L /**< \ingroup err - This command is not allowed while the affected axis or its master is in motion. */ -#define PI_CNTR_OPEN_LOOP_JOYSTICK_ENABLED__94 94L -#define PI_CNTR_OPEN_LOOP_JOYSTICK_ENABLED 94L /**< \ingroup err - Servo cannot be switched on when open-loop joystick control is enabled. */ -#define PI_CNTR_INVALID_SERVO_STATE_FOR_PARAMETER__95 95L -#define PI_CNTR_INVALID_SERVO_STATE_FOR_PARAMETER 95L /**< \ingroup err - This parameter cannot be changed in current servo mode. */ -#define PI_CNTR_UNKNOWN_STAGE_NAME__96 96L -#define PI_CNTR_UNKNOWN_STAGE_NAME 96L /**< \ingroup err - Unknown stage name */ -#define PI_LABVIEW_ERROR__100 100L -#define PI_LABVIEW_ERROR 100L /**< \ingroup err - PI LabVIEW driver reports error. See source control for details. */ -#define PI_CNTR_NO_AXIS__200 200L -#define PI_CNTR_NO_AXIS 200L /**< \ingroup err - No stage connected to axis */ -#define PI_CNTR_NO_AXIS_PARAM_FILE__201 201L -#define PI_CNTR_NO_AXIS_PARAM_FILE 201L /**< \ingroup err - File with axis parameters not found */ -#define PI_CNTR_INVALID_AXIS_PARAM_FILE__202 202L -#define PI_CNTR_INVALID_AXIS_PARAM_FILE 202L /**< \ingroup err - Invalid axis parameter file */ -#define PI_CNTR_NO_AXIS_PARAM_BACKUP__203 203L -#define PI_CNTR_NO_AXIS_PARAM_BACKUP 203L /**< \ingroup err - Backup file with axis parameters not found */ -#define PI_CNTR_RESERVED_204__204 204L -#define PI_CNTR_RESERVED_204 204L /**< \ingroup err - PI internal error code 204 */ -#define PI_CNTR_SMO_WITH_SERVO_ON__205 205L -#define PI_CNTR_SMO_WITH_SERVO_ON 205L /**< \ingroup err - SMO with servo on */ -#define PI_CNTR_UUDECODE_INCOMPLETE_HEADER__206 206L -#define PI_CNTR_UUDECODE_INCOMPLETE_HEADER 206L /**< \ingroup err - uudecode: incomplete header */ -#define PI_CNTR_UUDECODE_NOTHING_TO_DECODE__207 207L -#define PI_CNTR_UUDECODE_NOTHING_TO_DECODE 207L /**< \ingroup err - uudecode: nothing to decode */ -#define PI_CNTR_UUDECODE_ILLEGAL_FORMAT__208 208L -#define PI_CNTR_UUDECODE_ILLEGAL_FORMAT 208L /**< \ingroup err - uudecode: illegal UUE format */ -#define PI_CNTR_CRC32_ERROR__209 209L -#define PI_CNTR_CRC32_ERROR 209L /**< \ingroup err - CRC32 error */ -#define PI_CNTR_ILLEGAL_FILENAME__210 210L -#define PI_CNTR_ILLEGAL_FILENAME 210L /**< \ingroup err - Illegal file name (must be 8-0 format) */ -#define PI_CNTR_FILE_NOT_FOUND__211 211L -#define PI_CNTR_FILE_NOT_FOUND 211L /**< \ingroup err - File not found on controller */ -#define PI_CNTR_FILE_WRITE_ERROR__212 212L -#define PI_CNTR_FILE_WRITE_ERROR 212L /**< \ingroup err - Error writing file on controller */ -#define PI_CNTR_DTR_HINDERS_VELOCITY_CHANGE__213 213L -#define PI_CNTR_DTR_HINDERS_VELOCITY_CHANGE 213L /**< \ingroup err - VEL command not allowed in DTR Command Mode */ -#define PI_CNTR_POSITION_UNKNOWN__214 214L -#define PI_CNTR_POSITION_UNKNOWN 214L /**< \ingroup err - Position calculations failed */ -#define PI_CNTR_CONN_POSSIBLY_BROKEN__215 215L -#define PI_CNTR_CONN_POSSIBLY_BROKEN 215L /**< \ingroup err - The connection between controller and stage may be broken */ -#define PI_CNTR_ON_LIMIT_SWITCH__216 216L -#define PI_CNTR_ON_LIMIT_SWITCH 216L /**< \ingroup err - The connected stage has driven into a limit switch, some controllers need CLR to resume operation */ -#define PI_CNTR_UNEXPECTED_STRUT_STOP__217 217L -#define PI_CNTR_UNEXPECTED_STRUT_STOP 217L /**< \ingroup err - Strut test command failed because of an unexpected strut stop */ -#define PI_CNTR_POSITION_BASED_ON_ESTIMATION__218 218L -#define PI_CNTR_POSITION_BASED_ON_ESTIMATION 218L /**< \ingroup err - While MOV! is running position can only be estimated! */ -#define PI_CNTR_POSITION_BASED_ON_INTERPOLATION__219 219L -#define PI_CNTR_POSITION_BASED_ON_INTERPOLATION 219L /**< \ingroup err - Position was calculated during MOV motion */ -#define PI_CNTR_INVALID_HANDLE__230 230L -#define PI_CNTR_INVALID_HANDLE 230L /**< \ingroup err - Invalid handle */ -#define PI_CNTR_NO_BIOS_FOUND__231 231L -#define PI_CNTR_NO_BIOS_FOUND 231L /**< \ingroup err - No bios found */ -#define PI_CNTR_SAVE_SYS_CFG_FAILED__232 232L -#define PI_CNTR_SAVE_SYS_CFG_FAILED 232L /**< \ingroup err - Save system configuration failed */ -#define PI_CNTR_LOAD_SYS_CFG_FAILED__233 233L -#define PI_CNTR_LOAD_SYS_CFG_FAILED 233L /**< \ingroup err - Load system configuration failed */ -#define PI_CNTR_SEND_BUFFER_OVERFLOW__301 301L -#define PI_CNTR_SEND_BUFFER_OVERFLOW 301L /**< \ingroup err - Send buffer overflow */ -#define PI_CNTR_VOLTAGE_OUT_OF_LIMITS__302 302L -#define PI_CNTR_VOLTAGE_OUT_OF_LIMITS 302L /**< \ingroup err - Voltage out of limits */ -#define PI_CNTR_OPEN_LOOP_MOTION_SET_WHEN_SERVO_ON__303 303L -#define PI_CNTR_OPEN_LOOP_MOTION_SET_WHEN_SERVO_ON 303L /**< \ingroup err - Open-loop motion attempted when servo ON */ -#define PI_CNTR_RECEIVING_BUFFER_OVERFLOW__304 304L -#define PI_CNTR_RECEIVING_BUFFER_OVERFLOW 304L /**< \ingroup err - Received command is too long */ -#define PI_CNTR_EEPROM_ERROR__305 305L -#define PI_CNTR_EEPROM_ERROR 305L /**< \ingroup err - Error while reading/writing EEPROM */ -#define PI_CNTR_I2C_ERROR__306 306L -#define PI_CNTR_I2C_ERROR 306L /**< \ingroup err - Error on I2C bus */ -#define PI_CNTR_RECEIVING_TIMEOUT__307 307L -#define PI_CNTR_RECEIVING_TIMEOUT 307L /**< \ingroup err - Timeout while receiving command */ -#define PI_CNTR_TIMEOUT__308 308L -#define PI_CNTR_TIMEOUT 308L /**< \ingroup err - A lengthy operation has not finished in the expected time */ -#define PI_CNTR_MACRO_OUT_OF_SPACE__309 309L -#define PI_CNTR_MACRO_OUT_OF_SPACE 309L /**< \ingroup err - Insufficient space to store macro */ -#define PI_CNTR_EUI_OLDVERSION_CFGDATA__310 310L -#define PI_CNTR_EUI_OLDVERSION_CFGDATA 310L /**< \ingroup err - Configuration data has old version number */ -#define PI_CNTR_EUI_INVALID_CFGDATA__311 311L -#define PI_CNTR_EUI_INVALID_CFGDATA 311L /**< \ingroup err - Invalid configuration data */ -#define PI_CNTR_HARDWARE_ERROR__333 333L -#define PI_CNTR_HARDWARE_ERROR 333L /**< \ingroup err - Internal hardware error */ -#define PI_CNTR_WAV_INDEX_ERROR__400 400L -#define PI_CNTR_WAV_INDEX_ERROR 400L /**< \ingroup err - Wave generator index error */ -#define PI_CNTR_WAV_NOT_DEFINED__401 401L -#define PI_CNTR_WAV_NOT_DEFINED 401L /**< \ingroup err - Wave table not defined */ -#define PI_CNTR_WAV_TYPE_NOT_SUPPORTED__402 402L -#define PI_CNTR_WAV_TYPE_NOT_SUPPORTED 402L /**< \ingroup err - Wave type not supported */ -#define PI_CNTR_WAV_LENGTH_EXCEEDS_LIMIT__403 403L -#define PI_CNTR_WAV_LENGTH_EXCEEDS_LIMIT 403L /**< \ingroup err - Wave length exceeds limit */ -#define PI_CNTR_WAV_PARAMETER_NR__404 404L -#define PI_CNTR_WAV_PARAMETER_NR 404L /**< \ingroup err - Wave parameter number error */ -#define PI_CNTR_WAV_PARAMETER_OUT_OF_LIMIT__405 405L -#define PI_CNTR_WAV_PARAMETER_OUT_OF_LIMIT 405L /**< \ingroup err - Wave parameter out of range */ -#define PI_CNTR_WGO_BIT_NOT_SUPPORTED__406 406L -#define PI_CNTR_WGO_BIT_NOT_SUPPORTED 406L /**< \ingroup err - WGO command bit not supported */ -#define PI_CNTR_EMERGENCY_STOP_BUTTON_ACTIVATED__500 500L -#define PI_CNTR_EMERGENCY_STOP_BUTTON_ACTIVATED 500L /**< \ingroup err - The \"red knob\" is still set and disables system */ -#define PI_CNTR_EMERGENCY_STOP_BUTTON_WAS_ACTIVATED__501 501L -#define PI_CNTR_EMERGENCY_STOP_BUTTON_WAS_ACTIVATED 501L /**< \ingroup err - The \"red knob\" was activated and still disables system - reanimation required */ -#define PI_CNTR_REDUNDANCY_LIMIT_EXCEEDED__502 502L -#define PI_CNTR_REDUNDANCY_LIMIT_EXCEEDED 502L /**< \ingroup err - Position consistency check failed */ -#define PI_CNTR_COLLISION_SWITCH_ACTIVATED__503 503L -#define PI_CNTR_COLLISION_SWITCH_ACTIVATED 503L /**< \ingroup err - Hardware collision sensor(s) are activated */ -#define PI_CNTR_FOLLOWING_ERROR__504 504L -#define PI_CNTR_FOLLOWING_ERROR 504L /**< \ingroup err - Strut following error occurred, e.g. caused by overload or encoder failure */ -#define PI_CNTR_SENSOR_SIGNAL_INVALID__505 505L -#define PI_CNTR_SENSOR_SIGNAL_INVALID 505L /**< \ingroup err - One sensor signal is not valid */ -#define PI_CNTR_SERVO_LOOP_UNSTABLE__506 506L -#define PI_CNTR_SERVO_LOOP_UNSTABLE 506L /**< \ingroup err - Servo loop was unstable due to wrong parameter setting and switched off to avoid damage. */ -#define PI_CNTR_UNKNOWN_ERROR__555 555L -#define PI_CNTR_UNKNOWN_ERROR 555L /**< \ingroup err - BasMac: unknown controller error */ -#define PI_CNTR_NOT_ENOUGH_MEMORY__601 601L -#define PI_CNTR_NOT_ENOUGH_MEMORY 601L /**< \ingroup err - Not enough memory */ -#define PI_CNTR_HW_VOLTAGE_ERROR__602 602L -#define PI_CNTR_HW_VOLTAGE_ERROR 602L /**< \ingroup err - Hardware voltage error */ -#define PI_CNTR_HW_TEMPERATURE_ERROR__603 603L -#define PI_CNTR_HW_TEMPERATURE_ERROR 603L /**< \ingroup err - Hardware temperature out of range */ -#define PI_CNTR_POSITION_ERROR_TOO_HIGH__604 604L -#define PI_CNTR_POSITION_ERROR_TOO_HIGH 604L /**< \ingroup err - Position error of any axis in the system is too high */ -#define PI_CNTR_INPUT_OUT_OF_RANGE__606 606L -#define PI_CNTR_INPUT_OUT_OF_RANGE 606L /**< \ingroup err - Maximum value of input signal has been exceeded */ -#define PI_CNTR_TOO_MANY_NESTED_MACROS__1000 1000L -#define PI_CNTR_TOO_MANY_NESTED_MACROS 1000L /**< \ingroup err - Too many nested macros */ -#define PI_CNTR_MACRO_ALREADY_DEFINED__1001 1001L -#define PI_CNTR_MACRO_ALREADY_DEFINED 1001L /**< \ingroup err - Macro already defined */ -#define PI_CNTR_NO_MACRO_RECORDING__1002 1002L -#define PI_CNTR_NO_MACRO_RECORDING 1002L /**< \ingroup err - Macro recording not activated */ -#define PI_CNTR_INVALID_MAC_PARAM__1003 1003L -#define PI_CNTR_INVALID_MAC_PARAM 1003L /**< \ingroup err - Invalid parameter for MAC */ -#define PI_CNTR_MACRO_DELETE_ERROR__1004 1004L -#define PI_CNTR_MACRO_DELETE_ERROR 1004L /**< \ingroup err - Deleting macro failed */ -#define PI_CNTR_CONTROLLER_BUSY__1005 1005L -#define PI_CNTR_CONTROLLER_BUSY 1005L /**< \ingroup err - Controller is busy with some lengthy operation (e.g. reference move, fast scan algorithm) */ -#define PI_CNTR_INVALID_IDENTIFIER__1006 1006L -#define PI_CNTR_INVALID_IDENTIFIER 1006L /**< \ingroup err - Invalid identifier (invalid special characters, ...) */ -#define PI_CNTR_UNKNOWN_VARIABLE_OR_ARGUMENT__1007 1007L -#define PI_CNTR_UNKNOWN_VARIABLE_OR_ARGUMENT 1007L /**< \ingroup err - Variable or argument not defined */ -#define PI_CNTR_RUNNING_MACRO__1008 1008L -#define PI_CNTR_RUNNING_MACRO 1008L /**< \ingroup err - Controller is (already) running a macro */ -#define PI_CNTR_MACRO_INVALID_OPERATOR__1009 1009L -#define PI_CNTR_MACRO_INVALID_OPERATOR 1009L /**< \ingroup err - Invalid or missing operator for condition. Check necessary spaces around operator. */ -#define PI_CNTR_MACRO_NO_ANSWER__1010 1010L -#define PI_CNTR_MACRO_NO_ANSWER 1010L /**< \ingroup err - No answer was received while executing WAC/MEX/JRC/... */ -#define PI_CMD_NOT_VALID_IN_MACRO_MODE__1011 1011L -#define PI_CMD_NOT_VALID_IN_MACRO_MODE 1011L /**< \ingroup err - Command not valid during macro execution */ -#define PI_CNTR_MOTION_ERROR__1024 1024L -#define PI_CNTR_MOTION_ERROR 1024L /**< \ingroup err - Motion error: position error too large, servo is switched off automatically */ -#define PI_CNTR_EXT_PROFILE_UNALLOWED_CMD__1063 1063L -#define PI_CNTR_EXT_PROFILE_UNALLOWED_CMD 1063L /**< \ingroup err - User Profile Mode: Command is not allowed, check for required preparatory commands */ -#define PI_CNTR_EXT_PROFILE_EXPECTING_MOTION_ERROR__1064 1064L -#define PI_CNTR_EXT_PROFILE_EXPECTING_MOTION_ERROR 1064L /**< \ingroup err - User Profile Mode: First target position in User Profile is too far from current position */ -#define PI_CNTR_PROFILE_ACTIVE__1065 1065L -#define PI_CNTR_PROFILE_ACTIVE 1065L /**< \ingroup err - Controller is (already) in User Profile Mode */ -#define PI_CNTR_PROFILE_INDEX_OUT_OF_RANGE__1066 1066L -#define PI_CNTR_PROFILE_INDEX_OUT_OF_RANGE 1066L /**< \ingroup err - User Profile Mode: Block or Data Set index out of allowed range */ -#define PI_CNTR_PROFILE_OUT_OF_MEMORY__1071 1071L -#define PI_CNTR_PROFILE_OUT_OF_MEMORY 1071L /**< \ingroup err - User Profile Mode: Out of memory */ -#define PI_CNTR_PROFILE_WRONG_CLUSTER__1072 1072L -#define PI_CNTR_PROFILE_WRONG_CLUSTER 1072L /**< \ingroup err - User Profile Mode: Cluster is not assigned to this axis */ -#define PI_CNTR_PROFILE_UNKNOWN_CLUSTER_IDENTIFIER__1073 1073L -#define PI_CNTR_PROFILE_UNKNOWN_CLUSTER_IDENTIFIER 1073L /**< \ingroup err - Unknown cluster identifier */ -#define PI_CNTR_ALREADY_HAS_SERIAL_NUMBER__2000 2000L -#define PI_CNTR_ALREADY_HAS_SERIAL_NUMBER 2000L /**< \ingroup err - Controller already has a serial number */ -#define PI_CNTR_SECTOR_ERASE_FAILED__4000 4000L -#define PI_CNTR_SECTOR_ERASE_FAILED 4000L /**< \ingroup err - Sector erase failed */ -#define PI_CNTR_FLASH_PROGRAM_FAILED__4001 4001L -#define PI_CNTR_FLASH_PROGRAM_FAILED 4001L /**< \ingroup err - Flash program failed */ -#define PI_CNTR_FLASH_READ_FAILED__4002 4002L -#define PI_CNTR_FLASH_READ_FAILED 4002L /**< \ingroup err - Flash read failed */ -#define PI_CNTR_HW_MATCHCODE_ERROR__4003 4003L -#define PI_CNTR_HW_MATCHCODE_ERROR 4003L /**< \ingroup err - HW match code missing/invalid */ -#define PI_CNTR_FW_MATCHCODE_ERROR__4004 4004L -#define PI_CNTR_FW_MATCHCODE_ERROR 4004L /**< \ingroup err - FW match code missing/invalid */ -#define PI_CNTR_HW_VERSION_ERROR__4005 4005L -#define PI_CNTR_HW_VERSION_ERROR 4005L /**< \ingroup err - HW version missing/invalid */ -#define PI_CNTR_FW_VERSION_ERROR__4006 4006L -#define PI_CNTR_FW_VERSION_ERROR 4006L /**< \ingroup err - FW version missing/invalid */ -#define PI_CNTR_FW_UPDATE_ERROR__4007 4007L -#define PI_CNTR_FW_UPDATE_ERROR 4007L /**< \ingroup err - FW update failed */ -#define PI_CNTR_FW_CRC_PAR_ERROR__4008 4008L -#define PI_CNTR_FW_CRC_PAR_ERROR 4008L /**< \ingroup err - FW Parameter CRC wrong */ -#define PI_CNTR_FW_CRC_FW_ERROR__4009 4009L -#define PI_CNTR_FW_CRC_FW_ERROR 4009L /**< \ingroup err - FW CRC wrong */ -#define PI_CNTR_INVALID_PCC_SCAN_DATA__5000 5000L -#define PI_CNTR_INVALID_PCC_SCAN_DATA 5000L /**< \ingroup err - PicoCompensation scan data is not valid */ -#define PI_CNTR_PCC_SCAN_RUNNING__5001 5001L -#define PI_CNTR_PCC_SCAN_RUNNING 5001L /**< \ingroup err - PicoCompensation is running, some actions can not be executed during scanning/recording */ -#define PI_CNTR_INVALID_PCC_AXIS__5002 5002L -#define PI_CNTR_INVALID_PCC_AXIS 5002L /**< \ingroup err - Given axis can not be defined as PPC axis */ -#define PI_CNTR_PCC_SCAN_OUT_OF_RANGE__5003 5003L -#define PI_CNTR_PCC_SCAN_OUT_OF_RANGE 5003L /**< \ingroup err - Defined scan area is larger than the travel range */ -#define PI_CNTR_PCC_TYPE_NOT_EXISTING__5004 5004L -#define PI_CNTR_PCC_TYPE_NOT_EXISTING 5004L /**< \ingroup err - Given PicoCompensation type is not defined */ -#define PI_CNTR_PCC_PAM_ERROR__5005 5005L -#define PI_CNTR_PCC_PAM_ERROR 5005L /**< \ingroup err - PicoCompensation parameter error */ -#define PI_CNTR_PCC_TABLE_ARRAY_TOO_LARGE__5006 5006L -#define PI_CNTR_PCC_TABLE_ARRAY_TOO_LARGE 5006L /**< \ingroup err - PicoCompensation table is larger than maximum table length */ -#define PI_CNTR_NEXLINE_ERROR__5100 5100L -#define PI_CNTR_NEXLINE_ERROR 5100L /**< \ingroup err - Common error in Nexline firmware module */ -#define PI_CNTR_CHANNEL_ALREADY_USED__5101 5101L -#define PI_CNTR_CHANNEL_ALREADY_USED 5101L /**< \ingroup err - Output channel for Nexline can not be redefined for other usage */ -#define PI_CNTR_NEXLINE_TABLE_TOO_SMALL__5102 5102L -#define PI_CNTR_NEXLINE_TABLE_TOO_SMALL 5102L /**< \ingroup err - Memory for Nexline signals is too small */ -#define PI_CNTR_RNP_WITH_SERVO_ON__5103 5103L -#define PI_CNTR_RNP_WITH_SERVO_ON 5103L /**< \ingroup err - RNP can not be executed if axis is in closed loop */ -#define PI_CNTR_RNP_NEEDED__5104 5104L -#define PI_CNTR_RNP_NEEDED 5104L /**< \ingroup err - relax procedure (RNP) needed */ -#define PI_CNTR_AXIS_NOT_CONFIGURED__5200 5200L -#define PI_CNTR_AXIS_NOT_CONFIGURED 5200L /**< \ingroup err - Axis must be configured for this action */ -// -// End of Controller Errors -////////////////////////////////////////////////// - -////////////////////////////////////////////////// -// -// Interface Errors - Interface errors occuring while communicating with the controller -// -#define COM_NO_ERROR__0 0L -#define COM_NO_ERROR 0L /**< \ingroup err - No error occurred during function call */ -#define COM_ERROR__MINUS1 -1L -#define COM_ERROR -1L /**< \ingroup err - Error during com operation (could not be specified) */ -#define SEND_ERROR__MINUS2 -2L -#define SEND_ERROR -2L /**< \ingroup err - Error while sending data */ -#define REC_ERROR__MINUS3 -3L -#define REC_ERROR -3L /**< \ingroup err - Error while receiving data */ -#define NOT_CONNECTED_ERROR__MINUS4 -4L -#define NOT_CONNECTED_ERROR -4L /**< \ingroup err - Not connected (no port with given ID open) */ -#define COM_BUFFER_OVERFLOW__MINUS5 -5L -#define COM_BUFFER_OVERFLOW -5L /**< \ingroup err - Buffer overflow */ -#define CONNECTION_FAILED__MINUS6 -6L -#define CONNECTION_FAILED -6L /**< \ingroup err - Error while opening port */ -#define COM_TIMEOUT__MINUS7 -7L -#define COM_TIMEOUT -7L /**< \ingroup err - Timeout error */ -#define COM_MULTILINE_RESPONSE__MINUS8 -8L -#define COM_MULTILINE_RESPONSE -8L /**< \ingroup err - There are more lines waiting in buffer */ -#define COM_INVALID_ID__MINUS9 -9L -#define COM_INVALID_ID -9L /**< \ingroup err - There is no interface or DLL handle with the given ID */ -#define COM_NOTIFY_EVENT_ERROR__MINUS10 -10L -#define COM_NOTIFY_EVENT_ERROR -10L /**< \ingroup err - Event/message for notification could not be opened */ -#define COM_NOT_IMPLEMENTED__MINUS11 -11L -#define COM_NOT_IMPLEMENTED -11L /**< \ingroup err - Function not supported by this interface type */ -#define COM_ECHO_ERROR__MINUS12 -12L -#define COM_ECHO_ERROR -12L /**< \ingroup err - Error while sending \"echoed\" data */ -#define COM_GPIB_EDVR__MINUS13 -13L -#define COM_GPIB_EDVR -13L /**< \ingroup err - IEEE488: System error */ -#define COM_GPIB_ECIC__MINUS14 -14L -#define COM_GPIB_ECIC -14L /**< \ingroup err - IEEE488: Function requires GPIB board to be CIC */ -#define COM_GPIB_ENOL__MINUS15 -15L -#define COM_GPIB_ENOL -15L /**< \ingroup err - IEEE488: Write function detected no listeners */ -#define COM_GPIB_EADR__MINUS16 -16L -#define COM_GPIB_EADR -16L /**< \ingroup err - IEEE488: Interface board not addressed correctly */ -#define COM_GPIB_EARG__MINUS17 -17L -#define COM_GPIB_EARG -17L /**< \ingroup err - IEEE488: Invalid argument to function call */ -#define COM_GPIB_ESAC__MINUS18 -18L -#define COM_GPIB_ESAC -18L /**< \ingroup err - IEEE488: Function requires GPIB board to be SAC */ -#define COM_GPIB_EABO__MINUS19 -19L -#define COM_GPIB_EABO -19L /**< \ingroup err - IEEE488: I/O operation aborted */ -#define COM_GPIB_ENEB__MINUS20 -20L -#define COM_GPIB_ENEB -20L /**< \ingroup err - IEEE488: Interface board not found */ -#define COM_GPIB_EDMA__MINUS21 -21L -#define COM_GPIB_EDMA -21L /**< \ingroup err - IEEE488: Error performing DMA */ -#define COM_GPIB_EOIP__MINUS22 -22L -#define COM_GPIB_EOIP -22L /**< \ingroup err - IEEE488: I/O operation started before previous operation completed */ -#define COM_GPIB_ECAP__MINUS23 -23L -#define COM_GPIB_ECAP -23L /**< \ingroup err - IEEE488: No capability for intended operation */ -#define COM_GPIB_EFSO__MINUS24 -24L -#define COM_GPIB_EFSO -24L /**< \ingroup err - IEEE488: File system operation error */ -#define COM_GPIB_EBUS__MINUS25 -25L -#define COM_GPIB_EBUS -25L /**< \ingroup err - IEEE488: Command error during device call */ -#define COM_GPIB_ESTB__MINUS26 -26L -#define COM_GPIB_ESTB -26L /**< \ingroup err - IEEE488: Serial poll-status byte lost */ -#define COM_GPIB_ESRQ__MINUS27 -27L -#define COM_GPIB_ESRQ -27L /**< \ingroup err - IEEE488: SRQ remains asserted */ -#define COM_GPIB_ETAB__MINUS28 -28L -#define COM_GPIB_ETAB -28L /**< \ingroup err - IEEE488: Return buffer full */ -#define COM_GPIB_ELCK__MINUS29 -29L -#define COM_GPIB_ELCK -29L /**< \ingroup err - IEEE488: Address or board locked */ -#define COM_RS_INVALID_DATA_BITS__MINUS30 -30L -#define COM_RS_INVALID_DATA_BITS -30L /**< \ingroup err - RS-232: 5 data bits with 2 stop bits is an invalid combination, as is 6, 7, or 8 data bits with 1.5 stop bits */ -#define COM_ERROR_RS_SETTINGS__MINUS31 -31L -#define COM_ERROR_RS_SETTINGS -31L /**< \ingroup err - RS-232: Error configuring the COM port */ -#define COM_INTERNAL_RESOURCES_ERROR__MINUS32 -32L -#define COM_INTERNAL_RESOURCES_ERROR -32L /**< \ingroup err - Error dealing with internal system resources (events, threads, ...) */ -#define COM_DLL_FUNC_ERROR__MINUS33 -33L -#define COM_DLL_FUNC_ERROR -33L /**< \ingroup err - A DLL or one of the required functions could not be loaded */ -#define COM_FTDIUSB_INVALID_HANDLE__MINUS34 -34L -#define COM_FTDIUSB_INVALID_HANDLE -34L /**< \ingroup err - FTDIUSB: invalid handle */ -#define COM_FTDIUSB_DEVICE_NOT_FOUND__MINUS35 -35L -#define COM_FTDIUSB_DEVICE_NOT_FOUND -35L /**< \ingroup err - FTDIUSB: device not found */ -#define COM_FTDIUSB_DEVICE_NOT_OPENED__MINUS36 -36L -#define COM_FTDIUSB_DEVICE_NOT_OPENED -36L /**< \ingroup err - FTDIUSB: device not opened */ -#define COM_FTDIUSB_IO_ERROR__MINUS37 -37L -#define COM_FTDIUSB_IO_ERROR -37L /**< \ingroup err - FTDIUSB: IO error */ -#define COM_FTDIUSB_INSUFFICIENT_RESOURCES__MINUS38 -38L -#define COM_FTDIUSB_INSUFFICIENT_RESOURCES -38L /**< \ingroup err - FTDIUSB: insufficient resources */ -#define COM_FTDIUSB_INVALID_PARAMETER__MINUS39 -39L -#define COM_FTDIUSB_INVALID_PARAMETER -39L /**< \ingroup err - FTDIUSB: invalid parameter */ -#define COM_FTDIUSB_INVALID_BAUD_RATE__MINUS40 -40L -#define COM_FTDIUSB_INVALID_BAUD_RATE -40L /**< \ingroup err - FTDIUSB: invalid baud rate */ -#define COM_FTDIUSB_DEVICE_NOT_OPENED_FOR_ERASE__MINUS41 -41L -#define COM_FTDIUSB_DEVICE_NOT_OPENED_FOR_ERASE -41L /**< \ingroup err - FTDIUSB: device not opened for erase */ -#define COM_FTDIUSB_DEVICE_NOT_OPENED_FOR_WRITE__MINUS42 -42L -#define COM_FTDIUSB_DEVICE_NOT_OPENED_FOR_WRITE -42L /**< \ingroup err - FTDIUSB: device not opened for write */ -#define COM_FTDIUSB_FAILED_TO_WRITE_DEVICE__MINUS43 -43L -#define COM_FTDIUSB_FAILED_TO_WRITE_DEVICE -43L /**< \ingroup err - FTDIUSB: failed to write device */ -#define COM_FTDIUSB_EEPROM_READ_FAILED__MINUS44 -44L -#define COM_FTDIUSB_EEPROM_READ_FAILED -44L /**< \ingroup err - FTDIUSB: EEPROM read failed */ -#define COM_FTDIUSB_EEPROM_WRITE_FAILED__MINUS45 -45L -#define COM_FTDIUSB_EEPROM_WRITE_FAILED -45L /**< \ingroup err - FTDIUSB: EEPROM write failed */ -#define COM_FTDIUSB_EEPROM_ERASE_FAILED__MINUS46 -46L -#define COM_FTDIUSB_EEPROM_ERASE_FAILED -46L /**< \ingroup err - FTDIUSB: EEPROM erase failed */ -#define COM_FTDIUSB_EEPROM_NOT_PRESENT__MINUS47 -47L -#define COM_FTDIUSB_EEPROM_NOT_PRESENT -47L /**< \ingroup err - FTDIUSB: EEPROM not present */ -#define COM_FTDIUSB_EEPROM_NOT_PROGRAMMED__MINUS48 -48L -#define COM_FTDIUSB_EEPROM_NOT_PROGRAMMED -48L /**< \ingroup err - FTDIUSB: EEPROM not programmed */ -#define COM_FTDIUSB_INVALID_ARGS__MINUS49 -49L -#define COM_FTDIUSB_INVALID_ARGS -49L /**< \ingroup err - FTDIUSB: invalid arguments */ -#define COM_FTDIUSB_NOT_SUPPORTED__MINUS50 -50L -#define COM_FTDIUSB_NOT_SUPPORTED -50L /**< \ingroup err - FTDIUSB: not supported */ -#define COM_FTDIUSB_OTHER_ERROR__MINUS51 -51L -#define COM_FTDIUSB_OTHER_ERROR -51L /**< \ingroup err - FTDIUSB: other error */ -#define COM_PORT_ALREADY_OPEN__MINUS52 -52L -#define COM_PORT_ALREADY_OPEN -52L /**< \ingroup err - Error while opening the COM port: was already open */ -#define COM_PORT_CHECKSUM_ERROR__MINUS53 -53L -#define COM_PORT_CHECKSUM_ERROR -53L /**< \ingroup err - Checksum error in received data from COM port */ -#define COM_SOCKET_NOT_READY__MINUS54 -54L -#define COM_SOCKET_NOT_READY -54L /**< \ingroup err - Socket not ready, you should call the function again */ -#define COM_SOCKET_PORT_IN_USE__MINUS55 -55L -#define COM_SOCKET_PORT_IN_USE -55L /**< \ingroup err - Port is used by another socket */ -#define COM_SOCKET_NOT_CONNECTED__MINUS56 -56L -#define COM_SOCKET_NOT_CONNECTED -56L /**< \ingroup err - Socket not connected (or not valid) */ -#define COM_SOCKET_TERMINATED__MINUS57 -57L -#define COM_SOCKET_TERMINATED -57L /**< \ingroup err - Connection terminated (by peer) */ -#define COM_SOCKET_NO_RESPONSE__MINUS58 -58L -#define COM_SOCKET_NO_RESPONSE -58L /**< \ingroup err - Can't connect to peer */ -#define COM_SOCKET_INTERRUPTED__MINUS59 -59L -#define COM_SOCKET_INTERRUPTED -59L /**< \ingroup err - Operation was interrupted by a nonblocked signal */ -#define COM_PCI_INVALID_ID__MINUS60 -60L -#define COM_PCI_INVALID_ID -60L /**< \ingroup err - No Device with this ID is present */ -#define COM_PCI_ACCESS_DENIED__MINUS61 -61L -#define COM_PCI_ACCESS_DENIED -61L /**< \ingroup err - Driver could not be opened (on Vista: run as administrator!) */ -// -// End of Interface Errors -////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// obsolet, provided for backward compatibility -#define PI_CNTR_MOVE_WITHOUT_INI 5 // name "INI" is misleading - we mean "reference" -#define PI_CNTR_INVALID_AXIS 23 // misleading name: INVALID means something different than "illegal" -// -///////////////////////////////////////////////////////////////////////////// - -#endif // __PI_CONTROLLER_ERROS_H__ - diff --git a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/translateerror.c b/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/translateerror.c deleted file mode 100755 index d505bfc5..00000000 --- a/motorApp/PI_GCS2/PI_GCS2_App/PI_GCS2_Src/translateerror.c +++ /dev/null @@ -1,3132 +0,0 @@ -/* - * TranslateErrors.c - * - * - * This file is automagically generated from the central error code list. - * DO NOT ADD ERROR CODES IN THIS FILE! Use the error list and the generation tool instead! - * - */ - -#include -#include - -#include "picontrollererrors.h" - -#ifndef BOOL -#define BOOL int -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -/** - * translate error code to c-string - */ -BOOL TranslatePIError(const int error, char* szBuffer, const int maxlen) -{ - switch (error) - { -/************************************************* - ** - ** Dll Errors - DLL errors occured in GCS DLL - */ - case(PI_UNKNOWN_AXIS_IDENTIFIER): /* -1001 */ - { - if (strlen("Unknown axis identifier")0")0"); - return TRUE; - } - break; - } - case(PI_WAV_SAMPLES_OUT_OF_RANGE): /* -1022 */ - { - if (strlen("Incorrect number of samples given to WAV") - -# Set this when your IOC and the host use different paths -# to access the application. This will be needed to boot -# from a Microsoft FTP server or with some NFS mounts. -# You must rebuild in the iocBoot directory for this to -# take effect. -#IOCS_APPL_TOP = diff --git a/motorApp/PI_GCS2/configure/Makefile b/motorApp/PI_GCS2/configure/Makefile deleted file mode 100755 index 914f4f88..00000000 --- a/motorApp/PI_GCS2/configure/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -TOP=.. - -include $(TOP)/configure/CONFIG - -TARGETS = $(CONFIG_TARGETS) -CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS))) - -include $(TOP)/configure/RULES diff --git a/motorApp/PI_GCS2/configure/RELEASE b/motorApp/PI_GCS2/configure/RELEASE deleted file mode 100755 index a5ae5e13..00000000 --- a/motorApp/PI_GCS2/configure/RELEASE +++ /dev/null @@ -1,36 +0,0 @@ -# RELEASE - Location of external support modules -# -# IF YOU MAKE ANY CHANGES to this file you must subsequently -# do a "gnumake rebuild" in this application's top level -# directory. -# -# The build process does not check dependencies against files -# that are outside this application, thus you should do a -# "gnumake rebuild" in the top level directory after EPICS_BASE -# or any other external module pointed to below is rebuilt. -# -# Host- or target-specific settings can be given in files named -# RELEASE.$(EPICS_HOST_ARCH).Common -# RELEASE.Common.$(T_A) -# RELEASE.$(EPICS_HOST_ARCH).$(T_A) -# -# This file should ONLY define paths to other support modules, -# or include statements that pull in similar RELEASE files. -# Build settings that are NOT module paths should appear in a -# CONFIG_SITE file. - -TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top - -# If using the sequencer, point SNCSEQ at its top directory: -#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq - -# EPICS_BASE usually appears last so other apps can override stuff: -EPICS_BASE=/home/sra/epics/base - -# Set RULES here if you want to take build rules from somewhere -# other than EPICS_BASE: -#RULES=/path/to/epics/support/module/rules/x-y - -ASYN=/home/sra/epics/synApps_5_6/support/asyn-4-18 -MOTOR=/home/sra/epics/synApps_5_6/support/motor-6-7 - diff --git a/motorApp/PI_GCS2/configure/RULES b/motorApp/PI_GCS2/configure/RULES deleted file mode 100755 index 6a97327c..00000000 --- a/motorApp/PI_GCS2/configure/RULES +++ /dev/null @@ -1,6 +0,0 @@ -# RULES - -include $(CONFIG)/RULES - -# Library should be rebuilt because LIBOBJS may have changed. -$(LIBNAME): ../Makefile diff --git a/motorApp/PI_GCS2/configure/RULES.ioc b/motorApp/PI_GCS2/configure/RULES.ioc deleted file mode 100755 index a445ea56..00000000 --- a/motorApp/PI_GCS2/configure/RULES.ioc +++ /dev/null @@ -1,2 +0,0 @@ -#RULES.ioc -include $(CONFIG)/RULES.ioc diff --git a/motorApp/PI_GCS2/configure/RULES_DIRS b/motorApp/PI_GCS2/configure/RULES_DIRS deleted file mode 100755 index 3535ca4f..00000000 --- a/motorApp/PI_GCS2/configure/RULES_DIRS +++ /dev/null @@ -1,2 +0,0 @@ -#RULES_DIRS -include $(CONFIG)/RULES_DIRS diff --git a/motorApp/PI_GCS2/configure/RULES_TOP b/motorApp/PI_GCS2/configure/RULES_TOP deleted file mode 100755 index ad13fced..00000000 --- a/motorApp/PI_GCS2/configure/RULES_TOP +++ /dev/null @@ -1,3 +0,0 @@ -#RULES_TOP -include $(CONFIG)/RULES_TOP -