<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (C) 2021 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.
-->

<!-- Exterior View System Example Configuration

     Android Automotive axes are used to define coordinates.
     See https://source.android.com/devices/sensors/sensor-types#auto_axes

     Use evs_configuration.dtd with xmllint tool, to validate XML configuration file
-->

<configuration>
    <!-- system configuration for the blueline -->
    <system>
        <!-- number of cameras available to EVS -->
        <num_cameras value='4'/>
    </system>

    <!-- camera device information -->
    <camera>
        <!-- vivid emulated video devices -->
        <device id='/dev/video10' position='rear'>
            <caps>
                <!-- list of supported controls -->
                <supported_controls>
                    <control name='BRIGHTNESS' min='0' max='255'/>
                    <control name='CONTRAST' min='0' max='255'/>
                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
                    <control name='SHARPNESS' min='0' max='255'/>
                    <control name='AUTO_FOCUS' min='0' max='1'/>
                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
                </supported_controls>

                <!-- list of supported stream configurations -->
                <!-- vivid webcam input support below three resolutions -->
                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
            </caps>

            <!-- list of parameters -->
            <characteristics/>
        </device>
        <device id='/dev/video11' position='left'>
            <caps>
                <!-- list of supported controls -->
                <supported_controls>
                    <control name='BRIGHTNESS' min='0' max='255'/>
                    <control name='CONTRAST' min='0' max='255'/>
                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
                    <control name='SHARPNESS' min='0' max='255'/>
                    <control name='AUTO_FOCUS' min='0' max='1'/>
                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
                </supported_controls>

                <!-- list of supported stream configurations -->
                <!-- vivid webcam input support below three resolutions -->
                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
            </caps>

            <!-- list of parameters -->
            <characteristics/>
        </device>
        <device id='/dev/video12' position='right'>
            <caps>
                <!-- list of supported controls -->
                <supported_controls>
                    <control name='BRIGHTNESS' min='0' max='255'/>
                    <control name='CONTRAST' min='0' max='255'/>
                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
                    <control name='SHARPNESS' min='0' max='255'/>
                    <control name='AUTO_FOCUS' min='0' max='1'/>
                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
                </supported_controls>

                <!-- list of supported stream configurations -->
                <!-- vivid webcam input support below three resolutions -->
                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
            </caps>

            <!-- list of parameters -->
            <characteristics/>
        </device>
        <device id='/dev/video13' position='front'>
            <caps>
                <!-- list of supported controls -->
                <supported_controls>
                    <control name='BRIGHTNESS' min='0' max='255'/>
                    <control name='CONTRAST' min='0' max='255'/>
                    <control name='AUTO_WHITE_BALANCE' min='0' max='1'/>
                    <control name='WHITE_BALANCE_TEMPERATURE' min='2000' max='7500'/>
                    <control name='SHARPNESS' min='0' max='255'/>
                    <control name='AUTO_FOCUS' min='0' max='1'/>
                    <control name='ABSOLUTE_FOCUS' min='0' max='255' step='5'/>
                    <control name='ABSOLUTE_ZOOM' min='100' max='400'/>
                </supported_controls>

                <!-- list of supported stream configurations -->
                <!-- vivid webcam input support below three resolutions -->
                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='5'/>
                <stream id='1' width='640' height='360' format='RGBA_8888' framerate='15'/>
                <stream id='2' width='360' height='180' format='RGBA_8888' framerate='30'/>
            </caps>

            <!-- list of parameters -->
            <characteristics/>
        </device>
    </camera>

    <!-- display device starts -->
    <display>
        <device id='display0' position='driver'>
            <caps>
                <!-- list of supported inpu stream configurations -->
                <stream id='0' width='1280' height='720' format='RGBA_8888' framerate='30'/>
            </caps>
        </device>
    </display>
</configuration>
