IPAC Driver Release Notes
Andrew Johnson
This document describes the changes which have been made to my vxWorks/EPICS
IndustryPack driver as it has evolved since first release. The earliest
version appears at the bottom, with more recent releases above it. These
release notes first appeared in version 1.1b, but I have attempted to describe
the differences in previous releases where I can remember or discover what they
were by examining the source code. After version 1.1c the CANbus driver was
split off as a separate package, hence the CANbus related comments up to and
including this release.
Version 2.1
Added:
- Jeff Hill's driver for the GreenSpring ATC40 ISAbus carrier board,
including the changes to the main drvIpac software and the other carrier
drivers which are necessary to support little-endian architectures. These
were:
- Make all accesses to the IP module registers & ID-Prom use short
(16-bit) read/writes, so the endian problem disappears. Adjust various
internal routines to allow for this.
- Provide a new function pointer (optional may be NULL) in the carrier table
which is called by ipmIntConnect. Module drivers should use ipmIntConnect
instead of vxWorks' intConnect routine to attach their interrupt routine. This
makes it possible to use identical module driver code on both VME and ISA bus,
although the module driver may have to be modified as discussed above to resolve
the endian issue.
- Some printf()<.TT>s in ipacAddCarrier so failures can be seen without
having to look at the return value.
- SRCS.c entries to Makefile.Vx so gnumake depends works.
Bug fixed:
- Finally tested the MVME162 carrier driver myself - this also works on the
MVME172. Changed the checking of m= addresses to use unsigned arithmetic.
Version 2.0
First version since I joined APS, now restructured as an EPICS R3.13.1
<supporttop> application. CANbus (drvTip810) and other drivers can be
built in separate application directories inside this <supporttop>.
Added:
- Peregrine McGehee's GreenSpring Octal Serial Driver from CFHT.
Bug fixed:
- Gcc compilation warnings attended to.
Version 1.1c
Final release from the RGO. CVS repository transferred to APS.
Bugs fixed, courtesy Carl Lionberger at LBL:
- Reinstated Bus Errors causing records to go into alarm state with an
INVALID_ALARM severity. A Bus Off transition is very rarely if ever
seen, even pulling the cable only causes a Bus Error.
Version 1.1b
Added:
- Carl Lionberger's code to canIoParse which allows message IDs to
be calculated as the sum of several numbers. This makes it possible to use
templates and text substitution to generate IDs for many device types.
- These release notes.
Bugs fixed:
- Changed the alarm severities for Bus Off events and Timeouts to use the
EPICS standard INVALID_ALARM severity. A Bus Error now does not affect record
alarm state or severities at all, but now all Bus Status transitions cause a
message to be logged giving the bus name and the new status.
- ao, bo, mbbo and mbboDirect records which have a constant value in their
DOL field will now initialise properly to this value - the DOL values copied
into the VAL field by the record initialisation routines were being overwritten
as the CAN device support init_record routine was returning
OK => 0 => CONVERT, rather than the correct
DO_NOT_CONVERT => 2.
Version 1.1a
Bugs fixed:
- Removed a change introduced in V1.1 to when input records are processed on
the receipt of interrupts. Carl Lionberger discovered this change had been a
mistake...
- VIPC616 carrier driver address parameter handling fixed, changes courtesy
of Christoper Estes.
Version 1.1
Added:
- devBoTip810 device support to allow CANbus status bits to be tested from
within the EPICS database.
- Support files for EPICS R3.13 (.dbd, LIBOBJS). Not tested though.
- canMsgDelete routine which allows message callbacks to be
unregistered.
- canBusReset, canBusStop and canBusRestart
routines to allow resetting and halting bus operations.
- Usage instructions output by canTest if no bus name given.
- IPAC Prom structure declared volatile to prevent gcc optimiser from
generating long word accesses to it. Only affected some carrier boards.
- Separate support for both the GreenSpring VIPC610 and VIPC610-01 carrier
boards, which have different interrupt levels for the different slot
interrupts. From now on the correct carrier table vipc610 or
vipc610_01 should be used.
- Support for the the GreenSpring VIPC616 carrier board, table name
vipc616.
- HTML Documentation distributed in the release.
Bugs fixed:
- Significantly reduced the number of callbacks used in the event of a Bus
Error or Bus Off event, by only using one per device support type rather than
one per record. This solves the large number of "callback ring buffer full"
messages which would occur whenever a CANbus with a lot of I/O on it was
disconnected.
- RTR messages are now sent with length 8 rather than 0 as some CAN devices
use the RTR length field to indicate how long a message to return.
- Tip810 Interrupt was not enabled using correct drvIpac call and would not
work on some carrier boards.
- A Bus-Off event sometimes caused all further transmissions to be disabled
forever because transmit semaphore was not released when resetting the error.
Version 1.0
First full release.