blob: e2928c1a76652136c043fdcf916dd0465b96d524 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- This is broken by doc revisioning.
-->
<link rel="shortcut icon" href="../../../../img/favicon.ico">
<title>Add OIC Sensor Support to the bleprph_oic Application - Apache Mynewt</title>
<link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
<link rel="stylesheet" href="../../../../css/highlight.css">
<link href="../../../../css/base.css" rel="stylesheet">
<link href="../../../../css/custom.css" rel="stylesheet">
<link href="../../../../css/v2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="Add OIC Sensor Support to the bleprph_oic Application">
<div class="container">
<div class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
</div>
</div>
</div>
</div>
<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li
class=""
>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li
class="important"
>
<a href="/quick-start/">Quick Start</a>
</li>
<li
class=""
>
<a href="/about/">About</a>
</li>
<li
class=""
>
<a href="/talks/">Talks</a>
</li>
<li
class="active"
>
<a href="/documentation/">Documentation</a>
</li>
<li
class=""
>
<a href="/download/">Download</a>
</li>
<li
class=""
>
<a href="/community/">Community</a>
</li>
<li
class=""
>
<a href="/events/">Events</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
<div class="top">
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search documentation" />
</div>
</form>
</div>
</div>
<ul class="toc-nav">
<li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest">
Version: master
</option>
<option value="/v1_12_0/" >
Version: 1.12.0
</option>
<option value="/v1_11_0/" >
Version: 1.11.0
</option>
<option value="/v1_10_0/" >
Version: 1.10.0
</option>
<option value="/v1_9_0/" >
Version: 1.9.0
</option>
<option value="/v1_8_0/" >
Version: 1.8.0
</option>
<option value="/v1_7_0/" >
Version: 1.7.0
</option>
<option value="/v1_6_0/" >
Version: 1.6.0
</option>
<option value="/v1_5_0/" >
Version: 1.5.0
</option>
<option value="/v1_4_0/" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" selected="selected" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select></li>
<li ><a href="../../../introduction/">Mynewt Documentation</a>
<ul>
<li ><a href="../../../get_started/get_started/">Basic Setup</a>
</li>
<li >
<a href="../../../get_started/vocabulary/">Concepts</a>
</li>
<li ><a href="../../tutorials/">Tutorials</a>
<ul>
<li ><a href="../../blinky/">Project Blinky</a>
</li>
<li ><a href="../../repo/add_repos/">Work with repositories</a>
</li>
<li ><a href="../../project-slinky/">Project Slinky for Remote Comms</a>
</li>
<li><a href="
../../ble_bare_bones/
">Bluetooth Low Energy</a>
</li>
<li><a href="
../../lora/lorawanapp/
">LoRa</a>
</li>
<li><a href="
../../event_queue/
">OS Fundamentals</a>
</li>
<li><a href="
../../add_newtmgr/
">Remote Device Management</a>
</li>
<li><a href="
../sensors/
">Sensors</a>
<ul>
<li ><a href="../sensors/">Sensor Framework</a>
<ul>
<li >
<a href="../sensor_nrf52_bno055/">Enable an Off-Board Sensor in an Existing Application</a>
</li>
<li >
<a href="../sensor_offboard_config/">Change the Default Configuration For a Sensor</a>
</li>
<li >
<a href="../sensor_thingy_lis2dh12_onb/">Develop an Application for an Onboard Sensor</a>
</li>
<li ><a href="../sensor_oic_overview/">Enable OIC Sensor Data Monitoring</a>
<ul>
<li >
<a href="../sensor_nrf52_bno055_oic/">Enable OIC Sensor Support in the sensors_test Application</a>
</li>
<li class="active">
<a href="./">Add OIC Sensor Support to the bleprph_oic Application</a>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="
../../air_quality_sensor/
">Air-quality Sensor project</a>
</li>
<li >
<a href="../../nrf52_adc/">Add an Analog Sensor</a>
</li>
</ul>
</li>
<li><a href="
../../segger_rtt/
">Tooling</a>
</li>
<li><a href="
../../codesize/
">Other</a>
</li>
</ul>
</li>
<li ><a href="../../../os_user_guide/">OS User Guide</a>
</li>
<li><a href="
../../../../network/ble/ble_intro/
">BLE User Guide</a>
</li>
<li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a>
</li>
<li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a>
</li>
<li >
<a href="../../../../known_issues/">Known Issues</a>
</li>
</ul>
</li>
<li><a href="
../../../../newt/install/prev_releases/
">Appendix</a>
</li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<div class="doc-header">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/documentation/">Docs</a></li>
<li>&raquo; <a href="os/tutorials/sensors/sensor_oic_overview/">Enable OIC Sensor Data Monitoring</a></li>
<li>&raquo; <a href="os/tutorials/sensors/sensors/">Sensor Framework</a></li>
<li>&raquo; Sensors</li>
<li>&raquo; <a href="os/tutorials/tutorials/">Tutorials</a></li>
<li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
<li>&raquo; Add OIC Sensor Support to the bleprph_oic Application</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/mynewt-site/blob/master/docs/os/tutorials/sensors/sensor_bleprph_oic.md"
class="icon icon-github"> Edit on GitHub</a>
</li>
</ul>
</div>
</div>
<div class="alert alert-warning">
<p>
Version 1.2.0 is not the most recent version of the Apache Mynewt
documentation. Click <a href="/latest">here</a> to read the latest
version.
</p>
</div>
<h2 id="adding-oic-sensor-support-to-the-bleprph_oic-application">Adding OIC Sensor Support to the bleprph_oic Application</h2>
<p>This tutorial shows you how to modify and add OIC sensor support to the <strong>bleprph_oic</strong> application. This tutorial assumes that have you completed the <a href="/os/tutorials/sensors/sensor_nrf52_bno055_oic.md">Enabling OIC Sensor Data Monitoring in the sensors_test Application Tutorial</a>. </p>
<p>Like the other off-board sensor tutorials, this tutorial uses an nRF52-DK board connected to an off-board BNO055 sensor device.</p>
<p>This tutorial shows you how to:</p>
<ul>
<li>Modify the bleprph_oic application to add OIC sensor support.</li>
<li>Create and build the target for the new application.</li>
<li>Use the Mynewt Smart Device Controller iOS or Android app to view the sensor data from the device.</li>
</ul>
<h3 id="prerequisites">Prerequisites</h3>
<ul>
<li>Read the <a href="/os/tutorials/sensors/sensor_oic_overview.md">Overview of OIC Support in the Sensor Framework</a>.</li>
<li>Complete the tasks described in the <a href="/os/tutorials/sensors/sensor_nrf52_bno055_oic.md">Enabling OIC Sensor Data Monitoring in the sensors_test Application</a> tutorial.
<br></li>
</ul>
<h3 id="overview-on-how-to-add-oic-sensor-support-to-a-ble-application">Overview on How to Add OIC Sensor Support to a BLE Application</h3>
<p>The sensor framework makes it very easy to add OIC sensor support to an existing BLE application. The sensor framework exports the <code>sensor_oic_init()</code> function that an application calls to create the OIC resources for the sensors and to set up the handlers to process CoAP requests for the resources. </p>
<p>An application uses the <code>oc</code> server API in the <code>net/oic</code> package to implement OIC server functionality. An application defines an OIC application initialization handler that sets up the OIC resources it supports. The <code>oc_main_init()</code> function, that an application calls during initialization in <code>main()</code>, calls the OIC application handler. </p>
<p>To add OIC sensor support, we modify the bleprph_oic application to call the <code>sensor_oic_init()</code> function in the OIC application initialization handler.</p>
<p><br></p>
<h3 id="step-1-copying-the-bleprph_oic-source">Step 1: Copying the bleprph_oic source</h3>
<p><br>
1. Copy the @apache-mynewt-core/apps/bleprph_oic to a new package. We name the new package <strong>apps/bleprph_oic_sensor</strong>. From your project base directory, run the <code>newt pkg copy</code> command:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt pkg copy @apache-mynewt-core/apps/bleprph_oic @apache-mynewt-core/apps/bleprph_oic_sensor
Copying package @apache-mynewt-core/apps/bleprph_oic to @apache-mynewt-core/apps/bleprph_oic_sensor
</code></pre></div>
<p><br>
2. The newt tools creates the <code>bleprph_oic_sensor</code> package in the <code>~/dev/myproj/repos/apache-mynewt-core/apps/bleprph_oic_sensor</code> directory. Go to the directory to update the package <code>pkg.yml</code> and source files.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ cd repos/apache-mynewt-core/apps/bleprph_oic_sensor
</code></pre></div>
<p><br></p>
<h3 id="step-2-adding-package-dependencies">Step 2: Adding Package Dependencies</h3>
<p>Add the <code>hw/sensor/</code> and the <code>hw/sensor/creator</code> packages as dependencies in the <code>pkg.yml</code> file to include the sensor framework and off-board sensor support.</p>
<p><strong>Note:</strong> The <code>hw/sensor</code> package automatically includes the <code>net/oic</code> package when the <code>SENSOR_OIC</code> setting is enabled, so you do not need to include the <code>net/oic</code> package as a dependency in this package.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>pkg.deps:
- kernel/os
- net/nimble/controller
- net/nimble/host
- net/nimble/host/services/gap
- net/nimble/host/services/gatt
- net/nimble/host/store/ram
- net/nimble/transport/ram
...
<span style="background-color: #ffffcc"> - hw/sensor
</span><span style="background-color: #ffffcc"> - hw/sensor/creator
</span></code></pre></div>
<p><br></p>
<h3 id="step-3-setting-syscfg-values-to-enable-oic-support">Step 3: Setting Syscfg Values to Enable OIC Support</h3>
<p>Add the following setting values to <code>syscfg.vals</code> in the <code>syscfg.yml</code> file:</p>
<ul>
<li><code>SENSOR_OIC: 1</code>: This setting enables OIC sensor support in the <code>hw/sensors</code> package.</li>
<li><code>OC_SERVER: 1</code> : This setting enables OIC server support in the <code>net/oic</code> package. </li>
<li><code>FLOAT_USER: 1</code>: This setting enables floating pointing support in the encoding/tinycbor package. </li>
<li><code>ADVERTISE_128BIT_UUID: 1</code> and <code>ADVERTISE_16BIT_UUID: 0</code>: These settings enable BLE 128 bit UUID and disables 16 bit UUID advertisement. The IoTivity library that is used to build the OIC Apps on the iOS and Android devices only sees 128 bit UUID advertisements. </li>
</ul>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>syscfg.vals:
...
<span style="background-color: #ffffcc"> SENSOR_OIC: 1
</span><span style="background-color: #ffffcc"> OC_SERVER: 1
</span><span style="background-color: #ffffcc"> FLOAT_USER: 1
</span><span style="background-color: #ffffcc"> ADVERTISE_128BIT_UUID: 1
</span><span style="background-color: #ffffcc"> ADVERTISE_16BIT_UUID: 0
</span></code></pre></div>
<p><br></p>
<h3 id="step-4-modifying-mainc">Step 4: Modifying main.c</h3>
<p>The bleprph_oic application defines the <code>omgr_app_init()</code> function for the OIC application initialization handler. The function creates an OIC light resource. We modify the function to call the <code>sensor_oic_init()</code> function to create the OIC sensor resources instead of creating the OIC light resource. </p>
<p>We make the following modifications to main.c:</p>
<ul>
<li>Add the sensor package header file.</li>
<li>Modify the <code>omgr_app_init()</code> function to call the <code>sensor_oic_init()</code> function, and delete the code to create the OIC light resource.</li>
<li>Delete the OIC application request handler functions that process the CoAP requests for the light resource.</li>
</ul>
<p><br></p>
<h4 id="adding-the-sensor-package-header-file">Adding the Sensor Package Header File:</h4>
<p>Add the sensor package header file <code>sensor/sensor.h</code> below <code>#include "bleprph.h"</code> file:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>#include &quot;bleprph.h&quot;
<span style="background-color: #ffffcc">#include &lt;sensor/sensor.h&gt;
</span></code></pre></div>
<p><br></p>
<h4 id="modifying-the-omgr_app_init-function">Modifying the omgr_app_init() Function</h4>
<p>Make the following modifications to the <code>omgr_app_init()</code> function:</p>
<p><br>
1. Delete the code segment that creates the OIC device and resource. The lines to delete are highlighted below:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>static void
omgr_app_init(void)
{
<span style="background-color: #ffffcc"> oc_resource_t *res;
</span>
oc_init_platform(&quot;MyNewt&quot;, NULL, NULL);
<span style="background-color: #ffffcc"> oc_add_device(&quot;/oic/d&quot;, &quot;oic.d.light&quot;, &quot;MynewtLed&quot;, &quot;1.0&quot;, &quot;1.0&quot;, NULL,
</span><span style="background-color: #ffffcc"> NULL);
</span><span style="background-color: #ffffcc">
</span><span style="background-color: #ffffcc"> res = oc_new_resource(&quot;/light/1&quot;, 1, 0);
</span><span style="background-color: #ffffcc"> oc_resource_bind_resource_type(res, &quot;oic.r.light&quot;);
</span><span style="background-color: #ffffcc"> oc_resource_bind_resource_interface(res, OC_IF_RW);
</span><span style="background-color: #ffffcc"> oc_resource_set_default_interface(res, OC_IF_RW);
</span><span style="background-color: #ffffcc">
</span><span style="background-color: #ffffcc"> oc_resource_set_discoverable(res);
</span><span style="background-color: #ffffcc"> oc_resource_set_periodic_observable(res, 1);
</span><span style="background-color: #ffffcc"> oc_resource_set_request_handler(res, OC_GET, app_get_light);
</span><span style="background-color: #ffffcc"> oc_resource_set_request_handler(res, OC_PUT, app_set_light);
</span><span style="background-color: #ffffcc"> oc_add_resource(res);
</span>
}
</code></pre></div>
<p><br>
2. Add the following <code>oc_add_device()</code> function call to create an OIC resource for the sensor device:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>static void
omgr_app_init(void)
{
oc_init_platform(&quot;MyNewt&quot;, NULL, NULL);
<span style="background-color: #ffffcc"> oc_add_device(&quot;/oic/d&quot;, &quot;oic.d.sensy&quot;, &quot;sensy&quot;, &quot;1.0&quot;, &quot;1.0&quot;, NULL, NULL);
</span>
}
</code></pre></div>
<p><br>
3. Add the call to the <code>sensor_oic_init()</code> function to initialize the sensor framework OIC server support:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>static void
omgr_app_init(void)
{
oc_init_platform(&quot;MyNewt&quot;, NULL, NULL);
oc_add_device(&quot;/oic/d&quot;, &quot;oic.d.sensy&quot;, &quot;sensy&quot;, &quot;1.0&quot;, &quot;1.0&quot;, NULL, NULL);
<span style="background-color: #ffffcc"> sensor_oic_init();
</span>
}
</code></pre></div>
<p><br></p>
<h4 id="deleting-the-app_get_light-and-app_set_light-functions">Deleting the app_get_light() and app_set_light() Functions</h4>
<p>Since we modify the application to no longer create an OIC light resource, the <code>app_get_light()</code> and the <code>app_set_light()</code> handler functions that process read and write requests are not used. We need to delete the functions to avoid compilation errors. Search for the two functions and delete them.</p>
<p><br></p>
<h3 id="step-5-creating-and-building-the-application-image">Step 5: Creating and Building the Application Image</h3>
<p>In this step of the tutorial we create and build an application image for the bleprph_oic_sensor application to verify that the application serves sensor data over OIC correctly. </p>
<p>We use the same syscfg settings from the <a href="/os/tutorials/sensors/sensor_nrf52_bno055_oic.md">Enabling OIC Sensor Data Monitoring in the sensors_test Application Tutorial</a>.</p>
<p><br>
1. From your project base directory, run the <code>newt create target</code> command to create a new target named <code>nrf52_bleprph_oic_bno055</code>:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt target create nrf52_bleprph_oic_bno055
Target targets/nrf52_bleprph_oic_bno055 successfully created
</code></pre></div>
<p><br>
2. Run the <code>newt target set</code> command to set the app, bsp, and build_profile variables for the target. </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt target set nrf52_bleprph_oic_bno055 app=@apache-mynewt-core/apps/bleprph_oic_sensor bsp=@apache-mynewt-core/hw/bsp/nrf52dk build_profile=debug
Target targets/nrf52_bleprph_oic_bno055 successfully set target.app to @apache-mynewt-core/apps/bleprph_oic_sensor
Target targets/nrf52_bleprph_oic_bno055 successfully set target.bsp to @apache-mynewt-core/hw/bsp/nrf52dk
Target targets/nrf52_bleprph_oic_bno055 successfully set target.build_profile to debug
$
</code></pre></div>
<p><br>
3. Run the <code>newt target set</code> command to set <code>I2C_0=1</code>, <code>BNO055_OFB=1</code>, <code>BLE_MAX_CONNECTIONS=4</code>, <code>MSYS_1_BLOCK_COUNT=52</code>, <code>MSYS_1_BLOCK_SIZE=100</code>, and <code>OC_APP_RESOURCES=11</code>.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ newt target set nrf52_bleprph_oic_bno055 syscfg=BNO055_OFB=1:I2C_0=1:BLE_MAX_CONNECTIONS=4:MSYS_1_BLOCK_COUNT=52:MSYS_1_BLOCK_SIZE=100:OC_APP_RESOURCES=11
Target targets/nrf52_bleprph_oic_bno055 successfully set target.syscfg to BNO055_OFB=1:I2C_0=1:BLE_MAX_CONNECTIONS=4:MSYS_1_BLOCK_COUNT=52:MSYS_1_BLOCK_SIZE=100:OC_APP_RESOURCES=11
$
</code></pre></div>
<p><br>
4. Run the <code>newt build nrf52_bleprph_oic_bno055</code> and <code>newt create-image nrf52_bleprph_oic_bno055 1.0.0</code> commands to build and create the application image.</p>
<p><br></p>
<h3 id="step-6-connecting-the-sensor-and-loading-the-images-to-the-board">Step 6: Connecting the Sensor and Loading the Images to the Board</h3>
<p>Perform the following steps to reboot the board with the new images:</p>
<ol>
<li>
<p>Connect the BNO055 sensor to the nRF52-DK board. See the <a href="/os/tutorials/sensors/sensor_offboard_config.md">Enabling an Off-Board Sensor in an Existing Application Tutorial</a> for instructions.</p>
<p><strong>Note</strong>: You do not need the serial connection from your computer directly to the nRF52-DK board because we are not using the shell to view the sensor data.</p>
</li>
<li>
<p>Run the <code>newt load nrf52_boot</code> command to load the bootloader. You should already have this target built from the <a href="os/tutorials/sensors/sensor_nrf52_bno055.md">Enabling an Off-Board Sensor in an Existing Application Tutorial</a>.</p>
</li>
<li>Run the <code>newt load nrf52_bno055_oic_test</code> command to load the application image.</li>
<li>Power the device OFF and ON to reboot.</li>
</ol>
<p><br></p>
<h3 id="step-7-viewing-sensor-data-from-the-mynewt-smart-device-controller">Step 7: Viewing Sensor Data from the Mynewt Smart Device Controller</h3>
<p>Start the Mynewt Smart Device Controller app on your iOS or Android device to view the sensor data. You should already have the app installed from the <a href="/os/tutorials/sensors/sensor_nrf52_bno055_oic.md">Enabling OIC Sensor Data Monitoring in the sensors_test Application Tutorial</a>.</p>
<p>The Mynewt Smart Device Controller scans for the devices when it starts up and displays the sensors it can view. The following is an example from the Android App:
<br></p>
<p>
<p align="center">
<img src="../../pics/smart_controller_main.png"></img>
</p>
<br>
1. Select `Accelerometer` to see the sensor data samples:
<br>
<p>
<p align="center">
<img src="../../pics/smart_controller_accelerometer.png"></img>
</p>
<p>
<br>
<br>
2. Move your BNO055 sensor device around to see the values for the coordinates change.
<div class="row">
<ul class="nav nav-pills" style="margin-bottom: 10px">
<li>
</li>
<li class="pull-right">
</li>
</ul>
</div>
<footer class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<a href="https://www.apache.org/">
<img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
</a>
<p>
Copyright © 2015-2021 The Apache Software Foundation.<br>
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
project logo are either registered trademarks or trademarks of the Apache
Software Foundation in the United States and other countries.
</small>
</p>
<a href="">
<img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
<a href="https://www.apache.org/licenses/">
<button class="button-footer-asf">
License
</button>
</a>
<a href="https://www.apache.org/foundation/sponsorship.html">
<button class="button-footer-asf">
Sponsorship
</button>
</a>
<a href="https://www.apache.org/foundation/thanks.html">
<button class="button-footer-asf">
Thanks
</button>
</a>
<a href="https://www.apache.org/security/">
<button class="button-footer-asf">
Security
</button>
</a>
<a href="https://apache.org/events/current-event">
<button class="button-footer-asf">
ASF Events
</button>
</a>
</footer>
</div>
</div>
</div>
<script src="../../../../js/jquery-1.10.2.min.js"></script>
<script src="../../../../js/bootstrap-3.0.3.min.js"></script>
<script src="../../../../js/highlight.pack.js"></script>
<script src="../../../../js/base.js"></script>
<script src="../../../../js/custom.js"></script>
<script src="search/main.js"></script>
</body>
</html>