1# VINTF Device Manifest
2
3In Android Pie, an `<fqname>` tag was introduced to be able to express multiple
4different versions of the same HAL in VINTF manifests (for DRM)
5in device manifest. For devices launching with previous versions of Android and
6upgrading to Android Pie, the device manifest must not use `<fqname>` to
7satisfy requirements for non-optional HALs, because older version of `libvintf`
8do not recognize it, causing errors during OTA update.
9
10Assuming that the HAL provides `@1.0::I*/default`,
11`@1.1::I*/clearkey` and `@1.1::I*/foo` instances:
12
13## Devices upgrading to Android Pie
14
15### `target-level=1` or `target-level=2`
16
17FCM (framework compatibility matrix) version 2 (released in Android Oreo MR1)
18requires DRM 1.0. If the new device manifest has Target FCM Version (i.e.
19`target-level`) 1 or 2, it should use the following snippet:
20
21```xml
22<hal format="hidl">
23    <name>android.hardware.drm</name>
24    <transport>hwbinder</transport>
25    <version>1.0</version>
26    <interface>
27        <name>ICryptoFactory</name>
28        <instance>default</instance>
29    </interface>
30    <interface>
31        <name>IDrmFactory</name>
32        <instance>default</instance>
33    </interface>
34    <fqname>@1.1::ICryptoFactory/clearkey</fqname>
35    <fqname>@1.1::IDrmFactory/clearkey</fqname>
36    <fqname>@1.1::ICryptoFactory/foo</fqname>
37    <fqname>@1.1::IDrmFactory/foo</fqname>
38</hal>
39```
40
41### `target-level=3`
42
43FCM (framework compatibility matrix) version 3 (released in Android Pie)
44requires DRM 1.1. If the new device manifest has Target FCM Version (i.e.
45`target-level`) 3, it should use the following snippet:
46
47
48```xml
49<hal format="hidl">
50    <name>android.hardware.drm</name>
51    <transport>hwbinder</transport>
52    <version>1.1</version>
53    <interface>
54        <name>ICryptoFactory</name>
55        <instance>clearkey</instance>
56        <instance>foo</instance>
57    </interface>
58    <interface>
59        <name>IDrmFactory</name>
60        <instance>clearkey</instance>
61        <instance>foo</instance>
62    </interface>
63    <fqname>@1.0::ICryptoFactory/default</fqname>
64    <fqname>@1.0::IDrmFactory/default</fqname>
65</hal>
66```
67
68## Devices launching with Android Pie
69If you have a new device launched with Android Pie (no OTA), both of the
70aforementioned snippets can be used. Besides, it is recommended to use the
71new, clearer format:
72
73```xml
74<hal format="hidl">
75    <name>android.hardware.drm</name>
76    <transport>hwbinder</transport>
77    <fqname>@1.0::ICryptoFactory/default</fqname>
78    <fqname>@1.0::IDrmFactory/default</fqname>
79    <fqname>@1.1::ICryptoFactory/clearkey</fqname>
80    <fqname>@1.1::IDrmFactory/clearkey</fqname>
81    <fqname>@1.1::ICryptoFactory/foo</fqname>
82    <fqname>@1.1::IDrmFactory/foo</fqname>
83</hal>
84```
85