blob: 04833d047141ba3999556e58b9aa74b72e6541f6 [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>Sensor 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"/>
<link rel="up" title="Mynewt Sensor Framework Overview" href="sensor_framework.html"/>
<link rel="next" title="Sensor Manager API" href="sensor_mgr_api.html"/>
<link rel="prev" title="Mynewt Sensor Framework Overview" href="sensor_framework.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> /
<a href="../../os_user_guide.html">OS User Guide</a> /
<a href="sensor_framework.html">Mynewt Sensor Framework Overview</a> /
Sensor API
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/sensor_framework/sensor_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" 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="reference internal" href="sensor_framework.html">Sensor Framework</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">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="sensor-api">
<h1>Sensor API<a class="headerlink" href="#sensor-api" title="Permalink to this headline"></a></h1>
<p>The sensor API implements the sensor abstraction and the functions:</p>
<ul class="simple">
<li><p>For a sensor device driver package to initialize a sensor object with
the device specific information.</p></li>
<li><p>For an application to read sensor data from a sensor and to configure
a sensor for polling.</p></li>
</ul>
<p>A sensor is represented by the <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> object.</p>
<div class="section" id="sensor-api-functions-used-by-a-sensor-device-driver-package">
<h2>Sensor API Functions Used by a Sensor Device Driver Package<a class="headerlink" href="#sensor-api-functions-used-by-a-sensor-device-driver-package" title="Permalink to this headline"></a></h2>
<p>A sensor device driver package must use the sensor API to initialize
device specific information for a sensor object and to change sensor
configuration types.</p>
<div class="section" id="initializing-a-sensor-object">
<h3>Initializing a Sensor Object<a class="headerlink" href="#initializing-a-sensor-object" title="Permalink to this headline"></a></h3>
<p>When the BSP or the sensor creator package creates an OS device for a
sensor named <code class="docutils literal notranslate"><span class="pre">SENSORNAME</span></code>, it specifies the <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_init()</span></code>
callback function, that the device driver exports, for the
<code class="docutils literal notranslate"><span class="pre">os_dev_create()</span></code> function to call to initialize the device. The
<code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_init()</span></code> function must use the following sensor API
functions to set the driver and interface information in the sensor
object:</p>
<ul class="simple">
<li><p>The <code class="docutils literal notranslate"><span class="pre">sensor_init()</span></code> function to initialize the <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code>
object for the device.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">sensor_set_driver()</span></code> function to set the types that the sensor
device supports and the sensor driver functions to read the sensor
data from the device and to retrieve the value type for a given
sensor type.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">sensor_set_interface()</span></code> function to set the interface to use
to communicate with the sensor device.</p></li>
</ul>
<p><strong>Notes</strong>:</p>
<ul class="simple">
<li><p>See the <a class="reference internal" href="sensor_driver.html"><span class="doc">Sensor Device
Driver</span></a> page for
the functions and data structures that a sensor driver package
exports.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_init()</span></code> function must also call the
<code class="docutils literal notranslate"><span class="pre">sensor_mgr_register()</span></code> function to register the sensor with the
sensor manager. See the <a class="reference internal" href="sensor_mgr_api.html"><span class="doc">Sensor Manager
API</span></a> for
details.</p></li>
</ul>
</div>
<div class="section" id="setting-the-configured-sensor-types">
<h3>Setting the Configured Sensor Types<a class="headerlink" href="#setting-the-configured-sensor-types" title="Permalink to this headline"></a></h3>
<p>The BSP, or the sensor creator package, also calls the
<code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_config()</span></code> function to configure the sensor device with
default values. The <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_config()</span></code> function is exported by
the sensor device driver and must call the sensor API
<code class="docutils literal notranslate"><span class="pre">sensor_set_type_mask()</span></code> function to set the configured sensor types
in the sensor object. The configured sensor types are a subset of the
sensor types that the device supports. The sensor framework must know
the sensor types that a sensor device is configured for because it only
reads sensor data for the configured sensor types.</p>
<p><strong>Note:</strong> An application may also call the <code class="docutils literal notranslate"><span class="pre">&lt;sensorname&gt;_config()</span></code>
function to configure the sensor device.</p>
</div>
</div>
<div class="section" id="sensor-api-functions-used-by-an-application">
<h2>Sensor API Functions Used By an Application<a class="headerlink" href="#sensor-api-functions-used-by-an-application" title="Permalink to this headline"></a></h2>
<p>The sensor API provides the functions for an application to read sensor
data from a sensor and to configure a sensor for polling.</p>
<div class="section" id="reading-sensor-data">
<h3>Reading Sensor Data<a class="headerlink" href="#reading-sensor-data" title="Permalink to this headline"></a></h3>
<p>An application calls the <code class="docutils literal notranslate"><span class="pre">sensor_read()</span></code> function to read sensor data
from a sensor device. You specify a bit mask of the configured sensor
types to read from a sensor device and a callback function to call when
the sensor data is read. The callback is called for each specified
configured type and the data read for that sensor type is passed to the
callback.</p>
</div>
<div class="section" id="setting-a-poll-rate-for-a-sensor">
<h3>Setting a Poll Rate for A Sensor<a class="headerlink" href="#setting-a-poll-rate-for-a-sensor" title="Permalink to this headline"></a></h3>
<p>The sensor manager implements a poller that reads sensor data from a
sensor at specified poll intervals. An application must call the
<code class="docutils literal notranslate"><span class="pre">sensor_set_poll_rate_ms()</span></code> function to set the poll rate for a sensor
in order for poller to poll the sensor.</p>
<p><strong>Note:</strong> An application needs to register a <a class="reference internal" href="sensor_listener_api.html"><span class="doc">sensor
listener</span></a> to
receive the sensor data that the sensor manager poller reads from a
sensor.</p>
</div>
</div>
<div class="section" id="data-structures">
<h2>Data Structures<a class="headerlink" href="#data-structures" title="Permalink to this headline"></a></h2>
<p>We list the main data structures that the sensor API uses and mention
things to note. For more details, 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.</p>
<div class="section" id="sensor-object">
<h3>Sensor Object<a class="headerlink" href="#sensor-object" title="Permalink to this headline"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor</span></code> data structure represents the sensor device. The
sensor API, the <a class="reference internal" href="sensor_mgr_api.html"><span class="doc">sensor manager
API</span></a>, and the <a class="reference internal" href="sensor_listener_api.html"><span class="doc">sensor
listener API</span></a>
all operate on the <code class="docutils literal notranslate"><span class="pre">sensor</span></code> object abstraction. A sensor is maintained
in the sensor manager global sensors list.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">sensor</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="cm">/* The OS device this sensor inherits from, this is typically a sensor</span>
<span class="cm"> * specific driver.</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">os_dev</span><span class="w"> </span><span class="o">*</span><span class="n">s_dev</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* The lock for this sensor object */</span>
<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">os_mutex</span><span class="w"> </span><span class="n">s_lock</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* A bit mask describing the types of sensor objects available from this</span>
<span class="cm"> * sensor. If the bit corresponding to the sensor_type_t is set, then this</span>
<span class="cm"> * sensor supports that variable.</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="n">sensor_type_t</span><span class="w"> </span><span class="n">s_types</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor mask of the configured sensor type s*/</span>
<span class="w"> </span><span class="n">sensor_type_t</span><span class="w"> </span><span class="n">s_mask</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Poll rate in MS for this sensor.</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">s_poll_rate</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* The next time at which we want to poll data from this sensor */</span>
<span class="w"> </span><span class="n">os_time_t</span><span class="w"> </span><span class="n">s_next_run</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor driver specific functions, created by the device registering the</span>
<span class="cm"> * sensor.</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">sensor_driver</span><span class="w"> </span><span class="o">*</span><span class="n">s_funcs</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor last reading timestamp */</span>
<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">sensor_timestamp</span><span class="w"> </span><span class="n">s_sts</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor interface structure */</span>
<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">sensor_itf</span><span class="w"> </span><span class="n">s_itf</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* A list of listeners that are registered to receive data off of this</span>
<span class="cm"> * sensor</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="n">SLIST_HEAD</span><span class="p">(,</span><span class="w"> </span><span class="n">sensor_listener</span><span class="p">)</span><span class="w"> </span><span class="n">s_listener_list</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* The next sensor in the global sensor list. */</span>
<span class="w"> </span><span class="n">SLIST_ENTRY</span><span class="p">(</span><span class="n">sensor</span><span class="p">)</span><span class="w"> </span><span class="n">s_next</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p><strong>Note:</strong> There are two fields, <code class="docutils literal notranslate"><span class="pre">s_types</span></code> and <code class="docutils literal notranslate"><span class="pre">s_mask</span></code>, of type
<code class="docutils literal notranslate"><span class="pre">sensor_type_t</span></code>. The <code class="docutils literal notranslate"><span class="pre">s_types</span></code> field is a bit mask that specifies
the sensor types that the sensor device supports. The <code class="docutils literal notranslate"><span class="pre">s_mask</span></code> field
is a bit mask that specifies the sensor types that the sensor device is
configured for. Only sensor data for a configured sensor type can be
read.</p>
</div>
<div class="section" id="sensor-types">
<h3>Sensor Types<a class="headerlink" href="#sensor-types" title="Permalink to this headline"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">sensor_type_t</span></code> type is an enumeration of a bit mask of sensor
types, with each bit representing one sensor type. Here is an excerpt of
the enumeration values. See the
<a class="reference external" href="https://github.com/apache/mynewt-core/blob/master/hw/sensor/include/sensor/sensor.h">sensor.h</a>
for details:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="cm">/* No sensor type, used for queries */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_NONE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="w"> </span><span class="cm">/* Accelerometer functionality supported */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_ACCELEROMETER</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span>
<span class="w"> </span><span class="cm">/* Magnetic field supported */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_MAGNETIC_FIELD</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span>
<span class="w"> </span><span class="cm">/* Gyroscope supported */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_GYROSCOPE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">2</span><span class="p">),</span>
<span class="w"> </span><span class="cm">/* Light supported */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_LIGHT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span>
<span class="w"> </span><span class="cm">/* Temperature supported */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_TEMPERATURE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">4</span><span class="p">),</span>
<span class="w"> </span><span class="p">....</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_USER_DEFINED_6</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="mi">31</span><span class="p">),</span>
<span class="w"> </span><span class="cm">/* A selector, describes all sensors */</span>
<span class="w"> </span><span class="n">SENSOR_TYPE_ALL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0xFFFFFFFF</span>
<span class="p">}</span><span class="w"> </span><span class="n">sensor_type_t</span><span class="p">;</span>
</pre></div>
</div>
</div>
<div class="section" id="sensor-interface">
<h3>Sensor Interface<a class="headerlink" href="#sensor-interface" title="Permalink to this headline"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor_itf</span></code> data structure represents the interface the
sensor device driver uses to communicate with the sensor device.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">sensor_itf</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="cm">/* Sensor interface type */</span>
<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">si_type</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor interface number */</span>
<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">si_num</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor CS pin */</span>
<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">si_cs_pin</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Sensor address */</span>
<span class="w"> </span><span class="kt">uint16_t</span><span class="w"> </span><span class="n">si_addr</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">si_cs_pin</span></code> specifies the chip select pin and is optional. The
<code class="docutils literal notranslate"><span class="pre">si_type</span></code> field must be of the following types:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#define SENSOR_ITF_SPI (0)</span>
<span class="cp">#define SENSOR_ITF_I2C (1)</span>
<span class="cp">#define SENSOR_ITF_UART (2)</span>
</pre></div>
</div>
</div>
<div class="section" id="sensor-value-type">
<h3>Sensor Value Type<a class="headerlink" href="#sensor-value-type" title="Permalink to this headline"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor_cfg</span></code> data structure represents the configuration
sensor type:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/**</span>
<span class="cm"> * Configuration structure, describing a specific sensor type off of</span>
<span class="cm"> * an existing sensor.</span>
<span class="cm"> */</span>
<span class="k">struct</span><span class="w"> </span><span class="nc">sensor_cfg</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="cm">/* The value type for this sensor (e.g. SENSOR_VALUE_TYPE_INT32).</span>
<span class="cm"> * Used to describe the result format for the value corresponding</span>
<span class="cm"> * to a specific sensor type.</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">sc_valtype</span><span class="p">;</span>
<span class="w"> </span><span class="cm">/* Reserved for future usage */</span>
<span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">_reserved</span><span class="p">[</span><span class="mi">3</span><span class="p">];</span>
<span class="p">};</span>
</pre></div>
</div>
<p>Only the <code class="docutils literal notranslate"><span class="pre">sc_valtype</span></code> field is currently used and specifies the data
value type of the sensor data. The valid value types are:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/**</span>
<span class="cm"> * Opaque 32-bit value, must understand underlying sensor type</span>
<span class="cm"> * format in order to interpret.</span>
<span class="cm"> */</span>
<span class="cp">#define SENSOR_VALUE_TYPE_OPAQUE (0)</span>
<span class="cm">/**</span>
<span class="cm"> * 32-bit signed integer</span>
<span class="cm"> */</span>
<span class="cp">#define SENSOR_VALUE_TYPE_INT32 (1)</span>
<span class="cm">/**</span>
<span class="cm"> * 32-bit floating point</span>
<span class="cm"> */</span>
<span class="cp">#define SENSOR_VALUE_TYPE_FLOAT (2)</span>
<span class="cm">/**</span>
<span class="cm"> * 32-bit integer triplet.</span>
<span class="cm"> */</span>
<span class="cp">#define SENSOR_VALUE_TYPE_INT32_TRIPLET (3)</span>
<span class="cm">/**</span>
<span class="cm"> * 32-bit floating point number triplet.</span>
<span class="cm"> */</span>
<span class="cp">#define SENSOR_VALUE_TYPE_FLOAT_TRIPLET (4)</span>
</pre></div>
</div>
</div>
<div class="section" id="sensor-driver-functions">
<h3>Sensor Driver Functions<a class="headerlink" href="#sensor-driver-functions" title="Permalink to this headline"></a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">sensor_device</span></code> data structure represents the device driver
functions. The sensor device driver must implement the functions and set
up the function pointers.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>struct sensor_driver {
sensor_read_func_t sd_read;
sensor_get_config_func_t sd_get_config;
};
</pre></div>
</div>
</div>
</div>
<div class="section" id="api">
<h2>API<a class="headerlink" href="#api" title="Permalink to this headline"></a></h2>
<dl class="c enum">
<dt id="c.sensor_type_t">
<span class="target" id="group___sensor_a_p_i_1ga089f166159fb19f10d81c65c1d8793a2"></span><em class="property"><span class="pre">enum</span> </em><code class="sig-name descname"><span class="pre">sensor_type_t</span></code><a class="headerlink" href="#c.sensor_type_t" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_NONE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a3f8e3e31e6a356192f150019309925ee"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_NONE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_NONE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_ACCELEROMETER">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2abd9779b04292b5e8054485b10fccb99c"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_ACCELEROMETER</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_ACCELEROMETER" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_MAGNETIC_FIELD">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a74438e3f4f1f8cb1e97ccebbd1096fe8"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_MAGNETIC_FIELD</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_MAGNETIC_FIELD" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_GYROSCOPE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2adc01250dcba5642d294f74ba4d115c28"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_GYROSCOPE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_GYROSCOPE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_LIGHT">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ae19c28b874a4ef6706d44af6f373f743"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_LIGHT</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_LIGHT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_TEMPERATURE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a1931d9687ccbd0aac063417fc0d7b4f6"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_TEMPERATURE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_TEMPERATURE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_AMBIENT_TEMPERATURE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a7d9456395f361833de2ee3ef12a1af2a"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_AMBIENT_TEMPERATURE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_AMBIENT_TEMPERATURE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_PRESSURE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a81634a16935829065d399d686c44ad86"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_PRESSURE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_PRESSURE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_PROXIMITY">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a47912cab9ef79bbe4eb20538a88ce59c"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_PROXIMITY</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_PROXIMITY" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_RELATIVE_HUMIDITY">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ad9ebf0d3f835c55738b4d4e915768875"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_RELATIVE_HUMIDITY</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_RELATIVE_HUMIDITY" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_ROTATION_VECTOR">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ac407aca03c7ce72ea55e52f40477561b"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_ROTATION_VECTOR</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_ROTATION_VECTOR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_ALTITUDE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ad8d3b328398e98dcf5a13f2e17952426"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_ALTITUDE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_ALTITUDE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_WEIGHT">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a03907cc13f6bea46695f88650c945b3d"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_WEIGHT</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_WEIGHT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_LINEAR_ACCEL">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ad469c0fff1470c8ba9fe8009006b5625"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_LINEAR_ACCEL</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_LINEAR_ACCEL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_GRAVITY">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ac7d364262029cc21bc865577d5288a1e"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_GRAVITY</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_GRAVITY" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_EULER">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2aa5ed5c3fab3f8f095832dc7eb501f468"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_EULER</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_EULER" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_COLOR">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ae41c2d95d02910a0e15266a9f4f1ed63"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_COLOR</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_COLOR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_VOLTAGE">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2aac4a182cee3a61ab359afa073b352b02"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_VOLTAGE</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_VOLTAGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_CURRENT">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ac822523f1553bc62459b208283e27fa5"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_CURRENT</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_CURRENT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_1">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a6e84482e62058e2bc59dbff2c232ade3"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_1</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_1" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_2">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a5019c826bb0fa9d417852d040ed1d5b9"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_2</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_2" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_3">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2af99b61b8ec94637fd67326e8962d9c9e"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_3</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_3" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_4">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2a8c4e74c02373c8baf9fdca27ecbc7155"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_4</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_4" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_5">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ae33fa6704158aa4669f6e38fcacf5374"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_5</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_5" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_6">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ac9bc680d7b7d7e072342282afaf3ae67"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_USER_DEFINED_6</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_USER_DEFINED_6" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_type_t.SENSOR_TYPE_ALL">
<span class="target" id="group___sensor_a_p_i_1gga089f166159fb19f10d81c65c1d8793a2ac557c994ff97a12678665da33901186d"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_TYPE_ALL</span></code><a class="headerlink" href="#c.sensor_type_t.SENSOR_TYPE_ALL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="c enum">
<dt id="c.sensor_event_type_t">
<span class="target" id="group___sensor_a_p_i_1ga5b5d7dcdc954d371a89d664436d996ee"></span><em class="property"><span class="pre">enum</span> </em><code class="sig-name descname"><span class="pre">sensor_event_type_t</span></code><a class="headerlink" href="#c.sensor_event_type_t" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_DOUBLE_TAP">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea45e40c30ce6eb2953fc127dfe0f4bca1"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_DOUBLE_TAP</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_DOUBLE_TAP" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_SINGLE_TAP">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeab9f511f62f6641200dea97d0291016c6"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_SINGLE_TAP</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_SINGLE_TAP" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_FREE_FALL">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeaacd7b84f4c0617aa59afaa1d9178cc74"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_FREE_FALL</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_FREE_FALL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_SLEEP_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeaa6b61842ffeef94ba36389077864b9ad"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_SLEEP_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_SLEEP_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_WAKEUP">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeabdd0cb0f2fd56887b0ae8c5f1ffe5aa0"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_WAKEUP</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_WAKEUP" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_SLEEP">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea01d882e46ae7fc0a418be6b093c04e1c"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_SLEEP</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_SLEEP" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeace4f8ed5fe9ced64be7b5d5bfece8006"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeab3d722352921da802e8e7070a2992cdd"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_X_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea0b8a8c81778938f01dab71e234610a20"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Y_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeaf60875950392ffb1c027c12729ab2b6f"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Z_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_L_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea69b101cef32e37c869451c42c3231f91"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_X_L_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_L_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_L_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea6543ab6bbe618815a2fb8b5922a3b796"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Y_L_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_L_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_L_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeac92e1e912508bf645163e906b69ea868"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Z_L_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_L_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_H_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea0c25e51296b488cfaac2af84abf3cd2b"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_X_H_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_X_H_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_H_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eeac52d56b793a42028039f20c562cbb799"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Y_H_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Y_H_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c enumerator">
<dt id="c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_H_CHANGE">
<span class="target" id="group___sensor_a_p_i_1gga5b5d7dcdc954d371a89d664436d996eea67d8ad7990938ef65befa01ac98d8a05"></span><em class="property"><span class="pre">enumerator</span> </em><code class="sig-name descname"><span class="pre">SENSOR_EVENT_TYPE_ORIENT_Z_H_CHANGE</span></code><a class="headerlink" href="#c.sensor_event_type_t.SENSOR_EVENT_TYPE_ORIENT_Z_H_CHANGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_data_func_t">
<span class="target" id="group___sensor_a_p_i_1ga09e38f7a04f6f6456cb4542054cd2700"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_data_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_data_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Callback for handling sensor data, specified in a sensor listener. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor for which data is being returned </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: The argument provided to <a class="reference internal" href="#group___sensor_a_p_i_1ga87f809aca697a9508dbe9c0f62b130fb"><span class="std std-ref">sensor_read()</span></a> function. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">data</span></code>: A single sensor reading for that sensor listener </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The sensor type for the data function</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_trigger_notify_func_t">
<span class="target" id="group___sensor_a_p_i_1ga65bf7795b6bb908b127534196168adc0"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_trigger_notify_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_trigger_notify_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Callback for sending trigger notification. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">data</span></code>: Ptr to sensor data </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The sensor type </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_trigger_cmp_func_t">
<span class="target" id="group___sensor_a_p_i_1ga3c7c303016333267ae388e44a6b355e4"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_trigger_cmp_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a>, <a class="reference internal" href="#c.sensor_data_t" title="sensor_data_t"><span class="pre">sensor_data_t</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_data_t" title="sensor_data_t"><span class="pre">sensor_data_t</span></a><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_trigger_cmp_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Callback for trigger compare functions. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: Type of sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">low_thresh</span></code>: The sensor low threshold </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">high_thresh</span></code>: The sensor high threshold </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: Ptr to data </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_notifier_func_t">
<span class="target" id="group___sensor_a_p_i_1ga4813ce428d5bcdced4a5afca18cc8cb4"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_notifier_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_event_type_t" title="sensor_event_type_t"><span class="pre">sensor_event_type_t</span></a><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_notifier_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Callback for event notifications. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor that observed the event </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: The opaque argument provided during registration </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">event</span></code>: The sensor event type that was observed </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_error_func_t">
<span class="target" id="group___sensor_a_p_i_1gaed37c36a30aad75c67b5e249b94a7b2a"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">void</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_error_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><span class="pre">sensor</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">arg</span>, <span class="pre">int</span> <span class="pre">status</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_error_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Callback for reporting a sensor read error. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor for which a read failed. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: The optional argument registered with the callback. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">status</span></code>: Indicates the cause of the read failure. Determined by the underlying sensor driver. </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_read_func_t">
<span class="target" id="group___sensor_a_p_i_1gaf7333cd6cd202410fdff52a05530c6ee"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_read_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a>, <a class="reference internal" href="#c.sensor_data_func_t" title="sensor_data_func_t"><span class="pre">sensor_data_func_t</span></a>, <span class="pre">void</span><span class="pre">*</span>, <span class="pre">uint32_t</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_read_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Read a single value from a sensor, given a specific sensor type (e.g. </p>
<p>SENSOR_TYPE_PROXIMITY).</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to read from </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The type(s) of sensor values to read. Mask containing that type, provide all, to get all values. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">data_func</span></code>: The function to call with each value read. If NULL, it calls all sensor listeners associated with this function. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: The argument to pass to the read callback. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">timeout</span></code>: Timeout. If block until result, specify OS_TIMEOUT_NEVER, 0 returns immediately (no wait.)</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_get_config_func_t">
<span class="target" id="group___sensor_a_p_i_1ga27df97b905ca6cbd37969b6378856629"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_get_config_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_cfg" title="sensor_cfg"><span class="pre">sensor_cfg</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_get_config_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Get the configuration of the sensor for the sensor type. </p>
<p>This includes the value type of the sensor.</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The type of sensor value to get configuration for </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cfg</span></code>: A pointer to the sensor value to place the returned result into.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_set_config_func_t">
<span class="target" id="group___sensor_a_p_i_1gab68476efbe64cb16c6660685c39685b6"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_set_config_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <span class="pre">void</span><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_config_func_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Send a new configuration register set to the sensor. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor-specific stucture </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: Ptr to the sensor-specific configuration structure</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_set_trigger_thresh_t">
<span class="target" id="group___sensor_a_p_i_1gaa6b3e33635d45ec6463535d52c34b681"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_set_trigger_thresh_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_type_traits" title="sensor_type_traits"><span class="pre">sensor_type_traits</span></a> <span class="pre">*</span><span class="pre">stt</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_trigger_thresh_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Set the trigger and threshold values for a specific sensor for the sensor type. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: type of sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">stt</span></code>: Ptr to teh sensor traits</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_clear_trigger_thresh_t">
<span class="target" id="group___sensor_a_p_i_1ga8f8c68e4d101bdf7915a805bb40e2de7"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_clear_trigger_thresh_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><span class="pre">sensor</span>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <span class="pre">type</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_clear_trigger_thresh_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Clear the high/low threshold values for a specific sensor for the sensor type. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: Type of sensor</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_set_notification_t">
<span class="target" id="group___sensor_a_p_i_1ga039094151d9f7dd688eae4d6be890217"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_set_notification_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_event_type_t" title="sensor_event_type_t"><span class="pre">sensor_event_type_t</span></a><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_notification_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Set the notification expectation for a targeted set of events for the specific sensor. </p>
<p>After this function returns successfully, the implementer shall post corresponding event notifications to the sensor manager.</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to expect notifications from. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">event</span></code>: The mask of event types to expect notifications from.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_unset_notification_t">
<span class="target" id="group___sensor_a_p_i_1ga84606fd4e215edad85eaad3807bf27fe"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_unset_notification_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.sensor_event_type_t" title="sensor_event_type_t"><span class="pre">sensor_event_type_t</span></a><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_unset_notification_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Unset the notification expectation for a targeted set of events for the specific sensor. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">event</span></code>: The mask of event types.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_handle_interrupt_t">
<span class="target" id="group___sensor_a_p_i_1ga82123fcc02efb2318c0cda96da4b5b61"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_handle_interrupt_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><span class="pre">sensor</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_handle_interrupt_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Let driver handle interrupt in the sensor context. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: Ptr to the sensor</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c type">
<dt id="c.sensor_reset_t">
<span class="target" id="group___sensor_a_p_i_1ga046ea865a901ed403682779fa17f4e14"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">sensor_reset_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor" title="sensor"><span class="pre">sensor</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_reset_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Reset Sensor function Ptr. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">Ptr</span></code>: to the sensor</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_pkg_init">
<span class="target" id="group___sensor_a_p_i_1gad1ba608af72591f9ac360d6d04b1eb0e"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">sensor_pkg_init</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_pkg_init" title="Permalink to this definition"></a><br /></dt>
<dd><p>Package init function. </p>
<p>Remove when we have post-kernel init stages. </p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_itf_lock">
<span class="target" id="group___sensor_a_p_i_1gac21b9cf065746ad091506652b73e033e"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_itf_lock</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_itf" title="sensor_itf"><span class="pre">sensor_itf</span></a> <span class="pre">*</span><em><span class="pre">si</span></em>, <a class="reference internal" href="../../core_os/time/os_time.html#c.os_time_t" title="os_time_t"><span class="pre">os_time_t</span></a> <em><span class="pre">timeout</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_itf_lock" title="Permalink to this definition"></a><br /></dt>
<dd><p>Lock access to the <a class="reference internal" href="#structsensor__itf"><span class="std std-ref">sensor_itf</span></a> specified by si. </p>
<p>Blocks until lock acquired.</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">si</span></code>: The <a class="reference internal" href="#structsensor__itf"><span class="std std-ref">sensor_itf</span></a> to lock </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">timeout</span></code>: The timeout</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_itf_unlock">
<span class="target" id="group___sensor_a_p_i_1ga2087e8fe36fc2a6467b36710225c64fd"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">sensor_itf_unlock</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_itf" title="sensor_itf"><span class="pre">sensor_itf</span></a> <span class="pre">*</span><em><span class="pre">si</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_itf_unlock" title="Permalink to this definition"></a><br /></dt>
<dd><p>Unlock access to the <a class="reference internal" href="#structsensor__itf"><span class="std std-ref">sensor_itf</span></a> specified by si. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">si</span></code>: The <a class="reference internal" href="#structsensor__itf"><span class="std std-ref">sensor_itf</span></a> to unlock access to</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_init">
<span class="target" id="group___sensor_a_p_i_1gad4b2adaff00f26cb1f4ddf705ae1bff5"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_init</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_init" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <em class="property"><span class="pre">struct</span></em> <span class="pre">os_dev</span> <span class="pre">*</span><em><span class="pre">dev</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_init" title="Permalink to this definition"></a><br /></dt>
<dd><p>Initialize a sensor. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to initialize </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dev</span></code>: The device to associate with this sensor.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_lock">
<span class="target" id="group___sensor_a_p_i_1gad2bbf941fac7a9e4a42d7bc9f9b904b2"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_lock</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_lock" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_lock" title="Permalink to this definition"></a><br /></dt>
<dd><p>Lock access to the sensor specified by sensor. </p>
<p>Blocks until lock acquired.</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to lock</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_unlock">
<span class="target" id="group___sensor_a_p_i_1ga31665b12b6ac2e6012dc2d355ab94461"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">sensor_unlock</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_unlock" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_unlock" title="Permalink to this definition"></a><br /></dt>
<dd><p>Unlock access to the sensor specified by sensor. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to unlock access to. </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_read">
<span class="target" id="group___sensor_a_p_i_1ga87f809aca697a9508dbe9c0f62b130fb"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_read</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_read" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <em><span class="pre">type</span></em>, <a class="reference internal" href="#c.sensor_data_func_t" title="sensor_data_func_t"><span class="pre">sensor_data_func_t</span></a> <em><span class="pre">data_func</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">arg</span></em>, <span class="pre">uint32_t</span> <em><span class="pre">timeout</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_read" title="Permalink to this definition"></a><br /></dt>
<dd><p>Read the data for sensor type “type,” from the given sensor and return the result into the “value” parameter. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to read data from </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The type of sensor data to read from the sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">data_func</span></code>: The callback to call for data returned from that sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code>: The argument to pass to this callback. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">timeout</span></code>: Timeout before aborting sensor read</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_set_driver">
<span class="target" id="group___sensor_a_p_i_1gaed02a74e747c14a0b468b36865455868"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_set_driver</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_set_driver" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <em><span class="pre">type</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_driver" title="sensor_driver"><span class="pre">sensor_driver</span></a> <span class="pre">*</span><em><span class="pre">driver</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_driver" title="Permalink to this definition"></a><br /></dt>
<dd><p>Set the driver functions for this sensor, along with the type of sensor data available for the given sensor. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to set the driver information for </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The types of sensor data available for this sensor </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">driver</span></code>: The driver functions for this sensor</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_set_type_mask">
<span class="target" id="group___sensor_a_p_i_1ga6604232dad64041e2681c0c267e649fc"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_set_type_mask</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_set_type_mask" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <em><span class="pre">mask</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_type_mask" title="Permalink to this definition"></a><br /></dt>
<dd><p>Set the sensor driver mask so that the developer who configures the sensor tells the sensor framework which sensor data to send back to the user. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to set the mask for </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mask</span></code>: The mask </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_check_type">
<span class="target" id="group___sensor_a_p_i_1ga3cd69eca33188de68cb6ef459a44b569"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <code class="sig-name descname"><span class="pre">sensor_check_type</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_check_type" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <em><span class="pre">type</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_check_type" title="Permalink to this definition"></a><br /></dt>
<dd><p>Check if sensor type is supported by the sensor device. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>type bitfield, if supported, 0 if not supported </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor object </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: Type to be checked</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_set_interface">
<span class="target" id="group___sensor_a_p_i_1gacc799a220d7f5c1135be24dfbe3ecfbb"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_set_interface</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_set_interface" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_itf" title="sensor_itf"><span class="pre">sensor_itf</span></a> <span class="pre">*</span><em><span class="pre">s_itf</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_set_interface" title="Permalink to this definition"></a><br /></dt>
<dd><p>Set interface type and number. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to set the interface for </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">s_itf</span></code>: The interface type to set </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.sensor_get_config">
<span class="target" id="group___sensor_a_p_i_1gaeaa2639ff28028eb258f22097e49e2b4"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">sensor_get_config</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_get_config" title="sensor"><span class="pre">sensor</span></a> <span class="pre">*</span><em><span class="pre">sensor</span></em>, <a class="reference internal" href="#c.sensor_type_t" title="sensor_type_t"><span class="pre">sensor_type_t</span></a> <em><span class="pre">type</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.sensor_cfg" title="sensor_cfg"><span class="pre">sensor_cfg</span></a> <span class="pre">*</span><em><span class="pre">cfg</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.sensor_get_config" title="Permalink to this definition"></a><br /></dt>
<dd><p>Read the configuration for the sensor type “type,” and return the configuration into “cfg.”. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero error code on failure. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sensor</span></code>: The sensor to read configuration for </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">type</span></code>: The type of sensor configuration to read </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cfg</span></code>: The configuration structure to point to.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_VALUE_TYPE_OPAQUE">
<span class="target" id="group___sensor_a_p_i_1ga4a9cd245ef09a7bf15c84bcf97676442"></span><code class="sig-name descname"><span class="pre">SENSOR_VALUE_TYPE_OPAQUE</span></code><a class="headerlink" href="#c.SENSOR_VALUE_TYPE_OPAQUE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Opaque 32-bit value, must understand underlying sensor type format in order to interpret. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_VALUE_TYPE_INT32">
<span class="target" id="group___sensor_a_p_i_1ga7f2a80d71a9051f7a565121372c45c9d"></span><code class="sig-name descname"><span class="pre">SENSOR_VALUE_TYPE_INT32</span></code><a class="headerlink" href="#c.SENSOR_VALUE_TYPE_INT32" title="Permalink to this definition"></a><br /></dt>
<dd><p>32-bit signed integer </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_VALUE_TYPE_FLOAT">
<span class="target" id="group___sensor_a_p_i_1gafc9ecc290070fd2b258a1ac9c507308f"></span><code class="sig-name descname"><span class="pre">SENSOR_VALUE_TYPE_FLOAT</span></code><a class="headerlink" href="#c.SENSOR_VALUE_TYPE_FLOAT" title="Permalink to this definition"></a><br /></dt>
<dd><p>32-bit floating point </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_VALUE_TYPE_INT32_TRIPLET">
<span class="target" id="group___sensor_a_p_i_1ga5aa0944ec324dbd69af6f97a01d15014"></span><code class="sig-name descname"><span class="pre">SENSOR_VALUE_TYPE_INT32_TRIPLET</span></code><a class="headerlink" href="#c.SENSOR_VALUE_TYPE_INT32_TRIPLET" title="Permalink to this definition"></a><br /></dt>
<dd><p>32-bit integer triplet. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_VALUE_TYPE_FLOAT_TRIPLET">
<span class="target" id="group___sensor_a_p_i_1ga290cbf152c859ac676a4cf4b7142602f"></span><code class="sig-name descname"><span class="pre">SENSOR_VALUE_TYPE_FLOAT_TRIPLET</span></code><a class="headerlink" href="#c.SENSOR_VALUE_TYPE_FLOAT_TRIPLET" title="Permalink to this definition"></a><br /></dt>
<dd><p>32-bit floating point number triplet. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_ITF_SPI">
<span class="target" id="group___sensor_a_p_i_1gaa34ef54f01aa6a1625de51a48a9ea378"></span><code class="sig-name descname"><span class="pre">SENSOR_ITF_SPI</span></code><a class="headerlink" href="#c.SENSOR_ITF_SPI" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sensor interfaces. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_ITF_I2C">
<span class="target" id="group___sensor_a_p_i_1ga86d54650bedad1eb1ab4d19269dbff7e"></span><code class="sig-name descname"><span class="pre">SENSOR_ITF_I2C</span></code><a class="headerlink" href="#c.SENSOR_ITF_I2C" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_ITF_UART">
<span class="target" id="group___sensor_a_p_i_1ga3021a177a6dca06bee2fe715ae576955"></span><code class="sig-name descname"><span class="pre">SENSOR_ITF_UART</span></code><a class="headerlink" href="#c.SENSOR_ITF_UART" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_THRESH_ALGO_WINDOW">
<span class="target" id="group___sensor_a_p_i_1ga1c18e9c10dcc5ce95f9fbba59dea0a89"></span><code class="sig-name descname"><span class="pre">SENSOR_THRESH_ALGO_WINDOW</span></code><a class="headerlink" href="#c.SENSOR_THRESH_ALGO_WINDOW" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sensor threshold constants. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_THRESH_ALGO_WATERMARK">
<span class="target" id="group___sensor_a_p_i_1gae4648ca63467450b6e8ae76f589eb83f"></span><code class="sig-name descname"><span class="pre">SENSOR_THRESH_ALGO_WATERMARK</span></code><a class="headerlink" href="#c.SENSOR_THRESH_ALGO_WATERMARK" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_THRESH_ALGO_USERDEF">
<span class="target" id="group___sensor_a_p_i_1ga2d3e7269408f87c22ecbd0ac6439b78c"></span><code class="sig-name descname"><span class="pre">SENSOR_THRESH_ALGO_USERDEF</span></code><a class="headerlink" href="#c.SENSOR_THRESH_ALGO_USERDEF" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_IGN_LISTENER">
<span class="target" id="group___sensor_a_p_i_1ga2c3e30287c678da352373bd2f2a71e33"></span><code class="sig-name descname"><span class="pre">SENSOR_IGN_LISTENER</span></code><a class="headerlink" href="#c.SENSOR_IGN_LISTENER" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sensor listener constants. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.STANDARD_ACCEL_GRAVITY">
<span class="target" id="group___sensor_a_p_i_1gabb1d48ae86adc4eddbdbba5c28db10d3"></span><code class="sig-name descname"><span class="pre">STANDARD_ACCEL_GRAVITY</span></code><a class="headerlink" href="#c.STANDARD_ACCEL_GRAVITY" title="Permalink to this definition"></a><br /></dt>
<dd><p>Useful constants. </p>
</dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_GET_DEVICE">
<span class="target" id="group___sensor_a_p_i_1ga2e8cffe280febdd3873b491dd63a685f"></span><code class="sig-name descname"><span class="pre">SENSOR_GET_DEVICE</span></code><span class="sig-paren">(</span><em><span class="pre">__s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SENSOR_GET_DEVICE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_GET_ITF">
<span class="target" id="group___sensor_a_p_i_1ga3419f628a9592973bee2ef435d06795f"></span><code class="sig-name descname"><span class="pre">SENSOR_GET_ITF</span></code><span class="sig-paren">(</span><em><span class="pre">__s</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SENSOR_GET_ITF" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_DATA_CMP_GT">
<span class="target" id="group___sensor_a_p_i_1ga64106f96e451818473c02d8175980e58"></span><code class="sig-name descname"><span class="pre">SENSOR_DATA_CMP_GT</span></code><span class="sig-paren">(</span><em><span class="pre">__d</span></em>, <em><span class="pre">__t</span></em>, <em><span class="pre">__f</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SENSOR_DATA_CMP_GT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.SENSOR_DATA_CMP_LT">
<span class="target" id="group___sensor_a_p_i_1gac4563ebfe370380e76adc0fcfd5f5150"></span><code class="sig-name descname"><span class="pre">SENSOR_DATA_CMP_LT</span></code><span class="sig-paren">(</span><em><span class="pre">__d</span></em>, <em><span class="pre">__t</span></em>, <em><span class="pre">__f</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.SENSOR_DATA_CMP_LT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c struct">
<dt id="c.sensor_cfg">
<span class="target" id="structsensor__cfg"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_cfg</span></code><a class="headerlink" href="#c.sensor_cfg" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><p>Configuration structure, describing a specific sensor type off of an existing sensor. </p>
</dd></dl>
<dl class="c union">
<dt id="c.sensor_data_t">
<span class="target" id="unionsensor__data__t"></span><em class="property"><span class="pre">union</span> </em><code class="sig-name descname"><span class="pre">sensor_data_t</span></code><a class="headerlink" href="#c.sensor_data_t" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.sensor_data_t.smd">
<span class="target" id="unionsensor__data__t_1af757345c4d4318a0aa6140d8f758777c"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_mag_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">smd</span></code><a class="headerlink" href="#c.sensor_data_t.smd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sad">
<span class="target" id="unionsensor__data__t_1a6d2e9e6c0ddcde0b8f23bf21222fae24"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_accel_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sad</span></code><a class="headerlink" href="#c.sensor_data_t.sad" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sed">
<span class="target" id="unionsensor__data__t_1a0651fcca8d845ba6c2287ab188ece383"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_euler_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sed</span></code><a class="headerlink" href="#c.sensor_data_t.sed" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sqd">
<span class="target" id="unionsensor__data__t_1a62df4f0aca5279ec089b26422755c1f7"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_quat_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sqd</span></code><a class="headerlink" href="#c.sensor_data_t.sqd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.slad">
<span class="target" id="unionsensor__data__t_1a3fb2b944e2187b5e1486e9eab79cbad3"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_accel_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">slad</span></code><a class="headerlink" href="#c.sensor_data_t.slad" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sgrd">
<span class="target" id="unionsensor__data__t_1ab02ff5a3381b1d4890511c716f55351b"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_accel_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sgrd</span></code><a class="headerlink" href="#c.sensor_data_t.sgrd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sgd">
<span class="target" id="unionsensor__data__t_1a915eeb9080130f19b3551a542f4e3cb4"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_gyro_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sgd</span></code><a class="headerlink" href="#c.sensor_data_t.sgd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.std">
<span class="target" id="unionsensor__data__t_1ad07cfb7991120d9cce3797628dcd04f7"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_temp_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">std</span></code><a class="headerlink" href="#c.sensor_data_t.std" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.satd">
<span class="target" id="unionsensor__data__t_1ada50271e800cf3632a046ad198055fd2"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_temp_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">satd</span></code><a class="headerlink" href="#c.sensor_data_t.satd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.sld">
<span class="target" id="unionsensor__data__t_1a01080203c05e6cb4a75f4ec69ad432cc"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_light_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">sld</span></code><a class="headerlink" href="#c.sensor_data_t.sld" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.scd">
<span class="target" id="unionsensor__data__t_1a82d676645a4a05be8991b6081a27f3e8"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_color_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">scd</span></code><a class="headerlink" href="#c.sensor_data_t.scd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.spd">
<span class="target" id="unionsensor__data__t_1a7dafadc2932e88578e98ac06acf32716"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_press_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">spd</span></code><a class="headerlink" href="#c.sensor_data_t.spd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.sensor_data_t.srhd">
<span class="target" id="unionsensor__data__t_1a806cc8234b6ad66b86793780270d1583"></span><em class="property"><span class="pre">struct</span></em> <span class="pre">sensor_humid_data</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">srhd</span></code><a class="headerlink" href="#c.sensor_data_t.srhd" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.sensor_listener">
<span class="target" id="structsensor__listener"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_listener</span></code><a class="headerlink" href="#c.sensor_listener" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_notifier">
<span class="target" id="structsensor__notifier"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_notifier</span></code><a class="headerlink" href="#c.sensor_notifier" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><p>Registration for sensor event notifications. </p>
</dd></dl>
<dl class="c struct">
<dt id="c.sensor_read_ev_ctx">
<span class="target" id="structsensor__read__ev__ctx"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_read_ev_ctx</span></code><a class="headerlink" href="#c.sensor_read_ev_ctx" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><p>Context for sensor read events. </p>
</dd></dl>
<dl class="c struct">
<dt id="c.sensor_type_traits">
<span class="target" id="structsensor__type__traits"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_type_traits</span></code><a class="headerlink" href="#c.sensor_type_traits" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><p>Sensor type traits list. </p>
</dd></dl>
<dl class="c struct">
<dt id="c.sensor_notify_ev_ctx">
<span class="target" id="structsensor__notify__ev__ctx"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_notify_ev_ctx</span></code><a class="headerlink" href="#c.sensor_notify_ev_ctx" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_notify_os_ev">
<span class="target" id="structsensor__notify__os__ev"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_notify_os_ev</span></code><a class="headerlink" href="#c.sensor_notify_os_ev" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_driver">
<span class="target" id="structsensor__driver"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_driver</span></code><a class="headerlink" href="#c.sensor_driver" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_timestamp">
<span class="target" id="structsensor__timestamp"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_timestamp</span></code><a class="headerlink" href="#c.sensor_timestamp" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_int">
<span class="target" id="structsensor__int"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_int</span></code><a class="headerlink" href="#c.sensor_int" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor_itf">
<span class="target" id="structsensor__itf"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_itf</span></code><a class="headerlink" href="#c.sensor_itf" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em></dd></dl>
<dl class="c struct">
<dt id="c.sensor">
<span class="target" id="structsensor"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor</span></code><a class="headerlink" href="#c.sensor" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.sensor.s_poll_rate">
<span class="target" id="structsensor_1a642ee212d3b335ebf132260a5c69aa44"></span><span class="pre">uint32_t</span> <code class="sig-name descname"><span class="pre">s_poll_rate</span></code><a class="headerlink" href="#c.sensor.s_poll_rate" title="Permalink to this definition"></a><br /></dt>
<dd><p>Poll rate in MS for this sensor. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.sensor_read_ctx">
<span class="target" id="structsensor__read__ctx"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">sensor_read_ctx</span></code><a class="headerlink" href="#c.sensor_read_ctx" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;sensor.h&gt;</em><p>Read context for calling user function with argument. </p>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="sensor_mgr_api.html" class="btn btn-neutral float-right" title="Sensor Manager API" accesskey="n">Next: Sensor Manager API <span class="fa fa-arrow-circle-right"></span></a>
<a href="sensor_framework.html" class="btn btn-neutral" title="Mynewt Sensor Framework Overview" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Mynewt Sensor Framework Overview</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>