<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../../../img/favicon.ico">

        <title>Creating and Configuring Sensor Devices - Apache Mynewt</title>

        <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../../css/highlight.css">
        <link href="../../../../css/base.css" rel="stylesheet">
        <link href="../../../../css/custom.css" rel="stylesheet">
        <link href="../../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="Creating and Configuring Sensor Devices">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" selected="selected" >
    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></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../../tutorials/tutorials/">Tutorials</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os_user_guide/">OS User Guide</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../core_os/mynewt_os/">OS Core</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../core_os/porting/port_os/">Porting to your Platform</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../console/console/">Console</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../shell/shell/">Shell</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../split/split/">Split Images</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../bootloader/bootloader/">Bootloader</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  
  
  ../../fs/fs/fs/

">File System</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../hal/hal/">Hardware Abstraction Layer</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../sensor_framework_overview/">Sensor Framework</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li><a href="
  ../sensor_api/
">API</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../sensor_shell/">Sensor Shell</a>
  </li>

              
          
              
                
  <li >
    <a href="../sensor_driver/">Sensor Device Driver</a>
  </li>

              
          
              
                
  <li class="active">
    <a href="./">Creating and Configuring Sensor Devices</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../drivers/driver/">Drivers</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../testutil/testutil/">Test Utilities</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../devmgmt/newtmgr/">Device Management with Newt Manager</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../imgmgr/imgmgr/">Image Manager</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../baselibc/">Baselibc library</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../json/json/">JSON</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../fcb/fcb/">Flash Circular Buffer</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../stats/stats/">Stats</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../logs/logs/">Logs</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../sysinitconfig/sysinitconfig/">System Configuration And Initialization</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../../newt/install/prev_releases/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; <a href="os/modules/sensor_framework/sensor_framework_overview/">Sensor Framework</a></li>
        
      
        
          <li>&raquo; <a href="os/os_user_guide/">OS User Guide</a></li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
        <li>&raquo; Creating and Configuring Sensor Devices</li>
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/modules/sensor_framework/sensor_create.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.3.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="creating-and-configuring-a-sensor-device">Creating and Configuring a Sensor Device</h2>
<p>The steps to create and configure OS devices for onboard and off-board sensors are very similar.  The BSP creates the OS devices for onboard sensors and the <code>hw/sensor/creator/</code> package creates the OS devices for off-board sensors.  </p>
<p>We discuss how a BSP creates a device for an onboard sensor and then discuss what the <code>hw/sensor/creator</code> package does differently to create an off-board sensor. We also discuss how an application can change the default configuration for a sensor device.</p>
<p><br></p>
<h3 id="creating-an-onboard-sensor">Creating an Onboard Sensor</h3>
<p><br>
To create and initialize a sensor device named <code>SENSORNAME</code>, the BSP implements the following in the <code>hal_bsp.c</code> file. </p>
<p><strong>Note</strong>: All example excerpts are from the code that creates the LIS2DH12 onboard sensor in the nrf52_thingy BSP. </p>
<p><br>
1. Define a <code>&lt;SENSORNAME&gt;_ONB</code> syscfg setting to specify whether the onboard sensor named <code>SENSORNAME</code> is enabled. The setting is disabled by default. The setting is used to conditionally include the code to create a sensor device for <code>SENSORNAME</code> when it is enabled by the application. For example:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>syscfg.defs:
    LIS2DH12_ONB:
        description: &#39;NRF52 Thingy onboard lis2dh12 sensor&#39;
        value:  0
</code></pre></div>

<p><br>
2. Include the "&lt;sensorname&gt;/&lt;sensorname&gt;.h" header file.  The BSP uses the functions and data structures that a device driver package exports. See the <a href="/os/modules/sensor_framework/sensor_driver.md">Sensor Device Driver</a> page for details.</p>
<p><br>
3. Declare a variable named <code>sensorname</code> of type <code>struct sensorname</code>. For example:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #633820">#if MYNEWT_VAL(LIS2DH12_ONB)</span>
<span style="color: #633820">#include</span> <span style="color: #177500">&lt;lis2dh12/lis2dh12.h&gt;</span>
<span style="color: #A90D91">static</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">lis2dh12</span> <span style="color: #000000">lis2dh12</span>;
<span style="color: #633820">#endif</span>
</code></pre></div>

<p><br>
4. Declare and specify the values for a variable of type <code>struct sensor_itf</code> that the sensor device driver uses to communicate with the sensor device. For example: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #633820">#if MYNEWT_VAL(LIS2DH12_ONB)</span>
<span style="color: #A90D91">static</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">sensor_itf</span> <span style="color: #000000">i2c_0_itf_lis</span> <span style="color: #000000">=</span> {
    .<span style="color: #000000">si_type</span> <span style="color: #000000">=</span> <span style="color: #000000">SENSOR_ITF_I2C</span>,
    .<span style="color: #000000">si_num</span>  <span style="color: #000000">=</span> <span style="color: #1C01CE">0</span>,
    .<span style="color: #000000">si_addr</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">0x19</span>
<span style="color: #000000">&lt;br&gt;</span>
</code></pre></div>

<p><br>
5. In the <code>hal_bsp_init()</code> function,  create an OS device for the sensor device.  Call the <code>os_dev_create()</code> function and pass the following to the function: </p>
<ul>
<li>A pointer to the <code>sensorname</code> variable from step 3.</li>
<li>A pointer to the <code>&lt;sensorname&gt;_init()</code> callback function. Note that the device driver package exports this function.</li>
<li>A pointer to the <code>struct sensor_itf</code> variable from step 4. </li>
</ul>
<p>For example: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>static void
sensor_dev_create(void)
{
    int rc;
    (void)rc;

<span style="background-color: #ffffcc">#if MYNEWT_VAL(LIS2DH12_ONB)
</span><span style="background-color: #ffffcc">    rc = os_dev_create((struct os_dev *) &amp;lis2dh12, &quot;lis2dh12_0&quot;,
</span><span style="background-color: #ffffcc">      OS_DEV_INIT_PRIMARY, 0, lis2dh12_init, (void *)&amp;i2c_0_itf_lis);
</span><span style="background-color: #ffffcc">    assert(rc == 0);
</span><span style="background-color: #ffffcc">#endif
</span>
}

void
hal_bsp_init(void)
{
    int rc;

      ...


    sensor_dev_create();

}
</code></pre></div>

<p><br>
6. Define a <code>config_&lt;sensorname&gt;_sensor()</code> function to set the default configuration for the sensor. This function opens the OS device for the sensor device, initializes the a <code>cfg</code> variable of type <code>struct &lt;sensorname&gt;_cfg</code> with the default settings, calls the <code>&lt;sensorname&gt;_config()</code> driver function to configure the device, and closes the device.  This function is called when the BSP is initialized during sysinit(). For example:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">int</span>
<span style="color: #000000">config_lis2dh12_sensor</span>(<span style="color: #A90D91">void</span>)
{
<span style="color: #633820">#if MYNEWT_VAL(LIS2DH12_ONB)</span>
    <span style="color: #A90D91">int</span> <span style="color: #000000">rc</span>;
    <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_dev</span> <span style="color: #000000">*dev</span>;
    <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">lis2dh12_cfg</span> <span style="color: #000000">cfg</span>;

    <span style="color: #000000">dev</span> <span style="color: #000000">=</span> (<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_dev</span> <span style="color: #000000">*</span>) <span style="color: #000000">os_dev_open</span>(<span style="color: #C41A16">&quot;lis2dh12_0&quot;</span>, <span style="color: #000000">OS_TIMEOUT_NEVER</span>, <span style="color: #A90D91">NULL</span>);
    <span style="color: #000000">assert</span>(<span style="color: #000000">dev</span> <span style="color: #000000">!=</span> <span style="color: #A90D91">NULL</span>);

    <span style="color: #000000">memset</span>(<span style="color: #000000">&amp;cfg</span>, <span style="color: #1C01CE">0</span>, <span style="color: #A90D91">sizeof</span>(<span style="color: #000000">cfg</span>));

    <span style="color: #000000">cfg</span>.<span style="color: #000000">lc_s_mask</span> <span style="color: #000000">=</span> <span style="color: #000000">SENSOR_TYPE_ACCELEROMETER</span>;
    <span style="color: #000000">cfg</span>.<span style="color: #000000">lc_rate</span> <span style="color: #000000">=</span> <span style="color: #000000">LIS2DH12_DATA_RATE_HN_1344HZ_L_5376HZ</span>;
    <span style="color: #000000">cfg</span>.<span style="color: #000000">lc_fs</span> <span style="color: #000000">=</span> <span style="color: #000000">LIS2DH12_FS_2G</span>;
    <span style="color: #000000">cfg</span>.<span style="color: #000000">lc_pull_up_disc</span> <span style="color: #000000">=</span> <span style="color: #1C01CE">1</span>;

    <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">lis2dh12_config</span>((<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">lis2dh12</span> <span style="color: #000000">*</span>)<span style="color: #000000">dev</span>, <span style="color: #000000">&amp;cfg</span>);
    <span style="color: #000000">SYSINIT_PANIC_ASSERT</span>(<span style="color: #000000">rc</span> <span style="color: #000000">==</span> <span style="color: #1C01CE">0</span>);

    <span style="color: #000000">os_dev_close</span>(<span style="color: #000000">dev</span>);
<span style="color: #633820">#endif</span>
    <span style="color: #A90D91">return</span> <span style="color: #1C01CE">0</span>;
}
</code></pre></div>

<p><br>
7. Add the following in the BSP <code>pkg.yml</code> file: </p>
<ul>
<li>
<p>A conditional package dependency for the <code>hw/drivers/sensors/&lt;sensorname&gt;</code> package when the <code>&lt;SENSORNAME&gt;_ONB</code> setting is enabled. </p>
</li>
<li>
<p>The <code>config_&lt;sensorname&gt;_sensor</code> function with an init stage of 400 to the <code>pkg.init</code> parameter. </p>
</li>
</ul>
<p>For example:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>pkg.deps.LIS2DH12_ONB:
    - hw/drivers/sensors/lis2dh12

pkg.init:
    config_lis2dh12_sensor: 400
</code></pre></div>

<p><br></p>
<h3 id="creating-an-off-board-sensor">Creating an Off-Board Sensor</h3>
<p>The steps to create an off-board sensor is very similar to the steps for a BSP. The <code>hw/sensor/creator/</code> package also declares the variables and implements the <code>config_&lt;sensorname&gt;_sensor()</code> function described for a BSP. The package does the following differently. </p>
<p><strong>Note</strong>: All example excerpts are from the code that creates the BNO055 off-board sensor in <code>hw/sensor/creator</code> package.</p>
<p><br>
1. Define a <code>&lt;SENSORNAME&gt;_OFB</code> syscfg setting to specify whether the off-board sensor named <code>SENSORNAME</code> is enabled. This setting is disabled by default. The <code>hw/sensor/creator</code> package uses the setting to conditionally include the code to create the sensor device when it is enabled by the application.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code># Package: hw/sensor/creator

syscfg.defs:
      ...

    BNO055_OFB:
        description: &#39;BNO055 is present&#39;
        value : 0

       ...
</code></pre></div>

<p><br>
2. Add the calls to the <code>os_dev_create()</code> and the <code>config_&lt;sensorname&gt;_sensor()</code> functions in the <code>sensor_dev_create()</code> function defined in the <code>sensor_creator.c</code> file . The <code>sensor_dev_create()</code> function is the <code>hw/sensor/creator</code> package initialization function that <code>sysinit()</code> calls. </p>
<p>For example: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">void</span>
<span style="color: #000000">sensor_dev_create</span>(<span style="color: #A90D91">void</span>)
{
    <span style="color: #A90D91">int</span> <span style="color: #000000">rc</span>;

     ...

<span style="color: #633820">#if MYNEWT_VAL(BNO055_OFB)</span>
    <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">os_dev_create</span>((<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_dev</span> <span style="color: #000000">*</span>) <span style="color: #000000">&amp;bno055</span>, <span style="color: #C41A16">&quot;bno055_0&quot;</span>,
      <span style="color: #000000">OS_DEV_INIT_PRIMARY</span>, <span style="color: #1C01CE">0</span>, <span style="color: #000000">bno055_init</span>, (<span style="color: #A90D91">void</span> <span style="color: #000000">*</span>)<span style="color: #000000">&amp;i2c_0_itf_bno</span>);
    <span style="color: #000000">assert</span>(<span style="color: #000000">rc</span> <span style="color: #000000">==</span> <span style="color: #1C01CE">0</span>);

    <span style="color: #000000">rc</span> <span style="color: #000000">=</span> <span style="color: #000000">config_bno055_sensor</span>();
    <span style="color: #000000">assert</span>(<span style="color: #000000">rc</span> <span style="color: #000000">==</span> <span style="color: #1C01CE">0</span>);
<span style="color: #633820">#endif</span>

     ....

}
</code></pre></div>

<p><br>
3.  Add a conditional package dependency for the <code>hw/drivers/sensors/&lt;sensorname&gt;</code> package when the <code>&lt;SENSORNAME&gt;_OFB</code> setting is enabled. For example:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>pkg.deps.BNO055_OFB:
    - hw/drivers/sensors/bno055
</code></pre></div>

<p><br></p>
<h3 id="reconfiguring-a-sensor-device-by-an-application">Reconfiguring A Sensor Device by an Application</h3>
<p>The BSP and sensor creator package use a default configuration and enable all supported sensors on a sensor device by default.  If the default configuration does not meet your application requirements, you may change the default configuration for a sensor device. As in the <code>config_&lt;sensorname&gt;_sensor</code> function, an application must open the OS device for the sensor, set up the values for the <code>&lt;sensorname&gt;_cfg</code> structure, call the <code>&lt;sensorname&gt;_config()</code> device driver function to change the configuration in the device, and close the OS device.  </p>
<p>We recommend that you copy the <code>config_&lt;sensorname&gt;_sensor()</code> function from the BSP or the sensor creator package in to your application code and change the desired settings. Note that you must keep all the fields in the <code>&lt;sensorname&gt;_cfg</code> structure initialized with the default values for the settings that you do not want to change.</p>
<p>See the <a href="/os/tutorials/sensors/sensor_offboard_config/">Changing the Default Configuration for a Sensor Tutorial</a> for more details on how to change the default sensor configuration from an application.</p>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../../js/highlight.pack.js"></script>
        <script src="../../../../js/base.js"></script>
        <script src="../../../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>