drvNode Driver Support

drvNode Driver Support

drvNodeInit - Initialize a node object

This routine initializes a node object by attaching to a named vxWork serial device via drvSerial.

The routine returns ERROR if an error occurred within drvSerial - otherwise it returns a pointer to the created node object.

drvNodeRead - Read a message of specified size from serial device

This routine returns up to the specified number of characters from the last response taken off the drvSerial response queue.

drvSerial responses larger than the specified message size are returned piece-wise by successive reads.

This routine returns ERROR if no responses are presently available from drvSerial.

For example:

If drvSerial's response queue contains one entry and that entry's buffer contains "aloha\015", then sucessive reads of size 3 will return:

       read #    buf        status
       ------    ---        ------
       1         "alo"      OK
       2         "ha\015"   OK
       3         "\000"     ERROR

drvNodeWrite - Output message of specified size to serial device

This routine creates a drvSerial request object and submits it to the serial device using drvSeriaSendRequest.

drvNodeStreamIn - Get Frame routine for drvSerial

Reads input a character at a time, breaking responses up by comparison against a number of delimiters.

Returned response includes delimiter.

drvNodeStreamOut - Put Frame routine for drvSerial

Transmits output a character at a time.

drvNodeSetDelim - Specify a delimiter string for a DRV_NODE object.

This routine defines one of a number of possible delimiters for be used by drvNodeStreamIn().

A delimiter definition includes:

       n     - index into delimiter array [0..NDELIMITERS-1]
       len   - length of delimiter in characters. (0 = delimiter not defined)
       delim - delimiter string
       mask  - bit mask indicating which positions are wild carded.

Examples:

       drvNodeSetDelim(COMMON, 2, 2, "\015\012", 0x00)
            delimiter #2 = CRLF
  
       drvNodeSetDelim(MOUSE, 0, 3, "   ", 0x07)
            delimiter #0 = any sequence of three characters (useful
            for mouse pointing devices).

drvNodeDDump - Print out the delimiter definition.


Source distribution

drvNode source code can be obtained at ftp://ftp.cfht.hawaii.edu/pub/tcs/epics/drvNode

Peregrine McGehee
Last modified: Wed Nov 12 11:30:16 HST