<!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" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" selected="selected" >
    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="
  ../../../../faq/go_env/
">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.1.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>