

<!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>Sensor Manager API &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"/> 

    
    <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.12.0, Apache NimBLE 1.7.0 </a> released April 4, 2024)
            </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> /
    
    Sensor Manager API
    
  <div class="sourcelink">
    <a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/sensor_framework/sensor_mgr_api.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_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" selected="selected" >
    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>
<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"><a class="reference internal" href="../../os_user_guide.html">OS User Guide</a></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.4.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="sensor-manager-api">
<h1>Sensor Manager API<a class="headerlink" href="#sensor-manager-api" title="Permalink to this headline">¶</a></h1>
<p>The sensor manager API manages the sensors that are enabled in an
application. The API allows a sensor device to register itself with the
sensor manager and an application to look up the sensors that are
enabled. The sensor manager maintains a list of sensors, each
represented by a <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> object defined in the the <a class="reference external" href="/os/modules/sensor_framework/sensor_api.html">Sensor
API</a>.</p>
<div class="section" id="registering-sensors">
<h2>Registering Sensors<a class="headerlink" href="#registering-sensors" title="Permalink to this headline">¶</a></h2>
<p>When the BSP or the sensor creator package creates a sensor device in
the kernel, via the <code class="docutils literal notranslate"><span class="pre">os_dev_create()</span></code> function, the sensor device init
function must initialize a <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> object and call the
<code class="docutils literal notranslate"><span class="pre">sensor_mgr_register()</span></code> function to register itself with the sensor
manager.</p>
</div>
<div class="section" id="looking-up-sensors">
<h2>Looking Up Sensors<a class="headerlink" href="#looking-up-sensors" title="Permalink to this headline">¶</a></h2>
<p>An application uses the sensor manager API to look up the
<code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> object for a sensor. The <a class="reference external" href="/os/modules/sensor_framework/sensor_api.html">sensor
API</a> and the <a class="reference external" href="/os/modules/sensor_framework/sensor_listener_api.html">sensor
listener API</a>
perform operations on a sensor object. The sensor manager API provides
the following sensor lookup functions:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">sensor_mgr_find_next_bytype()</span></code>: This function returns the next
sensor, on the sensors list, whose configured sensor types match one
of the specified sensor types to search for. The sensor types to
search are specified as a bit mask. You can use the function to
search for the first sensor that matches or to iterate through the
list and search for all sensors that match. If you are iterating
through the list to find the next match, you must call the
<code class="docutils literal notranslate"><span class="pre">sensor_mgr_lock()</span></code> function to lock the sensors list before you
start the iteration and call the <code class="docutils literal notranslate"><span class="pre">sensor_mgr_unlock()</span></code> unlock the
list when you are done. You do not need to lock the sensor list if
you use the function to find the first match because the
<code class="docutils literal notranslate"><span class="pre">sensor_mgr_find_next_bytype()</span></code> locks the sensors list before the
search.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">sensor_mgr_find_next_bydevname()</span></code>: This function returns the
sensor that matches the specified device name.</p>
<p><strong>Note:</strong> There should only be one sensor that matches a specified
device name even though the function name suggests that there can be
multiple sensors with the same device name.</p>
</li>
</ul>
</div>
<div class="section" id="checking-configured-sensor-types">
<h2>Checking Configured Sensor Types<a class="headerlink" href="#checking-configured-sensor-types" title="Permalink to this headline">¶</a></h2>
<p>An application may configure a sensor device to only support a subset of
supported sensor types. The <code class="docutils literal notranslate"><span class="pre">sensor_mgr_match_bytype()</span></code> function
allows an application to check whether a sensor is configured for one of
the specified sensor types. The type to check is a bit mask and can
include multiple types. The function returns a match when there is a
match for one, not all, of the specified types in the bit mask.</p>
</div>
<div class="section" id="polling-sensors">
<h2>Polling Sensors<a class="headerlink" href="#polling-sensors" title="Permalink to this headline">¶</a></h2>
<p>The sensor manager implements a poller that reads sensor data from
sensors at specified poll rates. If an application configures a sensor
to be polled, using the <code class="docutils literal notranslate"><span class="pre">sensor_set_poll_rate_ms()</span></code> function defined
in the <a class="reference external" href="/os/modules/sensor_framework/sensor_api.html">sensor API</a>, the
sensor manager poller will poll and read the configured sensor data from
the sensor at the specified interval.</p>
<p>The sensor manager poller uses an OS callout to set up a timer event to
poll the sensors, and uses the default OS event queue and the OS main
task to process timer events. The <code class="docutils literal notranslate"><span class="pre">SENSOR_MGR_WAKEUP_RATE</span></code> syscfg
setting specifies the default wakeup rate the sensor manager poller
wakes up to poll sensors. The sensor manager poller uses the poll rate
for a sensor if the sensor is configured for a higher poll rate than the
<code class="docutils literal notranslate"><span class="pre">SENSOR_MGR_WAKEUP_RATE</span></code> setting value.</p>
<p><strong>Note:</strong> An application needs to register a <a class="reference external" href="/os/modules/sensor_framework/sensor_listener_api.html">sensor
listener</a> to
receive the sensor data that the sensor manager poller reads from a
sensor.</p>
</div>
<div class="section" id="data-structures">
<h2>Data Structures<a class="headerlink" href="#data-structures" title="Permalink to this headline">¶</a></h2>
<p>The sensor manager API uses the <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> and <code class="docutils literal notranslate"><span class="pre">sensor_type_t</span></code>
types.</p>
</div>
<div class="section" id="list-of-functions">
<h2>List of Functions:<a class="headerlink" href="#list-of-functions" title="Permalink to this headline">¶</a></h2>
<p>These are the functions defined by the sensor manager API. Please see
the
<a class="reference external" href="https://github.com/apache/mynewt-core/blob/master/hw/sensor/include/sensor/sensor.h">sensor.h</a>
include file for details.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 43%" />
<col style="width: 57%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Function</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>sensor_mg
r_find_n
ext_bynam
e</p></td>
<td><p>Returns the
next sensor
from the
sensor manager
list that
matches the
specified
device name.
An application
uses this
function. You
must call the
sensor_mgr_l
ock()
function to
lock the
sensor manager
list if you
are iterating
through the
sensor manager
list.</p></td>
</tr>
<tr class="row-odd"><td><p>sensor_mg
r_find_n
ext_bytyp
e</p></td>
<td><p>Returns the
next sensor
from the
sensor manager
list that
matches one of
the specified
sensor types.
An application
uses this
function.You
must call the
sensor_mgr_l
ock()
function to
lock the
sensor manager
list if you
are iterating
through the
sensor manager
list.</p></td>
</tr>
<tr class="row-even"><td><p>sensor_mg
r_lock</p></td>
<td><p>Locks the
sensor manager
list. An
application
uses this
function.</p></td>
</tr>
<tr class="row-odd"><td><p>sensor_mg
r_match_
bytype</p></td>
<td><p>Indicates
whether a
given sensor
is configured
for one of the
specified
sensor types.
An application
uses this
function.
Note: The
function takes
a pointer to a
variable with
the bit mask
of the types
to match.</p></td>
</tr>
<tr class="row-even"><td><p>sensor_mg
r_registe
r</p></td>
<td><p>Registers a
sensor object.
A sensor
device driver
uses this
function.</p></td>
</tr>
<tr class="row-odd"><td><p>sensor_mg
r_unlock</p></td>
<td><p>Unlocks the
sensor manager
list. An
application
uses this
function.</p></td>
</tr>
</tbody>
</table>
</div>
</div>


                   </div>
                  </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>