<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="PreVersion_device_configuration_Root">
  <xs:group name="dataFieldDefGroup">
    <xs:sequence>
      <xs:element name="name" type="xs:string" />
      <xs:element minOccurs="0" name="description" type="xs:string" />
      <xs:element minOccurs="0" name="comment" type="xs:string" />
      <xs:element minOccurs="0" name="keywords" type="xs:string" />
      <xs:element name="data_field_type" type="xs:string" />
      <xs:element name="display_name" type="xs:string" />
      <xs:element name="data_field_category" type="xs:string" />
      <xs:element name="other_data_field_category" type="xs:string" />
      <xs:element minOccurs="0" name="name_suffix" type="xs:string" />
      <xs:element name="units" type="xs:string" />
      <xs:element name="other_units" type="xs:string" />
      <xs:element name="is_eligible_base_data_field" type="xs:boolean" />
      <xs:element minOccurs="0" name="is_included_in_compress_file" type="xs:boolean" />
      <xs:element minOccurs="0" name="is_included_as_ref_data_source_for_cat" type="xs:boolean" />
      <xs:element minOccurs="0" name="reference_order_in_cat" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="is_excluded_from_samos" type="xs:boolean" />
      <xs:element minOccurs="0" name="numeric_precision" type="xs:unsignedByte" />
      <xs:element name="display_order" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="latitude_format" type="xs:string" />
      <xs:element minOccurs="0" name="longitude_format" type="xs:string" />
      <xs:element minOccurs="0" name="datetime_value_format" type="xs:string" />
      <xs:element minOccurs="0" name="time_value_format" type="xs:string" />
      <xs:element minOccurs="0" name="start_char_position" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="end_char_position" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="data_field_position" type="xs:unsignedByte" />
      <xs:element minOccurs="0" name="lat_lon_direction_field_position" type="xs:unsignedByte" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="code_translation">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="code_value" type="xs:string" />
            <xs:element name="translation" type="xs:string" />
          </xs:sequence>
          <xs:attribute name="code_translation_id" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="calc_result_name" type="xs:string" />
    </xs:sequence>
  </xs:group>
  <xs:complexType name="dataFieldDefXmlType">
    <xs:sequence>
      <xs:group minOccurs="0" ref="dataFieldDefGroup" />
    </xs:sequence>
    <xs:attribute name="data_field_def_id" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="scsFileXmlType">
    <xs:sequence>
      <xs:element name="file_name" type="xs:string" />
      <xs:element name="file_size" type="xs:unsignedInt" />
      <xs:element name="sha1_hash" type="xs:string" />
      <xs:element minOccurs="0" name="thumbnail_size" type="xs:unsignedInt" />
    </xs:sequence>
    <xs:attribute name="scs_file_id" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="physicalDeviceXmlType">
    <xs:sequence>
      <xs:element name="name" type="xs:string" />
      <xs:element minOccurs="0" name="description" type="xs:string" />
      <xs:element minOccurs="0" name="comment" type="xs:string" />
      <xs:element minOccurs="0" name="keywords" type="xs:string" />
      <xs:element name="physical_device_type" type="xs:string" />
      <xs:element name="other_physical_device_type" type="xs:string" />
      <xs:element name="display_name" type="xs:string" />
      <xs:element name="manufacturer" type="xs:string" />
      <xs:element name="other_manufacturer" type="xs:string" />
      <xs:element name="model" type="xs:string" />
      <xs:element name="other_model" type="xs:string" />
      <xs:element minOccurs="0" name="serial_no" type="xs:string" />
      <xs:element minOccurs="0" name="location" type="xs:string" />
      <xs:element name="display_order" type="xs:unsignedShort" />
      <xs:element name="is_no_calibration" type="xs:boolean" />
      <xs:element minOccurs="0" name="meas_ref_system" type="xs:string" />
      <xs:element minOccurs="0" name="x_location" type="xs:float" />
      <xs:element minOccurs="0" name="y_location" type="xs:float" />
      <xs:element minOccurs="0" name="z_location" type="xs:float" />
      <xs:element minOccurs="0" name="cd_number" type="xs:string" />
      <xs:element name="is_external" type="xs:boolean" />
      <xs:element minOccurs="0" name="reference_device" type="xs:short" />
      <xs:element minOccurs="0" name="time_source_device_id" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="physical_device_calibration">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="calibration_date" type="xs:string" />
            <xs:element minOccurs="0" name="calibration_file">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="scs_file" type="scsFileXmlType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="notes" type="xs:string" />
          </xs:sequence>
          <xs:attribute name="device_calibration_id" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="physical_device_test">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="test_date" type="xs:string" />
            <xs:element name="test_results" type="xs:string" />
            <xs:element name="tester" type="xs:string" />
          </xs:sequence>
          <xs:attribute name="physical_device_test_id" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" name="time_server_protocol" type="xs:string" />
      <xs:element minOccurs="0" name="protocol_version" type="xs:string" />
      <xs:element minOccurs="0" name="ip_address" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="device_image">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string" />
            <xs:element minOccurs="0" name="description" type="xs:string" />
            <xs:element minOccurs="0" name="comment" type="xs:string" />
            <xs:element minOccurs="0" name="keywords" type="xs:string" />
            <xs:element minOccurs="0" name="display_name" type="xs:string" />
            <xs:element name="display_order" type="xs:unsignedShort" />
            <xs:element name="scs_file" type="scsFileXmlType" />
          </xs:sequence>
          <xs:attribute name="device_image_id" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="physical_device" type="physicalDeviceXmlType" />
    </xs:sequence>
    <xs:attribute name="physical_device_id" type="xs:string" use="required" />
  </xs:complexType>
  <xs:group name="oldCalcParameterGroup">
    <xs:sequence>
      <xs:element name="data_field_definition" type="dataFieldDefXmlType" />
      <xs:element name="parameter_name" type="xs:string" />
      <xs:element name="parameter_data_field_position" type="xs:unsignedByte" />
      <xs:element name="is_series" type="xs:boolean" />
      <xs:element name="is_compute_on_update" type="xs:boolean" />
      <xs:element name="display_order" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="function_parameter_id" type="xs:string" />
    </xs:sequence>
  </xs:group>
  <xs:group name="newCalcParameterGroup">
    <xs:sequence>
      <xs:element name="parameter_name" type="xs:string" />
      <xs:element name="calculation_function_parameter.display_name" type="xs:string" />
      <xs:element name="parameter_data_field_position" type="xs:unsignedByte" />
      <xs:element name="is_series" type="xs:boolean" />
      <xs:element name="is_compute_on_update" type="xs:boolean" />
      <xs:element name="display_order" type="xs:unsignedShort" />
      <xs:element minOccurs="0" name="function_parameter_id" type="xs:string" />
      <xs:element name="data_field_definition" type="dataFieldDefXmlType" />
      <xs:element minOccurs="0" name="units_type_name" type="xs:string" />
      <xs:element minOccurs="0" name="units_type_id" type="xs:unsignedShort" />
    </xs:sequence>
  </xs:group>
  <xs:element name="device_configuration">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="sensor_interface">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string" />
              <xs:element minOccurs="0" name="description" type="xs:string" />
              <xs:element minOccurs="0" name="comment" type="xs:string" />
              <xs:element minOccurs="0" name="keywords" type="xs:string" />
              <xs:element name="sensor_interface_type" type="xs:string" />
              <xs:element name="display_name" type="xs:string" />
              <xs:element name="is_enabled" type="xs:boolean" />
              <xs:element name="display_order" type="xs:unsignedShort" />
              <xs:element minOccurs="0" name="network_protocol" type="xs:string" />
              <xs:element minOccurs="0" name="ip_address" type="xs:string" />
              <xs:element minOccurs="0" name="port_no" type="xs:unsignedShort" />
              <xs:element minOccurs="0" name="com_port" type="xs:unsignedShort" />
              <xs:element minOccurs="0" name="parity" type="xs:string" />
              <xs:element minOccurs="0" name="stop_bits" type="xs:decimal" />
              <xs:element minOccurs="0" name="baud_rate" type="xs:unsignedInt" />
              <xs:element minOccurs="0" name="data_bits" type="xs:unsignedByte" />
              <xs:element minOccurs="0" name="flow_control" type="xs:string" />
              <xs:element minOccurs="0" name="polling_rate" type="xs:unsignedLong" />
              <xs:element minOccurs="0" name="update_rate" type="xs:unsignedLong" />
              <xs:element maxOccurs="unbounded" name="message_definition">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="name" type="xs:string" />
                    <xs:element minOccurs="0" name="description" type="xs:string" />
                    <xs:element minOccurs="0" name="comment" type="xs:string" />
                    <xs:element minOccurs="0" name="keywords" type="xs:string" />
                    <xs:element name="message_type" type="xs:string" />
                    <xs:element name="display_name" type="xs:string" />
                    <xs:element minOccurs="0" name="field_delimiters">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="delimiter_ascii_code" type="xs:unsignedByte" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="logging_rate" type="xs:short" />
                    <xs:element minOccurs="0" name="log_folder_path" type="xs:string" />
                    <xs:element name="is_enabled" type="xs:boolean" />
                    <xs:element name="is_logged" type="xs:boolean" />
                    <xs:element name="termination_character">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="termination_char_ascii_code" type="xs:unsignedByte" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="timeout" type="xs:long" />
                    <xs:element minOccurs="0" name="is_relay_via_udp_broadcast" type="xs:boolean" />
                    <xs:element minOccurs="0" name="udp_broadcast_port_no" type="xs:unsignedShort" />
                    <xs:element minOccurs="0" name="polled_command_prompt" type="xs:string" />
                    <xs:element minOccurs="0" name="polled_queue_order" type="xs:unsignedByte" />
                    <xs:element name="display_order" type="xs:unsignedShort" />
                    <xs:element minOccurs="0" name="record_size" type="xs:unsignedShort" />
                    <xs:element minOccurs="0" name="sentence_label" type="xs:string" />
                    <xs:element minOccurs="0" name="other_sentence_label" type="xs:string" />
                    <xs:element minOccurs="0" name="is_extended_label" type="xs:boolean" />
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="label_extender">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="field_position" type="xs:unsignedByte" />
                          <xs:element name="expected_value" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="label_extender_id" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="label_extenders">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="field_position" type="xs:unsignedByte" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="data_field_definition" type="dataFieldDefXmlType" />
                    <xs:element minOccurs="0" name="calculation_expression" type="xs:string" />
                    <xs:element minOccurs="0" name="calculation_function" type="xs:string" />
                    <xs:element minOccurs="0" name="calc_result_data_field_defs">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="data_field_definition" type="dataFieldDefXmlType" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="calculation_parameters">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="calculation_parameter">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:choice>
                                  <xs:group ref="oldCalcParameterGroup" />
                                  <xs:group ref="newCalcParameterGroup" />
                                </xs:choice>
                              </xs:sequence>
                              <xs:attribute name="calculation_parameter_id" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="calculation_function_arguments">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="calculation_function_argument">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="calculation_function_parameter">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:string">
                                        <xs:attribute name="function_parameter_id" type="xs:unsignedShort" use="required" />
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="argument_value" type="xs:string" />
                                <xs:element name="units" type="xs:string" />
                              </xs:sequence>
                              <xs:attribute name="calculation_function_argument_id" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="message_definition_id" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element minOccurs="0" maxOccurs="unbounded" name="device_installation">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="physical_device_id" type="xs:string" />
                    <xs:element name="installation_date" type="xs:string" />
                    <xs:element minOccurs="0" name="removal_date" type="xs:string" />
                    <xs:element minOccurs="0" name="installer" type="xs:string" />
                  </xs:sequence>
                  <xs:attribute name="device_installation_id" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="sensor_interface_id" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="physical_device" type="physicalDeviceXmlType" />
      </xs:sequence>
      <xs:attribute name="ship_code" type="xs:string" use="required" />
      <xs:attribute name="creation_date" type="xs:string" use="required" />
      <xs:attribute name="application_version" type="xs:string" use="optional" />
      <xs:attribute name="database_version" type="xs:string" use="required" />
      <xs:attribute name="xml_release_id" type="xs:string" use="required" />
      <xs:attribute name="release_timestamp" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
</xs:schema>