==== DSM-CC User-to-Network Message

Defined by MPEG in <<ISO-13818-6>>.

[source,xml]
----
<DSMCC_user_to_network_message
    version="uint5, default=0"
    current="bool, default=true"
    table_id_extension="uint16, default=0xFFFF"
    protocol_discriminator="uint8, required, default=0x11"
    dsmcc_type="uint8, required, default=0x03"
    message_id="uint16, required"
    transaction_id="uint32, required">

  <!-- Exactly one of DSI or DII -->
  <DSI>
    <server_id>
      Hexadecimal content
    </server_id>

    <!-- Optional DSM-CC compatibilityDescriptor() structure -->
    <compatibilityDescriptor>
      <!-- Zero or more descriptors -->
      <descriptor
          descriptorType="uint8, required"
          specifierType="uint8, default=1"
          specifierData="uint24, required"
          model="uint16, default=0"
          version="uint16, default=0">
        <!-- Zero or more subdescriptors -->
        <subDescriptor subDescriptorType="uint8, required">
          Hexadecimal content
        </subDescriptor>
      </descriptor>
    </compatibilityDescriptor>

    <IOR>
      <type_id>
        Hexadecimal content
      </type_id>
      <tagged_profile profile_id_tag="uint32_t, required" profile_data_byte_order="uint8, required">
        <!-- profile_id_tag = 0x49534F06 -->
        <BIOP_profile_body>
          <lite_component component_id_tag="uint32_t, required">
            <!-- component_id_tag = 0x49534F50 (TAG_ObjectLocation) -->
            <BIOP_object_location
              carousel_id="uint32_t, required"
              module_id="uint16_t, required"
              version_major="uint8_t, required"
              version_minor="uint8_t, required">
              <object_key_data>
                  Hexadecimal content
              </object_key_data>
            </BIOP_object_location>
            <!-- component_id_tag = 0x49534F40 (TAG_ConnBinder) -->
            <DSM_conn_binder>
              <!-- DSM-CC Tap() structure -->
              <Tap id="uint16, required"
                   use="uint16, required"
                   association_tag="uint16, required"
                   selector_type="uint16, optional"
                   transaction_id="uint32, required if selector_type == 1"
                   timeout="uint32, required if selector_type == 1">
                <!-- Selector bytes are allowed only if selector_type is present and != 1 -->
                <selector_bytes>
                  Hexadecimal content
                </selector_bytes>
              </Tap>
            </DSM_conn_binder>
            <!-- component_id_tag = other (Unknown) -->
            <Unknown_component>
              <component_data>
                  Hexadecimal content
              </component_data>
            </Unknown_component>
          </lite_component>
        </BIOP_profile_body>
        <!-- profile_id_tag = 0x49534F05 -->
        <Lite_options_profile_body>
          <profile_data>
          Hexadecimal content
          </profile_data>
        </Lite_options_profile_body>
        <!-- profile_id_tag = other -->
        <Unknown_profile_body>
          <profile_data>
          Hexadecimal content
          </profile_data>
        </Unknown_profile_body>
      </tagged_profile>
    </IOR>

  </DSI>

  <DII download_id="uint32, required" block_size="uint16, required">

    <!-- Optional DSM-CC compatibilityDescriptor() structure -->
    <compatibilityDescriptor>
      <!-- Zero or more descriptors -->
      <descriptor
          descriptorType="uint8, required"
          specifierType="uint8, default=1"
          specifierData="uint24, required"
          model="uint16, default=0"
          version="uint16, default=0">
        <!-- Zero or more subdescriptors -->
        <subDescriptor subDescriptorType="uint8, required">
          Hexadecimal content
        </subDescriptor>
      </descriptor>
    </compatibilityDescriptor>

    <module
        module_id="uint16, required"
        module_size="uint32, required"
        module_version="uint8, required"
        module_timeout="uint32, required"
        block_timeout="uint32, required"
        min_block_time="uint32, required">
      <!-- DSM-CC Tap() structure -->
      <Tap id="uint16, required"
           use="uint16, required"
           association_tag="uint16, required"
           selector_type="uint16, optional"
           transaction_id="uint32, required if selector_type == 1"
           timeout="uint32, required if selector_type == 1">
        <!-- Selector bytes are allowed only if selector_type is present and != 1 -->
        <selector_bytes>
          Hexadecimal content
        </selector_bytes>
      </Tap>
      <DESCRIPTOR_LIST>
    </module>
  </DII>

</DSMCC_user_to_network_message>
----
