I developed a driver using sdk 7.2.5, so I suppose it use the FrameworkVersion 2.
Now with Ignition 7.3 I can’t install the driver because, during the installation, it tell me that the
FrameworkVersion = 2 is expected and is incompatible with the new version 3.
So, there is non retro-compatibility in the new framework?
Every time the framework change I have to upgrade the driver or is only from version 2 to 3?
In the future framework (4, 5, …) there will be the support for the retro-compatibility?
When we change the API of the framework, we have to increment that number so that modules that might not be compatible aren’t loaded. However, that doesn’t mean that the module actually isn’t compatible. Unfortunately, the only way to make it load is to update your required framework number in your module’s XML file, and re-compile the module.
The changes to the API are included in an appendix in the programmer’s guide for the 7.3 SDK. Some changes were made to the read/write functions for SQLTags and OPC items, so you might have to adjust your module.
In the future, we hope to avoid these types of changes that require you to recompile your module. And when those changes are unavoidable, we hope to improve communication so that module developers know what they have to do.
Sorry for the inconvenience, please let me know if anything isn’t clear.
In your module hook, the one that extends from AbstractDriverModuleHook, you’ll find that you’ve implemented a method called getExpectedAPIVersion(). This needs to match the actual driver API version, which is currently 3. You can get the current version from DriverAPI.VERSION.
We just discovered that javadocs aren’t being generated for protected methods, so this may not have been clear. It will be fixed in the next release of the SDK.
Last question:
The DriverAPI.Version number value is the same of the Framework?
or it could be different?
That is, in an hypotetic Ignition release 7.4 I will find:
Framework 4 and DriverAPI.Version 4
or is possible to have
Framework 4 and DriverAPI.Version 3
or something else?
The reason for this is that Driver API is not offered by the Ignition platform - it’s offered by another module (the OPC-UA module). When you write a driver you depend on the API provided by the OPC-UA module in addition to APIs provided by the Ignition platform itself.