<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (C) 2019 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- Author : changyeon@google.com
     Version: 1.0
-->

<!ELEMENT configuration (system,camera,display)>

<!-- System Configuration that contains below informations:
     - Number of cameras available to EVS.
-->
<!ELEMENT system (num_cameras)>
    <!-- The number of cameras that are available to EVS on the vehicle.
         This must be equal to number of camera elements of device element.
    -->
    <!ELEMENT num_cameras EMPTY>
    <!ATTLIST num_cameras
        value CDATA #REQUIRED
    >

<!-- Device descriptions -->
<!ELEMENT camera (group|device)+>
    <!-- Camera group descriptor
         @attr group_id    : Unique logical camera group identifier.  Camera device use this to be
                             a member of the group.
         @attr device_id   : Comma-separated list of unique camera identifiers of member camera
                             devices.
         @attr synchronized: NONE if cameras are not synchronized.
                             CALIBRATED if cameras are synchronized by hardware.
                             APPROXIMATE if cameras are synchronized by other means.
    -->
    <!ELEMENT group (caps)>
    <!ATTLIST group
        group_id        CDATA #REQUIRED
        device_id       CDATA #REQUIRED
        synchronized    CDATA #REQUIRED
    >
    <!-- Please note that a camera group may have stream configurations.  If it has, all stream
         configurations must be supported by each camera device in the group.
    -->

    <!-- Camera device descriptor
         @attr id          : Unique camera identifier.
         @attr position    : Must be one of front, rear, left, or right.
    -->
    <!ELEMENT device (caps,characteristics*)>
    <!ATTLIST device
        id              CDATA #REQUIRED
        position        CDATA #REQUIRED
    >
        <!-- Camera metadata that contains:
             - A list of supported controls.
             - A list of supported stream configurations.
        -->
        <!ELEMENT caps (supported_controls|stream)*>
            <!-- A list of supported controls.
                 This must be a subset of android.hardware.automotive.evs@1.1::CameraParam.
            -->
            <!ELEMENT supported_controls (control)+>
                <!-- A camera control parameter with its valid value range -->
                <!ELEMENT control EMPTY>
                <!ATTLIST control
                    name    CDATA #REQUIRED
                    min     CDATA #REQUIRED
                    max     CDATA #REQUIRED
                    step    CDATA '1'
                >

            <!-- A list of supported output sizes. -->
            <!ELEMENT stream EMPTY>
            <!ATTLIST stream
                id        CDATA #REQUIRED
                width     CDATA #REQUIRED
                height    CDATA #REQUIRED
                format    CDATA #REQUIRED
                framerate CDATA #REQUIRED
            >

        <!-- Camera module characteristics including its optics and imaging sensor. -->
        <!ELEMENT characteristics (parameter)*>
                <!ELEMENT parameter EMPTY>
                <!-- A name of camera characteristic.  This must be a subset of
                     android.hardware.automotive.evs@1.1::CameraCharacteristics.
                -->
                <!ATTLIST parameter
                    name  CDATA #REQUIRED
                    type  CDATA #REQUIRED
                    size  CDATA #REQUIRED
                    value CDATA #REQUIRED
                >

<!-- Available display devices -->
<!ELEMENT display (device)+>

