http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/ibeacon/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/ibeacon/index.html b/develop/os/tutorials/ibeacon/index.html index 1b6601f..9b2f17f 100644 --- a/develop/os/tutorials/ibeacon/index.html +++ b/develop/os/tutorials/ibeacon/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> @@ -513,14 +521,46 @@ package.</p> <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span style="color: #A90D91">static</span> <span style="color: #A90D91">void</span> <span style="color: #000000">bleprph_advertise</span>(<span style="color: #A90D91">void</span>) { + <span style="color: #A90D91">struct</span> <span style="color: #000000">ble_gap_adv_params</span> <span style="color: #000000">adv_params</span>; <span style="color: #A90D91">struct</span> <span style="color: #000000">ble_hs_adv_fields</span> <span style="color: #000000">fields</span>; + <span style="color: #A90D91">const</span> <span style="color: #A90D91">char</span> <span style="color: #000000">*name</span>; <span style="color: #A90D91">int</span> <span style="color: #000000">rc</span>; - <span style="color: #177500">/* Set the advertisement data included in our advertisements. */</span> + <span style="color: #177500">/**</span> +<span style="color: #177500"> * Set the advertisement data included in our advertisements:</span> +<span style="color: #177500"> * o Flags (indicates advertisement type and other general info).</span> +<span style="color: #177500"> * o Advertising tx power.</span> +<span style="color: #177500"> * o Device name.</span> +<span style="color: #177500"> * o 16-bit service UUIDs (alert notifications).</span> +<span style="color: #177500"> */</span> + <span style="color: #000000">memset</span>(<span style="color: #000000">&fields</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">sizeof</span> <span style="color: #000000">fields</span>); - <span style="color: #000000">fields</span>.<span style="color: #000000">name</span> <span style="color: #000000">=</span> (<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">*</span>)<span style="color: #000000">bleprph_device_name</span>; - <span style="color: #000000">fields</span>.<span style="color: #000000">name_len</span> <span style="color: #000000">=</span> <span style="color: #000000">strlen</span>(<span style="color: #000000">bleprph_device_name</span>); + + <span style="color: #177500">/* Advertise two flags:</span> +<span style="color: #177500"> * o Discoverability in forthcoming advertisement (general)</span> +<span style="color: #177500"> * o BLE-only (BR/EDR unsupported).</span> +<span style="color: #177500"> */</span> + <span style="color: #000000">fields</span>.<span style="color: #000000">flags</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_HS_ADV_F_DISC_GEN</span> <span style="color: #000000">|</span> + <span style="color: #000000">BLE_HS_ADV_F_BREDR_UNSUP</span>; + + <span style="color: #177500">/* Indicate that the TX power level field should be included; have the</span> +<span style="color: #177500"> * stack fill this value automatically. This is done by assiging the</span> +<span style="color: #177500"> * special value BLE_HS_ADV_TX_PWR_LVL_AUTO.</span> +<span style="color: #177500"> */</span> + <span style="color: #000000">fields</span>.<span style="color: #000000">tx_pwr_lvl_is_present</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>; + <span style="color: #000000">fields</span>.<span style="color: #000000">tx_pwr_lvl</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_HS_ADV_TX_PWR_LVL_AUTO</span>; + + <span style="color: #000000">name</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_svc_gap_device_name</span>(); + <span style="color: #000000">fields</span>.<span style="color: #000000">name</span> <span style="color: #000000">=</span> (<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">*</span>)<span style="color: #000000">name</span>; + <span style="color: #000000">fields</span>.<span style="color: #000000">name_len</span> <span style="color: #000000">=</span> <span style="color: #000000">strlen</span>(<span style="color: #000000">name</span>); <span style="color: #000000">fields</span>.<span style="color: #000000">name_is_complete</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>; + + <span style="color: #000000">fields</span>.<span style="color: #000000">uuids16</span> <span style="color: #000000">=</span> (<span style="color: #A90D91">ble_uuid16_t</span>[]){ + <span style="color: #000000">BLE_UUID16_INIT</span>(<span style="color: #000000">GATT_SVR_SVC_ALERT_UUID</span>) + }; + <span style="color: #000000">fields</span>.<span style="color: #000000">num_uuids16</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>; + <span style="color: #000000">fields</span>.<span style="color: #000000">uuids16_is_complete</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>; + <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_gap_adv_set_fields</span>(<span style="color: #000000">&fields</span>); <span style="color: #A90D91">if</span> (<span style="color: #000000">rc</span> <span style="color: #000000">!=</span> <span style="color: #1C01CE">0</span>) { <span style="color: #000000">BLEPRPH_LOG</span>(<span style="color: #000000">ERROR</span>, <span style="color: #C41A16">"error setting advertisement data; rc=%d\n"</span>, <span style="color: #000000">rc</span>); @@ -528,8 +568,11 @@ package.</p> } <span style="color: #177500">/* Begin advertising. */</span> - <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_gap_adv_start</span>(<span style="color: #000000">BLE_GAP_DISC_MODE_GEN</span>, <span style="color: #000000">BLE_GAP_CONN_MODE_UND</span>, - <span style="color: #A90D91">NULL</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">NULL</span>, <span style="color: #000000">bleprph_on_connect</span>, <span style="color: #A90D91">NULL</span>); + <span style="color: #000000">memset</span>(<span style="color: #000000">&adv_params</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">sizeof</span> <span style="color: #000000">adv_params</span>); + <span style="color: #000000">adv_params</span>.<span style="color: #000000">conn_mode</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_GAP_CONN_MODE_UND</span>; + <span style="color: #000000">adv_params</span>.<span style="color: #000000">disc_mode</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_GAP_DISC_MODE_GEN</span>; + <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_gap_adv_start</span>(<span style="color: #000000">BLE_OWN_ADDR_PUBLIC</span>, <span style="color: #A90D91">NULL</span>, <span style="color: #000000">BLE_HS_FOREVER</span>, + <span style="color: #000000">&adv_params</span>, <span style="color: #000000">bleprph_gap_event</span>, <span style="color: #A90D91">NULL</span>); <span style="color: #A90D91">if</span> (<span style="color: #000000">rc</span> <span style="color: #000000">!=</span> <span style="color: #1C01CE">0</span>) { <span style="color: #000000">BLEPRPH_LOG</span>(<span style="color: #000000">ERROR</span>, <span style="color: #C41A16">"error enabling advertisement; rc=%d\n"</span>, <span style="color: #000000">rc</span>); <span style="color: #A90D91">return</span>; @@ -541,7 +584,7 @@ package.</p> <p>The call to <code>ble_gap_adv_set_fields()</code> configures the device with normal (non-iBeacon) advertisements; the call to <code>ble_gap_adv_start()</code> tells the NimBLE stack to start broadcasting. We are now going to create an iBeacon app -by making the following to changes:</p> +by making the following two changes:</p> <ul> <li>Call <code>ble_ibeacon_set_adv_data()</code> instead of <code>ble_gap_adv_set_fields()</code>.</li> <li>Modify the call to <code>ble_gap_adv_start()</code> such that the device is non-discoverable and non-connectable.</li> @@ -550,10 +593,11 @@ by making the following to changes:</p> <div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span style="color: #A90D91">static</span> <span style="color: #A90D91">void</span> <span style="color: #000000">bleprph_advertise</span>(<span style="color: #A90D91">void</span>) { -<span style="background-color: #ffffcc"> <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">uuid128</span>[<span style="color: #1C01CE">16</span>]; +<span style="background-color: #ffffcc"> <span style="color: #A90D91">struct</span> <span style="color: #000000">ble_gap_adv_params</span> <span style="color: #000000">adv_params</span>; +</span><span style="background-color: #ffffcc"> <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">uuid128</span>[<span style="color: #1C01CE">16</span>]; </span> <span style="color: #A90D91">int</span> <span style="color: #000000">rc</span>; - -<span style="background-color: #ffffcc"> <span style="color: #177500">/* Arbitrarily et the UUID to a string of 0x11 bytes. */</span> +<span style="background-color: #ffffcc"> +</span><span style="background-color: #ffffcc"> <span style="color: #177500">/* Arbitrarily set the UUID to a string of 0x11 bytes. */</span> </span><span style="background-color: #ffffcc"> <span style="color: #000000">memset</span>(<span style="color: #000000">uuid128</span>, <span style="color: #1C01CE">0x11</span>, <span style="color: #A90D91">sizeof</span> <span style="color: #000000">uuid128</span>); </span> <span style="background-color: #ffffcc"> <span style="color: #177500">/* Major version=2; minor version=10. */</span> @@ -565,8 +609,11 @@ by making the following to changes:</p> } <span style="color: #177500">/* Begin advertising. */</span> -<span style="background-color: #ffffcc"> <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_gap_adv_start</span>(<span style="color: #000000">BLE_GAP_DISC_MODE_NON</span>, <span style="color: #000000">BLE_GAP_CONN_MODE_NON</span>, -</span> <span style="color: #A90D91">NULL</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">NULL</span>, <span style="color: #000000">bleprph_on_connect</span>, <span style="color: #A90D91">NULL</span>); + <span style="color: #000000">memset</span>(<span style="color: #000000">&adv_params</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">sizeof</span> <span style="color: #000000">adv_params</span>); +<span style="background-color: #ffffcc"> <span style="color: #000000">adv_params</span>.<span style="color: #000000">conn_mode</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_GAP_CONN_MODE_NON</span>; +</span><span style="background-color: #ffffcc"> <span style="color: #000000">adv_params</span>.<span style="color: #000000">disc_mode</span> <span style="color: #000000">=</span> <span style="color: #000000">BLE_GAP_DISC_MODE_NON</span>; +</span> <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">ble_gap_adv_start</span>(<span style="color: #000000">BLE_OWN_ADDR_PUBLIC</span>, <span style="color: #A90D91">NULL</span>, <span style="color: #000000">BLE_HS_FOREVER</span>, + <span style="color: #000000">&adv_params</span>, <span style="color: #000000">bleprph_gap_event</span>, <span style="color: #A90D91">NULL</span>); <span style="color: #A90D91">if</span> (<span style="color: #000000">rc</span> <span style="color: #000000">!=</span> <span style="color: #1C01CE">0</span>) { <span style="color: #000000">BLEPRPH_LOG</span>(<span style="color: #000000">ERROR</span>, <span style="color: #C41A16">"error enabling advertisement; rc=%d\n"</span>, <span style="color: #000000">rc</span>); <span style="color: #A90D91">return</span>; @@ -594,8 +641,8 @@ your iBeacon-aware devices.</p> </li> <li class="pull-right"> - <a href=../blehci_project/> - Next: BLE HCI interface + <a href=../eddystone/> + Next: BLE Eddystone <span class="fa fa-arrow-right"></span> </a>
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/nRF52/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/nRF52/index.html b/develop/os/tutorials/nRF52/index.html index cc6b36a..9812983 100644 --- a/develop/os/tutorials/nRF52/index.html +++ b/develop/os/tutorials/nRF52/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/olimex/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/olimex/index.html b/develop/os/tutorials/olimex/index.html index b923485..3ed37f4 100644 --- a/develop/os/tutorials/olimex/index.html +++ b/develop/os/tutorials/olimex/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/pin-wheel-mods/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/pin-wheel-mods/index.html b/develop/os/tutorials/pin-wheel-mods/index.html index dbd2f41..20501d4 100644 --- a/develop/os/tutorials/pin-wheel-mods/index.html +++ b/develop/os/tutorials/pin-wheel-mods/index.html @@ -433,6 +433,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/project-slinky/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/project-slinky/index.html b/develop/os/tutorials/project-slinky/index.html index 387d0f8..0ba2375 100644 --- a/develop/os/tutorials/project-slinky/index.html +++ b/develop/os/tutorials/project-slinky/index.html @@ -376,6 +376,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/project-target-slinky/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/project-target-slinky/index.html b/develop/os/tutorials/project-target-slinky/index.html index 826e618..5449457 100644 --- a/develop/os/tutorials/project-target-slinky/index.html +++ b/develop/os/tutorials/project-target-slinky/index.html @@ -376,6 +376,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/repo/add_repos/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/repo/add_repos/index.html b/develop/os/tutorials/repo/add_repos/index.html index 0b67cf5..93a5887 100644 --- a/develop/os/tutorials/repo/add_repos/index.html +++ b/develop/os/tutorials/repo/add_repos/index.html @@ -386,6 +386,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/repo/create_repo/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/repo/create_repo/index.html b/develop/os/tutorials/repo/create_repo/index.html index 43c83b5..b5f2abb 100644 --- a/develop/os/tutorials/repo/create_repo/index.html +++ b/develop/os/tutorials/repo/create_repo/index.html @@ -386,6 +386,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/repo/private_repo/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/repo/private_repo/index.html b/develop/os/tutorials/repo/private_repo/index.html index da24125..9ad0df0 100644 --- a/develop/os/tutorials/repo/private_repo/index.html +++ b/develop/os/tutorials/repo/private_repo/index.html @@ -386,6 +386,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/repo/upgrade_repo/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/repo/upgrade_repo/index.html b/develop/os/tutorials/repo/upgrade_repo/index.html index d6a9042..ea177d9 100644 --- a/develop/os/tutorials/repo/upgrade_repo/index.html +++ b/develop/os/tutorials/repo/upgrade_repo/index.html @@ -386,6 +386,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/tasks_lesson/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/tasks_lesson/index.html b/develop/os/tutorials/tasks_lesson/index.html index 254c4c7..f11eae2 100644 --- a/develop/os/tutorials/tasks_lesson/index.html +++ b/develop/os/tutorials/tasks_lesson/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/tutorials/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/tutorials/index.html b/develop/os/tutorials/tutorials/index.html index c82929d..0820cf6 100644 --- a/develop/os/tutorials/tutorials/index.html +++ b/develop/os/tutorials/tutorials/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/unit_test/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/unit_test/index.html b/develop/os/tutorials/unit_test/index.html index 50f2a2b..6383ddd 100644 --- a/develop/os/tutorials/unit_test/index.html +++ b/develop/os/tutorials/unit_test/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/os/tutorials/wi-fi_on_arduino/index.html ---------------------------------------------------------------------- diff --git a/develop/os/tutorials/wi-fi_on_arduino/index.html b/develop/os/tutorials/wi-fi_on_arduino/index.html index 3173c75..7c6371f 100644 --- a/develop/os/tutorials/wi-fi_on_arduino/index.html +++ b/develop/os/tutorials/wi-fi_on_arduino/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/develop/sitemap.xml ---------------------------------------------------------------------- diff --git a/develop/sitemap.xml b/develop/sitemap.xml index 3233145..86b28f4 100644 --- a/develop/sitemap.xml +++ b/develop/sitemap.xml @@ -4,7 +4,7 @@ <url> <loc>http://mynewt.apache.org/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -13,7 +13,7 @@ <url> <loc>http://mynewt.apache.org/pages/ble/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -22,7 +22,7 @@ <url> <loc>http://mynewt.apache.org/quick-start/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -30,7 +30,7 @@ <url> <loc>http://mynewt.apache.org/about/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -38,7 +38,7 @@ <url> <loc>http://mynewt.apache.org/talks/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -46,7 +46,7 @@ <url> <loc>http://mynewt.apache.org/download/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -54,7 +54,7 @@ <url> <loc>http://mynewt.apache.org/community/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -62,7 +62,7 @@ <url> <loc>http://mynewt.apache.org/events/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -71,7 +71,7 @@ <url> <loc>http://mynewt.apache.org/os/introduction/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -83,7 +83,7 @@ <url> <loc>http://mynewt.apache.org/os/get_started/vocabulary/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> @@ -123,13 +123,13 @@ <url> <loc>http://mynewt.apache.org/faq/how_to_edit_docs/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> <url> <loc>http://mynewt.apache.org/faq/answers/</loc> - <lastmod>2017-02-13</lastmod> + <lastmod>2017-02-15</lastmod> <changefreq>daily</changefreq> </url> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/mkdocs/search_index.json ---------------------------------------------------------------------- diff --git a/latest/mkdocs/search_index.json b/latest/mkdocs/search_index.json index 057a2c2..245f7c7 100644 --- a/latest/mkdocs/search_index.json +++ b/latest/mkdocs/search_index.json @@ -1857,7 +1857,7 @@ }, { "location": "/os/tutorials/ibeacon/", - "text": "BLE iBeacon\n\n\n\n\niBeacon Protocol\n\n\nA beaconing device announces its presence to the world by broadcasting\nadvertisements. The iBeacon protocol is built on top of the standard BLE\nadvertisement specification. An iBeacon advertisement contains a single field:\n\nManufacturer Specific Data\n; this field contains the iBeacon-specific\nsub-fields. \nThis page\n\nprovides a good summary of the iBeacon sub-fields.\n\n\n\n\nConfiguration\n\n\nUse the following function to configure your NimBLE device to send iBeacons:\n\n\nint\n\n\nble_ibeacon_set_adv_data\n(\nvoid\n \n*uuid128\n, \nuint16_t\n \nmajor\n, \nuint16_t\n \nminor\n)\n\n\n\n\n\nThis function's parameters are documented below.\n\n\n\n\n\n\n\n\nParameter\n\n\nPurpose\n\n\n\n\n\n\n\n\n\n\nUUID\n\n\n128-bit UUID identifying the application\n\n\n\n\n\n\nMajor version number\n\n\nFirst number in your app's version\n\n\n\n\n\n\nMinor version number\n\n\nSecond number in your app's version\n\n\n\n\n\n\n\ n\n\n\nModify bleprph\n\n\nTo demonstrate how the above function is used, we will now modify the \nbleprph\n\nexample application to send iBeacons. For some background behind the \nbleprph\n\napp, we recommend you take a look at the \nbleprph project\ntutorial\n. If you plan on making these modifications\nyourself, it might be a good idea to copy \nbleprph\n to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage.\n\n\nbleprph\n sets its advertisement data and begins advertising as follows (\nmain.c\n):\n\n\nstatic\n \nvoid\n\n\nbleprph_advertise\n(\nvoid\n)\n{\n \nstruct\n \nble_hs_adv_fields\n \nfields\n;\n \nint\n \nrc\n;\n\n \n/* Set the advertisement data included in our advertisements. */\n\n \nmemset\n(\nfields\n, \n0\n, \nsizeof\n \nfields\n);\n \nfields\n.\nname\n \n=\n (\nuint8_t\n \n*\n)\nbleprph_device_name\n;\n \nfield s\n.\nname_len\n \n=\n \nstrlen\n(\nbleprph_device_name\n);\n \nfields\n.\nname_is_complete\n \n=\n \n1\n;\n \nrc\n \n=\n \nble_gap_adv_set_fields\n(\nfields\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting advertisement data; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_GAP_DISC_MODE_GEN\n, \nBLE_GAP_CONN_MODE_UND\n,\n \nNULL\n, \n0\n, \nNULL\n, \nbleprph_on_connect\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nThe call to \nble_gap_adv_set_fields()\n configures the device with normal\n(non-iBeacon) advertisements; the call to \nble_gap_adv_start()\n tells the\nNimBLE stack to start broadcasting. We are now going to create an iBeacon app\nby making the following to changes:\n\n\n\n\nCall \n ble_ibeacon_set_adv_data()\n instead of \nble_gap_adv_set_fields()\n.\n\n\nModify the call to \nble_gap_adv_start()\n such that the device is non-discoverable and non-connectable.\n\n\n\n\n\n\nstatic\n \nvoid\n\n\nbleprph_advertise\n(\nvoid\n)\n{\n\n \nuint8_t\n \nuuid128\n[\n16\n];\n\n \nint\n \nrc\n;\n\n\n \n/* Arbitrarily et the UUID to a string of 0x11 bytes. */\n\n\n \nmemset\n(\nuuid128\n, \n0x11\n, \nsizeof\n \nuuid128\n);\n\n\n\n \n/* Major version=2; minor version=10. */\n\n\n \nrc\n \n=\n \nble_ibeacon_set_adv_data\n(\nuuid128\n, \n2\n, \n10\n);\n\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting iBeacon advertisement data; rc=%d\\n\n,\n \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_GAP_DISC_MODE_NON\n, \nBLE_GAP_CONN_MODE_NON\n,\n\n \nNULL\n, \n0\n, \nNULL\n, \nbleprph_on_connect\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nNow when you run this app on your board, you should be able to see it with all\nyour iBeacon-aware devices.", + "text": "BLE iBeacon\n\n\n\n\niBeacon Protocol\n\n\nA beaconing device announces its presence to the world by broadcasting\nadvertisements. The iBeacon protocol is built on top of the standard BLE\nadvertisement specification. An iBeacon advertisement contains a single field:\n\nManufacturer Specific Data\n; this field contains the iBeacon-specific\nsub-fields. \nThis page\n\nprovides a good summary of the iBeacon sub-fields.\n\n\n\n\nConfiguration\n\n\nUse the following function to configure your NimBLE device to send iBeacons:\n\n\nint\n\n\nble_ibeacon_set_adv_data\n(\nvoid\n \n*uuid128\n, \nuint16_t\n \nmajor\n, \nuint16_t\n \nminor\n)\n\n\n\n\n\nThis function's parameters are documented below.\n\n\n\n\n\n\n\n\nParameter\n\n\nPurpose\n\n\n\n\n\n\n\n\n\n\nUUID\n\n\n128-bit UUID identifying the application\n\n\n\n\n\n\nMajor version number\n\n\nFirst number in your app's version\n\n\n\n\n\n\nMinor version number\n\n\nSecond number in your app's version\n\n\n\n\n\n\n\ n\n\n\nModify bleprph\n\n\nTo demonstrate how the above function is used, we will now modify the \nbleprph\n\nexample application to send iBeacons. For some background behind the \nbleprph\n\napp, we recommend you take a look at the \nbleprph project\ntutorial\n. If you plan on making these modifications\nyourself, it might be a good idea to copy \nbleprph\n to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage.\n\n\nbleprph\n sets its advertisement data and begins advertising as follows (\nmain.c\n):\n\n\nstatic\n \nvoid\n\n\nbleprph_advertise\n(\nvoid\n)\n{\n \nstruct\n \nble_gap_adv_params\n \nadv_params\n;\n \nstruct\n \nble_hs_adv_fields\n \nfields\n;\n \nconst\n \nchar\n \n*name\n;\n \nint\n \nrc\n;\n\n \n/**\n\n\n * Set the advertisement data included in our advertisements:\n\n\n * o Flags (indicates advertisemen t type and other general info).\n\n\n * o Advertising tx power.\n\n\n * o Device name.\n\n\n * o 16-bit service UUIDs (alert notifications).\n\n\n */\n\n\n \nmemset\n(\nfields\n, \n0\n, \nsizeof\n \nfields\n);\n\n \n/* Advertise two flags:\n\n\n * o Discoverability in forthcoming advertisement (general)\n\n\n * o BLE-only (BR/EDR unsupported).\n\n\n */\n\n \nfields\n.\nflags\n \n=\n \nBLE_HS_ADV_F_DISC_GEN\n \n|\n\n \nBLE_HS_ADV_F_BREDR_UNSUP\n;\n\n \n/* Indicate that the TX power level field should be included; have the\n\n\n * stack fill this value automatically. This is done by assiging the\n\n\n * special value BLE_HS_ADV_TX_PWR_LVL_AUTO.\n\n\n */\n\n \nfields\n.\ntx_pwr_lvl_is_present\n \n=\n \n1\n;\n \nfields\n.\ntx_pwr_lvl\n \n=\n \nBLE_HS_ADV_TX_PWR_LVL_AUTO\n;\n\n \nname\n \n=\n \nble_svc_gap_device_name\n();\n \nfields\n.\nname\n \n=\n (\nuint8_t\n \n*\n)\nname\n;\n \n fields\n.\nname_len\n \n=\n \nstrlen\n(\nname\n);\n \nfields\n.\nname_is_complete\n \n=\n \n1\n;\n\n \nfields\n.\nuuids16\n \n=\n (\nble_uuid16_t\n[]){\n \nBLE_UUID16_INIT\n(\nGATT_SVR_SVC_ALERT_UUID\n)\n };\n \nfields\n.\nnum_uuids16\n \n=\n \n1\n;\n \nfields\n.\nuuids16_is_complete\n \n=\n \n1\n;\n\n \nrc\n \n=\n \nble_gap_adv_set_fields\n(\nfields\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting advertisement data; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n \nmemset\n(\nadv_params\n, \n0\n, \nsizeof\n \nadv_params\n);\n \nadv_params\n.\nconn_mode\n \n=\n \nBLE_GAP_CONN_MODE_UND\n;\n \nadv_params\n.\ndisc_mode\n \n=\n \nBLE_GAP_DISC_MODE_GEN\n;\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_OWN_ADDR_PUBLIC\n, \nNULL\n, \nBLE_HS_FOREVER\n,\n \nadv_params\n, \nbleprph_gap_event\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nB LEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nThe call to \nble_gap_adv_set_fields()\n configures the device with normal\n(non-iBeacon) advertisements; the call to \nble_gap_adv_start()\n tells the\nNimBLE stack to start broadcasting. We are now going to create an iBeacon app\nby making the following two changes:\n\n\n\n\nCall \nble_ibeacon_set_adv_data()\n instead of \nble_gap_adv_set_fields()\n.\n\n\nModify the call to \nble_gap_adv_start()\n such that the device is non-discoverable and non-connectable.\n\n\n\n\n\n\nstatic\n \nvoid\n\n\nbleprph_advertise\n(\nvoid\n)\n{\n\n \nstruct\n \nble_gap_adv_params\n \nadv_params\n;\n\n \nuint8_t\n \nuuid128\n[\n16\n];\n\n \nint\n \nrc\n;\n\n\n\n \n/* Arbitrarily set the UUID to a string of 0x11 bytes. */\n\n\n \nmemset\n(\nuuid128\n, \n0x11\n, \nsizeof\n \nuuid128\n);\n\n\n\n \n/* Major version=2; minor version=10. */\n\n\n \nrc\n \n=\n \nble_ibea con_set_adv_data\n(\nuuid128\n, \n2\n, \n10\n);\n\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting iBeacon advertisement data; rc=%d\\n\n,\n \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n \nmemset\n(\nadv_params\n, \n0\n, \nsizeof\n \nadv_params\n);\n\n \nadv_params\n.\nconn_mode\n \n=\n \nBLE_GAP_CONN_MODE_NON\n;\n\n \nadv_params\n.\ndisc_mode\n \n=\n \nBLE_GAP_DISC_MODE_NON\n;\n\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_OWN_ADDR_PUBLIC\n, \nNULL\n, \nBLE_HS_FOREVER\n,\n \nadv_params\n, \nbleprph_gap_event\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nNow when you run this app on your board, you should be able to see it with all\nyour iBeacon-aware devices.", "title": "BLE iBeacon" }, { @@ -1877,7 +1877,32 @@ }, { "location": "/os/tutorials/ibeacon/#modify-bleprph", - "text": "To demonstrate how the above function is used, we will now modify the bleprph \nexample application to send iBeacons. For some background behind the bleprph \napp, we recommend you take a look at the bleprph project\ntutorial . If you plan on making these modifications\nyourself, it might be a good idea to copy bleprph to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage. bleprph sets its advertisement data and begins advertising as follows ( main.c ): static void bleprph_advertise ( void )\n{\n struct ble_hs_adv_fields fields ;\n int rc ;\n\n /* Set the advertisement data included in our advertisements. */ \n memset ( fields , 0 , sizeof fields );\n fields . name = ( uint8_t * ) bleprph_device_name ;\n fields . name_len = strlen ( bleprph_device_name );\n fields . nam e_is_complete = 1 ;\n rc = ble_gap_adv_set_fields ( fields );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting advertisement data; rc=%d\\n , rc );\n return ;\n }\n\n /* Begin advertising. */ \n rc = ble_gap_adv_start ( BLE_GAP_DISC_MODE_GEN , BLE_GAP_CONN_MODE_UND ,\n NULL , 0 , NULL , bleprph_on_connect , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} The call to ble_gap_adv_set_fields() configures the device with normal\n(non-iBeacon) advertisements; the call to ble_gap_adv_start() tells the\nNimBLE stack to start broadcasting. We are now going to create an iBeacon app\nby making the following to changes: Call ble_ibeacon_set_adv_data() instead of ble_gap_adv_set_fields() . Modify the call to ble_gap_adv_start() such that the device is non-discoverable and non-connectable. static void bleprph_advertise ( void )\n{ uint8_t uuid128 [ 16 ]; int rc ; /* Arbitrarily et the UUID to a string of 0x11 bytes. */ memset ( uuid128 , 0x11 , sizeof uuid128 ); /* Major version=2; minor version=10. */ rc = ble_ibeacon_set_adv_data ( uuid128 , 2 , 10 ); if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting iBeacon advertisement data; rc=%d\\n ,\n rc );\n return ;\n }\n\n /* Begin advertising. */ rc = ble_gap_adv_start ( BLE_GAP_DISC_MODE_NON , BLE_GAP_CONN_MODE_NON , NULL , 0 , NULL , bleprph_on_connect , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} Now when you run this app on your board, you should be able to see it with all\nyour iBeacon-aware devices.", + "text": "To demonstrate how the above function is used, we will now modify the bleprph \nexample application to send iBeacons. For some background behind the bleprph \napp, we recommend you take a look at the bleprph project\ntutorial . If you plan on making these modifications\nyourself, it might be a good idea to copy bleprph to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage. bleprph sets its advertisement data and begins advertising as follows ( main.c ): static void bleprph_advertise ( void )\n{\n struct ble_gap_adv_params adv_params ;\n struct ble_hs_adv_fields fields ;\n const char *name ;\n int rc ;\n\n /** * Set the advertisement data included in our advertisements: * o Flags (indicates advertisement type and other general info). * o Advertising tx powe r. * o Device name. * o 16-bit service UUIDs (alert notifications). */ \n\n memset ( fields , 0 , sizeof fields );\n\n /* Advertise two flags: * o Discoverability in forthcoming advertisement (general) * o BLE-only (BR/EDR unsupported). */ \n fields . flags = BLE_HS_ADV_F_DISC_GEN | \n BLE_HS_ADV_F_BREDR_UNSUP ;\n\n /* Indicate that the TX power level field should be included; have the * stack fill this value automatically. This is done by assiging the * special value BLE_HS_ADV_TX_PWR_LVL_AUTO. */ \n fields . tx_pwr_lvl_is_present = 1 ;\n fields . tx_pwr_lvl = BLE_HS_ADV_TX_PWR_LVL_AUTO ;\n\n name = ble_svc_gap_device_name ();\n fields . name = ( uint8_t * ) name ;\n fields . name_len = strlen ( name );\n fields . name_is_complete = 1 ;\n\n fields . uuids16 = ( ble_uuid16_t []){\n BLE_UUID16_INIT ( GATT_S VR_SVC_ALERT_UUID )\n };\n fields . num_uuids16 = 1 ;\n fields . uuids16_is_complete = 1 ;\n\n rc = ble_gap_adv_set_fields ( fields );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting advertisement data; rc=%d\\n , rc );\n return ;\n }\n\n /* Begin advertising. */ \n memset ( adv_params , 0 , sizeof adv_params );\n adv_params . conn_mode = BLE_GAP_CONN_MODE_UND ;\n adv_params . disc_mode = BLE_GAP_DISC_MODE_GEN ;\n rc = ble_gap_adv_start ( BLE_OWN_ADDR_PUBLIC , NULL , BLE_HS_FOREVER ,\n adv_params , bleprph_gap_event , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} The call to ble_gap_adv_set_fields() configures the device with normal\n(non-iBeacon) advertisements; the call to ble_gap_adv_start() tells the\nNimBLE stack to start broadcasting. We are now going to create an iBeacon app\nby making the following two changes: Call ble_ibeacon_set_adv_data() instead of ble_gap_adv_set_fields() . Modify the call to ble_gap_adv_start() such that the device is non-discoverable and non-connectable. static void bleprph_advertise ( void )\n{ struct ble_gap_adv_params adv_params ; uint8_t uuid128 [ 16 ]; int rc ; /* Arbitrarily set the UUID to a string of 0x11 bytes. */ memset ( uuid128 , 0x11 , sizeof uuid128 ); /* Major version=2; minor version=10. */ rc = ble_ibeacon_set_adv_data ( uuid128 , 2 , 10 ); if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting iBeacon advertisement data; rc=%d\\n ,\n rc );\n return ;\n }\n\n /* Begin advertising. */ \n memset ( adv_params , 0 , sizeof adv_params ); adv_params . conn_mode = BLE_GAP_CONN_MODE_NON ; adv_params . disc_mode = BLE_GAP_DISC_MODE_NON ; rc = ble_gap_adv_start ( BLE_OWN_ADDR_PUBLIC , NULL , BLE_HS_FOREVER ,\n adv_params , bleprph_gap_event , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} Now when you run this app on your board, you should be able to see it with all\nyour iBeacon-aware devices.", + "title": "Modify bleprph" + }, + { + "location": "/os/tutorials/eddystone/", + "text": "BLE Eddystone\n\n\n\n\nEddystone Beacon Protocol\n\n\nA beaconing device announces its presence to the world by broadcasting\nadvertisements. The Eddystone protocol is built on top of the standard BLE\nadvertisement specification. Eddystone supports multiple data packet types\n\n\n\n\nEddystone-UID: a unique, static ID with a 10-byte Namespace component and a 6-byte Instance component.\n\n\nEddystone-URL: a compressed URL that, once parsed and decompressed, is directly usable by the client.\n\n\nEddystone-TLM: \"telemetry\" packets that are broadcast alongside the Eddystone-UID or Eddystone-URL packets and contains beacon\u2019s \u201chealth status\u201d (e.g., battery life).\n\n\nEddystone-EID to broadcast an ephemeral identifier that changes every few minutes and allow only parties that can resolve the identifier to use the beacon. \n\n\n\n\nThis page\n describes the Eddystone open beacon format developed by Google.\n\n\nApache Mynewt currently supports Eddy stone-UID and Eddystone-URL formats only. This tutorial will explain how to get an Eddystone-URL beacon going on a peripheral device.\n\n\n\n\nConfiguration\n\n\nUse the following function to configure your NimBLE device to send Eddystone-URL beacons:\n\n\nint\n\n\nble_eddystone_set_adv_data_url\n(\nstruct\n \nble_hs_adv_fields\n \n*adv_fields\n,\n \nuint8_t\n \nurl_scheme\n, \nchar\n \n*url_body\n,\n \nuint8_t\n \nurl_body_len\n, \nuint8_t\n \nurl_suffix\n)\n\n\n\n\n\nThis function's parameters are documented below.\n\n\n\n\n\n\n\n\nParameter\n\n\nPurpose\n\n\n\n\n\n\n\n\n\n\nadv_fields\n\n\nThe base advertisement fields to transform into an eddystone beacon.\n\n\n\n\n\n\nurl_scheme\n\n\nThe prefix of the URL; one of the BLE_EDDYSTONE_URL_SCHEME values from ble_eddystone.h\n\n\n\n\n\n\nurl_body\n\n\nThe middle of the url specified within \"\".\n\n\n\n\n\n\nurl_body_len\n\n\nThe string length of the url_body argument.\n\n\n \n\n\n\nurl_suffix\n\n\nThe suffix of the URL; one of the BLE_EDDYSTONE_URL_SUFFIX values from ble_eddystone.h\n\n\n\n\n\n\n\n\n\n\nModify bleprph\n\n\nTo demonstrate how the above function is used, we will now modify the \nbleprph\n\nexample application to send Eddystone beacons. For some background behind the \nbleprph\n\napp, we recommend you take a look at the \nbleprph project\ntutorial\n. If you plan on making these modifications\nyourself, it might be a good idea to copy \nbleprph\n to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage.\n\n\nbleprph\n sets its advertisement data and begins advertising as follows (\nmain.c\n):\n\n\nstatic\n \nvoid\n\n\nbleprph_advertise\n(\nvoid\n)\n{\n \nstruct\n \nble_gap_adv_params\n \nadv_params\n;\n \nstruct\n \nble_hs_adv_fields\n \nfields\n;\n \nconst\n \nchar\n \n*name\n;\n \nint\n \nrc\n ;\n\n \n/**\n\n\n * Set the advertisement data included in our advertisements:\n\n\n * o Flags (indicates advertisement type and other general info).\n\n\n * o Advertising tx power.\n\n\n * o Device name.\n\n\n * o 16-bit service UUIDs (alert notifications).\n\n\n */\n\n\n \nmemset\n(\nfields\n, \n0\n, \nsizeof\n \nfields\n);\n\n \n/* Advertise two flags:\n\n\n * o Discoverability in forthcoming advertisement (general)\n\n\n * o BLE-only (BR/EDR unsupported).\n\n\n */\n\n \nfields\n.\nflags\n \n=\n \nBLE_HS_ADV_F_DISC_GEN\n \n|\n\n \nBLE_HS_ADV_F_BREDR_UNSUP\n;\n\n \n/* Indicate that the TX power level field should be included; have the\n\n\n * stack fill this value automatically. This is done by assiging the\n\n\n * special value BLE_HS_ADV_TX_PWR_LVL_AUTO.\n\n\n */\n\n \nfields\n.\ntx_pwr_lvl_is_present\n \n=\n \n1\n;\n \nfields\n.\ntx_pwr_lvl\n \n=\n \nBLE_HS_ADV_TX_PW R_LVL_AUTO\n;\n\n \nname\n \n=\n \nble_svc_gap_device_name\n();\n \nfields\n.\nname\n \n=\n (\nuint8_t\n \n*\n)\nname\n;\n \nfields\n.\nname_len\n \n=\n \nstrlen\n(\nname\n);\n \nfields\n.\nname_is_complete\n \n=\n \n1\n;\n\n \nfields\n.\nuuids16\n \n=\n (\nble_uuid16_t\n[]){\n \nBLE_UUID16_INIT\n(\nGATT_SVR_SVC_ALERT_UUID\n)\n };\n \nfields\n.\nnum_uuids16\n \n=\n \n1\n;\n \nfields\n.\nuuids16_is_complete\n \n=\n \n1\n;\n\n \nrc\n \n=\n \nble_gap_adv_set_fields\n(\nfields\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting advertisement data; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n \nmemset\n(\nadv_params\n, \n0\n, \nsizeof\n \nadv_params\n);\n \nadv_params\n.\nconn_mode\n \n=\n \nBLE_GAP_CONN_MODE_UND\n;\n \nadv_params\n.\ndisc_mode\n \n=\n \nBLE_GAP_DISC_MODE_GEN\n;\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_OWN_ADDR_PUBLIC\n, \nNULL\n, \nBLE_HS_FOR EVER\n,\n \nadv_params\n, \nbleprph_gap_event\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nThe call to \nble_gap_adv_set_fields()\n configures the device with normal\n(non-Eddystone) advertisements; the call to \nble_gap_adv_start()\n tells the\nNimBLE stack to start broadcasting. We are now going to create an Eddystone app\nby making the following changes:\n\n\n\n\nCall \nble_eddystone_set_adv_data()\n instead of \nble_gap_adv_set_fields()\n. The tutorial shows how to emit \"`https://mynewt.apache.org\".\n\n\nRemove advertisement data such as device name, flags, tx levels etc. that are not required. \n\n\nRemove unnecessary local variables e.g. \nname\n pointer. \n\n\nModify the call to \nble_gap_adv_start()\n such that the device is non-discoverable and non-connectable.\n\n\n\n\n\n\nstatic\n \nvoid\n\n\nbleprph_advertis e\n(\nvoid\n)\n{ \n \nstruct\n \nble_gap_adv_params\n \nadv_params\n;\n \nstruct\n \nble_hs_adv_fields\n \nfields\n;\n \nint\n \nrc\n;\n\n \n/** \n\n\n * Remove the advertisement data typically included in our advertisements: \n\n\n * o Flags (indicates advertisement type and other general info).\n\n\n * o Advertising tx power.\n\n\n * o Device name.\n\n\n * o 16-bit service UUIDs (alert notifications).\n\n\n */\n\n\n \nmemset\n(\nfields\n, \n0\n, \nsizeof\n \nfields\n);\n\n\n \n/* No flags are needed for Eddystone URL. Remove all from default app.*/\n\n\n\n\n \nrc\n \n=\n \nble_eddystone_set_adv_data_url\n(\nfields\n, \nBLE_EDDYSTONE_URL_SCHEME_HTTPS\n, \nmynewt.apache\n, \n\n \n13\n, \nBLE_EDDYSTONE_URL_SUFFIX_ORG\n); \n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror setting eddystone advertisement data; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n\n \n/* Begin advertising. */\n\n \nmemset\n(\nadv_params\n, \n0\n, \nsizeof\n \nadv_params\n);\n\n \nadv_params\n.\nconn_mode\n \n=\n \nBLE_GAP_CONN_MODE_NON\n;\n\n \nadv_params\n.\ndisc_mode\n \n=\n \nBLE_GAP_DISC_MODE_NON\n;\n\n \nrc\n \n=\n \nble_gap_adv_start\n(\nBLE_OWN_ADDR_PUBLIC\n, \nNULL\n, \nBLE_HS_FOREVER\n,\n \nadv_params\n, \nbleprph_gap_event\n, \nNULL\n);\n \nif\n (\nrc\n \n!=\n \n0\n) {\n \nBLEPRPH_LOG\n(\nERROR\n, \nerror enabling advertisement; rc=%d\\n\n, \nrc\n);\n \nreturn\n;\n }\n}\n\n\n\n\n\nAlso include the header file for the eddystone beacon \nble_eddystone.h\n in the app's main.c file. \n\n\n#include \nhost/ble_eddystone.h\n\n\n\n\n\n\nIf you have copied the bleprph app into your local repository then make sure that the pkg.yml for the app has the \n@apache-mynewt-core/\n prefix; otherwise the package dependencies will not be resolved correctly.\n\n\npkg.deps: \n - \n@apache-mynewt-core/boot/split\n\n - \n@apache-mynewt-core/kernel/os\n\n\nsnip\n\n\n\n\n\n\nFinally, enable the \nBLE_EDDYSTONE\n sysconfig in the syscfg.yml of either your target or your app.\n\n\nsyscfg.vals:\n \nsnip\n\n BLE_EDDYSTONE: 1 \n\n\n\n\n\nNow when you run this app on your board, you should be able to see it with all\nyour Eddystone-aware devices.", + "title": "BLE Eddystone" + }, + { + "location": "/os/tutorials/eddystone/#ble-eddystone", + "text": "", + "title": "BLE Eddystone" + }, + { + "location": "/os/tutorials/eddystone/#eddystone-beacon-protocol", + "text": "A beaconing device announces its presence to the world by broadcasting\nadvertisements. The Eddystone protocol is built on top of the standard BLE\nadvertisement specification. Eddystone supports multiple data packet types Eddystone-UID: a unique, static ID with a 10-byte Namespace component and a 6-byte Instance component. Eddystone-URL: a compressed URL that, once parsed and decompressed, is directly usable by the client. Eddystone-TLM: \"telemetry\" packets that are broadcast alongside the Eddystone-UID or Eddystone-URL packets and contains beacon\u2019s \u201chealth status\u201d (e.g., battery life). Eddystone-EID to broadcast an ephemeral identifier that changes every few minutes and allow only parties that can resolve the identifier to use the beacon. This page describes the Eddystone open beacon format developed by Google. Apache Mynewt currently supports Eddystone-UID and Eddystone-URL formats only. This tutorial will explain how to get an Ed dystone-URL beacon going on a peripheral device.", + "title": "Eddystone Beacon Protocol" + }, + { + "location": "/os/tutorials/eddystone/#configuration", + "text": "Use the following function to configure your NimBLE device to send Eddystone-URL beacons: int ble_eddystone_set_adv_data_url ( struct ble_hs_adv_fields *adv_fields ,\n uint8_t url_scheme , char *url_body ,\n uint8_t url_body_len , uint8_t url_suffix ) This function's parameters are documented below. Parameter Purpose adv_fields The base advertisement fields to transform into an eddystone beacon. url_scheme The prefix of the URL; one of the BLE_EDDYSTONE_URL_SCHEME values from ble_eddystone.h url_body The middle of the url specified within \"\". url_body_len The string length of the url_body argument. url_suffix The suffix of the URL; one of the BLE_EDDYSTONE_URL_SUFFIX values from ble_eddystone.h", + "title": "Configuration" + }, + { + "location": "/os/tutorials/eddystone/#modify-bleprph", + "text": "To demonstrate how the above function is used, we will now modify the bleprph \nexample application to send Eddystone beacons. For some background behind the bleprph \napp, we recommend you take a look at the bleprph project\ntutorial . If you plan on making these modifications\nyourself, it might be a good idea to copy bleprph to your local repository\nand work with the copy. In general, you should avoid changing a package that\nnewt downloads, as you will lose your changes the next time you upgrade the\npackage. bleprph sets its advertisement data and begins advertising as follows ( main.c ): static void bleprph_advertise ( void )\n{\n struct ble_gap_adv_params adv_params ;\n struct ble_hs_adv_fields fields ;\n const char *name ;\n int rc ;\n\n /** * Set the advertisement data included in our advertisements: * o Flags (indicates advertisement type and other general info). * o Advertisin g tx power. * o Device name. * o 16-bit service UUIDs (alert notifications). */ \n\n memset ( fields , 0 , sizeof fields );\n\n /* Advertise two flags: * o Discoverability in forthcoming advertisement (general) * o BLE-only (BR/EDR unsupported). */ \n fields . flags = BLE_HS_ADV_F_DISC_GEN | \n BLE_HS_ADV_F_BREDR_UNSUP ;\n\n /* Indicate that the TX power level field should be included; have the * stack fill this value automatically. This is done by assiging the * special value BLE_HS_ADV_TX_PWR_LVL_AUTO. */ \n fields . tx_pwr_lvl_is_present = 1 ;\n fields . tx_pwr_lvl = BLE_HS_ADV_TX_PWR_LVL_AUTO ;\n\n name = ble_svc_gap_device_name ();\n fields . name = ( uint8_t * ) name ;\n fields . name_len = strlen ( name );\n fields . name_is_complete = 1 ;\n\n fields . uuids16 = ( ble_uuid16_t []){\n BLE_UUID16_INIT ( GATT_SVR_SVC_ALERT_UUID )\n };\n fields . num_uuids16 = 1 ;\n fields . uuids16_is_complete = 1 ;\n\n rc = ble_gap_adv_set_fields ( fields );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting advertisement data; rc=%d\\n , rc );\n return ;\n }\n\n /* Begin advertising. */ \n memset ( adv_params , 0 , sizeof adv_params );\n adv_params . conn_mode = BLE_GAP_CONN_MODE_UND ;\n adv_params . disc_mode = BLE_GAP_DISC_MODE_GEN ;\n rc = ble_gap_adv_start ( BLE_OWN_ADDR_PUBLIC , NULL , BLE_HS_FOREVER ,\n adv_params , bleprph_gap_event , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} The call to ble_gap_adv_set_fields() configures the device with normal\n(non-Eddystone) advertisements; the call to ble_gap_adv_start() tells the\nNimBLE stack to start broadcastin g. We are now going to create an Eddystone app\nby making the following changes: Call ble_eddystone_set_adv_data() instead of ble_gap_adv_set_fields() . The tutorial shows how to emit \"`https://mynewt.apache.org\". Remove advertisement data such as device name, flags, tx levels etc. that are not required. Remove unnecessary local variables e.g. name pointer. Modify the call to ble_gap_adv_start() such that the device is non-discoverable and non-connectable. static void bleprph_advertise ( void )\n{ \n struct ble_gap_adv_params adv_params ;\n struct ble_hs_adv_fields fields ;\n int rc ;\n\n /** * Remove the advertisement data typically included in our advertisements: * o Flags (indicates advertisement type and other general info). * o Advertising tx power. * o Device name. * o 16-bit service UUIDs (alert notifications). */ \n\n memset ( fields , 0 , sizeof fields ); /* No flags are needed for Eddystone URL. Remove all from default app.*/ rc = ble_eddystone_set_adv_data_url ( fields , BLE_EDDYSTONE_URL_SCHEME_HTTPS , mynewt.apache , 13 , BLE_EDDYSTONE_URL_SUFFIX_ORG ); \n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error setting eddystone advertisement data; rc=%d\\n , rc );\n return ;\n }\n\n /* Begin advertising. */ \n memset ( adv_params , 0 , sizeof adv_params ); adv_params . conn_mode = BLE_GAP_CONN_MODE_NON ; adv_params . disc_mode = BLE_GAP_DISC_MODE_NON ; rc = ble_gap_adv_start ( BLE_OWN_ADDR_PUBLIC , NULL , BLE_HS_FOREVER ,\n adv_params , bleprph_gap_event , NULL );\n if ( rc != 0 ) {\n BLEPRPH_LOG ( ERROR , error enabling advertisement; rc=%d\\n , rc );\n return ;\n }\n} Also include the header file for the eddystone beacon ble_eddystone.h in the app's main.c file. #include host/ble_eddystone.h If you have copied the bleprph app into your local repository then make sure that the pkg.yml for the app has the @apache-mynewt-core/ prefix; otherwise the package dependencies will not be resolved correctly. pkg.deps: \n - @apache-mynewt-core/boot/split \n - @apache-mynewt-core/kernel/os snip Finally, enable the BLE_EDDYSTONE sysconfig in the syscfg.yml of either your target or your app. syscfg.vals:\n snip \n BLE_EDDYSTONE: 1 Now when you run this app on your board, you should be able to see it with all\nyour Eddystone-aware devices.", "title": "Modify bleprph" }, { http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/STM32F303/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/STM32F303/index.html b/latest/os/tutorials/STM32F303/index.html index 3148227..44f57cb 100644 --- a/latest/os/tutorials/STM32F303/index.html +++ b/latest/os/tutorials/STM32F303/index.html @@ -433,6 +433,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/add_newtmgr/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/add_newtmgr/index.html b/latest/os/tutorials/add_newtmgr/index.html index 8ee72c9..4ed9583 100644 --- a/latest/os/tutorials/add_newtmgr/index.html +++ b/latest/os/tutorials/add_newtmgr/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/add_shell/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/add_shell/index.html b/latest/os/tutorials/add_shell/index.html index 07c86a1..2c6ad11 100644 --- a/latest/os/tutorials/add_shell/index.html +++ b/latest/os/tutorials/add_shell/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/air_quality_ble/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/air_quality_ble/index.html b/latest/os/tutorials/air_quality_ble/index.html index c14bbde..5de7e09 100644 --- a/latest/os/tutorials/air_quality_ble/index.html +++ b/latest/os/tutorials/air_quality_ble/index.html @@ -376,6 +376,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/air_quality_sensor/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/air_quality_sensor/index.html b/latest/os/tutorials/air_quality_sensor/index.html index d22dd0a..ab46cf1 100644 --- a/latest/os/tutorials/air_quality_sensor/index.html +++ b/latest/os/tutorials/air_quality_sensor/index.html @@ -376,6 +376,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/arduino_zero/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/arduino_zero/index.html b/latest/os/tutorials/arduino_zero/index.html index 4b804c8..d5a1e79 100644 --- a/latest/os/tutorials/arduino_zero/index.html +++ b/latest/os/tutorials/arduino_zero/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/blehci_project/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/blehci_project/index.html b/latest/os/tutorials/blehci_project/index.html index cc90c6c..1fb93c7 100644 --- a/latest/os/tutorials/blehci_project/index.html +++ b/latest/os/tutorials/blehci_project/index.html @@ -355,6 +355,14 @@ + <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + <li class="active"> <a href="./">BLE HCI interface</a> </li> @@ -619,9 +627,9 @@ eir_len 23 <ul class="nav nav-pills" style="margin-bottom: 10px"> <li> - <a href=../ibeacon/> + <a href=../eddystone/> <span class="fa fa-arrow-left"></span> - Previous: BLE iBeacon + Previous: BLE Eddystone </a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-adv/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-adv/index.html b/latest/os/tutorials/bleprph/bleprph-adv/index.html index 22e6d65..1dbe9c1 100644 --- a/latest/os/tutorials/bleprph/bleprph-adv/index.html +++ b/latest/os/tutorials/bleprph/bleprph-adv/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-app/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-app/index.html b/latest/os/tutorials/bleprph/bleprph-app/index.html index 755de43..0b8fc20 100644 --- a/latest/os/tutorials/bleprph/bleprph-app/index.html +++ b/latest/os/tutorials/bleprph/bleprph-app/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-chr-access/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-chr-access/index.html b/latest/os/tutorials/bleprph/bleprph-chr-access/index.html index 0df01cb..42cc68a 100644 --- a/latest/os/tutorials/bleprph/bleprph-chr-access/index.html +++ b/latest/os/tutorials/bleprph/bleprph-chr-access/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-gap-event/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-gap-event/index.html b/latest/os/tutorials/bleprph/bleprph-gap-event/index.html index 7dc4eb3..8b3b63b 100644 --- a/latest/os/tutorials/bleprph/bleprph-gap-event/index.html +++ b/latest/os/tutorials/bleprph/bleprph-gap-event/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-intro/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-intro/index.html b/latest/os/tutorials/bleprph/bleprph-intro/index.html index 612fd3f..eaa2890 100644 --- a/latest/os/tutorials/bleprph/bleprph-intro/index.html +++ b/latest/os/tutorials/bleprph/bleprph-intro/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bleprph/bleprph-svc-reg/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bleprph/bleprph-svc-reg/index.html b/latest/os/tutorials/bleprph/bleprph-svc-reg/index.html index 289ebe8..a02acf7 100644 --- a/latest/os/tutorials/bleprph/bleprph-svc-reg/index.html +++ b/latest/os/tutorials/bleprph/bleprph-svc-reg/index.html @@ -402,6 +402,14 @@ <li > + <a href="../../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/bletiny_project/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/bletiny_project/index.html b/latest/os/tutorials/bletiny_project/index.html index d4e4c76..d382bec 100644 --- a/latest/os/tutorials/bletiny_project/index.html +++ b/latest/os/tutorials/bletiny_project/index.html @@ -356,6 +356,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/blinky_console/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/blinky_console/index.html b/latest/os/tutorials/blinky_console/index.html index c1cdcb6..a07b038 100644 --- a/latest/os/tutorials/blinky_console/index.html +++ b/latest/os/tutorials/blinky_console/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/blinky_primo/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/blinky_primo/index.html b/latest/os/tutorials/blinky_primo/index.html index cc2df97..0e5528c 100644 --- a/latest/os/tutorials/blinky_primo/index.html +++ b/latest/os/tutorials/blinky_primo/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/e1ea942d/latest/os/tutorials/blinky_sram_olimex/index.html ---------------------------------------------------------------------- diff --git a/latest/os/tutorials/blinky_sram_olimex/index.html b/latest/os/tutorials/blinky_sram_olimex/index.html index ad660aa..5ecf85a 100644 --- a/latest/os/tutorials/blinky_sram_olimex/index.html +++ b/latest/os/tutorials/blinky_sram_olimex/index.html @@ -419,6 +419,14 @@ <li > + <a href="../eddystone/">BLE Eddystone</a> + </li> + + + + + + <li > <a href="../blehci_project/">BLE HCI interface</a> </li>
