CANbus Driver Release Notes
Andrew Johnson
This document describes the changes which have been made to my vxWorks/EPICS
CANbus driver as it has evolved since first release. The earliest version
appears at the bottom, with more recent releases above it.
Version 2.6
Added:
- A drvTip810Registrar routine and iocsh command tables for use with EPICS
Base R3.14.4 and higher. It should be possible to initialize this driver from
iocsh as well as from the vxWorks shell. This does not include the OSI
modifications that would be needed for use with RTEMS though.
Version 2.5
Changed:
- This version is intended for use with EPICS Base R3.14.x, and has been
built against Base R3.14.2 (but not actually tested before release as I don't
have a TIP810 module). There were a few minor changes to the code, but these
were just to get it to build properly. The only supported operating system is
still vxWorks - the EPICS OSI layer does not currently provide API equivalents
for vxMemProbe() or intConnect(). There is a reasonable chance of porting this
code to run on RTEMS once the OSI layer is sufficiently functional, but other
operating systems are not likely to be easy targets.
Added:
- Code to mark the IP slot as active using the ipmIrqCmd() command
ipac_statActive at initialization, and inactive again when the rebootHook
routine is run. This will be ignored by most IP carrier drivers.
Version 2.4
Changed:
- Added char* paramStr; to the canIo_t structure and
ammended canIoParse() to return any remaining address string in this
pointer.
Added:
- Support for float and double message values in the ai and ao device support
layers.
Version 2.3
Changed:
- Removed IPAC-specific comments from the CANbus Release Notes.
- Added a new parameter to the t810Create routine to set the interrupt vector
number to be used. Existing applications must be changed to add this
parameter (probably only in the startup script), which appears before the
busRate parameter.
Added:
- Carl Lionberger's String In device support for use with the Wiener VME
crate. Note that this is not generic stringin support, and has been
renamed from his original to devSiWiener.c. In deference to the
existing applications that are using this I have retained the "CANbus"
device type string, although I'd really rather have changed it.
- The drvTip810.h header file is now installed into the
$(TOP)/include directory so applications can get at the
t810Status() routine.
Version 2.2
Changed:
- Copyright and license terms. drvTip810 (and ipac) is now licensed under
the GNU Lesser General Public License (LGPL), which enables it to be used in
commercial software, although any binary distribution containing it or a
derivative of it must make the source code available under the LGPL terms.
- Various other small modifications to fix compiler warnings and such under
EPICS Release 3.13.2.
Version 2.1
Incorporated changes from Carl Lionberger that move the receive message
callbacks into a fairly high priority task, rather than doing them in the ISR
itself. This allows a higher peak message rate to be handled, although the
average rate should be essentially unchanged.
Added:
- ISR funnels incoming CAN packets into a Message queue rather than run the
canMessage callbacks directly. NB: The canSignal callbacks
are still run from the ISR so must be interrupt-safe.
Version 2.0
First version since I joined APS, now restructured in an EPICS R3.13.1
<supporttop> application. drvIpac module and carrier drivers were split
off into a separate application directory.
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...
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.
- 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.