<!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>toc - 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="toc">


        <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/sensor_framework_overview/">Sensor Framework</a>
  
  
    </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 class="active"><a href="./">Stats</a>
  
  
    <ul>
          
              
          
    </ul>
  
    </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; Stats</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 class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/modules/stats/stats.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>
                          
                        
                        
                            <h1 id="statistics-module">Statistics Module</h1>
<p>The statistics module allows application, libraries, or drivers to
record statistics that can be shown via the Newtmgr tool and console.</p>
<p>This allows easy integration of statistics for troubleshooting,
maintenance, and usage monitoring.</p>
<p>By creating and registering your statistics, they are automatically
included in the Newtmgr shell and console APIs.</p>
<h3 id="implementation-details">Implementation Details</h3>
<p>A statistic is an unsigned integer that can be set by the 
code. When building stats, the implementer chooses the size of the 
statistic depending on the frequency of the statistic and the 
resolution required before the counter wraps.    </p>
<p>Typically the stats are incremented upon code events; however, they are 
not limted to that purpose.  </p>
<p>Stats are organized into sections. Each section of stats has its own
name and can be queried separately through the API.  Each section of stats
also has its own statistic size, allowing the user to separate large (64-bit)
statistics from small (16 bit statistics).  NOTE:  It is not currently possible
to group different size stats into the same section.  Please ensure all stats
in a section have the same size.</p>
<p>Stats sections are currently stored in a single global stats group.  </p>
<p>Statistics are stored in a simple structure which contains a small
stats header followed by a list of stats.  The stats header contains:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>struct stats_hdr {
     char *s_name;
     uint8_t s_size;
     uint8_t s_cnt;
     uint16_t s_pad1;
#if MYNEWT_VAL(STATS_NAMES)
     const struct stats_name_map *s_map;
     int s_map_cnt;
#endif
     STAILQ_ENTRY(stats_hdr) s_next;
 };
</code></pre></div>

<p>The fields define with in the <code>#if MYNEWT_VAL(STATS_NAME)</code> directive are only inincluded when the <code>STATS_NAMES</code> syscfg setting is set to 1 and enables use statistic names.
<br></p>
<h4 id="enabling-statistic-names">Enabling Statistic Names</h4>
<p>By default, statistics are queried by number. You can use the <code>STATS_NAMES</code> syscfg setting to enable statistic names and view the results by name.  Enabling statistic names provides better descriptions in the reported statistics, but takes code space to store the strings within the image.</p>
<p>To enable statistic names, set the <code>STATS_NAMES</code> value to 1 in the application <code>syscfg.yml</code> file or use the <code>newt target set</code> command to set the syscfg setting value.  Here are examples for each method:</p>
<p>Method 1  - Set the value in the application <code>syscfg.yml</code> files:
<br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code># Package: apps/myapp

syscfg.vals:
    STATS_NAMES: 1
</code></pre></div>

<p><br></p>
<p>Method 2 - Set the target <code>syscfg</code> variable: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>newt target set myapp syscfg=STATS_NAMES=1
</code></pre></div>

<p><strong>Note:</strong>  This <code>newt target set</code> command only sets the syscfg variable for the <code>STATS_NAMES</code> setting as an example. For your target, you should set the syscfg variable with the other settings that you want to override. </p>
<p><br></p>
<h3 id="adding-stats-to-your-code">Adding Stats to your code.</h3>
<p>Creating new stats table requires the following steps.</p>
<ul>
<li>Include the stats header file </li>
<li>Define a stats section</li>
<li>Declare an instance of the section </li>
<li>Define the stat sections names table</li>
<li>Implement stat in your code</li>
<li>Initialize the stats</li>
<li>Register the stats</li>
</ul>
<p><br></p>
<h4 id="include-the-stats-header-file">Include the stats header file</h4>
<p>Add the stats library to your pkg.yml file for your package or app by adding
this line to your package dependencies.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>pkg.deps:
    - &quot;@apache-mynewt-core/sys/stats&quot;
</code></pre></div>

<p><br></p>
<p>Add this include directive to code files using the stats library.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>#include &lt;stats/stats.h&gt;
</code></pre></div>

<p><br></p>
<h4 id="define-a-stats-section">Define a stats section</h4>
<p>You must use the <code>stats.h</code> macros to define your stats table.  A 
stats section definition looks like this.  </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>STATS_SECT_START(my_stat_section)
    STATS_SECT_ENTRY(attempt_stat)
    STATS_SECT_ENTRY(error_stat)
STATS_SECT_END
</code></pre></div>

<p><br></p>
<p>In this case we chose to make the stats 32-bits each.  <code>stats.h</code> supports three
different stats sizes through the following macros:</p>
<ul>
<li><code>STATS_SIZE_16</code> -- stats are 16 bits (wraps at 65536)</li>
<li><code>STATS_SIZE_32</code> -- stats are 32 bits (wraps at 4294967296)</li>
<li><code>STATS_SIZE_64</code> -- stats are 64-bits</li>
</ul>
<p>When this compiles/pre-processes, it produces a structure definition like this</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>struct stats_my_stat_section { 
    struct stats_hdr s_hdr;
    uint32_t sattempt_stat;
    uint32_t serror_stat;
};
</code></pre></div>

<p><br></p>
<p>You can see that the defined structure has a small stats structure
header and the two stats we have defined.</p>
<p>Depending on whether these stats are used in multiple modules, you may need
to include this definition in a header file.</p>
<p><br></p>
<h4 id="declaring-a-variable-to-hold-the-stats">Declaring a variable to hold the stats</h4>
<p>Declare the global variable to hold your statistics. Since it is possible to
have multiple copies of the same section (for example a stat section for
each of 5 identical peripherals), the variable name of the stats section 
must be unique.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>STATS_SECT_DECL(my_stat_section) g_mystat;
</code></pre></div>

<p><br></p>
<p>Again, if your stats section is used in multiple C files you will need to 
include the above definition in one of the C files and 'extern' this declaration 
in your header file.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>extern STATS_SECT_DECL(my_stat_section) g_mystat;
</code></pre></div>

<p><br></p>
<h4 id="define-the-stats-section-name-table">Define the stats section name table</h4>
<p>Whether or not you have <code>STATS_NAMES</code> enabled, you must define 
a stats name table.  If <code>STATS_NAMES</code> is not enabled, this will 
not take any code space or image size.  </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>/* define a few stats for querying */
STATS_NAME_START(my_stat_section)
    STATS_NAME(my_stat_section, attempt_stat)
    STATS_NAME(my_stat_section, error_stat)
STATS_NAME_END(my_stat_section)
</code></pre></div>

<p><br></p>
<p>When compiled by the preprocessor, it creates a structure that looks like this.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>struct stats_name_map g_stats_map_my_stat_section[] = {
    { __builtin_offsetof (struct stats_my_stat_section, sattempt_stat), &quot;attempt_stat&quot; },
    { __builtin_offsetof (struct stats_my_stat_section, serror_stat), &quot;error_stat&quot; },
};
</code></pre></div>

<p><br></p>
<p>This table will allow the UI components to find a nice string name for the 
stat.</p>
<p><br></p>
<h4 id="implement-stats-in-your-code">Implement stats in your code.</h4>
<p>You can use the <code>STATS_INC</code> or <code>STATS_INCN</code> macros to increment your statistics
within your C-code.  For example, your code may do this:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>    STATS_INC(g_mystat, attempt_stat);
    rc = do_task();
    if(rc == ERR) { 
        STATS_INC(g_mystat, error_stat);        
    }
</code></pre></div>

<p><br></p>
<h4 id="initialize-the-statistics">Initialize the statistics</h4>
<p>You must initialize the stats so they can be operated on by the stats
library.  As per our example above, it would look like the following.</p>
<p>This tells the system how large each statistic is and the number of 
statistics in the section.  It also initialize the name information for
the statistics if enabled as shown above.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>    rc = stats_init(
        STATS_HDR(g_mystat), 
        STATS_SIZE_INIT_PARMS(g_mystat, STATS_SIZE_32), 
        STATS_NAME_INIT_PARMS(my_stat_section));
    assert(rc == 0);
</code></pre></div>

<p><br></p>
<h4 id="register-the-statistic-section">Register the statistic section</h4>
<p>If you want the system to know about your stats,  you must register them.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>    rc = stats_register(&quot;my_stats&quot;, STATS_HDR(g_mystat));
    assert(rc == 0);
</code></pre></div>

<p><br></p>
<p>There is also a method that does initialization and registration at the 
same time,  called <code>stats_init_and_reg</code>.</p>
<p><br></p>
<h3 id="retrieving-stats-through-console-or-newtmgr">Retrieving stats through console or Newtmgr</h3>
<p>If you enable console in your project you can see stats through the 
serial port defined.</p>
<p>This is the stats as shown from the example above with names enabled.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>stat my_stats
12274:attempt_stat: 3
12275:error_stat: 0
</code></pre></div>

<p><br></p>
<p>This is the stats as shown from the example without names enabled.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>stat my_stats
29149:s0: 3
29150:s1: 0
</code></pre></div>

<p><br></p>
<h3 id="a-note-on-multiple-stats-sections">A note on multiple stats sections</h3>
<p>If you are implementing a device with multiple instances, you may
want multiple stats sections with the exact same format.</p>
<p>For example, suppose I write a driver for an external distance sensor.  My
driver supports up to 5 sensors and I want to record the stats of 
each device separately.</p>
<p>This works identically to the example above, except you would need to 
register each one separately with a unique name.  The stats system will
not let two sections be entered with the same name.</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>