<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2022, 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.
*/
-->

<!-- Resources to configure car service based on each OEM's preference. -->
<resources>
    <!--
    Lists all occupant (= driver + passenger) zones available in the car.
    Some examples are:
    <item>occupantZoneId=0,occupantType=DRIVER,seatRow=1,seatSide=driver</item>
    <item>occupantZoneId=1,occupantType=FRONT_PASSENGER,seatRow=1,seatSide=oppositeDriver</item>
    <item>occupantZoneId=2,occupantType=REAR_PASSENGER,seatRow=2,seatSide=left</item>
    <item>occupantZoneId=3,occupantType=REAR_PASSENGER,seatRow=2,seatSide=right</item>

    occupantZoneId: Unique unsigned integer id to represent each passenger zone. Each zone
                    should have different id.
    occupantType: Occupant type for the display. Use * part from
                   CarOccupantZoneManager.OCCUPANT_TYPE_* like DRIVER, FRONT_PASSENGER,
                   REAR_PASSENGER and etc.
    seatRow: Integer telling which row the seat is located. Row 1 is for front seats.
    seatSide: left/center/right for known side. Or can use driver/center/oppositeDriver to
              handle both right-hand driving and left-hand driving in one place.
              If car's RHD / LHD is not specified, LHD will be assumed and driver side becomes
              left.
    -->
    <string-array translatable="false" name="config_occupant_zones">
        <item>occupantZoneId=0,occupantType=DRIVER,seatRow=1,seatSide=driver</item>
        <item>occupantZoneId=1,occupantType=REAR_PASSENGER,seatRow=2,seatSide=left</item>
        <item>occupantZoneId=2,occupantType=REAR_PASSENGER,seatRow=2,seatSide=right</item>
        <item>occupantZoneId=3,occupantType=FRONT_PASSENGER,seatRow=1,seatSide=oppositeDriver</item>
    </string-array>

    <!--
        Specifies configuration of displays in system telling its usage / type and assigned
        occupant.

        Some examples are:
        <item>displayPort=0,displayType=MAIN,occupantZoneId=0,inputTypes=TOUCH_SCREEN|DPAD_KEYS|NAVIGATE_KEYS|ROTARY_NAVIGATION</item>
        <item>displayPort=1,displayType=INSTRUMENT_CLUSTER,occupantZoneId=0,inputTypes=DPAD_KEYS</item>
        <item>displayPort=2,displayType=MAIN,occupantZoneId=1,inputTypes=TOUCH_SCREEN</item>
        <item>displayPort=3,displayType=MAIN,occupantZoneId=2,inputTypes=TOUCH_SCREEN</item>
        <item>displayPort=4,displayType=MAIN,occupantZoneId=3,inputTypes=TOUCH_SCREEN</item>

        displayPort: Unique port id for the display.
        displayType: Display type for the display. Use * part from
                       CarOccupantZoneManager.DISPLAY_TYPE_* like MAIN, INSTRUMENT_CLUSTER and
                       etc.
        occupantZoneId: occupantZoneId specified from config_occupant_zones.

        inputTypes: supported input types for the corresponding display.
    -->
    <string-array translatable="false" name="config_occupant_display_mapping">
      <item>displayPort=0,displayType=MAIN,occupantZoneId=0,inputTypes=TOUCH_SCREEN|DPAD_KEYS|NAVIGATE_KEYS|ROTARY_NAVIGATION</item>
      <item>displayUniqueId=virtual:com.android.car.cluster.osdouble:ClusterDisplay,displayType=INSTRUMENT_CLUSTER,occupantZoneId=0,inputTypes=DPAD_KEYS</item>
      <item>displayPort=2,displayType=MAIN,occupantZoneId=1,inputTypes=TOUCH_SCREEN</item>
      <item>displayPort=3,displayType=MAIN,occupantZoneId=2,inputTypes=TOUCH_SCREEN</item>
      <item>displayPort=4,displayType=MAIN,occupantZoneId=3,inputTypes=TOUCH_SCREEN</item>
    </string-array>

    <!--
    Specifies optional features that can be enabled by this image. Note that vhal can disable
    them depending on product variation.
    Feature name can be either service name defined in Car.*_SERVICE for Car*Manager or any
    optional feature defined under @OptionalFeature annotation.
    Note that '/' is used to have subfeature under main feature like "MAIN_FEATURE/SUB_FEATURE".

    Some examples are:
    <item>storage_monitoring</item>
    <item>com.android.car.user.CarUserNoticeService</item>
    <item>com.example.Feature/SubFeature</item>

    The default list defined below will enable all optional features defined.
    -->
    <string-array translatable="false" name="config_allowed_optional_car_features">
        <item>car_evs_service</item>
        <item>car_navigation_service</item>
        <item>car_occupant_connection_service</item>
        <item>car_remote_device_service</item>
        <item>cluster_home_service</item>
        <item>com.android.car.user.CarUserNoticeService</item>
        <item>diagnostic</item>
        <item>storage_monitoring</item>
        <item>vehicle_map_service</item>
        <item>car_telemetry_service</item>
    </string-array>

    <!-- Enable profile user assignment per each CarOccupantZone for per display android user
         assignments. This feature is still experimental. -->
    <bool name="enableProfileUserAssignmentForMultiDisplay" translatable="false">true</bool>
</resources>
