minor, trivial and cosmetic changes not related to state machine implementation

r1938 | dcl | 2007-05-04 13:47:21 +1000 (Fri, 04 May 2007) | 2 lines
This commit is contained in:
Douglas Clowes
2007-05-04 13:47:21 +10:00
parent 911c0d8450
commit bbdc2f820d

View File

@@ -37,12 +37,12 @@
* with valid values. * with valid values.
* \see getDMCSetting * \see getDMCSetting
*/ */
enum dmcsetting {dmcspeed, dmcacceleration, dmcdeceleration};
typedef struct __MoDriv DMC2280Driv, *pDMC2280Driv; typedef struct __MoDriv DMC2280Driv, *pDMC2280Driv;
typedef struct __command Command, *pCommand; typedef struct __command Command, *pCommand;
typedef int (*CommandCallback)(pCommand pCmd); typedef int (*CommandCallback)(pCommand pCmd);
enum dmcsetting {dmcspeed, dmcacceleration, dmcdeceleration};
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
The motor driver structure. Please note that the first set of fields has The motor driver structure. Please note that the first set of fields has
be identical with the fields of AbstractModriv in ../modriv.h be identical with the fields of AbstractModriv in ../modriv.h
@@ -92,7 +92,7 @@ struct __MoDriv {
int motorHome; /**< motor home position in steps */ int motorHome; /**< motor home position in steps */
int noPowerSave; /**< Flag = 1 to leave motors on after a move */ int noPowerSave; /**< Flag = 1 to leave motors on after a move */
float stepsPerX; /**< steps per physical unit */ float stepsPerX; /**< steps per physical unit */
int abs_endcoder; /**< Flag = 1 if there is an abs enc */ int abs_encoder; /**< Flag = 1 if there is an abs enc */
int absEncHome; /**< Home position in counts for abs enc */ int absEncHome; /**< Home position in counts for abs enc */
float cntsPerX; /**< absolute encoder counts per physical unit */ float cntsPerX; /**< absolute encoder counts per physical unit */
int motOffDelay; /**< number of msec to wait before switching motor off, default=0 */ int motOffDelay; /**< number of msec to wait before switching motor off, default=0 */
@@ -119,6 +119,7 @@ struct __MoDriv {
int DMC2280MotionControl = 1; /* defaults to enabled */ int DMC2280MotionControl = 1; /* defaults to enabled */
#define AIR_POLL_TIMER 1000
#define AIRPADS_DOWN 0 #define AIRPADS_DOWN 0
#define AIRPADS_RAISE 1 #define AIRPADS_RAISE 1
#define AIRPADS_UP 2 #define AIRPADS_UP 2
@@ -134,7 +135,7 @@ int DMC2280MotionControl = 1; /* defaults to enabled */
#define RVRSLIM -8 #define RVRSLIM -8
#define FWDLIM -9 #define FWDLIM -9
#define POSFAULT -11 // NOT SET #define POSFAULT -11 // NOT SET
#define BADCUSHION -12 // NOT SET #define BADCUSHION -12 // Air Cushion Fault
#define ERRORLIM -13 #define ERRORLIM -13
#define IMPOSSIBLE_LIM_SW -14 #define IMPOSSIBLE_LIM_SW -14
#define BGFAIL -15 // NOT SET #define BGFAIL -15 // NOT SET
@@ -144,7 +145,7 @@ int DMC2280MotionControl = 1; /* defaults to enabled */
#define MOTCMDTMO -19 /* Motor Command Timeout */ #define MOTCMDTMO -19 /* Motor Command Timeout */
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
#define STATUSMOVING 128 /* Motor is moving */ #define STATUSMOVING 128 /* Motor is moving */
#define STATUSERRORLIMIT 64 /* Number of errorss exceed limit */ #define STATUSERRORLIMIT 64 /* Number of errors exceed limit */
#define STATUSOFF 32 /* Motor off */ #define STATUSOFF 32 /* Motor off */
#define STATUSFWDLIMIT 8 /* Forward limit switch active */ #define STATUSFWDLIMIT 8 /* Forward limit switch active */
#define STATUSRVRSLIMIT 4 /* Reverse limit switch active */ #define STATUSRVRSLIMIT 4 /* Reverse limit switch active */
@@ -321,7 +322,7 @@ static int DMC_Rx(void* ctx, int rxchar) {
return iRet; return iRet;
} }
static int DMC_SendCmd(pMultiChan unit, static int DMC_SendCommand(pMultiChan unit,
char* command, int cmd_len, char* command, int cmd_len,
CommandCallback callback, void* context, int rsp_len) CommandCallback callback, void* context, int rsp_len)
{ {
@@ -354,6 +355,15 @@ static int DMC_SendCmd(pMultiChan unit,
return MultiChanEnque(unit, myCmd, DMC_Tx, DMC_Rx); return MultiChanEnque(unit, myCmd, DMC_Tx, DMC_Rx);
} }
static int DMC_SendCmd(pDMC2280Driv self,
char* command,
CommandCallback callback)
{
return DMC_SendCommand(self->mcc,
command, strlen(command),
callback, self, CMDLEN);
}
static void DMC_Notify(void* context, int event) static void DMC_Notify(void* context, int event)
{ {
pDMC2280Driv self = (pDMC2280Driv) context; pDMC2280Driv self = (pDMC2280Driv) context;
@@ -447,7 +457,7 @@ static int DMC_transact(pDMC2280Driv self, void *send, int sendLen,
assert(self); assert(self);
txn.transReply = reply; txn.transReply = reply;
txn.transWait = 1; txn.transWait = 1;
DMC_SendCmd(self->mcc, DMC_SendCommand(self->mcc,
send, sendLen, send, sendLen,
TransCallback, &txn, replyLen); TransCallback, &txn, replyLen);
while (txn.transWait == 1) while (txn.transWait == 1)
@@ -460,7 +470,7 @@ static int DMC_transact(pDMC2280Driv self, void *send, int sendLen,
static int DMC2280Queue(pDMC2280Driv self, char *cmd, CommandCallback cb) { static int DMC2280Queue(pDMC2280Driv self, char *cmd, CommandCallback cb) {
if (cb == NULL) if (cb == NULL)
cb = SendCallback; cb = SendCallback;
return DMC_SendCmd(self->mcc, cmd, strlen(cmd), cb, self, CMDLEN); return DMC_SendCmd(self, cmd, cb);
} }
/** \brief Sends a DMC2280 command to the motor controller. /** \brief Sends a DMC2280 command to the motor controller.
@@ -704,7 +714,7 @@ static int DMC2280RunCommon(pDMC2280Driv self,float fValue){
} }
} }
if (1 == self->abs_endcoder) { if (1 == self->abs_encoder) {
absEncHome = self->absEncHome; absEncHome = self->absEncHome;
cntsPerX = self->cntsPerX; cntsPerX = self->cntsPerX;
#if 0 #if 0
@@ -798,8 +808,10 @@ static int airpad_callback(pCommand pCmd) {
if (resp_len > 0) { if (resp_len > 0) {
float fReply; float fReply;
if (self->debug) if (self->debug) {
SICSLogWrite(resp, eStatus); SICSLogWrite(pCmd->inp_buf, eStatus);
SICSLogWrite(pCmd->out_buf, eStatus);
}
fReply = (float) atof(resp); fReply = (float) atof(resp);
if (self->airpad_state == AIRPADS_RAISE && fReply > 0) { if (self->airpad_state == AIRPADS_RAISE && fReply > 0) {
int iRet; int iRet;
@@ -838,7 +850,8 @@ static int airpad_timeout(void* ctx, int mode) {
return 0; return 0;
} }
--self->airpad_counter; --self->airpad_counter;
NetWatchRegisterTimer(&self->airpad_timer, 1000, NetWatchRegisterTimer(&self->airpad_timer,
AIR_POLL_TIMER,
airpad_timeout, self); airpad_timeout, self);
if (FAILURE == DMC2280Queue(self, "MG APDONE", airpad_callback)) { if (FAILURE == DMC2280Queue(self, "MG APDONE", airpad_callback)) {
@@ -876,7 +889,8 @@ static int DMC_AirPads(pDMC2280Driv self, int flag) {
return 0; return 0;
} }
self->airpad_counter = 10; self->airpad_counter = 10;
NetWatchRegisterTimer(&self->airpad_timer, 1000, NetWatchRegisterTimer(&self->airpad_timer,
AIR_POLL_TIMER,
airpad_timeout, self); airpad_timeout, self);
return 1; return 1;
} }
@@ -913,7 +927,7 @@ static int motoff_timeout(void* context, int mode) {
* - 0 MOTOR BLOCKED, no significant change in position detected. * - 0 MOTOR BLOCKED, no significant change in position detected.
*/ */
static int checkMotion(void *pData) { static int checkMotion(void *pData) {
float precision, steps, counts, ratio_obs, ratio_exp, ratio_cmp; float steps, counts, ratio_obs, ratio_exp, ratio_cmp;
long int usec_TimeDiff; long int usec_TimeDiff;
struct timeval now; struct timeval now;
@@ -921,7 +935,7 @@ static int checkMotion(void *pData) {
self = (pDMC2280Driv)pData; self = (pDMC2280Driv)pData;
assert(self != NULL); assert(self != NULL);
/* we can only test if there is an absolute encoder */ /* we can only test if there is an absolute encoder */
if (!self->abs_endcoder) if (!self->abs_encoder)
return 1; return 1;
if (self->time_lastPos_set.tv_sec == 0) { if (self->time_lastPos_set.tv_sec == 0) {
/* first time - initialise the data */ /* first time - initialise the data */
@@ -937,9 +951,6 @@ static int checkMotion(void *pData) {
usec_TimeDiff -= self->time_lastPos_set.tv_usec; usec_TimeDiff -= self->time_lastPos_set.tv_usec;
if (usec_TimeDiff < (long int)(1e6*self->blockage_ckInterval)) if (usec_TimeDiff < (long int)(1e6*self->blockage_ckInterval))
return 1; return 1;
if (self->pMot == NULL)
self->pMot = FindMotor(pServ->pSics, self->name);
MotorGetPar(self->pMot,"precision",&precision);
if (FAILURE == readMotion(self, &steps, &counts)) if (FAILURE == readMotion(self, &steps, &counts))
return 0; return 0;
/* If not stepping, then not blocked */ /* If not stepping, then not blocked */
@@ -1014,7 +1025,7 @@ static int DMC2280GetPos(void *pData, float *fPos){
reply[0]='\0'; reply[0]='\0';
self = (pDMC2280Driv)pData; self = (pDMC2280Driv)pData;
assert(self != NULL); assert(self != NULL);
if (1 == self->abs_endcoder) { if (1 == self->abs_encoder) {
if (readAbsEnc(self, &absEncPos) == FAILURE) if (readAbsEnc(self, &absEncPos) == FAILURE)
return HWFault; return HWFault;
*fPos = (absEncPos - self->absEncHome)/self->cntsPerX + self->home; *fPos = (absEncPos - self->absEncHome)/self->cntsPerX + self->home;
@@ -1066,9 +1077,7 @@ static int DMC2280Run(void *pData,float fValue){
float currPos; float currPos;
DMC2280GetPos(pData, &currPos); DMC2280GetPos(pData, &currPos);
self->lastPosition = currPos; self->lastPosition = currPos;
#if 1
self->time_lastPos_set.tv_sec = 0; self->time_lastPos_set.tv_sec = 0;
#endif
} while (0); } while (0);
self->fTarget = fValue; self->fTarget = fValue;
@@ -1172,7 +1181,7 @@ static int DMC2280Status(void *pData){
return HWFault; return HWFault;
} }
#ifdef BACKLASHFIX #ifdef BACKLASHFIX
if (self->abs_endcoder == 1) { if (self->abs_encoder == 1) {
/* Make sure that the servo loop is closed by checking if /* Make sure that the servo loop is closed by checking if
* the CLSLOOP thread is running on the controller.*/ * the CLSLOOP thread is running on the controller.*/
if (FAILURE == DMC2280SendReceive(self, "MG _XQ1", reply)) if (FAILURE == DMC2280SendReceive(self, "MG _XQ1", reply))
@@ -1521,7 +1530,7 @@ static int DMC2280GetPar(void *pData, char *name,
*fValue = self->backlash_offset; *fValue = self->backlash_offset;
return 1; return 1;
} }
if (self->abs_endcoder != 0) { if (self->abs_encoder != 0) {
if (strcasecmp(name,"absenc") == 0) { if (strcasecmp(name,"absenc") == 0) {
if (readAbsEnc(self, fValue) == SUCCESS) if (readAbsEnc(self, fValue) == SUCCESS)
return 1; return 1;
@@ -1709,7 +1718,7 @@ static int DMC2280SetPar(void *pData, SConnection *pCon,
/* Invoke Home Run routine in controller, /* Invoke Home Run routine in controller,
* managers only */ * managers only */
if(self->abs_endcoder == 0 && strcasecmp(name,"homerun") == 0) { if(self->abs_encoder == 0 && strcasecmp(name,"homerun") == 0) {
if(!SCMatchRights(pCon,usMugger)) if(!SCMatchRights(pCon,usMugger))
return 1; return 1;
else { else {
@@ -1786,14 +1795,16 @@ static int DMC2280SetPar(void *pData, SConnection *pCon,
* \param *name (r) name of motor. * \param *name (r) name of motor.
* \param *pCon (r) connection object. * \param *pCon (r) connection object.
*/ */
static void DMC2280StrList(void *self, char *name, SConnection *pCon){ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){
char buffer[BUFFLEN]; char buffer[BUFFLEN];
snprintf(buffer, BUFFLEN, "%s.long_name = %s\n", name, ((pDMC2280Driv)self)->long_name); snprintf(buffer, BUFFLEN, "%s.part = %s\n", name, self->part);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.axis = %c\n", name, ((pDMC2280Driv)self)->axisLabel); snprintf(buffer, BUFFLEN, "%s.long_name = %s\n", name, self->long_name);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.units = %s\n", name, ((pDMC2280Driv)self)->units); snprintf(buffer, BUFFLEN, "%s.axis = %c\n", name, self->axisLabel);
SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.units = %s\n", name, self->units);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
return; return;
} }
@@ -1802,50 +1813,51 @@ static void DMC2280StrList(void *self, char *name, SConnection *pCon){
* \param *name (r) name of motor. * \param *name (r) name of motor.
* \param *pCon (r) connection object. * \param *pCon (r) connection object.
*/ */
static void DMC2280List(void *self, char *name, SConnection *pCon){ static void DMC2280List(void *pData, char *name, SConnection *pCon){
pDMC2280Driv self = (pDMC2280Driv) pData;
char buffer[BUFFLEN]; char buffer[BUFFLEN];
snprintf(buffer, BUFFLEN, "%s.home = %f\n", name, ((pDMC2280Driv)self)->home); snprintf(buffer, BUFFLEN, "%s.home = %f\n", name, self->home);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.speed = %f\n", name, ((pDMC2280Driv)self)->speed); snprintf(buffer, BUFFLEN, "%s.speed = %f\n", name, self->speed);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.maxSpeed = %f\n", name, ((pDMC2280Driv)self)->maxSpeed); snprintf(buffer, BUFFLEN, "%s.maxSpeed = %f\n", name, self->maxSpeed);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.accel = %f\n", name, ((pDMC2280Driv)self)->accel); snprintf(buffer, BUFFLEN, "%s.accel = %f\n", name, self->accel);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.maxAccel = %f\n", name, ((pDMC2280Driv)self)->maxAccel); snprintf(buffer, BUFFLEN, "%s.maxAccel = %f\n", name, self->maxAccel);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.decel = %f\n", name, ((pDMC2280Driv)self)->decel); snprintf(buffer, BUFFLEN, "%s.decel = %f\n", name, self->decel);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.maxDecel = %f\n", name, ((pDMC2280Driv)self)->maxDecel); snprintf(buffer, BUFFLEN, "%s.maxDecel = %f\n", name, self->maxDecel);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.motOffDelay = %d\n", name, ((pDMC2280Driv)self)->motOffDelay); snprintf(buffer, BUFFLEN, "%s.motOffDelay = %d\n", name, self->motOffDelay);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Debug = %d\n", name, ((pDMC2280Driv)self)->debug); snprintf(buffer, BUFFLEN, "%s.Debug = %d\n", name, self->debug);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Settle = %d\n", name, ((pDMC2280Driv)self)->settle); snprintf(buffer, BUFFLEN, "%s.Settle = %d\n", name, self->settle);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Blockage_Check_Interval = %f\n", name, ((pDMC2280Driv)self)->blockage_ckInterval); snprintf(buffer, BUFFLEN, "%s.Blockage_Check_Interval = %f\n", name, self->blockage_ckInterval);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Blockage_Thresh = %f\n", name, ((pDMC2280Driv)self)->blockage_thresh); snprintf(buffer, BUFFLEN, "%s.Blockage_Thresh = %f\n", name, self->blockage_thresh);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Blockage_Ratio = %f\n", name, ((pDMC2280Driv)self)->blockage_ratio); snprintf(buffer, BUFFLEN, "%s.Blockage_Ratio = %f\n", name, self->blockage_ratio);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Blockage_Fail = %d\n", name, ((pDMC2280Driv)self)->blockage_fail); snprintf(buffer, BUFFLEN, "%s.Blockage_Fail = %d\n", name, self->blockage_fail);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.Backlash_offset = %f\n", name, ((pDMC2280Driv)self)->backlash_offset); snprintf(buffer, BUFFLEN, "%s.Backlash_offset = %f\n", name, self->backlash_offset);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.AirPads = %d\n", name, ((pDMC2280Driv)self)->has_airpads); snprintf(buffer, BUFFLEN, "%s.AirPads = %d\n", name, self->has_airpads);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.absEnc = %d\n", name, ((pDMC2280Driv)self)->abs_endcoder); snprintf(buffer, BUFFLEN, "%s.absEnc = %d\n", name, self->abs_encoder);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
if (((pDMC2280Driv)self)->abs_endcoder) { if (self->abs_encoder) {
snprintf(buffer, BUFFLEN, "%s.absEncHome = %d\n", name, ((pDMC2280Driv)self)->absEncHome); snprintf(buffer, BUFFLEN, "%s.absEncHome = %d\n", name, self->absEncHome);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.cntsPerX = %f\n", name, ((pDMC2280Driv)self)->cntsPerX); snprintf(buffer, BUFFLEN, "%s.cntsPerX = %f\n", name, self->cntsPerX);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
} }
snprintf(buffer, BUFFLEN, "%s.stepsPerX = %f\n", name, ((pDMC2280Driv)self)->stepsPerX); snprintf(buffer, BUFFLEN, "%s.stepsPerX = %f\n", name, self->stepsPerX);
SCWrite(pCon, buffer, eStatus); SCWrite(pCon, buffer, eStatus);
return; return;
} }
@@ -1987,6 +1999,14 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
pNew->backlash_offset = 0.0; pNew->backlash_offset = 0.0;
/* PARAMETERS: Fetch parameter values */ /* PARAMETERS: Fetch parameter values */
/* Debug: this motor driver logs exchanges */
if ((pPtr=getParam(pCon, interp, params,"debug",_OPTIONAL)) == NULL)
pNew->debug=0;
else {
sscanf(pPtr,"%d",&(pNew->debug));
}
if ((pPtr=getParam(pCon, interp, params, LONG_NAME, _OPTIONAL)) != NULL) { if ((pPtr=getParam(pCon, interp, params, LONG_NAME, _OPTIONAL)) != NULL) {
strncpy(pNew->long_name, pPtr, sizeof(pNew->long_name)); strncpy(pNew->long_name, pPtr, sizeof(pNew->long_name));
pNew->long_name[sizeof(pNew->long_name) - 1] = '\0'; pNew->long_name[sizeof(pNew->long_name) - 1] = '\0';
@@ -2047,13 +2067,6 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
else else
sscanf(pPtr,"%d",&(pNew->motOffDelay)); sscanf(pPtr,"%d",&(pNew->motOffDelay));
/* Debug: this motor driver logs exchanges */
if ((pPtr=getParam(pCon, interp, params,"debug",_OPTIONAL)) == NULL)
pNew->debug=0;
else {
sscanf(pPtr,"%d",&(pNew->debug));
}
/* SETTLE: this motor need time to settle */ /* SETTLE: this motor need time to settle */
if ((pPtr=getParam(pCon, interp, params,"settle",_OPTIONAL)) == NULL) if ((pPtr=getParam(pCon, interp, params,"settle",_OPTIONAL)) == NULL)
pNew->settle=0; pNew->settle=0;
@@ -2077,15 +2090,15 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
/* ABSENC: If the parameter requires an abs enc add it to the else block */ /* ABSENC: If the parameter requires an abs enc add it to the else block */
if ((pPtr=getParam(pCon, interp, params,"absenc",_OPTIONAL)) == NULL) if ((pPtr=getParam(pCon, interp, params,"absenc",_OPTIONAL)) == NULL)
pNew->abs_endcoder=0; pNew->abs_encoder = 0;
else { else {
sscanf(pPtr,"%d",&(pNew->abs_endcoder)); sscanf(pPtr,"%d",&(pNew->abs_encoder));
if ((pPtr=getParam(pCon, interp, params,"absenchome",_REQUIRED)) == NULL) if ((pPtr=getParam(pCon, interp, params,"absenchome",_REQUIRED)) == NULL)
pNew->absEncHome=0; pNew->absEncHome = 0;
else else
sscanf(pPtr,"%d",&(pNew->absEncHome)); sscanf(pPtr,"%d",&(pNew->absEncHome));
if ((pPtr=getParam(pCon, interp, params,"cntsperx",_REQUIRED)) == NULL) if ((pPtr=getParam(pCon, interp, params,"cntsperx",_REQUIRED)) == NULL)
pNew->cntsPerX=1.0; pNew->cntsPerX = 1.0;
else else
sscanf(pPtr,"%f",&(pNew->cntsPerX)); sscanf(pPtr,"%f",&(pNew->cntsPerX));
} }
@@ -2150,6 +2163,7 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData,
return 1; return 1;
} }
else if (strcasecmp("list", argv[1]) == 0) { else if (strcasecmp("list", argv[1]) == 0) {
/* Handle in generic motor driver */
} }
else if (strcasecmp("slist", argv[1]) == 0) { else if (strcasecmp("slist", argv[1]) == 0) {
DMC2280StrList(self, argv[0], pCon); DMC2280StrList(self, argv[0], pCon);
@@ -2176,8 +2190,7 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData,
return 1; return 1;
} }
newZero = (currPos - newValue); newZero = (currPos - newValue);
MotorSetPar(self->pMot, pCon, "softzero", newZero); return MotorSetPar(self->pMot, pCon, "softzero", newZero);
return 1;
} }
} }
return MotorAction(pCon, pSics, pData, argc, argv); return MotorAction(pCon, pSics, pData, argc, argv);