Deployed dad7957 with MkDocs version: 1.3.1

This commit is contained in:
Gilles Boccon-Gibod
2023-05-03 08:57:35 -07:00
parent 81994010bd
commit 85a1a617f4
53 changed files with 2630 additions and 372 deletions

View File

@@ -839,8 +839,8 @@
<li class="md-nav__item">
<a href="/apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="/apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -945,6 +945,20 @@
<li class="md-nav__item">
<a href="/apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1195,7 +1209,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1219,13 +1233,7 @@ address[0] is the LSB of the address, address[5] is the MSB.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1674</span>
<span class="normal">1675</span>
<span class="normal">1676</span>
<span class="normal">1677</span>
<span class="normal">1678</span>
<span class="normal">1679</span>
<span class="normal">1680</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1680</span>
<span class="normal">1681</span>
<span class="normal">1682</span>
<span class="normal">1683</span>
@@ -1349,7 +1357,20 @@ address[0] is the LSB of the address, address[5] is the MSB.</p>
<span class="normal">1801</span>
<span class="normal">1802</span>
<span class="normal">1803</span>
<span class="normal">1804</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Address</span><span class="p">:</span>
<span class="normal">1804</span>
<span class="normal">1805</span>
<span class="normal">1806</span>
<span class="normal">1807</span>
<span class="normal">1808</span>
<span class="normal">1809</span>
<span class="normal">1810</span>
<span class="normal">1811</span>
<span class="normal">1812</span>
<span class="normal">1813</span>
<span class="normal">1814</span>
<span class="normal">1815</span>
<span class="normal">1816</span>
<span class="normal">1817</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Address</span><span class="p">:</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Bluetooth Address (see Bluetooth spec Vol 6, Part B - 1.3 DEVICE ADDRESS)</span>
<span class="sd"> NOTE: the address bytes are stored in little-endian byte order here, so</span>
@@ -1368,6 +1389,11 @@ address[0] is the LSB of the address, address[5] is the MSB.</p>
<span class="n">RANDOM_IDENTITY_ADDRESS</span><span class="p">:</span> <span class="s1">&#39;RANDOM_IDENTITY_ADDRESS&#39;</span><span class="p">,</span>
<span class="p">}</span>
<span class="c1"># Type declarations</span>
<span class="n">NIL</span><span class="p">:</span> <span class="n">Address</span>
<span class="n">ANY</span><span class="p">:</span> <span class="n">Address</span>
<span class="n">ANY_RANDOM</span><span class="p">:</span> <span class="n">Address</span>
<span class="c1"># pylint: disable-next=unnecessary-lambda</span>
<span class="n">ADDRESS_TYPE_SPEC</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;size&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;mapper&#39;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">Address</span><span class="o">.</span><span class="n">address_type_name</span><span class="p">(</span><span class="n">x</span><span class="p">)}</span>
@@ -1400,7 +1426,9 @@ address[0] is the LSB of the address, address[5] is the MSB.</p>
<span class="n">address_type</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">offset</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
<span class="k">return</span> <span class="n">Address</span><span class="o">.</span><span class="n">parse_address_with_type</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">address_type</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">address_type</span><span class="o">=</span><span class="n">RANDOM_DEVICE_ADDRESS</span><span class="p">):</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">address_type</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">RANDOM_DEVICE_ADDRESS</span>
<span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Initialize an instance. `address` may be a byte array in little-endian</span>
<span class="sd"> format, or a hex string in big-endian format (with optional &#39;:&#39;</span>
@@ -1515,18 +1543,7 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1725</span>
<span class="normal">1726</span>
<span class="normal">1727</span>
<span class="normal">1728</span>
<span class="normal">1729</span>
<span class="normal">1730</span>
<span class="normal">1731</span>
<span class="normal">1732</span>
<span class="normal">1733</span>
<span class="normal">1734</span>
<span class="normal">1735</span>
<span class="normal">1736</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1736</span>
<span class="normal">1737</span>
<span class="normal">1738</span>
<span class="normal">1739</span>
@@ -1539,7 +1556,22 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<span class="normal">1746</span>
<span class="normal">1747</span>
<span class="normal">1748</span>
<span class="normal">1749</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">address_type</span><span class="o">=</span><span class="n">RANDOM_DEVICE_ADDRESS</span><span class="p">):</span>
<span class="normal">1749</span>
<span class="normal">1750</span>
<span class="normal">1751</span>
<span class="normal">1752</span>
<span class="normal">1753</span>
<span class="normal">1754</span>
<span class="normal">1755</span>
<span class="normal">1756</span>
<span class="normal">1757</span>
<span class="normal">1758</span>
<span class="normal">1759</span>
<span class="normal">1760</span>
<span class="normal">1761</span>
<span class="normal">1762</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">address_type</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">RANDOM_DEVICE_ADDRESS</span>
<span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Initialize an instance. `address` may be a byte array in little-endian</span>
<span class="sd"> format, or a hex string in big-endian format (with optional &#39;:&#39;</span>
@@ -1586,14 +1618,14 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1797</span>
<span class="normal">1798</span>
<span class="normal">1799</span>
<span class="normal">1800</span>
<span class="normal">1801</span>
<span class="normal">1802</span>
<span class="normal">1803</span>
<span class="normal">1804</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1810</span>
<span class="normal">1811</span>
<span class="normal">1812</span>
<span class="normal">1813</span>
<span class="normal">1814</span>
<span class="normal">1815</span>
<span class="normal">1816</span>
<span class="normal">1817</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> String representation of the address, MSB first</span>
<span class="sd"> &#39;&#39;&#39;</span>
@@ -1628,21 +1660,7 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1834</span>
<span class="normal">1835</span>
<span class="normal">1836</span>
<span class="normal">1837</span>
<span class="normal">1838</span>
<span class="normal">1839</span>
<span class="normal">1840</span>
<span class="normal">1841</span>
<span class="normal">1842</span>
<span class="normal">1843</span>
<span class="normal">1844</span>
<span class="normal">1845</span>
<span class="normal">1846</span>
<span class="normal">1847</span>
<span class="normal">1848</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1848</span>
<span class="normal">1849</span>
<span class="normal">1850</span>
<span class="normal">1851</span>
@@ -1652,11 +1670,32 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<span class="normal">1855</span>
<span class="normal">1856</span>
<span class="normal">1857</span>
<span class="normal">1858</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">HCI_Packet</span><span class="p">:</span>
<span class="normal">1858</span>
<span class="normal">1859</span>
<span class="normal">1860</span>
<span class="normal">1861</span>
<span class="normal">1862</span>
<span class="normal">1863</span>
<span class="normal">1864</span>
<span class="normal">1865</span>
<span class="normal">1866</span>
<span class="normal">1867</span>
<span class="normal">1868</span>
<span class="normal">1869</span>
<span class="normal">1870</span>
<span class="normal">1871</span>
<span class="normal">1872</span>
<span class="normal">1873</span>
<span class="normal">1874</span>
<span class="normal">1875</span>
<span class="normal">1876</span>
<span class="normal">1877</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">HCI_Packet</span><span class="p">:</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Abstract Base class for HCI packets</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="n">hci_packet_type</span><span class="p">:</span> <span class="nb">int</span>
<span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="n">packet</span><span class="p">):</span>
<span class="n">packet_type</span> <span class="o">=</span> <span class="n">packet</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
@@ -1675,6 +1714,9 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
<span class="k">def</span> <span class="fm">__bytes__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bytes</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
</code></pre></div></td></tr></table></div>
@@ -1716,29 +1758,7 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1870</span>
<span class="normal">1871</span>
<span class="normal">1872</span>
<span class="normal">1873</span>
<span class="normal">1874</span>
<span class="normal">1875</span>
<span class="normal">1876</span>
<span class="normal">1877</span>
<span class="normal">1878</span>
<span class="normal">1879</span>
<span class="normal">1880</span>
<span class="normal">1881</span>
<span class="normal">1882</span>
<span class="normal">1883</span>
<span class="normal">1884</span>
<span class="normal">1885</span>
<span class="normal">1886</span>
<span class="normal">1887</span>
<span class="normal">1888</span>
<span class="normal">1889</span>
<span class="normal">1890</span>
<span class="normal">1891</span>
<span class="normal">1892</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1892</span>
<span class="normal">1893</span>
<span class="normal">1894</span>
<span class="normal">1895</span>
@@ -1812,13 +1832,35 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<span class="normal">1963</span>
<span class="normal">1964</span>
<span class="normal">1965</span>
<span class="normal">1966</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">HCI_Command</span><span class="p">(</span><span class="n">HCI_Packet</span><span class="p">):</span>
<span class="normal">1966</span>
<span class="normal">1967</span>
<span class="normal">1968</span>
<span class="normal">1969</span>
<span class="normal">1970</span>
<span class="normal">1971</span>
<span class="normal">1972</span>
<span class="normal">1973</span>
<span class="normal">1974</span>
<span class="normal">1975</span>
<span class="normal">1976</span>
<span class="normal">1977</span>
<span class="normal">1978</span>
<span class="normal">1979</span>
<span class="normal">1980</span>
<span class="normal">1981</span>
<span class="normal">1982</span>
<span class="normal">1983</span>
<span class="normal">1984</span>
<span class="normal">1985</span>
<span class="normal">1986</span>
<span class="normal">1987</span>
<span class="normal">1988</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">HCI_Command</span><span class="p">(</span><span class="n">HCI_Packet</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> See Bluetooth spec @ Vol 2, Part E - 5.4.1 HCI Command Packet</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="n">hci_packet_type</span> <span class="o">=</span> <span class="n">HCI_COMMAND_PACKET</span>
<span class="n">command_classes</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">command_classes</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n">HCI_Command</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">command</span><span class="p">(</span><span class="n">fields</span><span class="o">=</span><span class="p">(),</span> <span class="n">return_parameters_fields</span><span class="o">=</span><span class="p">()):</span>
@@ -1944,34 +1986,34 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1878</span>
<span class="normal">1879</span>
<span class="normal">1880</span>
<span class="normal">1881</span>
<span class="normal">1882</span>
<span class="normal">1883</span>
<span class="normal">1884</span>
<span class="normal">1885</span>
<span class="normal">1886</span>
<span class="normal">1887</span>
<span class="normal">1888</span>
<span class="normal">1889</span>
<span class="normal">1890</span>
<span class="normal">1891</span>
<span class="normal">1892</span>
<span class="normal">1893</span>
<span class="normal">1894</span>
<span class="normal">1895</span>
<span class="normal">1896</span>
<span class="normal">1897</span>
<span class="normal">1898</span>
<span class="normal">1899</span>
<span class="normal">1900</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1900</span>
<span class="normal">1901</span>
<span class="normal">1902</span>
<span class="normal">1903</span>
<span class="normal">1904</span>
<span class="normal">1905</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@staticmethod</span>
<span class="normal">1905</span>
<span class="normal">1906</span>
<span class="normal">1907</span>
<span class="normal">1908</span>
<span class="normal">1909</span>
<span class="normal">1910</span>
<span class="normal">1911</span>
<span class="normal">1912</span>
<span class="normal">1913</span>
<span class="normal">1914</span>
<span class="normal">1915</span>
<span class="normal">1916</span>
<span class="normal">1917</span>
<span class="normal">1918</span>
<span class="normal">1919</span>
<span class="normal">1920</span>
<span class="normal">1921</span>
<span class="normal">1922</span>
<span class="normal">1923</span>
<span class="normal">1924</span>
<span class="normal">1925</span>
<span class="normal">1926</span>
<span class="normal">1927</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">command</span><span class="p">(</span><span class="n">fields</span><span class="o">=</span><span class="p">(),</span> <span class="n">return_parameters_fields</span><span class="o">=</span><span class="p">()):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Decorator used to declare and register subclasses</span>
@@ -2028,16 +2070,16 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<details class="quote">
<summary>Source code in <code>bumble/hci.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">2009</span>
<span class="normal">2010</span>
<span class="normal">2011</span>
<span class="normal">2012</span>
<span class="normal">2013</span>
<span class="normal">2014</span>
<span class="normal">2015</span>
<span class="normal">2016</span>
<span class="normal">2017</span>
<span class="normal">2018</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@HCI_Command</span><span class="o">.</span><span class="n">command</span><span class="p">(</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">2031</span>
<span class="normal">2032</span>
<span class="normal">2033</span>
<span class="normal">2034</span>
<span class="normal">2035</span>
<span class="normal">2036</span>
<span class="normal">2037</span>
<span class="normal">2038</span>
<span class="normal">2039</span>
<span class="normal">2040</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@HCI_Command</span><span class="o">.</span><span class="n">command</span><span class="p">(</span>
<span class="p">[</span>
<span class="p">(</span><span class="s1">&#39;connection_handle&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
<span class="p">(</span><span class="s1">&#39;reason&#39;</span><span class="p">,</span> <span class="p">{</span><span class="s1">&#39;size&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;mapper&#39;</span><span class="p">:</span> <span class="n">HCI_Constant</span><span class="o">.</span><span class="n">error_name</span><span class="p">}),</span>
@@ -2108,7 +2150,7 @@ the type is set to PUBLIC_DEVICE_ADDRESS.</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

1451
apps_and_tools/bench.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1261,13 +1275,13 @@
</a>
<a href="link_relay.html" title="Link Relay" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<a href="bench.html" title="Bench" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Link Relay
Bench
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
@@ -1283,7 +1297,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1243,7 +1257,7 @@ a Bluetooth host, and we are connecting it to a virtual controller attached to a
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="link_relay.html" title="Link Relay" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<a href="bench.html" title="Bench" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
@@ -1252,7 +1266,7 @@ a Bluetooth host, and we are connecting it to a virtual controller attached to a
<span class="md-footer-nav__direction">
Previous
</span>
Link Relay
Bench
</span>
</div>
</a>
@@ -1280,7 +1294,7 @@ a Bluetooth host, and we are connecting it to a virtual controller attached to a
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1205,6 +1219,7 @@
These include:</p>
<ul>
<li><a href="console.html">Console</a> - an interactive text-based console</li>
<li><a href="bench.html">Bench</a> - Speed and Latency benchmarking between two devices (LE and Classic)</li>
<li><a href="pair.html">Pair</a> - Pair/bond two devices (LE and Classic)</li>
<li><a href="unbond.html">Unbond</a> - Remove a previously established bond</li>
<li><a href="hci_bridge.html">HCI Bridge</a> - a HCI transport bridge to connect two HCI transports and filter/snoop the HCI packets</li>
@@ -1267,7 +1282,7 @@ These include:</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,21 +844,11 @@
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<a href="link_relay.html" class="md-nav__link md-nav__link--active">
Link Relay
<li class="md-nav__item">
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +952,30 @@
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<a href="link_relay.html" class="md-nav__link md-nav__link--active">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1244,7 +1258,7 @@ The moniker syntax is: <code>link-relay:ws://&lt;hostname&gt;/&lt;room&gt;</code
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="console.html" title="Console" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<a href="usb_probe.html" title="USB Probe" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
@@ -1253,19 +1267,19 @@ The moniker syntax is: <code>link-relay:ws://&lt;hostname&gt;/&lt;room&gt;</code
<span class="md-footer-nav__direction">
Previous
</span>
Console
USB Probe
</span>
</div>
</a>
<a href="hci_bridge.html" title="HCI Bridge" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<a href="../hardware/index.html" title="Overview" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
HCI Bridge
Overview
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
@@ -1281,7 +1295,7 @@ The moniker syntax is: <code>link-relay:ws://&lt;hostname&gt;/&lt;room&gt;</code
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -846,8 +846,8 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
<a href="bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1317,13 +1331,13 @@ Product: USB2.0-BT
</a>
<a href="../hardware/index.html" title="Overview" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<a href="link_relay.html" title="Link Relay" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Overview
Link Relay
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
@@ -1339,7 +1353,7 @@ Product: USB2.0-BT
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1256,7 +1270,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1286,7 +1300,7 @@ You may want to configure your own environment to "format on save" with <code>bl
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1261,7 +1275,7 @@ To run the basic checks (essentially: running the tests, the linter, and the for
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -921,8 +921,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -1027,6 +1027,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1399,7 +1413,7 @@ This will create a new environment, named <code>bumble</code>, which you can the
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1629,7 +1643,7 @@ for those characteristics at regular intervals.</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -854,8 +854,8 @@
<li class="md-nav__item">
<a href="apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -960,6 +960,20 @@
<li class="md-nav__item">
<a href="apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1328,7 +1342,7 @@ details on interfacing with either hardware modules or virtual controllers over
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1232,7 +1246,7 @@ On Linux, the <a href="../transports/vhci.html">VHCI Transport</a> can be used t
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../apps_and_tools/usb_probe.html" title="USB Probe" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<a href="../apps_and_tools/link_relay.html" title="Link Relay" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
@@ -1241,7 +1255,7 @@ On Linux, the <a href="../transports/vhci.html">VHCI Transport</a> can be used t
<span class="md-footer-nav__direction">
Previous
</span>
USB Probe
Link Relay
</span>
</div>
</a>
@@ -1269,7 +1283,7 @@ On Linux, the <a href="../transports/vhci.html">VHCI Transport</a> can be used t
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -1064,8 +1064,8 @@
<li class="md-nav__item">
<a href="apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -1170,6 +1170,20 @@
<li class="md-nav__item">
<a href="apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1609,8 +1623,7 @@ The project initially only supported BLE (Bluetooth Low Energy), but support for
eventually added. Support for BLE is therefore currently somewhat more advanced than for Classic.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This project is still very much experimental and in an alpha state where a lot of things are still missing or broken, and what's there changes frequently.
Also, there are still a few hardcoded values/parameters in some of the examples and apps which need to be changed (those will eventually be command line arguments, as appropriate)</p>
<p>This project is still in an early state of development where some things are still missing or broken, and what's implemented may change and evolve frequently.</p>
</div>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<p>The goal of this project is to offer a suite of components that can be put together to implement a number of tasks related to Bluetooth. That's fairly open-ended, but at the very least, it should be possible to:</p>
@@ -1765,7 +1778,7 @@ Some platforms support features that not all platforms support</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1137,10 +1151,23 @@
</li>
<li class="md-nav__item">
<a href="#connecting-to-root-canal" class="md-nav__link">
Connecting to Root Canal
<a href="#connecting-to-netsim" class="md-nav__link">
Connecting to Netsim
</a>
<nav class="md-nav" aria-label="Connecting to Netsim">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multiple-instances" class="md-nav__link">
Multiple Instances
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@@ -1254,10 +1281,23 @@
</li>
<li class="md-nav__item">
<a href="#connecting-to-root-canal" class="md-nav__link">
Connecting to Root Canal
<a href="#connecting-to-netsim" class="md-nav__link">
Connecting to Netsim
</a>
<nav class="md-nav" aria-label="Connecting to Netsim">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#multiple-instances" class="md-nav__link">
Multiple Instances
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
@@ -1296,20 +1336,21 @@ emulator.</p>
<ul>
<li>Connecting the Bumble host stack to the Android emulator's virtual controller.</li>
<li>Using Bumble as an HCI bridge to connect the Android emulator to a physical
Bluetooth controller, such as a USB dongle</li>
Bluetooth controller, such as a USB dongle, or other HCI transport.</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Bluetooth support in the Android emulator is a recent feature that may still
be evolving. The information contained here be somewhat out of sync with the
version of the emulator you are using.
You will need version 31.3.8.0 or later.</p>
You will need version 33.1.4.0 or later.</p>
</div>
<p>The Android emulator supports Bluetooth in two ways: either by exposing virtual
Bluetooth controllers to which you can connect a virtual Bluetooth host stack, or
by exposing an way to connect your own virtual controller to the Android Bluetooth
by exposing a way to connect your own virtual controller to the Android Bluetooth
stack via a virtual HCI interface.
Both ways are controlled via gRPC requests to the Android emulator.</p>
Both ways are controlled via gRPC requests to the Android emulator controller and/or
from the Android emulator.</p>
<h2 id="launching-the-emulator">Launching the Emulator<a class="headerlink" href="#launching-the-emulator" title="Permanent link">&para;</a></h2>
<p>If the version of the emulator you are running does not yet support enabling
Bluetooth support by default or automatically, you must launch the emulator from
@@ -1319,43 +1360,69 @@ the command line.</p>
<p>For details on how to launch the Android emulator from the command line,
visit <a href="https://developer.android.com/studio/run/emulator-commandline">this Android Studio user guide page</a></p>
</div>
<p>The <code>-grpc &lt;port&gt;</code> command line option may be used to select a gRPC port other than the default.</p>
<h2 id="connecting-to-root-canal">Connecting to Root Canal<a class="headerlink" href="#connecting-to-root-canal" title="Permanent link">&para;</a></h2>
<p>The Android emulator's virtual Bluetooth controller is called <strong>Root Canal</strong>.
Multiple instances of Root Canal virtual controllers can be instantiated, they
communicate link layer packets between them, thus creating a virtual radio network.
Configuring a Bumble Device instance to use Root Canal as a virtual controller
<p>The <code>-packet-streamer-endpoint &lt;endpoint&gt;</code> command line option may be used to enable
Bluetooth emulation and tell the emulator which virtual controller to connect to. </p>
<h2 id="connecting-to-netsim">Connecting to Netsim<a class="headerlink" href="#connecting-to-netsim" title="Permanent link">&para;</a></h2>
<p>If the emulator doesn't have Bluetooth emulation enabled by default, use the
<code>-packet-streamer-endpoint default</code> option to tell it to connect to Netsim.
If Netsim is not running, the emulator will start it automatically.</p>
<p>The Android emulator's virtual Bluetooth controller is called <strong>Netsim</strong>.
Netsim runs as a background process and allows multiple clients to connect to it,
each connecting to its own virtual controller instance hosted by Netsim. All the
clients connected to the same Netsim process can then "talk" to each other over a
virtual radio link layer.
Netsim supports other wireless protocols than Bluetooth, but the relevant part here
is Bluetooth. The virtual Bluetooth controller used by Netsim is sometimes referred to
as <strong>Root Canal</strong>.</p>
<p>Configuring a Bumble Device instance to use netsim as a virtual controller
allows that virtual device to communicate with the Android Bluetooth stack, and
through it with Android applications as well as system-managed profiles.
To connect a Bumble host stack to a Root Canal virtual controller instance, use
the bumble <code>android-emulator</code> transport in <code>host</code> mode (the default).</p>
To connect a Bumble host stack to a netsim virtual controller instance, use
the Bumble <code>android-netsim</code> transport in <code>host</code> mode (the default).</p>
<div class="admonition example">
<p class="admonition-title">Run the example GATT server connected to the emulator</p>
<div class="highlight"><pre><span></span><code>$ python run_gatt_server.py device1.json android-emulator
<p class="admonition-title">Run the example GATT server connected to the emulator via Netsim</p>
<div class="highlight"><pre><span></span><code>$ python run_gatt_server.py device1.json android-netsim
</code></pre></div>
</div>
<p>By default, the Bumble <code>android-netsim</code> transport will try to automatically discover
the port number on which the netsim process is exposing its gRPC server interface. If
that discovery process fails, or if you want to specify the interface manually, you
can pass a <code>hostname</code> and <code>port</code> as parameters to the transport, as: <code>android-netsim:&lt;host&gt;:&lt;port&gt;</code>.</p>
<div class="admonition example">
<p class="admonition-title">Run the example GATT server connected to the emulator via Netsim on a localhost, port 8877</p>
<div class="highlight"><pre><span></span><code>$ python run_gatt_server.py device1.json android-netsim:localhost:8877
</code></pre></div>
</div>
<h3 id="multiple-instances">Multiple Instances<a class="headerlink" href="#multiple-instances" title="Permanent link">&para;</a></h3>
<p>If you want to connect multiple Bumble devices to netsim, it may be useful to give each one
a netsim controller with a specific name. This can be done using the <code>name=&lt;name&gt;</code> transport option.
For example: <code>android-netsim:localhost:8877,name=bumble1</code></p>
<h2 id="connecting-a-custom-virtual-controller">Connecting a Custom Virtual Controller<a class="headerlink" href="#connecting-a-custom-virtual-controller" title="Permanent link">&para;</a></h2>
<p>This is an advanced use case, which may not be officially supported, but should work in recent
versions of the emulator.
You will likely need to start the emulator from the command line, in order to specify the <code>-forward-vhci</code> option (unless the emulator offers a way to control that feature from a user/ui menu).</p>
versions of the emulator.</p>
<p>The first step is to run the Bumble HCI bridge, specifying netsim as the "host" end of the
bridge, and another controller (typically a USB Bluetooth dongle, but any other supported
transport can work as well) as the "controller" end of the bridge.</p>
<p>To connect a virtual controller to the Android Bluetooth stack, use the bumble <code>android-netsim</code> transport in <code>controller</code> mode. For example, with port number 8877, the transport name would be: <code>android-netsim:_:8877,mode=controller</code>.</p>
<div class="admonition example">
<p class="admonition-title">Launch the emulator with VHCI forwarding</p>
<p>In this example, we launch an emulator AVD named "Tiramisu"
<div class="highlight"><pre><span></span><code>$ emulator -forward-vhci -avd Tiramisu
<p class="admonition-title">Connect the Android emulator to the first USB Bluetooth dongle, using the <code>hci_bridge</code> application</p>
<div class="highlight"><pre><span></span><code>$ bumble-hci-bridge android-netsim:_:8877,mode<span class="o">=</span>controller usb:0
</code></pre></div>
</div>
<p>Then, you can start the emulator and tell it to connect to this bridge, instead of netsim.
You will likely need to start the emulator from the command line, in order to specify the <code>-packet-streamer-endpoint &lt;hostname&gt;:&lt;port&gt;</code> option (unless the emulator offers a way to control that feature from a user/ui menu).</p>
<div class="admonition example">
<p class="admonition-title">Launch the emulator with a netsim replacement</p>
<p>In this example, we launch an emulator AVD named "Tiramisu", with a Bumble HCI bridge running
on port 8877.
<div class="highlight"><pre><span></span><code>$ emulator -packet-streamer-endpoint localhost:8877 -avd Tiramisu
</code></pre></div></p>
</div>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>Attaching a virtual controller use the VHCI forwarder while the Android Bluetooth stack
is running isn't supported. So you need to disable Bluetooth in your running Android guest
<p>Attaching a virtual controller while the Android Bluetooth stack is running may not be well supported. So you may need to disable Bluetooth in your running Android guest
before attaching the virtual controller, then re-enable it once attached.</p>
</div>
<p>To connect a virtual controller to the Android Bluetooth stack, use the bumble <code>android-emulator</code> transport in <code>controller</code> mode. For example, using the default gRPC port, the transport name would be: <code>android-emulator:mode=controller</code>.</p>
<div class="admonition example">
<p class="admonition-title">Connect the Android emulator to the first USB Bluetooth dongle, using the <code>hci_bridge</code> application</p>
<div class="highlight"><pre><span></span><code>$ bumble-hci-bridge android-emulator:mode<span class="o">=</span>controller usb:0
</code></pre></div>
</div>
<h2 id="other-tools">Other Tools<a class="headerlink" href="#other-tools" title="Permanent link">&para;</a></h2>
<p>The <code>show</code> application that's included with Bumble can be used to parse and pretty-print the HCI packets
from an Android HCI "snoop log" (see <a href="https://source.android.com/devices/bluetooth/verifying_debugging">this page</a>
@@ -1421,7 +1488,7 @@ Use the <code>--format snoop</code> option to specify that the file is in that s
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1660,7 +1674,7 @@ F0:F1:F2:F3:F4:F5 Bumble
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1309,7 +1323,7 @@ A reboot shouldn't be necessary after that. See <a href="https://developer.apple
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -844,8 +844,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -950,6 +950,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1308,7 +1322,7 @@ Once the WinUSB driver is correctly assigned to your device, you can confirm tha
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -2,247 +2,252 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-12-19</lastmod>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2023-05-03</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

Binary file not shown.

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1247,26 +1261,46 @@
<h1 id="android-emulator-transport">ANDROID EMULATOR TRANSPORT<a class="headerlink" href="#android-emulator-transport" title="Permanent link">&para;</a></h1>
<p>The Android emulator transport either connects, as a host, to a "Root Canal" virtual controller
("host" mode), or attaches a virtual controller to the Android Bluetooth host stack ("controller" mode).</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Bluetooth support in the Android emulator has recently changed. The older mode, using
the <code>android-emulator</code> transport name with Bumble, while still implemented, is now
obsolete, and may not be supported by recent versions of the emulator.
Use the <code>android-netsim</code> transport name instead.</p>
</div>
<p>The Android "netsim" transport either connects, as a host, to a <strong>Netsim</strong> virtual controller
("host" mode), or acts as a virtual controller itself ("controller" mode) accepting host
connections.</p>
<h2 id="moniker">Moniker<a class="headerlink" href="#moniker" title="Permanent link">&para;</a></h2>
<p>The moniker syntax for an Android Emulator transport is: <code>android-emulator:[mode=&lt;host|controller&gt;][&lt;hostname&gt;:&lt;port&gt;]</code>, where
the <code>mode</code> parameter can specify running as a host or a controller, and <code>&lt;hostname&gt;:&lt;port&gt;</code> can specify a host name (or IP address) and TCP port number on which to reach the gRPC server for the emulator.
Both the <code>mode=&lt;host|controller&gt;</code> and <code>&lt;hostname&gt;:&lt;port&gt;</code> parameters are optional (so the moniker <code>android-emulator</code> by itself is a valid moniker, which will create a transport in <code>host</code> mode, connected to <code>localhost</code> on the default gRPC port for the emulator).</p>
<p>The moniker syntax for an Android Emulator "netsim" transport is: <code>android-netsim:[&lt;host&gt;:&lt;port&gt;][&lt;options&gt;]</code>,
where <code>&lt;options&gt;</code> is a ','-separated list of <code>&lt;name&gt;=&lt;value&gt;</code> pairs<code>.
The</code>mode<code>parameter name can specify running as a host or a controller, and</code><hostname>:<port><code>can specify a host name (or IP address) and TCP port number on which to reach the gRPC server for the emulator (in "host" mode), or to accept gRPC connections (in "controller" mode).
Both the</code>mode=<host|controller><code>and</code><hostname>:<port><code>parameters are optional (so the moniker</code>android-netsim<code>by itself is a valid moniker, which will create a transport in</code>host<code>mode, connected to</code>localhost` on the default gRPC port for the Netsim background process).</p>
<div class="admonition example example">
<p class="admonition-title">Example</p>
<p><code>android-emulator</code>
connect as a host to the emulator on localhost:8554</p>
<p><code>android-netsim</code>
connect as a host to Netsim on the gRPC port discovered automatically.</p>
</div>
<div class="admonition example example">
<p class="admonition-title">Example</p>
<p><code>android-emulator:mode=controller</code>
connect as a controller to the emulator on localhost:8554</p>
<p><code>android-netsim:_:8555,mode=controller</code>
Run as a controller, accepting gRPC connection on port 8555.</p>
</div>
<div class="admonition example example">
<p class="admonition-title">Example</p>
<p><code>android-emulator:localhost:8555</code>
connect as a host to the emulator on localhost:8555</p>
<p><code>android-netsim:localhost:8555</code>
connect as a host to Netsim on localhost:8555</p>
</div>
<div class="admonition example example">
<p class="admonition-title">Example</p>
<p><code>android-netsim:localhost:8555</code>
connect as a host to Netsim on localhost:8555</p>
</div>
<div class="admonition example example">
<p class="admonition-title">Example</p>
<p><code>android-netsim:name=bumble1234</code>
connect as a host to Netsim on the discovered gRPC port, using <code>bumble1234</code> as the
controller instance name.</p>
</div>
@@ -1323,7 +1357,7 @@ connect as a host to the emulator on localhost:8555</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1311,7 +1325,7 @@ Opens the pseudo terminal <code>/dev/ttys001</code> as a transport</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1318,7 +1332,7 @@ Use an HCI socket to the first Bluetooth controller (<code>hci0 on Linux</code>)
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1216,7 +1230,8 @@ Several types of transports are supported:</p>
<li><a href="pty.html">PTY</a>: a PTY (pseudo terminal) is used to send/receive HCI packets. This is convenient to expose a virtual controller as if it were an HCI UART</li>
<li><a href="vhci.html">VHCI</a>: used to attach a virtual controller to a Bluetooth stack on platforms that support it.</li>
<li><a href="hci_socket.html">HCI Socket</a>: an HCI socket, on platforms that support it, to send/receive HCI packets to/from an HCI controller managed by the OS.</li>
<li><a href="android_emulator.html">Android Emulator</a>: a gRPC connection to an Android emulator is used to setup either an HCI interface to the emulator's "Root Canal" virtual controller, or attach a virtual controller to the Android Bluetooth host stack.</li>
<li><a href="android_emulator.html">Android Emulator</a>: a gRPC connection to the Android emulator's "netsim"
virtual controller, or from the Android emulator, is used to setup either an HCI interface to the emulator's "netsim" virtual controller, or serve as a virtual controller for the Android Bluetooth host stack.</li>
<li><a href="file.html">File</a>: HCI packets are read/written to a file-like node in the filesystem.</li>
</ul>
@@ -1274,7 +1289,7 @@ Several types of transports are supported:</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1311,7 +1325,7 @@ Creates a PTY entry and a symbolic link, named <code>virtual_hci</code>, linking
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1311,7 +1325,7 @@ Opens the serial port <code>/dev/tty.usbmodem0006839912172</code> at <code>10000
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1310,7 +1324,7 @@ Connects to port 9001 on the local host</p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1312,7 +1326,7 @@ Waits for and accepts connections on port <code>9001</code></p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1310,7 +1324,7 @@ UDP transport where packets are received on port <code>9000</code> and sent to <
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -948,8 +948,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -1054,6 +1054,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1474,7 +1488,7 @@ Bus 003 Device 014: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Blue
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1314,7 +1328,7 @@ Attaches a virtual controller transport to <code>/dev/vhci</code></p>
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1310,7 +1324,7 @@ UDP transport where packets are received on port <code>9000</code> and sent to <
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -887,8 +887,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -993,6 +993,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1310,7 +1324,7 @@ UDP transport where packets are received on port <code>9000</code> and sent to <
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1265,7 +1279,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1270,7 +1284,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>

View File

@@ -856,8 +856,8 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
<a href="../apps_and_tools/bench.html" class="md-nav__link">
Bench
</a>
</li>
@@ -962,6 +962,20 @@
<li class="md-nav__item">
<a href="../apps_and_tools/link_relay.html" class="md-nav__link">
Link Relay
</a>
</li>
</ul>
</nav>
</li>
@@ -1264,7 +1278,7 @@
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright 2021-2022 Google LLC
Copyright 2021-2023 Google LLC
</div>
</div>