GreenSpring OctalUart IP Module Support

Introduction

This software drives the GreenSpring OctalUart family of Industry Pack modules to communicate with a number of RS-232, RS-422, and RS-485 devices. These IP modules are mounted on a Greenpring VIPC-610 VMEbus carrier board.

The driver uses drvIpac for configuration of the carrier board plus access routines for the SCC2698 octalUart used in the IP modules. The driver is implemented as a standard vxWorks terminal driver making use of the tyLib() system library.

Structure

The software structure used to support EPICS record processing is in three layers:

Related Systems

Other present options for EPICS device/driver support that use drvSerial are:

drvSerial is designed to use any vxWorks serial device driver. Other hardware supported includes:

Where to Find It!

EPICS device and driver support.

EPICS STDIO support.

vxWorks device driver

Driver Routines

The following is an example of setting up the device driver from within a vxWorks startup script:
#####################
# Configuration Setup
#####################

# Initialize the IP module tasks
tyGSOctalDrv 4
ipacAddCarrier &vipc610, "0x6000"

# Init module on carrier 0, slot 0
MOD0 = tyGSOctalModuleInit("GSIP_OCTAL232", 0x80, 0, 0)

# Create devices
PORT00 = tyGSOctalDevCreate("/tyGS/0/0", MOD0, 0, 512, 512)
PORT02 = tyGSOctalDevCreate("/tyGS/0/2", MOD0, 2, 512, 512)
PORT04 = tyGSOctalDevCreate("/tyGS/0/4", MOD0, 4, 512, 512)
PORT06 = tyGSOctalDevCreate("/tyGS/0/6", MOD0, 6, 512, 512)

# Config ports
# baud, parity(N/E/O), stop, bits, flow(N/H)
tyGSOctalConfig PORT00, 9600, 'N', 1, 8, 'N'
tyGSOctalConfig PORT02, 9600, 'N', 1, 8, 'N'
tyGSOctalConfig PORT04, 9600, 'N', 1, 8, 'N'
tyGSOctalConfig PORT06, 9600, 'N', 1, 8, 'N'

#
# The following uses the EPICS drvNode/devNode support
#
# Create NODEs - device support uses these names
COMMON = drvNodeInit("/tyGS/0/0")
VILINK = drvNodeInit("/tyGS/0/2")
AOBG   = drvNodeInit("/tyGS/0/4")
OSIS   = drvNodeInit("/tyGS/0/6")

# Configure NODE delimiters
drvNodeSetDelim COMMON, 0, 2, "\015\012", 0x00
drvNodeSetDelim COMMON, 1, 2, "> ", 0x00
drvNodeSetDelim COMMON, 2, 3, ":  ", 0x00
drvNodeSetDelim COMMON, 3, 3, ")? ", 0x00
drvNodeSetDelim COMMON, 4, 3, "): ", 0x00
#
drvNodeSetDelim VILINK, 0, 2, "\015\012", 0x00
#
drvNodeSetDelim AOBG, 0, 1, "\015", 0x00
#
drvNodeSetDelim OSIS, 0, 1, "\015", 0x00