- First working version of the TRICS collision protection module
This commit is contained in:
27
devexec.c
27
devexec.c
@ -7,6 +7,7 @@
|
||||
Substantial rewrite: Mark Koennecke, February 1997
|
||||
revised: Mark Koennecke, June 1997
|
||||
revised for use with tasker: Mark Koennecke, September 1997
|
||||
Locking added: Mark Koennecke, August 2002
|
||||
|
||||
Copyright:
|
||||
|
||||
@ -103,6 +104,7 @@
|
||||
int iEnd;
|
||||
long lTask;
|
||||
pTaskMan pTask;
|
||||
int iLock;
|
||||
} ExeList;
|
||||
|
||||
static pExeList pExecutor = NULL;
|
||||
@ -136,6 +138,7 @@
|
||||
pRes->iStatus = DEVDONE;
|
||||
pRes->pTask = pTask;
|
||||
pRes->lTask = -1;
|
||||
pRes->iLock = 0;
|
||||
return pRes;
|
||||
}
|
||||
/*-------------------------------------------------------------------------*/
|
||||
@ -181,7 +184,12 @@
|
||||
{
|
||||
self->pOwner = pCon;
|
||||
}
|
||||
|
||||
if(self->iLock == 1)
|
||||
{
|
||||
SCWrite(pCon,"ERROR: instrument is locked",eError);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* well create a new entry */
|
||||
self->iStop = 0;
|
||||
pNew = CreateDevEntry(pDes,pData,fNew,name);
|
||||
@ -478,7 +486,7 @@
|
||||
/* do nothing if not running */
|
||||
if(self->lTask < 0)
|
||||
{
|
||||
printf("Wait4Success finished very, very badly\n");
|
||||
printf("Nothing to wait for....\n");
|
||||
return self->iStatus;
|
||||
}
|
||||
|
||||
@ -749,6 +757,7 @@
|
||||
self->iEnd = 1;
|
||||
self->lTask = -1;
|
||||
self->iRun = 0;
|
||||
self->iLock = 0;
|
||||
}
|
||||
/*-------------------------------------------------------------------------*/
|
||||
int StopCommand(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
@ -922,7 +931,19 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
void LockDeviceExecutor(pExeList self)
|
||||
{
|
||||
assert(self);
|
||||
self->iLock = 1;
|
||||
}
|
||||
/*--------------------------------------------------------------------*/
|
||||
void UnlockDeviceExecutor(pExeList self)
|
||||
{
|
||||
assert(self);
|
||||
self->iLock = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user