- First working version of the TRICS collision protection module

This commit is contained in:
cvs
2002-08-14 14:24:00 +00:00
parent a59f15d5f0
commit 3ba5f28b65
35 changed files with 1427 additions and 77 deletions

View File

@ -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;
}