I am using the RTI DDS Toolkit to have a system using cRIO and Labview 2018 communicate with other systems using a DDS network. One of the messages in a type is a enum data type and has enumeration values set for 0,1,2...10, and then the final enumeration is set is 99. This means that there is no enumeration set for 11-98 and then the 99th number has an enum.
It appears that Labview cannot use non-sequential or "sparse" enums natively. Is there a work around for this? Does the RTI DDS toolkit support ring data types because the ring can support non-sequation values.
In other words, can I simply replace the enum typedef in my advanced data type cluster with a ring typedef and be able to receive the messages correctly?
Any help is appreciated.
RTI DDS Toolkit actually only supports LabVIEW Enums. Rings are not supported.
As a workaround, If you are communicating with external non LabVIEW applications. You can put the values consecutively in your LabVIEW application and then use Routing Service as an intermediary between your LabVIEW application and the other applications. Routing Service can use transformation plugins to transform data. This way Routing Service can translate input/output samples from the type with non consecutive enum values to the type with the consecutive values and vice versa.
If you don't know what Routing Service is. Please have a look here:
Here is a tutorial about creating Routing Service transformation plugins:
If you are not communicating with external non LabVIEW based applications and you need the numerical value. Then you can use Enum values consecutively and write manually a mapper that maps the value to the desired one.
Hope this is helpful to you. We are working on this to improve enumerations support.