Deployed 8400ff0 with MkDocs version: 1.5.3

This commit is contained in:
Gilles Boccon-Gibod
2023-12-04 00:39:14 -08:00
parent b83caac3bd
commit 75194f5a62
62 changed files with 3922 additions and 248 deletions
+22
View File
@@ -1742,6 +1742,8 @@
@@ -1802,6 +1804,26 @@
<li class="md-nav__item">
<a href="/extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+248 -220
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
@@ -2007,61 +2029,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">1739</span>
<span class="normal">1740</span>
<span class="normal">1741</span>
<span class="normal">1742</span>
<span class="normal">1743</span>
<span class="normal">1744</span>
<span class="normal">1745</span>
<span class="normal">1746</span>
<span class="normal">1747</span>
<span class="normal">1748</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>
<span class="normal">1763</span>
<span class="normal">1764</span>
<span class="normal">1765</span>
<span class="normal">1766</span>
<span class="normal">1767</span>
<span class="normal">1768</span>
<span class="normal">1769</span>
<span class="normal">1770</span>
<span class="normal">1771</span>
<span class="normal">1772</span>
<span class="normal">1773</span>
<span class="normal">1774</span>
<span class="normal">1775</span>
<span class="normal">1776</span>
<span class="normal">1777</span>
<span class="normal">1778</span>
<span class="normal">1779</span>
<span class="normal">1780</span>
<span class="normal">1781</span>
<span class="normal">1782</span>
<span class="normal">1783</span>
<span class="normal">1784</span>
<span class="normal">1785</span>
<span class="normal">1786</span>
<span class="normal">1787</span>
<span class="normal">1788</span>
<span class="normal">1789</span>
<span class="normal">1790</span>
<span class="normal">1791</span>
<span class="normal">1792</span>
<span class="normal">1793</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1793</span>
<span class="normal">1794</span>
<span class="normal">1795</span>
<span class="normal">1796</span>
@@ -2148,7 +2116,61 @@ address[0] is the LSB of the address, address[5] is the MSB.</p>
<span class="normal">1877</span>
<span class="normal">1878</span>
<span class="normal">1879</span>
<span class="normal">1880</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">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>
<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>
<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>
<span class="normal">1928</span>
<span class="normal">1929</span>
<span class="normal">1930</span>
<span class="normal">1931</span>
<span class="normal">1932</span>
<span class="normal">1933</span>
<span class="normal">1934</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="w"> </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>
@@ -2327,33 +2349,33 @@ 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">1795</span>
<span class="normal">1796</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>
<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>
<span class="normal">1818</span>
<span class="normal">1819</span>
<span class="normal">1820</span>
<span class="normal">1821</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>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1849</span>
<span class="normal">1850</span>
<span class="normal">1851</span>
<span class="normal">1852</span>
<span class="normal">1853</span>
<span class="normal">1854</span>
<span class="normal">1855</span>
<span class="normal">1856</span>
<span class="normal">1857</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></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="w"> </span><span class="sd">&#39;&#39;&#39;</span>
@@ -2405,15 +2427,15 @@ qualifier.</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">1857</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></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">to_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_type_qualifier</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></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></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">to_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">with_type_qualifier</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> String representation of the address, MSB first, with an optional type</span>
<span class="sd"> qualifier.</span>
@@ -2449,36 +2471,39 @@ qualifier.</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">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>
<span class="normal">1928</span>
<span class="normal">1929</span>
<span class="normal">1930</span>
<span class="normal">1931</span>
<span class="normal">1932</span>
<span class="normal">1933</span>
<span class="normal">1934</span>
<span class="normal">1935</span>
<span class="normal">1936</span>
<span class="normal">1937</span>
<span class="normal">1938</span>
<span class="normal">1939</span>
<span class="normal">1940</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>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></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>
<span class="normal">1989</span>
<span class="normal">1990</span>
<span class="normal">1991</span>
<span class="normal">1992</span>
<span class="normal">1993</span>
<span class="normal">1994</span>
<span class="normal">1995</span>
<span class="normal">1996</span>
<span class="normal">1997</span>
<span class="normal">1998</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="w"> </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>
@@ -2495,6 +2520,9 @@ qualifier.</p>
<span class="k">if</span> <span class="n">packet_type</span> <span class="o">==</span> <span class="n">HCI_ACL_DATA_PACKET</span><span class="p">:</span>
<span class="k">return</span> <span class="n">HCI_AclDataPacket</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">packet</span><span class="p">)</span>
<span class="k">if</span> <span class="n">packet_type</span> <span class="o">==</span> <span class="n">HCI_SYNCHRONOUS_DATA_PACKET</span><span class="p">:</span>
<span class="k">return</span> <span class="n">HCI_SynchronousDataPacket</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">packet</span><span class="p">)</span>
<span class="k">if</span> <span class="n">packet_type</span> <span class="o">==</span> <span class="n">HCI_EVENT_PACKET</span><span class="p">:</span>
<span class="k">return</span> <span class="n">HCI_Event</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">packet</span><span class="p">)</span>
@@ -2547,65 +2575,7 @@ qualifier.</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">1955</span>
<span class="normal">1956</span>
<span class="normal">1957</span>
<span class="normal">1958</span>
<span class="normal">1959</span>
<span class="normal">1960</span>
<span class="normal">1961</span>
<span class="normal">1962</span>
<span class="normal">1963</span>
<span class="normal">1964</span>
<span class="normal">1965</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>
<span class="normal">1989</span>
<span class="normal">1990</span>
<span class="normal">1991</span>
<span class="normal">1992</span>
<span class="normal">1993</span>
<span class="normal">1994</span>
<span class="normal">1995</span>
<span class="normal">1996</span>
<span class="normal">1997</span>
<span class="normal">1998</span>
<span class="normal">1999</span>
<span class="normal">2000</span>
<span class="normal">2001</span>
<span class="normal">2002</span>
<span class="normal">2003</span>
<span class="normal">2004</span>
<span class="normal">2005</span>
<span class="normal">2006</span>
<span class="normal">2007</span>
<span class="normal">2008</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>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">2013</span>
<span class="normal">2014</span>
<span class="normal">2015</span>
<span class="normal">2016</span>
@@ -2666,7 +2636,65 @@ qualifier.</p>
<span class="normal">2071</span>
<span class="normal">2072</span>
<span class="normal">2073</span>
<span class="normal">2074</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">2074</span>
<span class="normal">2075</span>
<span class="normal">2076</span>
<span class="normal">2077</span>
<span class="normal">2078</span>
<span class="normal">2079</span>
<span class="normal">2080</span>
<span class="normal">2081</span>
<span class="normal">2082</span>
<span class="normal">2083</span>
<span class="normal">2084</span>
<span class="normal">2085</span>
<span class="normal">2086</span>
<span class="normal">2087</span>
<span class="normal">2088</span>
<span class="normal">2089</span>
<span class="normal">2090</span>
<span class="normal">2091</span>
<span class="normal">2092</span>
<span class="normal">2093</span>
<span class="normal">2094</span>
<span class="normal">2095</span>
<span class="normal">2096</span>
<span class="normal">2097</span>
<span class="normal">2098</span>
<span class="normal">2099</span>
<span class="normal">2100</span>
<span class="normal">2101</span>
<span class="normal">2102</span>
<span class="normal">2103</span>
<span class="normal">2104</span>
<span class="normal">2105</span>
<span class="normal">2106</span>
<span class="normal">2107</span>
<span class="normal">2108</span>
<span class="normal">2109</span>
<span class="normal">2110</span>
<span class="normal">2111</span>
<span class="normal">2112</span>
<span class="normal">2113</span>
<span class="normal">2114</span>
<span class="normal">2115</span>
<span class="normal">2116</span>
<span class="normal">2117</span>
<span class="normal">2118</span>
<span class="normal">2119</span>
<span class="normal">2120</span>
<span class="normal">2121</span>
<span class="normal">2122</span>
<span class="normal">2123</span>
<span class="normal">2124</span>
<span class="normal">2125</span>
<span class="normal">2126</span>
<span class="normal">2127</span>
<span class="normal">2128</span>
<span class="normal">2129</span>
<span class="normal">2130</span>
<span class="normal">2131</span>
<span class="normal">2132</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="w"> </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>
@@ -2823,34 +2851,34 @@ qualifier.</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">1964</span>
<span class="normal">1965</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>
<span class="normal">1989</span>
<span class="normal">1990</span>
<span class="normal">1991</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@staticmethod</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">2022</span>
<span class="normal">2023</span>
<span class="normal">2024</span>
<span class="normal">2025</span>
<span class="normal">2026</span>
<span class="normal">2027</span>
<span class="normal">2028</span>
<span class="normal">2029</span>
<span class="normal">2030</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>
<span class="normal">2041</span>
<span class="normal">2042</span>
<span class="normal">2043</span>
<span class="normal">2044</span>
<span class="normal">2045</span>
<span class="normal">2046</span>
<span class="normal">2047</span>
<span class="normal">2048</span>
<span class="normal">2049</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="w"> </span><span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Decorator used to declare and register subclasses</span>
@@ -2907,16 +2935,16 @@ qualifier.</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">2120</span>
<span class="normal">2121</span>
<span class="normal">2122</span>
<span class="normal">2123</span>
<span class="normal">2124</span>
<span class="normal">2125</span>
<span class="normal">2126</span>
<span class="normal">2127</span>
<span class="normal">2128</span>
<span class="normal">2129</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">2178</span>
<span class="normal">2179</span>
<span class="normal">2180</span>
<span class="normal">2181</span>
<span class="normal">2182</span>
<span class="normal">2183</span>
<span class="normal">2184</span>
<span class="normal">2185</span>
<span class="normal">2186</span>
<span class="normal">2187</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>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1834,6 +1834,8 @@
@@ -1894,6 +1896,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1807,6 +1807,8 @@
@@ -1867,6 +1869,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
File diff suppressed because it is too large Load Diff
+110 -22
View File
@@ -12,7 +12,7 @@
<link rel="prev" href="index.html">
<link rel="next" href="../hive/index.html">
<link rel="next" href="android_bt_bench.html">
<link rel="icon" href="../images/favicon.ico">
@@ -1752,6 +1752,8 @@
@@ -1867,6 +1869,13 @@
<nav class="md-nav" aria-label="Preconditions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#root-shell" class="md-nav__link">
Root Shell
</a>
</li>
<li class="md-nav__item">
<a href="#disabling-selinux" class="md-nav__link">
Disabling SELinux
@@ -1887,11 +1896,18 @@
</li>
<li class="md-nav__item">
<a href="#starting-the-app" class="md-nav__link">
Starting the app
<a href="#running-as-a-command-line-app" class="md-nav__link">
Running as a command line app
</a>
<nav class="md-nav" aria-label="Starting the app">
</li>
<li class="md-nav__item">
<a href="#running-as-a-normal-app" class="md-nav__link">
Running as a normal app
</a>
<nav class="md-nav" aria-label="Running as a normal app">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -1941,6 +1957,26 @@
<li class="md-nav__item">
<a href="android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
@@ -2122,6 +2158,13 @@
<nav class="md-nav" aria-label="Preconditions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#root-shell" class="md-nav__link">
Root Shell
</a>
</li>
<li class="md-nav__item">
<a href="#disabling-selinux" class="md-nav__link">
Disabling SELinux
@@ -2142,11 +2185,18 @@
</li>
<li class="md-nav__item">
<a href="#starting-the-app" class="md-nav__link">
Starting the app
<a href="#running-as-a-command-line-app" class="md-nav__link">
Running as a command line app
</a>
<nav class="md-nav" aria-label="Starting the app">
</li>
<li class="md-nav__item">
<a href="#running-as-a-normal-app" class="md-nav__link">
Running as a normal app
</a>
<nav class="md-nav" aria-label="Running as a normal app">
<ul class="md-nav__list">
<li class="md-nav__item">
@@ -2203,15 +2253,15 @@
<h1 id="android-remote-hci-app">ANDROID REMOTE HCI APP<a class="headerlink" href="#android-remote-hci-app" title="Permanent link">&para;</a></h1>
<p>This application allows using an android phone's built-in Bluetooth controller with
<p>This application allows using an android phone's built-in Bluetooth controller with
a Bumble host stack running outside the phone (typically a development laptop or desktop).
The app runs an HCI proxy between a TCP socket on the "outside" and the Bluetooth HCI HAL
on the "inside". (See <a href="https://source.android.com/docs/core/connect/bluetooth">this page</a> for a high level
on the "inside". (See <a href="https://source.android.com/docs/core/connect/bluetooth">this page</a> for a high level
description of the Android Bluetooth HCI HAL).
The HCI packets received on the TCP socket are forwarded to the phone's controller, and the
The HCI packets received on the TCP socket are forwarded to the phone's controller, and the
packets coming from the controller are forwarded to the TCP socket.</p>
<h2 id="building">Building<a class="headerlink" href="#building" title="Permanent link">&para;</a></h2>
<p>You can build the app by running <code>./gradlew build</code> (use <code>gradlew.bat</code> on Windows) from the <code>RemoteHCI</code> top level directory.
<p>You can build the app by running <code>./gradlew build</code> (use <code>gradlew.bat</code> on Windows) from the <code>extras/android/RemoteHCI</code> top level directory.
You can also build with Android Studio: open the <code>RemoteHCI</code> project. You can build and/or debug from there.</p>
<p>If the build succeeds, you can find the app APKs (debug and release) at:</p>
<ul>
@@ -2219,9 +2269,24 @@ You can also build with Android Studio: open the <code>RemoteHCI</code> project.
<li>[Debug] <code>app/build/outputs/apk/debug/app-debug.apk</code></li>
</ul>
<h2 id="running">Running<a class="headerlink" href="#running" title="Permanent link">&para;</a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In the following examples, it is assumed that shell commands are executed while in the
app's root directory, <code>extras/android/RemoteHCI</code>. If you are in a different directory,
adjust the relative paths accordingly.</p>
</div>
<h3 id="preconditions">Preconditions<a class="headerlink" href="#preconditions" title="Permanent link">&para;</a></h3>
<p>When the proxy starts (tapping the "Start" button in the app's main activity), it will try to
bind to the Bluetooth HAL. This requires disabling SELinux temporarily, and being the only HAL client.</p>
<p>When the proxy starts (tapping the "Start" button in the app's main activity, or running the proxy
from an <code>adb shell</code> command line), it will try to bind to the Bluetooth HAL.
This requires that there is no other HAL client, and requires certain privileges.
For running as a regular app, this requires disabling SELinux temporarily.
For running as a command-line executable, this just requires a root shell.</p>
<h4 id="root-shell">Root Shell<a class="headerlink" href="#root-shell" title="Permanent link">&para;</a></h4>
<div class="admonition tip">
<p class="admonition-title">Restart <code>adb</code> as root</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>adb<span class="w"> </span>root
</code></pre></div>
</div>
<h4 id="disabling-selinux">Disabling SELinux<a class="headerlink" href="#disabling-selinux" title="Permanent link">&para;</a></h4>
<p>Binding to the Bluetooth HCI HAL requires certain SELinux permissions that can't simply be changed
on a device without rebuilding its system image. To bypass these restrictions, you will need
@@ -2243,8 +2308,8 @@ development phone).</p>
<p>This state will also reset to the normal SELinux enforcement when you reboot.</p>
</div>
<h4 id="stopping-the-bluetooth-process">Stopping the bluetooth process<a class="headerlink" href="#stopping-the-bluetooth-process" title="Permanent link">&para;</a></h4>
<p>Since the Bluetooth HAL service can only accept one client, and that in normal conditions
that client is the Android's bluetooth stack, it is required to first shut down the
<p>Since the Bluetooth HAL service can only accept one client, and that in normal conditions
that client is the Android's bluetooth stack, it is required to first shut down the
Android bluetooth stack process.</p>
<div class="admonition tip">
<p class="admonition-title">Checking if the Bluetooth process is running</p>
@@ -2263,7 +2328,30 @@ Airplane Mode, then rebooting. The bluetooth process should, in theory, not rest
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>adb<span class="w"> </span>shell<span class="w"> </span>cmd<span class="w"> </span>bluetooth_manager<span class="w"> </span>disable
</code></pre></div>
</div>
<h3 id="starting-the-app">Starting the app<a class="headerlink" href="#starting-the-app" title="Permanent link">&para;</a></h3>
<h3 id="running-as-a-command-line-app">Running as a command line app<a class="headerlink" href="#running-as-a-command-line-app" title="Permanent link">&para;</a></h3>
<p>You push the built APK to a temporary location on the phone's filesystem, then launch the command
line executable with an <code>adb shell</code> command.</p>
<div class="admonition tip">
<p class="admonition-title">Pushing the executable</p>
<p><div class="highlight"><pre><span></span><code>$<span class="w"> </span>adb<span class="w"> </span>push<span class="w"> </span>app/build/outputs/apk/release/app-release-unsigned.apk<span class="w"> </span>/data/local/tmp/remotehci.apk
</code></pre></div>
Do this every time you rebuild. Alternatively, you can push the <code>debug</code> APK instead:
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>adb<span class="w"> </span>push<span class="w"> </span>app/build/outputs/apk/debug/app-debug.apk<span class="w"> </span>/data/local/tmp/remotehci.apk
</code></pre></div></p>
</div>
<div class="admonition tip">
<p class="admonition-title">Start the proxy from the command line</p>
<p><div class="highlight"><pre><span></span><code>adb<span class="w"> </span>shell<span class="w"> </span><span class="s2">&quot;CLASSPATH=/data/local/tmp/remotehci.apk app_process /system/bin com.github.google.bumble.remotehci.CommandLineInterface&quot;</span>
</code></pre></div>
This will run the proxy, listening on the default TCP port.
If you want a different port, pass it as a command line parameter</p>
</div>
<div class="admonition tip">
<p class="admonition-title">Start the proxy from the command line with a specific TCP port</p>
<div class="highlight"><pre><span></span><code>adb<span class="w"> </span>shell<span class="w"> </span><span class="s2">&quot;CLASSPATH=/data/local/tmp/remotehci.apk app_process /system/bin com.github.google.bumble.remotehci.CommandLineInterface 12345&quot;</span>
</code></pre></div>
</div>
<h3 id="running-as-a-normal-app">Running as a normal app<a class="headerlink" href="#running-as-a-normal-app" title="Permanent link">&para;</a></h3>
<p>You can start the app from the Android launcher, from Android Studio, or with <code>adb</code></p>
<h4 id="launching-from-the-launcher">Launching from the launcher<a class="headerlink" href="#launching-from-the-launcher" title="Permanent link">&para;</a></h4>
<p>Just tap the app icon on the launcher, check the TCP port that is configured, and tap
@@ -2284,10 +2372,10 @@ automatically start the proxy, and/or set the port number.</p>
</div>
<h4 id="selecting-a-tcp-port">Selecting a TCP port<a class="headerlink" href="#selecting-a-tcp-port" title="Permanent link">&para;</a></h4>
<p>The RemoteHCI app's main activity has a "TCP Port" setting where you can change the port on
which the proxy is accepting connections. If the default value isn't suitable, you can
which the proxy is accepting connections. If the default value isn't suitable, you can
change it there (you can also use the special value 0 to let the OS assign a port number for you).</p>
<h3 id="connecting-to-the-proxy">Connecting to the proxy<a class="headerlink" href="#connecting-to-the-proxy" title="Permanent link">&para;</a></h3>
<p>To connect the Bumble stack to the proxy, you need to be able to reach the phone's network
<p>To connect the Bumble stack to the proxy, you need to be able to reach the phone's network
stack. This can be done over the phone's WiFi connection, or, alternatively, using an <code>adb</code>
TCP forward (which should be faster than over WiFi).</p>
<div class="admonition tip">
@@ -2295,7 +2383,7 @@ TCP forward (which should be faster than over WiFi).</p>
<p>To connect to the proxy via an <code>adb</code> TCP forward, use:
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>adb<span class="w"> </span>forward<span class="w"> </span>tcp:&lt;outside-port&gt;<span class="w"> </span>tcp:&lt;inside-port&gt;
</code></pre></div>
Where <code>&lt;outside-port&gt;</code> is the port number for a listening socket on your laptop or
Where <code>&lt;outside-port&gt;</code> is the port number for a listening socket on your laptop or
desktop machine, and <inside-port> is the TCP port selected in the app's user interface.
Those two ports may be the same, of course.
For example, with the default TCP port 9993:
@@ -2303,7 +2391,7 @@ For example, with the default TCP port 9993:
</code></pre></div></p>
</div>
<p>Once you've ensured that you can reach the proxy's TCP port on the phone, either directly or
via an <code>adb</code> forward, you can then use it as a Bumble transport, using the transport name:
via an <code>adb</code> forward, you can then use it as a Bumble transport, using the transport name:
<code>tcp-client:&lt;host&gt;:&lt;port&gt;</code> syntax.</p>
<div class="admonition example">
<p class="admonition-title">Connecting a Bumble client</p>
@@ -2350,13 +2438,13 @@ Assuming you have set up an <code>adb</code> forward on port 9993:
</a>
<a href="../hive/index.html" title="HIVE" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<a href="android_bt_bench.html" title="Android BT 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>
HIVE
Android BT Bench
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
+34
View File
@@ -1752,6 +1752,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
@@ -1976,6 +1998,13 @@
Android Remote HCI
</a>
</li>
<li class="md-nav__item">
<a href="#android-bt-bench" class="md-nav__link">
Android BT Bench
</a>
</li>
</ul>
@@ -1999,6 +2028,11 @@
<p>Allows using an Android phone's built-in Bluetooth controller with a Bumble
stack running on a development machine.
See <a href="android_remote_hci.html">Android Remote HCI</a> for details.</p>
<h2 id="android-bt-bench">Android BT Bench<a class="headerlink" href="#android-bt-bench" title="Permanent link">&para;</a></h2>
<p>An Android app that is compatible with the Bumble <code>bench</code> command line app.
This app can be used to test the throughput and latency between two Android
devices, or between an Android device and another device running the Bumble
<code>bench</code> app.</p>
+22
View File
@@ -1761,6 +1761,8 @@
@@ -1821,6 +1823,26 @@
<li class="md-nav__item">
<a href="extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+25 -3
View File
@@ -9,7 +9,7 @@
<link rel="prev" href="../extras/android_remote_hci.html">
<link rel="prev" href="../extras/android_bt_bench.html">
<link rel="next" href="web/speaker/speaker.html">
@@ -1751,6 +1751,8 @@
@@ -1811,6 +1813,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
@@ -2074,7 +2096,7 @@ name for the radio you want to use (ex: <code>usb:0</code> for the first USB don
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../extras/android_remote_hci.html" title="Android Remote HCI" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<a href="../extras/android_bt_bench.html" title="Android BT 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>
@@ -2083,7 +2105,7 @@ name for the radio you want to use (ex: <code>usb:0</code> for the first USB don
<span class="md-footer-nav__direction">
Previous
</span>
Android Remote HCI
Android BT Bench
</span>
</div>
</a>
+1
View File
@@ -67,6 +67,7 @@ class Scanner:
self.scan_entries[advertisement.address] = self.ScanEntry(advertisement)
self.emit_update()
# -----------------------------------------------------------------------------
def main(hci_source, hci_sink):
return Scanner(hci_source, hci_sink)
+1 -3
View File
@@ -172,9 +172,7 @@ class Speaker:
connection.on('disconnection', self.on_bluetooth_disconnection)
peer_name = '' if connection.peer_name is None else connection.peer_name
peer_address = connection.peer_address.to_string(False)
self.emit(
'connection', {'peer_name': peer_name, 'peer_address': peer_address}
)
self.emit('connection', {'peer_name': peer_name, 'peer_address': peer_address})
def on_bluetooth_disconnection(self, reason):
print(f'Disconnection ({reason})')
+22
View File
@@ -1982,6 +1982,8 @@
@@ -2042,6 +2044,26 @@
<li class="md-nav__item">
<a href="extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1834,6 +1834,8 @@
@@ -1894,6 +1896,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1901,6 +1901,8 @@
@@ -1961,6 +1963,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
BIN
View File
Binary file not shown.
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1861,6 +1861,8 @@
@@ -1921,6 +1923,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1800,6 +1800,8 @@
@@ -1860,6 +1862,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1753,6 +1753,8 @@
@@ -1813,6 +1815,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>
+22
View File
@@ -1763,6 +1763,8 @@
@@ -1823,6 +1825,26 @@
<li class="md-nav__item">
<a href="../extras/android_bt_bench.html" class="md-nav__link">
<span class="md-ellipsis">
Android BT Bench
</span>
</a>
</li>
</ul>
</nav>