- Connections write timeouts were incorrectly handled in asynnetc. Fixed.
- Implemented the desired run/drive behaviour: drive waits for what it started run starts, and success waits for everything to finish. This required changes to a lot of files. - Fixed a bug in remob which supressed required messages
This commit is contained in:
14
devexec.w
14
devexec.w
@ -42,11 +42,11 @@ functions are provided.
|
||||
|
||||
@d devreg @{
|
||||
int StartDevice(pExeList self, char *name, pObjectDescriptor pDes,
|
||||
void *pData, SConnection *pCon, float fNew);
|
||||
void *pData, SConnection *pCon, int level, float fNew);
|
||||
int StartMotor(pExeList self, SicsInterp *pSics, SConnection *pCon,
|
||||
char *name, float fNew);
|
||||
char *name, int level, float fNew);
|
||||
int StartCounter(pExeList self, SicsInterp *pSics, SConnection *pCon,
|
||||
char *name);
|
||||
int level, char *name);
|
||||
@}
|
||||
|
||||
The main interface function is {\bf StartDevice}. The parameters are:
|
||||
@ -55,6 +55,7 @@ The main interface function is {\bf StartDevice}. The parameters are:
|
||||
\item {\bf name}. The name of the object which operates.
|
||||
\item {\bf pDes}. A pointer to the ObjectDescriptor of the object to drive or count.
|
||||
\item {\bf pData}. A pointer to the data structure coming with the object.
|
||||
\item {\bf level} The start level of the device.
|
||||
\item {\bf pCon}. A pointer to the client connection on whose request the
|
||||
operation was initiated.
|
||||
\item {\bf fNew}. A floating point value which sets the target value for
|
||||
@ -95,6 +96,8 @@ From within the SICS main loops this special function is called:
|
||||
|
||||
long GetDevexecID(pExeList self);
|
||||
|
||||
int DevExecLevelRunning(pExeList self, int level);
|
||||
|
||||
int DevExecTask(void *pEL);
|
||||
void DevExecSignal(void *pEL, int iSignal, void *pSigData);
|
||||
|
||||
@ -130,6 +133,8 @@ properly finished operation, DEVERROR for an operation which finished
|
||||
with an error code and DEVINT for an aoperation which was interrupted
|
||||
by the user.
|
||||
|
||||
{\bf DevExeclevelRunning} tests if the level given as a parameter is still running.
|
||||
|
||||
\subsubsection{Influencing Execution}
|
||||
In certain cases it is necessary to interact with running devices directly.
|
||||
This is done via the following interface.
|
||||
@ -231,6 +236,9 @@ to the global SICS device executor.
|
||||
#define DEVERROR 2
|
||||
#define DEVBUSY 3
|
||||
|
||||
/* run level codes */
|
||||
#define RUNRUN 0
|
||||
#define RUNDRIVE 1
|
||||
/*------------------------------------------------------------------------
|
||||
B I R T H & D E A T H
|
||||
*/
|
||||
|
Reference in New Issue
Block a user