1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4This XML allows OEMs to configure a driving state to UX restrictions.  There are 2 major classes
5of configuration:
61. Restriction Mapping as defined by the <restrictionMapping> tag.
72. Restriction Parameters for restrictions that can be parametrized as defined by
8   <restrictionParameters> tag.
9
10Note:
11   1. The tags and attributes are declared in packages/services/Car/service/res/attrs.xml.
12   2. The driving states defined there should align with driving states (@CarDrivingState) defined in
13   packages/services/Car/car-lib/src/android/car/drivingstate/CarDrivingStateEvent.java
14   3. Similarly the UX restrictions should align with
15   packages/services/Car/car-lib/src/android/car/drivingstate/CarUxRestrictions.java
16-->
17
18<UxRestrictions xmlns:car="http://schemas.android.com/apk/res-auto">
19    <!-- Map the driving states to UX restrictions here -->
20    <!-- Note - The platform takes a fully restricted approach when there is no information or if
21    the information is malformed.  As a result,
22    1. Default values for requiresDistractionOptimization is true, and uxr is fully_restricted.
23    2. If uxr != baseline, then requiresDistractionOptimization is automatically promoted to true,
24    even if it is declared as false.  Because it doesn't make sense to have an non baseline UX
25    restriction without requiresDistractionOptimization set to true.
26    So if we don't want any restrictions, requiresDistractionOptimization should be explicitly
27    marked as false and uxr should be explicitly set to baseline. -->
28    <RestrictionMapping>
29        <DrivingState car:state="parked">
30            <Restrictions car:requiresDistractionOptimization="false" car:uxr="baseline"/>
31        </DrivingState>
32
33        <DrivingState car:state="idling">
34            <Restrictions car:requiresDistractionOptimization="false" car:uxr="baseline"/>
35        </DrivingState>
36
37        <!-- This is to illustrate how to add multiple speed ranges.  The restrictions here
38        are the same for both the speed ranges, but could be configured to be different.
39        NOTE:
40        1. The speed units is in meters per second to be in accordance with the
41        PERF_VEHICLE SPEED definition in hardware/interfaces/automotive/vehicle/2.0/types.hal
42        2. The speed ranges should be non overlapping, i.e one speed value cannot be in more
43        than one range.  It is denoted in a left closed, right open interval [minSpeed, maxSpeed).
44        For ex: [0,5) indicates speed >= 0 && speed < 5.0m/s.
45        3. For a speed range with no high limit, maxSpeed is not filled.  For ex., if the speed
46        range is anything >=5m/s, only the minSpeed is filled with a value of 5m/s.  There cannot be
47        a range higher than this, which will violate the 2nd condition above.
48        4. If the above conditions are not met, mapping behavior is undefined. -->
49        <!-- This is restrictions for moving and speed [0,5m/s) -->
50        <DrivingState car:state="moving" car:minSpeed="0" car:maxSpeed="5.0">
51            <Restrictions car:requiresDistractionOptimization="true" car:uxr="fully_restricted"/>
52        </DrivingState>
53
54        <!-- Restrictions for speed >=5 -->
55        <DrivingState car:state="moving" car:minSpeed="5.0">
56            <Restrictions car:requiresDistractionOptimization="true" car:uxr="fully_restricted"/>
57        </DrivingState>
58    </RestrictionMapping>
59
60    <!-- Configure restriction parameters here-->
61    <RestrictionParameters>
62        <!-- Parameters to express displayed String related restrictions -->
63        <StringRestrictions car:maxLength="120"/>
64        <!-- Parameters to express content related restrictions -->
65        <ContentRestrictions car:maxCumulativeItems="21" car:maxDepth="3"/>
66    </RestrictionParameters>
67
68</UxRestrictions>
69