aboutsummaryrefslogtreecommitdiff
path: root/en/devices
diff options
context:
space:
mode:
authorAndroid Partner Docs <noreply@android.com>2018-11-09 09:43:40 -0800
committerMark Hecomovich <mheco@google.com>2018-11-09 14:44:57 -0800
commitc331c4c429cc28bfe87f1e7fe8c954ba2f7509fc (patch)
treebe8019bc8baef8b03fdaf36bdb5fc2e2d4788ffc /en/devices
parentc1e42576367b058286943f85117e2cf1caccdd59 (diff)
downloadsource.android.com-c331c4c429cc28bfe87f1e7fe8c954ba2f7509fc.tar.gz
Docs: Changes to source.android.com
- 220816688 Devsite localized content from translation request 1008214. by Android Partner Docs <noreply@android.com> - 220816664 Devsite localized content from translation request 1013270. by Android Partner Docs <noreply@android.com> - 220816636 Devsite localized content from translation request 1013272. by Android Partner Docs <noreply@android.com> - 220816628 Devsite localized content from translation request 1014969. by Android Partner Docs <noreply@android.com> - 220815612 Fix CVE reference for CVE-2017-1000112 by Android Partner Docs <noreply@android.com> - 220713007 Edit text, distinguish between simple and complex setup, ... by Clay Murphy <claym@google.com> - 220702656 Document default Java getService behavior. by Android Partner Docs <noreply@android.com> - 220485453 Update docs for ODM manifest overriding vendor manifest. by Android Partner Docs <noreply@android.com> - 220485175 Devsite localized content from translation request 1012616. by Android Partner Docs <noreply@android.com> - 220485126 Devsite localized content from translation request 964305. by Android Partner Docs <noreply@android.com> - 220485102 Devsite localized content from translation request 1009438. by Android Partner Docs <noreply@android.com> - 220485097 Devsite localized content from translation request 1012331. by Android Partner Docs <noreply@android.com> - 220346894 Adding GSI details for app developers and device complian... by Heidi von Markham <hvm@google.com> - 220346865 Updated the Index.yaml file by Android Partner Docs <noreply@android.com> - 220316234 Adding AOSP links to 2018-11-01.html by Android Partner Docs <noreply@android.com> - 220310886 Fix broken link on advisory page by Danielle Roberts <daroberts@google.com> - 220291759 Devsite localized content from translation request 997229. by Android Partner Docs <noreply@android.com> - 220291718 Devsite localized content from translation request 1009639. by Android Partner Docs <noreply@android.com> - 220291707 Devsite localized content from translation request 1010359. by Android Partner Docs <noreply@android.com> - 220289357 Add tags for OPM7.181105.004 (angler/bullhead), OPM8.1811... by Android Partner Docs <noreply@android.com> - 220197576 Update WFoV assembly box to 2.7 by Kenneth Lau <kennethlau@google.com> - 220193030 Change Input overview title by Danielle Roberts <daroberts@google.com> - 220174571 Updated HTC components table by Android Partner Docs <noreply@android.com> - 220124279 November 2018 bulletins by Danielle Roberts <daroberts@google.com> - 220118829 Devsite localized content from translation request 1012605. by Android Partner Docs <noreply@android.com> - 219944386 Update ASHA CoC spec. based on feedback from Oticon and i... by Android Partner Docs <noreply@android.com> - 219852814 Mention Soong on home page by Clay Murphy <claym@google.com> - 219843976 Devsite localized content from translation request 1007156. by Android Partner Docs <noreply@android.com> - 219827948 Fix some html style issue. by Android Partner Docs <noreply@android.com> - 219823685 Devsite localized content from translation request 1001117. by Android Partner Docs <noreply@android.com> - 219738856 Fix reference to Soong introduction in Android version by Clay Murphy <claym@google.com> - 219733022 Add a bullentin column to release numbers by Android Partner Docs <noreply@android.com> - 219707540 Move testing docs from AOSP to SAC proper by Clay Murphy <claym@google.com> - 219701714 Devsite localized content from translation request 1010885. by Android Partner Docs <noreply@android.com> - 219675967 Hello, this changelist shows a new page called 'Codelab a... by Android Partner Docs <noreply@android.com> - 219615108 Added note that OTA clients must notify DPCs about OTA st... by Android Partner Docs <noreply@android.com> - 219525544 Fixed the Trusty API Reference link from by Android Partner Docs <noreply@android.com> - 219491359 Devsite localized content from translation request 1008378. by Android Partner Docs <noreply@android.com> - 219351557 Fix links to manifest-format.md by Android Partner Docs <noreply@android.com> - 219338673 Update documentation for file-based encryption by Android Partner Docs <noreply@android.com> - 219306017 Devsite localized content from translation request 1010762. by Android Partner Docs <noreply@android.com> - 219306010 Devsite localized content from translation request 1007340. by Android Partner Docs <noreply@android.com> - 219305976 Devsite localized content from translation request 1010760. by Android Partner Docs <noreply@android.com> - 219305971 Devsite localized content from translation request 1007769. by Android Partner Docs <noreply@android.com> - 219305969 Devsite localized content from translation request 1001106. by Android Partner Docs <noreply@android.com> - 219163709 Update our Android Severity webpage to clarify that Insta... by Android Partner Docs <noreply@android.com> - 219161004 Devsite localized content from translation request 1009631. by Android Partner Docs <noreply@android.com> - 219160993 Devsite localized content from translation request 1009414. by Android Partner Docs <noreply@android.com> - 219160986 Devsite localized content from translation request 980845. by Android Partner Docs <noreply@android.com> - 218920762 Change examples from /data/misc/media* to /data/misc/audi... by Christina Nguyen <cqn@google.com> - 218917538 Update the description of fastboot to the correct behavior. by Christina Nguyen <cqn@google.com> PiperOrigin-RevId: 220816688 Change-Id: Ifd1ceca1330d6c1f951fa5d7b2da571c95cd212b
Diffstat (limited to 'en/devices')
-rw-r--r--en/devices/architecture/hidl-java/index.html2
-rw-r--r--en/devices/architecture/vintf/objects.html47
-rw-r--r--en/devices/audio/debugging.html24
-rw-r--r--en/devices/bluetooth/asha.html101
-rw-r--r--en/devices/input/index.html2
-rw-r--r--en/devices/tech/admin/ota-updates.html61
-rw-r--r--en/devices/tech/ota/ab/ab_implement.html14
7 files changed, 168 insertions, 83 deletions
diff --git a/en/devices/architecture/hidl-java/index.html b/en/devices/architecture/hidl-java/index.html
index d56fd1cc..f98d1b64 100644
--- a/en/devices/architecture/hidl-java/index.html
+++ b/en/devices/architecture/hidl-java/index.html
@@ -72,6 +72,8 @@ IFoo server = IFoo.getService(true /* retry */); // throws NoSuchElementExceptio
IFoo anotherServer = IFoo.getService("second_impl", true /* retry */);
server.doSomething(&hellip;);
</pre>
+<p class=caution><strong>Warning</strong>: Java <code>getService</code> with no arguments will not
+wait for the service to start.</p>
</li>
</ol>
diff --git a/en/devices/architecture/vintf/objects.html b/en/devices/architecture/vintf/objects.html
index a5e34a2c..825b20d9 100644
--- a/en/devices/architecture/vintf/objects.html
+++ b/en/devices/architecture/vintf/objects.html
@@ -4,6 +4,7 @@
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
+ {% include "_versions.html" %}
<body>
<!--
Copyright 2017 The Android Open Source Project
@@ -30,18 +31,54 @@ on the schema, see <a href="#manifest-file-schema">Manifest file schema</a>).
<h2 id="device-manifest-file">Device manifest</h2>
<p>The Device manifest (provided by the device) consists of the vendor manifest
-and the ODM manifest:</p>
+and the ODM manifest.</p>
<ul>
<li>The vendor manifest specifies HALs, VNDK versions, etc. common to an SoC. It
is recommended to be placed in the Android source tree at
-<code>device/${VENDOR}/${DEVICE}/manifest.xml</code>, but multiple fragment
+<code>device/<var>VENDOR</var>/<var>DEVICE</var>/manifest.xml</code>, but multiple fragment
files can be used. For details, see
<a href="/devices/architecture/vintf/resources.html#manifest-fragments">Generate
DM from fragments</a>.
</li>
-<li>The ODM manifest overrides the vendor manifest and lists HALs specific to
-the product.</li>
+<li>The ODM manifest lists HALs specific to the product. VINTF Object loads the ODM manifest as
+ follows:
+ <ol>
+ <li>If <code><var>SKU</var></code> is defined (where <code><var>SKU</var></code> is the value of
+ the property <code>ro.boot.product.hardware.sku</code>),
+ <code>/odm/etc/vintf/manifest_<var>SKU</var>.xml</code>
+ </li>
+ <li><code>/odm/etc/vintf/manifest.xml</code></li>
+ <li>If <code><var>SKU</var></code> is defined,
+ <code>/odm/etc/manifest_<var>SKU</var>.xml</code></li>
+ <li><code>/odm/etc/manifest.xml</code></li>
+ </ol>
+</li>
+<li>VINTF Object loads the device manifest as follows:
+ <ol>
+ <li>If <code>/vendor/etc/vintf/manifest.xml</code> exists, combine the following:
+ <ol>
+ <li><code>/vendor/etc/vintf/manifest.xml</code></li>
+ <li>optional vendor manifest fragments</li>
+ <li>optional ODM manifest
+ <li>optional ODM manifest fragments</li>
+ </ol>
+ <li>If ODM manifest exists, combine ODM manifest with optional ODM manifest fragments.</li>
+ <li><code>/vendor/manfiest.xml</code> (legacy, no fragments)</li>
+ </ol>
+Note that:
+ <ul>
+ <li>On legacy devices, the legacy vendor manifest and ODM manifest are used. The
+ ODM manifest may completely override the legacy vendor manifest.</li>
+ <li>On devices launched with Android {{ androidPVersionNumber }}, the ODM manifest is combined
+ with vendor manifest.</li>
+ <li>When combining a list of manifests, manifests that appear later in the list may override
+ tags in manifests that appear earlier in the list, provided that the tags in the later
+ manifest has attribute <code>override="true"</code>. For example, ODM manifest may override
+ some <code>&lt;hal></code> tags from vendor manifest. See documentation for attribute
+ <code>override</code> below.</li>
+ </ul>
+</li>
</ul>
<p>This setup enables multiple products with the same board to share the same
@@ -120,6 +157,7 @@ specify product-specific HALs).</p>
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;!-- Comments, Legal notices, etc. here -->
&lt;manifest version="1.0" type="device">
+ &lt;!-- camera 3.4 in vendor manifest is ignored -->
&lt;hal override="true">
&lt;name>android.hardware.camera&lt;/name>
&lt;transport>hwbinder&lt;/transport>
@@ -129,6 +167,7 @@ specify product-specific HALs).</p>
&lt;instance>legacy/0&lt;/instance>
&lt;/interface>
&lt;/hal>
+ &lt;!-- NFC is disabled -->
&lt;hal override="true">
&lt;name>android.hardware.nfc&lt;/name>
&lt;transport>hwbinder&lt;/transport>
diff --git a/en/devices/audio/debugging.html b/en/devices/audio/debugging.html
index c2b7cd73..26f77314 100644
--- a/en/devices/audio/debugging.html
+++ b/en/devices/audio/debugging.html
@@ -45,11 +45,11 @@ done debugging; the tee sink should not be left enabled in production builds.
</p>
<p>
-The instructions in the remainder of this section are for Android 5.x and 6.x.
-For Android 7.x, replace <code>/data/misc/media</code> with
-<code>/data/misc/audioserver</code>.
-Additionally, you must use a userdebug or eng build.
-If you use a userdebug build, then disable verity with:</p>
+ The instructions in this section are for Android 7.x and higher. For Android
+ 5.x and 6.x, replace <code>/data/misc/audioserver</code> with
+ <code>/data/misc/media</code>. Additionally, you must use a userdebug or
+ eng build. If you use a userdebug build, then disable verity with:
+</p>
<pre class="devsite-terminal devsite-click-to-copy">
adb root &amp;&amp; adb disable-verity &amp;&amp; adb reboot
@@ -74,7 +74,7 @@ adb root &amp;&amp; adb disable-verity &amp;&amp; adb reboot
<br />Confirm that the output is: <code>[ro.debuggable]: [1]</code>
</li>
<li><code class="devsite-terminal">adb shell</code></li>
-<li><code class="devsite-terminal">ls -ld /data/misc/media</code>
+<li><code class="devsite-terminal">ls -ld /data/misc/audioserver</code>
<br />
<p>
Confirm that the output is:
@@ -86,8 +86,8 @@ drwx------ media media ... media
If the directory does not exist, create it as follows:
</p>
<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">mkdir /data/misc/media</code>
-<code class="devsite-terminal">chown media:media /data/misc/media</code>
+<code class="devsite-terminal">mkdir /data/misc/audioserver</code>
+<code class="devsite-terminal">chown media:media /data/misc/audioserver</code>
</pre>
</li>
<li><code class="devsite-terminal">echo af.tee=# &gt; /data/local.prop</code>
@@ -122,13 +122,13 @@ but you can get similar results using "4."
<li>Run your audio test.</li>
<li><code class="devsite-terminal">adb shell dumpsys media.audio_flinger</code></li>
<li>Look for a line in <code>dumpsys</code> output such as this:<br />
-<code>tee copied to /data/misc/media/20131010101147_2.wav</code>
+<code>tee copied to /data/misc/audioserver/20131010101147_2.wav</code>
<br />This is a PCM .wav file.
</li>
-<li>Then <code>adb pull</code> any <code>/data/misc/media/*.wav</code> files of interest;
+<li>Then <code>adb pull</code> any <code>/data/misc/audioserver/*.wav</code> files of interest;
note that track-specific dump filenames do not appear in the
<code>dumpsys</code> output,
-but are still saved to <code>/data/misc/media</code> upon track closure.
+but are still saved to <code>/data/misc/audioserver</code> upon track closure.
</li>
<li>Review the dump files for privacy concerns before sharing with others.</li>
</ol>
@@ -168,7 +168,7 @@ to the device's <code>/system/lib</code>.
</li>
<li><code class="devsite-terminal">adb shell</code></li>
<li><code class="devsite-terminal">rm /data/local.prop</code></li>
-<li><code class="devsite-terminal">rm /data/misc/media/*.wav</code></li>
+<li><code class="devsite-terminal">rm /data/misc/audioserver/*.wav</code></li>
<li><code class="devsite-terminal">reboot</code></li>
</ol>
diff --git a/en/devices/bluetooth/asha.html b/en/devices/bluetooth/asha.html
index f6a6c193..d3c879d7 100644
--- a/en/devices/bluetooth/asha.html
+++ b/en/devices/bluetooth/asha.html
@@ -34,7 +34,7 @@
The design of CoC references the
<a href="https://www.bluetooth.com/specifications/bluetooth-core-specification">Bluetooth Core Specification Version 5</a>
(BT). To stay aligned with the core specifications, all multi-byte
- values on this page should be read as little-endian.
+ values on this page shall be read as little-endian.
</p>
<h2 id="terminology">Terminology</h2>
@@ -85,17 +85,16 @@
</aside>
<p>
- When pairing and connecting hearing devices, the central should:
+ When pairing and connecting hearing devices, the central shall:
</p>
<ul>
<li>
Keep track of the more recent left and right peripherals paired.
- Those two peripherals should be considered the audio sink.
</li>
<li>
Assume the peripherals are in use if a valid pairing exists. The
- central should attempt to connect or reconnect with the paired
+ central shall attempt to connect or reconnect with the paired
device when the connection is lost.
</li>
<li>
@@ -113,34 +112,39 @@
<p>
To properly implement CoC for a good user experience, the Bluetooth
- systems in the central and peripheral devices should:
+ systems in the central and peripheral devices shall:
</p>
<ul>
<li>
- implement a compliant BT 4.2 or higher controller
+ implement a compliant BT 4.2 or higher controller.
</li>
<li>
- support at least 2 simultaneous LE links with parameters as
+ have the central support at least 2 simultaneous LE links with parameters as
+ described in <a href="#audio-packet-format-and-timing">Audio packet
+ format and timing</a>.
+ </li>
+ <li>
+ have the peripheral support at least 1 LE link with the parameters
described in <a href="#audio-packet-format-and-timing">Audio packet
format and timing</a>.
</li>
<li>
have an LE credit based flow control [BT Vol 3, Part A, Sec 10.1].
- Devices should support an MTU and MPS size of at least 240 bytes on
+ Devices shall support an MTU and MPS size of at least 241 bytes on
CoC and be able to buffer up to 8 packets.
</li>
<li>
have an LE data length extension [BT Vol 6, Part B, Sec 5.1.9] with
- a payload of at least 87 bytes. It is recommended that the data
- length is at least 250 bytes.
+ a payload of at least 167 bytes. For peripherals that support the
+ codec G.722 @ 24 kHz, the length is at least 247 bytes.
</li>
<li>
have the central device support the HCI LE Connection Update Command
and comply with the non-zero minimum_CE_Length parameter.
</li>
<li>
- maintain the data throughput for two LE CoC connections to two
+ have the central maintain the data throughput for two LE CoC connections to two
different peripherals with the connection intervals and payload
sizes in <a href="#audio-packet-format-and-timing">Audio packet
format and timing</a>.
@@ -156,11 +160,11 @@
</ul>
<p>
- The peripheral and central may implement 2 Mbit PHY as specified in
- BT 5. The central should support audio links up to 64 kbit/s on both 1
- Mbit and 2 Mbit PHY but can choose to limit support for links
- requiring more than 64 kbit/s to the 2 Mbit PHY in order to improve
- coexistence with other 2.4 GHz devices. The BLE long range PHY should
+ The peripheral and central may implement 2M PHY as specified in
+ BT 5. The central shall support audio links up to 64 kbit/s on both 1M
+ and 2M PHY but can choose to limit support for links
+ requiring more than 64 kbit/s to the 2M PHY in order to improve
+ coexistence with other 2.4 GHz devices. The BLE long range PHY shall
not be used.
</p>
@@ -172,8 +176,8 @@
<h2 id="asha-gatt-services">ASHA GATT services</h2>
<p>
- A peripheral should implement the Audio Streaming for Hearing Aid
- (ASHA) GATT server service described below. The peripheral should
+ A peripheral shall implement the Audio Streaming for Hearing Aid
+ (ASHA) GATT server service described below. The peripheral shall
advertise this service when in general discoverable mode to let the
central recognize an audio sink. Any LE audio streaming operations
shall require encryption. The BLE audio streaming consists of the
@@ -215,16 +219,16 @@
<td>Volume</td>
<td>Write without Response</td>
<td>
- Byte between -128 and 0 indicating volume in dB. -128 should be
+ Byte between -128 and 0 indicating volume in dB. -128 shall be
interpreted as mute. 0 dB with a rail-to-rail sine tone streamed
- should represent a 100 dBSPL input equivalent on the hearing
- instrument. The central should stream in nominal full scale and
+ shall represent a 100 dBSPL input equivalent on the hearing
+ instrument. The central shall stream in nominal full scale and
use this variable to set the desired presentation level in the
peripheral.
</td>
</tr>
<tr>
- <td>LE_PSM</td>
+ <td>LE_PSM_OUT</td>
<td>Read</td>
<td>
PSM to use for connecting the audio channel. To be picked from the
@@ -259,13 +263,13 @@
<td><code>{00e4ca9e-ab14-41e4-8823-f9e70c7e91df}</code></td>
</tr>
<tr>
- <td>LE_PSM</td>
+ <td>LE_PSM_OUT</td>
<td><code>{2d410339-82b6-42aa-b34e-e2e01df8cc1a}</code></td>
</tr>
</table>
<p>
- In addition to the ASHA GATT service, the peripheral should also
+ In addition to the ASHA GATT service, the peripheral shall also
implement the Device Information Service to let the central detect the
manufacturer names and device names of the peripheral.
</p>
@@ -319,7 +323,7 @@
<td>
Supported <a href="#codec-ids">Codec IDs</a>. This is a bitmask
of supported codec IDs. A 1 in a bit location corresponds to a
- supported codec. All other bits should be set to 0.
+ supported codec. All other bits shall be set to 0.
</td>
</tr>
</table>
@@ -359,7 +363,9 @@
</tr>
<tr>
<td>0-1</td>
- <td>ID of the manufacturer.</td>
+ <td>ID of the manufacturer. It is the
+ <a href="https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers">Company Identifiers</a>
+ assigned by BTSIG.
</tr>
<tr>
<td>2-7</td>
@@ -379,7 +385,7 @@
</tr>
<tr>
<td>0</td>
- <td>LE CoC audio streaming supported (Yes/No).</td>
+ <td>LE CoC audio output streaming supported (Yes/No).</td>
</tr>
<tr>
<td>1-7</td>
@@ -466,7 +472,7 @@
<li><strong>2</strong> - Phonecall</li>
<li><strong>3</strong> - Media</li>
</ul>
- The peripheral should not request connection updates before a
+ The peripheral shall not request connection updates before a
<code>«Stop»</code> opcode has been received.
</td>
</tr>
@@ -476,8 +482,7 @@
<td>
Instructs the peripheral to stop rendering audio. A new audio
setup sequence should be initiated following this stop in order
- to render audio again. The peripheral may request a connection
- update following this command.
+ to render audio again.
</td>
</tr>
</table>
@@ -548,14 +553,15 @@
The peripherals must have a <strong>Complete Local Name</strong>
data type that indicates the name of the hearing aid. This name will
be used on the mobile device's user interface so the user can select
- the right device. The name should not indicate the left or right
+ the right device. The name shall not indicate the left or right
channel since this information is provided in
<a href="#devicecapabilities">DeviceCapabilities</a>.
</p>
<p>
If the peripherals put the name and ASHA service data types in the same
- frame type (ADV or SCAN RESP), then the two data types should appear
+ frame type (ADV or SCAN RESP), then the two data types ("Complete Local Name"
+ and "Service Data for ASHA service") shall appear
in the same frame. This lets the mobile device scanner get both data
in the same scan result.
</p>
@@ -601,8 +607,8 @@
<ul>
<li>
An audio frame should always match the connection interval in time.
- For example, if the connection interval is 15ms and sample rate is
- 1 kHz, then the audio frame should contain 240 samples.
+ For example, if the connection interval is 10ms and sample rate is
+ 16 kHz, then the audio frame shall contain 160 samples.
</li>
<li>
Sample rates in the system are restricted to multiples of 8kHz to
@@ -610,14 +616,14 @@
the frame time or the connection interval.
</li>
<li>
- A sequence byte should prepend audio frames. The sequence byte
- should be counting with wrap-around and allow the peripheral to
+ A sequence byte shall prepend audio frames. The sequence byte
+ shall be counting with wrap-around and allow the peripheral to
detect buffer mismatch or underflow.
</li>
<li>
- An audio frame should always fit into a single LE packet. The audio
- frame should be sent as a separate L2CAP packet. The size of the LE
- LL PDU should be:<br />
+ An audio frame shall always fit into a single LE packet. The audio
+ frame shall be sent as a separate L2CAP packet. The size of the LE
+ LL PDU shall be:<br />
<em>audio payload size + 1 (sequence counter) + 6
(4 for L2CAP header, 2 for SDU)</em>
</li>
@@ -635,7 +641,7 @@
</p>
<p>
- For all the codecs that a peripheral supports, the peripheral should
+ For all the codecs that a peripheral supports, the peripheral shall
support the connection parameters below. This is a non-exhaustive list
of configurations that the central can implement.
</p>
@@ -645,7 +651,7 @@
<th>Codec</th>
<th>Bitrate</th>
<th>Connection interval</th>
- <th>CE Length (1/2 Mbit)</th>
+ <th>CE Length (1M/2M PHY)</th>
<th>Audio payload size</th>
</tr>
<tr>
@@ -693,19 +699,22 @@
<p>
Before starting an audio stream, the central queries the peripherals
- and establishes the best quality common denominator codec. The stream
+ and establishes a common denominator codec. The stream
setup then proceeds through sequence:
</p>
<ol>
- <li>PSM, and optionally, PreparationDelay is read.</li>
+ <li>PSM, and optionally, PreparationDelay and RenderDelay are read. These values
+ may be cached by the central.
+ </li>
<li>
- CoC L2CAP channel is opened – the peripheral should grant 8 credits
+ CoC L2CAP channel is opened – the peripheral shall grant 8 credits
initially.
</li>
<li>
A connection update is issued to switch the link to the parameters
- required for the chosen codec.
+ required for the chosen codec. The central may do this connection update
+ before the CoC connection in the previous step.
</li>
<li>
Both the central and the peripheral host wait for the update
@@ -734,7 +743,7 @@
</p>
<p>
- The peripheral should not issue a connection update to the central.
+ The peripheral shall not issue a connection update to the central.
To save power, the central may issue a connection update to the
peripheral when it is not streaming audio.
</p>
diff --git a/en/devices/input/index.html b/en/devices/input/index.html
index 67247b63..f9f675a1 100644
--- a/en/devices/input/index.html
+++ b/en/devices/input/index.html
@@ -1,6 +1,6 @@
<html devsite>
<head>
- <title>Overview</title>
+ <title>Input</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
diff --git a/en/devices/tech/admin/ota-updates.html b/en/devices/tech/admin/ota-updates.html
index 62f07bd1..c3ef1404 100644
--- a/en/devices/tech/admin/ota-updates.html
+++ b/en/devices/tech/admin/ota-updates.html
@@ -31,22 +31,43 @@
<a
href="https://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html"
class="external"><code>SystemUpdatePolicy</code></a>
- class. <code>SystemUpdatePolicy</code> lets the Device Owner (DO) app, if
+ class. <code>SystemUpdatePolicy</code> lets the device owner (DO) app, if
present, control the installation of system updates.
</p>
- <p>
- Android {{ androidPVersionNumber }} enhances the ability for device
- owners to control updates by allowing device owners to postpone
- over-the-air (OTA) updates for up to 90 days. Focusing on
- corporate-owned, single-use (COSU) solutions, this feature lets owners
- pause the OS version running on devices over critical periods, such as
- holidays.
- </p>
+ <h2 id="notify-do">Notifying device owners</h2>
+
+ <p>
+ The over-the-air (OTA) client must notify device owner apps about
+ incoming OTA updates using a system API. The OTA client must also
+ include a timestamp recording when the OTA update first became
+ available. OTA clients can call
+ <code>DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)</code>
+ to notify device owner apps. If the OTA client doesn’t know if an update
+ is a security patch, the OTA client can fall back to using
+ <code>DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)</code>.
+ </p>
+
+ <p>
+ If an update isn’t currently available, the OTA client reports this by
+ setting the <code>updateReceivedTime</code> argument to <code>-1</code>.
+ We recommend sending notifications whenever the OTA client polls the
+ OTA server, or when an OTA is pushed to the client. You can also send
+ out notifications more frequently.
+ </p>
<h2 id="system-update-policy">System update policy</h2>
<p>
+ Android {{ androidPVersionNumber }} enhances the ability for device
+ owners to
+ <a href="https://developer.android.com/work/dpc/system-updates">control
+ updates</a> by allowing device owners to postpone OTA updates for up to
+ 90 days. Focusing on dedicated device (previously called COSU)
+ solutions, this feature lets owners pause the OS version running on
+ devices over critical periods, such as holidays.
+ </p>
+ <p>
To comply with the CDD, the OTA client must implement behavioral
policies. The DO can set the following policies, which must be
respected by the device system update subsystems:
@@ -70,6 +91,19 @@
</li>
</ul>
+ <p>
+ Device owners can also
+ <a href="https://developer.android.com/work/dpc/system-updates#freeze-periods">set
+ freeze periods</a> (in Android 9 or later) that freeze the OS version
+ over critical periods, such as holidays or other busy times. The system
+ doesn't install OTA updates during a freeze period. We recommend using
+ <code>SystemUpdatePolicy.InstallationOption</code> (see
+ following section), however the OTA client can also call
+ <a href="https://developer.android.com/reference/android/app/admin/SystemUpdatePolicy#getFreezePeriods()"><code>SystemUpdatePolicy.getFreezePeriods()</code></a>
+ to check if the device is in a freeze period.
+ </p>
+
+
<h2 id="implementing-installation-options">
Implementing installation options
</h2>
@@ -79,10 +113,11 @@
<code>SystemUpdatePolicy.InstallationOption</code>, that is designed
for the system update clients.
<code>SystemUpdatePolicy.InstallationOption</code> serves as a wrapper
- class for the policies. An installation option tells clients how to act
- on incoming system updates and how long that action is valid for, given
- the current system update policy. An installation option can be one of
- the following:
+ class for the policies and freeze periods. An installation option tells
+ clients how to act on incoming system updates and how long that action
+ is valid for, given the current system update policy or any freeze
+ period that might be set. An installation option can be one of the
+ following:
</p>
<ul>
diff --git a/en/devices/tech/ota/ab/ab_implement.html b/en/devices/tech/ota/ab/ab_implement.html
index 14d43c08..856a5952 100644
--- a/en/devices/tech/ota/ab/ab_implement.html
+++ b/en/devices/tech/ota/ab/ab_implement.html
@@ -187,15 +187,15 @@ the <code>/vendor</code> mount point.</p>
tree (DT) node (<code>/firmware/android/slot_suffix</code>) or through the
<code>androidboot.slot_suffix</code> command line argument.</p>
-<p>By default, fastboot flashes only slot <code>a</code> on an A/B device and
-sets the current slot to <code>a</code>. If the update package also contains
-images for slot <code>b</code>, fastboot flashes those images as well. Available
-options include:</p>
+<p>By default, fastboot flashes the current slot on an A/B device. If the update
+ package also contains images for the other, non-current slot, fastboot flashes those
+ images as well. Available options include:</p>
<ul>
-<li><code>--slot</code>. Prompt fastboot to use slot <code>b</code> instead of
-slot <code>a</code>.</li>
-<li><code>--set-active</code>. Set the slot as active.</li>
+ <li><code>--slot <var>SLOT</var></code>. Override the default behavior and
+ prompt fastboot to flash the slot that is passed in as an argument.</li>
+ <li><code>--set-active [<var>SLOT</var>]</code>. Set the slot as active. If
+ no optional argument is specified, then the current slot is set as active.</li>
<li><code>fastboot --help</code>. Get details on commands.</li>
</ul>