- Fixed a bug at the new counter driver
SKIPPED: psi/el737hpdriv.c psi/el737hpv2driv.c psi/make_gen psi/psi.c psi/tas.c psi/tasdrive.c psi/tasinit.c psi/tasscan.c psi/tasutil.c
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
\chapter{Writing new SICS Commands}
|
||||
If you wish to write a new command or add a completely new piece of hardware to
|
||||
SICS, this is the chapter to study. There are two ways to implement
|
||||
new commands into SICS: hrough the internal Tcl scripting language and
|
||||
new commands into SICS: through the internal Tcl scripting language and
|
||||
in ANSI--C. This section describes command writing in ANSI--C. You
|
||||
should consider using Tcl when:
|
||||
\begin{itemize}
|
||||
@@ -264,12 +264,12 @@ function has to be overloaded to return this interface on demand.
|
||||
|
||||
A default object descriptor can be created with:
|
||||
\begin{verbatim}
|
||||
pObjectDescriptor CreateDescriptor(type);
|
||||
pObjectDescriptor CreateDescriptor(type);
|
||||
\end{verbatim}
|
||||
with type being the object type identifier. A descriptor can be
|
||||
deleted with:
|
||||
\begin{verbatim}
|
||||
DeleteDescriptor(pDes);
|
||||
DeleteDescriptor(pDes);
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
@@ -328,12 +328,12 @@ command in the first place.
|
||||
Be careful with commands for deleting objects though. SICS objects may
|
||||
be aliased, used by other objects or connected through the callback
|
||||
interface (see \ref{inter}). SICS does not implement proper
|
||||
bookeeping on all these relationships and thus deleting a command from
|
||||
bookkeeping on all these relationships and thus deleting a command from
|
||||
SICS without taking this into account may cause SICS to dump core on
|
||||
you.
|
||||
|
||||
|
||||
\section{Interacting with the Client Connection}
|
||||
\section{Interacting with the Client Connection}\label{gow}
|
||||
A SICS command writer needs to interact with the client connection for
|
||||
a variety of reasons:
|
||||
\begin{itemize}
|
||||
@@ -349,7 +349,7 @@ has to be passed frequently into lower level code as an argument.
|
||||
\subsection{Writing and Reading to the Client}
|
||||
All I/O to the client has to be processed through the I/O functions
|
||||
for connections defined in conman.h and implemented in conman.c. The
|
||||
most bable of these are SCWrite and SCPrompt.
|
||||
most common of these are SCWrite and SCPrompt.
|
||||
These function will now be inspected in more detail:
|
||||
\begin{verbatim}
|
||||
int SCWrite(SConnection *pCon, char *pText, int eCode);
|
||||
@@ -370,7 +370,7 @@ SCWrite does with the message:
|
||||
code specified.
|
||||
\item The message is written to all log files configured for the client
|
||||
connection.
|
||||
\item If the client privilege is useer or manager, the data isw ritten
|
||||
\item If the client privilege is user or manager, the data is written
|
||||
to the command log.
|
||||
\item The message is written to the server log together with the socket
|
||||
number of the connection.
|
||||
@@ -438,7 +438,7 @@ On occasion a SICS object may come to the conclusion that an error is
|
||||
so bad that the measurement needs to be stopped. Clearly a means is
|
||||
needed to communicate this to upper level code. This means is setting
|
||||
an interrupt on the connection.
|
||||
The current interrupt active interrupt is located at the connection object
|
||||
The current active interrupt is located at the connection object
|
||||
and can be retrieved with {\bf SCGetInterrupt} and set with {\bf
|
||||
SCSetInterrupt}. Interrupt codes are defined in interrupt.h and are ordered
|
||||
into a hierarchy:
|
||||
@@ -511,7 +511,7 @@ StartMotor starts the motor name to run to the new value
|
||||
fNew. StartCounter starts the counter name. The counter must have been
|
||||
loaded with proper presets etc. with the appropriate function
|
||||
calls. The device executor hides behind the pExeList pointer. This is
|
||||
always accessible through the global pointer: pServ->pExecutor.
|
||||
always accessible through the global pointer: \verb+pServ->pExecutor+.
|
||||
|
||||
Once a counter or motor has been started, quite often the command can
|
||||
only continue if the operation has finished. But during this time the
|
||||
@@ -569,7 +569,7 @@ process. And she might not be all to happy if the new command just
|
||||
continues with the next step rather then aborting the process.
|
||||
|
||||
|
||||
\section{SICS Interfaces}\label{interface}
|
||||
\section{SICS Interfaces}\label{interface}\label{inter}
|
||||
The point about SICS interfaces can best be deduced from an example:
|
||||
Everybody expects that a motor can be operated through a drive command
|
||||
or scanned in a scan. But there are other things which should be
|
||||
@@ -605,7 +605,7 @@ considered:
|
||||
\item The driveable interface should be implemented by virtual
|
||||
motors. Virtual motors are objects which realize complex movements
|
||||
possibly involving multiple motors. Examples include driving
|
||||
wavelength (theta,two theta and possbly curvature motors have to be
|
||||
wavelength (theta,two theta and possibly curvature motors have to be
|
||||
moved) or omega two theta.
|
||||
\item Any time objects are introduced into SICS which repesent
|
||||
completely new hardware.
|
||||
|
||||
Reference in New Issue
Block a user