blob: a5c4c1f35888f1fa8d765a88da9f4666bd361664 [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>Mynewt FAQ - Syntax, Semantics, Configuration &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 FAQ" href="index.html"/>
<link rel="next" title="Mynewt FAQ - NFC" href="nfc_faq.html"/>
<link rel="prev" title="Mynewt FAQ - Hardware-Specific Questions" href="hardware_faq.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.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</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="index.html">Mynewt FAQ</a> /
Mynewt FAQ - Syntax, Semantics, Configuration
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/mynewt_faq/syntax_faq.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_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" selected="selected" >
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"><a class="reference internal" href="../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Mynewt FAQ</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="admin_faq.html">Administrative</a></li>
<li class="toctree-l2"><a class="reference internal" href="bluetooth_faq.html">Bluetooth</a></li>
<li class="toctree-l2"><a class="reference internal" href="boot_faq.html">Bootloader and Firmware Upgrade</a></li>
<li class="toctree-l2"><a class="reference internal" href="modules_faq.html">Drivers and Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="fs_faq.html">File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware_faq.html">Hardware-Specific</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Mynewt Syntax and Semantics</a></li>
<li class="toctree-l2"><a class="reference internal" href="nfc_faq.html">NFC</a></li>
<li class="toctree-l2"><a class="reference internal" href="newt_faq.html">Newt</a></li>
<li class="toctree-l2"><a class="reference internal" href="newtmgr_faq.html">Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="port_faq.html">Porting Mynewt</a></li>
<li class="toctree-l2"><a class="reference internal" href="troubleshoot_faq.html">Troubleshooting</a></li>
</ul>
</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.8.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="mynewt-faq-syntax-semantics-configuration">
<h1>Mynewt FAQ - Syntax, Semantics, Configuration<a class="headerlink" href="#mynewt-faq-syntax-semantics-configuration" title="Permalink to this headline"></a></h1>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#floating-point-in-mynewt" id="id1">Floating Point in Mynewt</a></p></li>
<li><p><a class="reference internal" href="#ending-the-delay-of-a-task-blocking-a-call-early" id="id2">Ending the Delay of a Task Blocking a Call Early</a></p></li>
<li><p><a class="reference internal" href="#random-function-device" id="id3">Random Function / Device</a></p></li>
<li><p><a class="reference internal" href="#setting-serial-and-mfghash" id="id4">Setting <code class="docutils literal notranslate"><span class="pre">serial</span></code> and <code class="docutils literal notranslate"><span class="pre">mfghash</span></code></a></p></li>
<li><p><a class="reference internal" href="#leading-zeros-format-in-printf" id="id5">Leading Zeros Format in <code class="docutils literal notranslate"><span class="pre">printf</span></code></a></p></li>
<li><p><a class="reference internal" href="#mynewt-equivalent-of-unix-sleep-3" id="id6">Mynewt Equivalent of UNIX <code class="docutils literal notranslate"><span class="pre">sleep(3)</span></code></a></p></li>
<li><p><a class="reference internal" href="#alternatives-to-cmsis-nvic-c" id="id7">Alternatives to <code class="docutils literal notranslate"><span class="pre">cmsis_nvic.c</span></code></a></p></li>
</ul>
</div>
<div class="section" id="floating-point-in-mynewt">
<h2><a class="toc-backref" href="#id1">Floating Point in Mynewt</a><a class="headerlink" href="#floating-point-in-mynewt" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: I am trying to print floating point in Mynewt using <code class="docutils literal notranslate"><span class="pre">console_printf(&quot;%f&quot;,</span> <span class="pre">floating_var)</span></code> but I am unable to do so.
How do I resolve the issue? I’m aware Mynewt uses baselibc - does it even support floating point?</p>
<p><strong>A</strong>: Baselibc does support floating point formatting, but it is not enabled
by default.  To enable it, set the following syscfg setting to 1 in your
target: <code class="docutils literal notranslate"><span class="pre">FLOAT_USER</span></code></p>
<p>However, baselibc’s float printf support is a bit limited.  In particular, it
ignores precision specifiers and always prints three digits after the
decimal point.</p>
</div>
<div class="section" id="ending-the-delay-of-a-task-blocking-a-call-early">
<h2><a class="toc-backref" href="#id2">Ending the Delay of a Task Blocking a Call Early</a><a class="headerlink" href="#ending-the-delay-of-a-task-blocking-a-call-early" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: I have a task which is blocking on a call to <code class="docutils literal notranslate"><span class="pre">os_time_delay()</span></code>. What is the recommended way to end the delay
early in an ISR (e.g. button press)?</p>
<p><strong>A</strong>: The best way would be to use a semaphore. Initialize the semaphore with a count of 0 (<code class="docutils literal notranslate"><span class="pre">os_sem_init()</span></code>), then
block on the semaphore with the maximum delay you want to wait for (<code class="docutils literal notranslate"><span class="pre">os_sem_pend()</span></code>). The button press event would
wake the first task up early by calling <code class="docutils literal notranslate"><span class="pre">os_sem_release()</span></code>.</p>
</div>
<div class="section" id="random-function-device">
<h2><a class="toc-backref" href="#id3">Random Function / Device</a><a class="headerlink" href="#random-function-device" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Does Mynewt have a random function or random device?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">baselibc</span></code> has <code class="docutils literal notranslate"><span class="pre">rand()</span></code>, and <code class="docutils literal notranslate"><span class="pre">crypto/tinycrypt</span></code> has <code class="docutils literal notranslate"><span class="pre">hmac-prng</span></code>.</p>
</div>
<div class="section" id="setting-serial-and-mfghash">
<h2><a class="toc-backref" href="#id4">Setting <code class="docutils literal notranslate"><span class="pre">serial</span></code> and <code class="docutils literal notranslate"><span class="pre">mfghash</span></code></a><a class="headerlink" href="#setting-serial-and-mfghash" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: What is <code class="docutils literal notranslate"><span class="pre">mfghash</span></code>? How do I set <code class="docutils literal notranslate"><span class="pre">serial</span></code> and <code class="docutils literal notranslate"><span class="pre">mfghash</span></code> (currently blank in my app)?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">mfghash</span></code> is computed if you’re using <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">mfg</span></code> to construct your flash image, and it identifies the build of
your bootloader. <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">mfg</span></code> bundles togetherthe bootloader, target image, and other data you’d want to bundle when creating
an image to burn to flash. See the <code class="docutils literal notranslate"><span class="pre">newt</span> <span class="pre">mfg</span></code> <span class="xref std std-doc">documentation</span> for the construction
side of things and <code class="docutils literal notranslate"><span class="pre">apache-mynewt-core/sys/mfg/src/mfg.c</span></code> for the firmware side. <code class="docutils literal notranslate"><span class="pre">serial</span></code> was intended to be used if you
want to have your own naming scheme per device when building products; i.e. you want something other than the mcu serial
number, or if you don’t have serial number available.</p>
</div>
<div class="section" id="leading-zeros-format-in-printf">
<h2><a class="toc-backref" href="#id5">Leading Zeros Format in <code class="docutils literal notranslate"><span class="pre">printf</span></code></a><a class="headerlink" href="#leading-zeros-format-in-printf" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Is there a way to make printf and console_printf honor the leading zeros format? As in:</p>
<p><code class="docutils literal notranslate"><span class="pre">console_printf(&quot;%.2d&quot;,</span> <span class="pre">5);</span></code></p>
<p>outputting “05” instead of as for me now: “2d” ?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">console_printf(&quot;%02d&quot;,</span> <span class="pre">5);</span></code></p>
</div>
<div class="section" id="mynewt-equivalent-of-unix-sleep-3">
<h2><a class="toc-backref" href="#id6">Mynewt Equivalent of UNIX <code class="docutils literal notranslate"><span class="pre">sleep(3)</span></code></a><a class="headerlink" href="#mynewt-equivalent-of-unix-sleep-3" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: Is there an equivalent to the UNIX sleep(3)?</p>
<p><strong>A</strong>: <code class="docutils literal notranslate"><span class="pre">os_time_delay(OS_TICKS_PER_SEC</span> <span class="pre">*</span> <span class="pre">secs)</span></code></p>
</div>
<div class="section" id="alternatives-to-cmsis-nvic-c">
<h2><a class="toc-backref" href="#id7">Alternatives to <code class="docutils literal notranslate"><span class="pre">cmsis_nvic.c</span></code></a><a class="headerlink" href="#alternatives-to-cmsis-nvic-c" title="Permalink to this headline"></a></h2>
<p><strong>Q</strong>: What do I use instead of the full version of <code class="docutils literal notranslate"><span class="pre">cmsis_nvic.c</span></code> (i.e. for setting and getting IRQ priorities)?</p>
<p><strong>A</strong>: Those functions are in the <code class="docutils literal notranslate"><span class="pre">core_cmx.h</span></code> files in <code class="docutils literal notranslate"><span class="pre">hw/cmsis-core</span></code>.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="nfc_faq.html" class="btn btn-neutral float-right" title="Mynewt FAQ - NFC" accesskey="n">Next: Mynewt FAQ - NFC <span class="fa fa-arrow-circle-right"></span></a>
<a href="hardware_faq.html" class="btn btn-neutral" title="Mynewt FAQ - Hardware-Specific Questions" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Mynewt FAQ - Hardware-Specific Questions</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>