<?xml version="1.0" encoding="UTF-8"?>
<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_dds_profiles.xsd" version="5.3.1">
    <types>
      <module name="MyModule">
        <const name="NAME_LENGTH" type="int32" value="255"/>
        <const name="UNITS_LENGTH" type="int32" value="255"/>
        <const name="PARAM_SEQ_LENGTH" type="int32" value="4"/>
        <const name="PARAM_GROUP_SEQ_LENGTH" type="int32" value="8"/>
        <const name="VARIANT_STRING_LENGTH" type="int32" value="255"/>
        <const name="VARIANT_BYTES_LENGTH" type="int32" value="256"/>
        <enum name="VariantValueKind">
          <enumerator name="BOOLEAN_KIND" value="0"/>
          <enumerator name="INTEGER_KIND" value="1"/>
          <enumerator name="FLOAT_KIND" value="2"/>
          <enumerator name="STRING_KIND" value="3"/>
          <enumerator name="BYTES_KIND" value="4"/>
        </enum>
        <union name="VariantType" extensibility="appendable" nested="true">
          <discriminator type="nonBasic" nonBasicTypeName="MyModule::VariantValueKind"/>
          <case>
            <caseDiscriminator value="BOOLEAN_KIND"/>
            <member name="boolean_value" type="boolean"/>
          </case>
          <case>
            <caseDiscriminator value="INTEGER_KIND"/>
            <member name="integer_value" type="int32"/>
          </case>
          <case>
            <caseDiscriminator value="FLOAT_KIND"/>
            <member name="float_value" type="float32"/>
          </case>
          <case>
            <caseDiscriminator value="STRING_TYPE"/>
            <member name="string_value" type="string" stringMaxLength="VARIANT_STRING_LENGTH"/>
          </case>
          <case>
            <caseDiscriminator value="BYTES_KIND"/>
            <member name="bytes_value" type="octet" sequenceMaxLength="VARIANT_BYTES_LENGHT"/>
          </case>
        </union>
        <struct name="ParameterType" extensibility="final" nested="true">
          <member name="name" type="string" stringMaxLength="NAME_LENGTH"/>
          <member name="unit" type="string" stringMaxLength="UNITS_LENGTH"/>
          <member name="value" type="nonBasic" nonBasicTypeName="MyModule::VariantType"/>
        </struct>
        <struct name="ParameterGroupType" extensibility="appendable" nested="true">
          <member name="name" type="string" stringMaxLength="NAME_LENGTH"/>
          <member name="parameter" type="nonBasic" nonBasicTypeName="MyModule::ParameterType" sequenceMaxLength="PARAM_SEQ_LENGHT"/>
        </struct>
        <struct name="DeviceType" extensibility="mutable">
          <member name="name" type="string" stringMaxLength="NAME_LENGTH" key="true"/>
          <member name="parameter_group" type="nonBasic" nonBasicTypeName="MyModule::ParameterGroupType" sequenceMaxLength="PARAM_GROUP_SEQ_LENGTH"/>
        </struct>
      </module>
    </types>

</dds>
