blob: 5ca42f87e02496b77fb116291f1594b8c815831e [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">
<title>Mynewt Sensor Framework Overview &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../../genindex.html"/>
<link rel="search" title="Search" href="../../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../../index.html"/>
<link rel="up" title="OS User Guide" href="../../os_user_guide.html"/>
<link rel="next" title="Sensor API" href="sensor_api.html"/>
<link rel="prev" title="fcb_walk" href="../fcb/fcb_walk.html"/>
<script src="../../../_static/js/modernizr.min.js"></script>
<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="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../../_static/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.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" 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>
<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>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../../os_user_guide.html">OS User Guide</a> /
Mynewt Sensor Framework Overview
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/sensor_framework/sensor_framework.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</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" selected="selected" >
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" >
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>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../os_user_guide.html">OS User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../core_os/mynewt_os.html">Kernel</a></li>
<li class="toctree-l2"><a class="reference internal" href="../system_modules.html">System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../hal/hal.html">Hardware Abstraction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bootloader/bootloader.html">Secure Bootloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../split/split.html">Split Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../core_os/porting/port_os.html">Porting Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../baselibc.html">Baselibc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../drivers/driver.html">Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devmgmt/newtmgr.html">Device Management with Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mcumgr/mcumgr.html">Device Management with MCUmgr</a></li>
<li class="toctree-l2"><a class="reference internal" href="../imgmgr/imgmgr.html">Image Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sysinitconfig/sysinitconfig.html">Compile-Time Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sysinitdown/sysinitdown.html">System Initialization and Shutdown</a></li>
<li class="toctree-l2"><a class="reference internal" href="../extcmd/extcmd.html">Build-Time Hooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../fs/fs.html">File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../fcb/fcb.html">Flash Circular Buffer</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Sensor Framework</a><ul>
<li class="toctree-l3"><a class="reference internal" href="sensor_api.html">Sensor API</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_mgr_api.html">Sensor Manager API</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_listener_api.html">Sensor Listener API</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_notifier_api.html">Sensor Notifier API</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_oic.html">OIC Sensor API</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_shell.html">Sensor Shell</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_driver.html">Sensor Device Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="sensor_create.html">Creating and Configuring Sensor Devices</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../testutil/testutil.html">Test Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json/json.html">JSON</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mfg/mfg.html">Manufacturing support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../bsp/index.html">Board support</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.9.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>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="mynewt-sensor-framework-overview">
<h1>Mynewt Sensor Framework Overview<a class="headerlink" href="#mynewt-sensor-framework-overview" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="sensor_api.html">Sensor API</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_mgr_api.html">Sensor Manager API</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_listener_api.html">Sensor Listener API</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_notifier_api.html">Sensor Notifier API</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_oic.html">OIC Sensor API</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_shell.html">Sensor Shell</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_driver.html">Sensor Device Driver</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor_create.html">Creating and Configuring Sensor Devices</a></li>
</ul>
</div>
<p>The Mynewt sensor framework is an abstraction layer between an
application and sensor devices. The sensor framework provides the
following support:</p>
<ul class="simple">
<li><p>A set of APIs that allows developers to develop sensor device drivers
within a common framework and enables application developers to
develop applications that can access sensor data from any Mynewt
sensor device using a common interface.</p></li>
<li><p>Support for onboard and off-board sensors.</p></li>
<li><p>An OIC sensor server that exposes sensors as OIC resources and
handles OIC CoAP requests for the sensor resources. A developer can
easily develop a MyNewt OIC sensor enabled application that serves
sensor resource requests from OIC client applications.</p></li>
<li><p>A sensor shell command and optional sensor device driver shell
commands to view sensor data and manage sensor device settings for
testing and debugging sensor enabled applications and sensor device
drivers.</p></li>
</ul>
<p><img alt="Alt Layout - Sensor Framework" src="../../../_images/sensor_framework.png" /></p>
<div class="section" id="overview-of-sensor-support-packages">
<h2>Overview of Sensor Support Packages<a class="headerlink" href="#overview-of-sensor-support-packages" title="Permalink to this headline"></a></h2>
<p>In this guide and the package source code, we use <code class="docutils literal notranslate"><span class="pre">SENSORNAME</span></code> (all
uppercase) to refer to a sensor product name. For each sensor named
<code class="docutils literal notranslate"><span class="pre">SENSORNAME</span></code>:</p>
<ul class="simple">
<li><p>The package name for the sensor device driver is <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;</span></code>.
All functions and data structures that the sensor device driver
exports are prefixed with <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;</span></code>.</p></li>
<li><p>All syscfg settings defined for the sensor are prefixed with
<code class="docutils literal notranslate"><span class="pre">&lt;SENSORNAME&gt;</span></code>. For example:</p>
<ul>
<li><p>The <code class="docutils literal notranslate"><span class="pre">&lt;SENSORNAME&gt;_CLI</span></code> syscfg setting defined in the device
driver package to specify whether to enable the sensor device
shell command.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">&lt;SENSORNAME&gt;_ONB</span></code> syscfg setting defined in the BSP to
specify whether the onboard sensor is enabled.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">&lt;SENSORNAME&gt;_OFB</span></code> syscfg setting defined in the sensor
creator package to specify whether to enable the off-board sensor.</p></li>
</ul>
</li>
</ul>
<p>The following Mynewt packages provide sensor support and are needed to
build a sensor enabled application.</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">hw/sensor</span></code>: The sensor framework package. This package implements
the <a class="reference external" href="/os/modules/sensor_framework/sensor_api.html">sensor framework
APIs</a>, the <a class="reference external" href="/os/modules/sensor_framework/sensor_oic.html">OIC sensor
server</a>, and the
<a class="reference external" href="/os/modules/sensor_framework/sensor_shell.html">sensor shell
command</a>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">hw/sensor/creator</span></code>: The sensor creator package. This package
supports off-board sensor devices. It creates the OS devices for the
sensor devices that are enabled in an application and configures the
sensor devices with default values. See the <a class="reference external" href="/os/modules/sensor_framework/sensor_create.html">Creating and Configuring
a Sensor Device</a>
page for more information.</p>
<p><strong>Note:</strong> This package is only needed if you are building an
application with off-board sensors enabled.</p>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">hw/bsp/</span></code>: The BSP for boards that support onboard sensors. The BSP
creates the OS devices for the onboard sensors that the board
supports and configures the sensors with default values. See the
<a class="reference external" href="/os/modules/sensor_framework/sensor_create.html">Creating and Configuring a Sensor
Device</a> page for
more information.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">hw/drivers/sensors/*</span></code>: These are the sensor device driver
packages. The <code class="docutils literal notranslate"><span class="pre">hw/drivers/sensors/&lt;sensorname&gt;</span></code> package is the
device driver for a sensor named <code class="docutils literal notranslate"><span class="pre">SENSORNAME</span></code>. See the <a class="reference external" href="/os/modules/sensor_framework/sensor_driver.html">Sensor
Device Driver</a> page
for more information.</p></li>
</ul>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="sensor_api.html" class="btn btn-neutral float-right" title="Sensor API" accesskey="n">Next: Sensor API <span class="fa fa-arrow-circle-right"></span></a>
<a href="../fcb/fcb_walk.html" class="btn btn-neutral" title="fcb_walk" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: fcb_walk</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div 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">
<img src="../../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<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>
<a href="">
<img src="../../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../../_static/js/main.js"></script>
</body>
</html>