This is the release notes for the pycanlib module.
New Features and Fixed Problems in V1.5.525 (12-FEB-2018)
- Updated for CANlib SDK v5.22.
- Added support for LIN bus API (LINlib)
- Added support for Database API (kvaDbLib) Needs version v5.22 of CANlib SDK to get supported dll.
Restructuring of code in order to make the API simpler and the code base more maintainable have resulted in the following changes (old style is deprecated, shown in details while running Python with the -Wd argument):
- canlib.kvMessage has been renamed canlib.Frame
- canlib.Frame objects are now accepted and returned when writing and reading channels.
- The new canlib.kvadblib module uses these canlib.Frame objects heavily.
- canlib.canlib:
- Added wrapper functions for canReadStatus and canRequestChipStatus
- Deprecated use of canlib.canlib.canlib() objects; all methods have been moved to the module.
- See the docstring of canlib.canlib.CANLib for more information
- Simplified the names of the channel-classes (old names are deprecated):
- The channel class is now canlib.canlib.Channel, instead of canlib.canChannel.
- canlib.canlib.ChannelData_Channel_Flags is now canlib.canlib.ChannelFlags
- canlib.canlib.ChannelData_Channel_Flags_bits is now canlib.canlib.ChannelFlagBits
- canlib.canlib.Channel now uses canlib.Frame objects for reading and writing.
- canlib.Channel.read now returns a canlib.Frame object instead of a tuple. However, canlib.Frame objects are largely compatible with tuples.
- canlib.Channel.write takes a single argument, a canlib.Frame object. The previous call signature has been taken over by canlib.Channel.write_raw.
- Likewise for canlib.Channel.writeWait and its new friend canlib.Channel.writeWait_raw.
- The class canlib.canlib.canVersion has been removed, and canlib.canlib.getVersion now returns a canlib.VersionNumber. The new class still supports conversion to string and accessing
.major
and .minor
attributes.
- canlib.kvmlib:
- Added wrapper functions for kvmKmeReadEvent.
- Corrected encoding for Python 3 in kmeOpenFile().
- Deprecated names for several classes to make them more logical and more pythonic:
- canlib.kvmlib.memoMsg is now canlib.kvmlib.LogEvent
- canlib.kvmlib.logMsg is now canlib.kvmlib.MessageEvent
- canlib.kvmlib.rtcMsg is now canlib.kvmlib.RTCEvent
- canlib.kvmlib.trigMsg is now canlib.kvmlib.TriggerEvent
- canlib.kvmlib.verMsg is now canlib.kvmlib.VersionEvent
- The class canlib.kvmlib.kvmVersion has been removed, and canlib.kvmlib.KvmLib.getVersion now returns a canlib.VersionNumber. The new class still supports conversion to string and accessing
.major
, .minor
, and .build
attributes.
- canlib.kvlclib:
- Added method canlib.kvlclib.addDatabaseFile and helper object canlib.kvlclib.ChannelMask.
- The canlib.kvlclib.KvlcLib object has been deprecated.
- All functions that relate to converters have been moved to the more appropriately named canlib.kvlclib.Converter.
- Some of these functions have been renamed:
- canlib.kvlclib.WriterFormat.getFirstWriterFormat and canlib.kvlclib.WriterFormat.getNextWriterFormat now returns a kvlclib.FileFormat object (which is based on the IntEnum class).
- Other functions have been moved to the canlib.kvlclib module.
- deleteConverter is no longer supported. Instead, converters are automatically deleted when garbage collected. If their contents must be flushed to file, see the new canlib.kvlclib.Converter.flush method.
- The class canlib.kvlclib.KvlcVersion has been removed, and canlib.kvmlib.kvlclib.getVersion now returns a canlib.VersionNumber. The new class still supports conversion to string and accessing
.major
, .minor
, and .build
attributes.
- canlib.kvrlib:
- The canlib.kvrlib.KvrLib object has been deprecated; all methods have been moved to the module.
- canlib.kvrlib.getVersion no longer returns a canlib.kvrlib.kvrVersion but a canlib.VersionNumber. The return value still supports conversion to string and accessing
.major
and .minor
attributes.
- canlib.kvamemolibxml:
- Renamed from canlib.KvaMemoLibXml, however trying to import the old name will just import the new one instead.
- Deprecated the use of canlib.kvamemolibxml.KvaMemoLib objects, all methods have been moved to the canlib.kvamemolibxml module itself.
- Breaking change: Moved values that were incorrectly defined as constants into enums. In most cases this should not have any impact, as all the values are internal error codes and are turned into Python exceptions. But if you nonetheless use the kvamemolibxml status values directly, you'll need to change your code as follows:
KvaXmlStatusERR_XXX_XXX
is now Error.XXX_XXX
.
KvaXmlValidationStatusERR_XXX_XXX
is now ValidationError.XXX_XXX
KvaXmlValidationStatusWARN
is now ValidationWarning.XXX_XXX
.
KvaXmlStatusFail
is now Error.FAIL
(Changed to be consistent with other KvaXmlStatus errors). The same is true for ValidationError.FAIL
.
KvaXmlStatusOK
and KvaXmlValidationStatusOK
are still treated as if they are constants, as they are not error statuses.
- canlib.kvamemolibxml.getVersion no longer returns a string but a canlib.VersionNumber. The return value still supports conversion to string.
- Exceptions:
- Exceptions throughout the package have been standardised, and now all inherit from canlib.exceptions.CanlibException.
- The canERR attribute that some exceptions had has been deprecated in favour of a status attribute. Furthermore, all canlib exceptions now have this attribute; the status code that was returned from a C call that triggered the specific exception.