- ECB motors without encoders, with encoders and with control bits now work
This commit is contained in:
48
motor.c
48
motor.c
@ -12,6 +12,9 @@
|
||||
endscript facility added: Mark Koennecke, August 2002
|
||||
Modified to support driver parameters, Mark Koennecke, January 2003
|
||||
|
||||
TODO: currently motor drivers have to be installed in MakeMotor
|
||||
and remembered in KillMotor. Sort this some day!
|
||||
|
||||
Copyright:
|
||||
|
||||
Labor fuer Neutronenstreuung
|
||||
@ -463,6 +466,10 @@ extern void KillPiPiezo(void *pData);
|
||||
{
|
||||
KillPiPiezo((void *)pM->pDriver);
|
||||
}
|
||||
else if(strcmp(pM->drivername,"ECB") == 0)
|
||||
{
|
||||
free(pM->pDriver);
|
||||
}
|
||||
free(pM->drivername);
|
||||
}
|
||||
|
||||
@ -530,6 +537,19 @@ extern void KillPiPiezo(void *pData);
|
||||
assert(self);
|
||||
assert(pCon);
|
||||
|
||||
/*
|
||||
try set driver parameters
|
||||
*/
|
||||
if(self->pDriver->SetDriverPar != NULL)
|
||||
{
|
||||
iRet = self->pDriver->SetDriverPar(self->pDriver,pCon,name,fVal);
|
||||
if(iRet == 1)
|
||||
{
|
||||
return iRet;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(strcmp(name,"softzero") == 0)
|
||||
{
|
||||
/* set it first, this also tests the necessary privileges */
|
||||
@ -571,16 +591,6 @@ extern void KillPiPiezo(void *pData);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
try set driver parameters
|
||||
*/
|
||||
if(iRet == 0)
|
||||
{
|
||||
if(self->pDriver->SetDriverPar != NULL)
|
||||
{
|
||||
iRet = self->pDriver->SetDriverPar(self->pDriver,pCon,name,fVal);
|
||||
}
|
||||
}
|
||||
return iRet;
|
||||
}
|
||||
/*---------------------------------------------------------------------------
|
||||
@ -866,6 +876,7 @@ extern void KillPiPiezo(void *pData);
|
||||
*/
|
||||
|
||||
extern MotorDriver *MakePiPiezo(Tcl_Interp *pTcl, char *pArray);
|
||||
extern MotorDriver *CreateECBMotor(SConnection *pCon, int argc, char *argv[]);
|
||||
|
||||
int MotorCreate(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
int argc, char *argv[])
|
||||
@ -906,6 +917,23 @@ extern MotorDriver *MakePiPiezo(Tcl_Interp *pTcl, char *pArray);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if(strcmp(argv[2],"ecb") == 0)
|
||||
{
|
||||
iD = argc - 3;
|
||||
pDriver = CreateECBMotor(pCon,iD,&argv[3]);
|
||||
if(!pDriver)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* create the motor */
|
||||
pNew = MotorInit("ECB",argv[1],pDriver);
|
||||
if(!pNew)
|
||||
{
|
||||
sprintf(pBueffel,"Failure to create motor %s",argv[1]);
|
||||
SCWrite(pCon,pBueffel,eError);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else if(strcmp(argv[2],"el734dc") == 0)
|
||||
{
|
||||
iD = argc - 3;
|
||||
|
Reference in New Issue
Block a user