blob: 9b3f268d2e2a14d76ba07371c5a7b88d82eeffee [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">
<!-- This is broken by doc revisioning.
-->
<link rel="shortcut icon" href="../../../../../../img/favicon.ico">
<title>Init and config definitions - 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="Init and config definitions">
<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" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" selected="selected" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select></li>
<li ><a href="../../../../../../os/introduction/">Mynewt Documentation</a>
<ul>
<li ><a href="../../../../../../os/get_started/get_started/">Basic Setup</a>
</li>
<li >
<a href="../../../../../../os/get_started/vocabulary/">Concepts</a>
</li>
<li ><a href="../../../../../../os/tutorials/tutorials/">Tutorials</a>
</li>
<li ><a href="../../../../../../os/os_user_guide/">OS User Guide</a>
</li>
<li><a href="
../../../../ble_intro/
">BLE User Guide</a>
<ul>
<li >
<a href="../../../../ble_intro/">NimBLE Introduction</a>
</li>
<li >
<a href="../../../../ble_sec/">NimBLE Security</a>
</li>
<li >
<a href="../../../../nimble_setup/">Set up application</a>
</li>
<li ><a href="../../../../ini_stack/ble_ini_intro/">Initialize stack</a>
</li>
<li ><a href="../../../ble_hs/">NimBLE Host API</a>
<ul>
<li >
<a href="../../../ble_hs_return_codes/">Return codes</a>
</li>
<li ><a href="../../init/">Init and config</a>
<ul>
<li><a href="
./
">Definitions</a>
<ul>
<li class="active">
<a href="./">Init and config definitions</a>
</li>
</ul>
</li>
<li><a href="
../../functions/ble_hs_start/
">Functions</a>
</li>
</ul>
</li>
<li ><a href="../../../ble_gap/ble_gap/">GAP</a>
</li>
<li ><a href="../../../ble_gattc/ble_gattc/">GATT client</a>
</li>
<li ><a href="../../../ble_gatts/ble_gatts/">GATT server</a>
</li>
<li ><a href="../../../ble_hs_id/ble_hs_id/">Identity</a>
</li>
<li ><a href="../../../ble_att/ble_att/">ATT</a>
</li>
<li ><a href="../../../other/other/">Other</a>
</li>
</ul>
</li>
<li ><a href="../../../../bletiny/bletiny_api/">bletiny app Usage API</a>
</li>
</ul>
</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; Definitions</li>
<li>&raquo; <a href="network/ble/ble_hs/init/init/">Init and config</a></li>
<li>&raquo; <a href="network/ble/ble_hs/ble_hs/">NimBLE Host API</a></li>
<li>&raquo; <a href="network/ble/ble_intro/">BLE User Guide</a></li>
<li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
<li>&raquo; Init and config definitions</li>
</ul>
</div>
</div>
<div class="alert alert-warning">
<p>
Version 1.0.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="other-definitions"><font color="#F2853F" style="font-size:24pt">Other definitions</font></h2>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/* Defines the IO capabilities for the local device. */</span>
<span style="color: #633820">#define BLE_HS_IO_DISPLAY_ONLY 0x00</span>
<span style="color: #633820">#define BLE_HS_IO_DISPLAY_YESNO 0x01</span>
<span style="color: #633820">#define BLE_HS_IO_KEYBOARD_ONLY 0x02</span>
<span style="color: #633820">#define BLE_HS_IO_NO_INPUT_OUTPUT 0x03</span>
<span style="color: #633820">#define BLE_HS_IO_KEYBOARD_DISPLAY 0x04</span>
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_hs_cfg</span> {
<span style="color: #177500">/*** HCI settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * An HCI buffer is a &quot;flat&quot; 260-byte buffer. HCI buffers are used by the</span>
<span style="color: #177500"> * controller to send unsolicited events to the host.</span>
<span style="color: #177500"> *</span>
<span style="color: #177500"> * HCI buffers can get tied up when the controller sends lots of</span>
<span style="color: #177500"> * asynchronous / unsolicited events (i.e., non-acks). When the controller</span>
<span style="color: #177500"> * needs to send one of these events, it allocates an HCI buffer, fills it</span>
<span style="color: #177500"> * with the event payload, and puts it on a host queue. If the controller</span>
<span style="color: #177500"> * sends a quick burst of these events, the buffer pool may be exhausted,</span>
<span style="color: #177500"> * preventing the host from sending an HCI command to the controller.</span>
<span style="color: #177500"> *</span>
<span style="color: #177500"> * Every time the controller sends a non-ack HCI event to the host, it also</span>
<span style="color: #177500"> * allocates an OS event (it is unfortunate that these are both called</span>
<span style="color: #177500"> * &quot;events&quot;). The OS event is put on the host-parent-task&#39;s event queue;</span>
<span style="color: #177500"> * it is what wakes up the host-parent-task and indicates that an HCI event</span>
<span style="color: #177500"> * needs to be processsed. The pool of OS events is allocated with the</span>
<span style="color: #177500"> * same number of elements as the HCI buffer pool.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_hci_bufs</span>;
<span style="color: #177500">/*** Connection settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The maximum number of concurrent connections. This is set</span>
<span style="color: #177500"> * automatically according to the build-time option</span>
<span style="color: #177500"> * NIMBLE_OPT_MAX_CONNECTIONS.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_connections</span>;
<span style="color: #177500">/*** GATT server settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * These are acquired at service registration time and never freed. You</span>
<span style="color: #177500"> * need one of these for every service that you register.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">max_services</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The total number of in-RAM client characteristic configuration</span>
<span style="color: #177500"> * descriptors (CCCDs). One of these is consumed each time a peer</span>
<span style="color: #177500"> * subscribes to notifications or indications for a characteristic that</span>
<span style="color: #177500"> * your device serves. In addition, at service registration time, the host</span>
<span style="color: #177500"> * uses one of these for each characteristic that supports notifications or</span>
<span style="color: #177500"> * indications. So, the formula which guarantees no resource exhaustion</span>
<span style="color: #177500"> * is:</span>
<span style="color: #177500"> * (num-subscribable-characteristics) * (max-connections + 1)</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">max_client_configs</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * An optional callback that gets executed upon registration of each GATT</span>
<span style="color: #177500"> * resource (service, characteristic, or descriptor).</span>
<span style="color: #177500"> */</span>
<span style="color: #000000">ble_gatt_register_fn</span> <span style="color: #000000">*gatts_register_cb</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * An optional argument that gets passed to the GATT registration</span>
<span style="color: #177500"> * callback.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">void</span> <span style="color: #000000">*gatts_register_arg</span>;
<span style="color: #177500">/*** GATT client settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The maximum number of concurrent GATT client procedures. When you</span>
<span style="color: #177500"> * initiate a GATT procedure (e.g., read a characteristic, discover</span>
<span style="color: #177500"> * services, etc.), one of these is consumed. The resource is freed when</span>
<span style="color: #177500"> * the procedure completes.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_gattc_procs</span>;
<span style="color: #177500">/*** ATT server settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The total number of local ATT attributes. Attributes are consumed at</span>
<span style="color: #177500"> * service registration time and are never freed. Attributes are used by</span>
<span style="color: #177500"> * GATT server entities: services, characteristics, and descriptors</span>
<span style="color: #177500"> * according to the following formula:</span>
<span style="color: #177500"> * (num-services + (num-characteristics * 2) + num-descriptors)</span>
<span style="color: #177500"> *</span>
<span style="color: #177500"> * Every characteristic that supports indications or notifications</span>
<span style="color: #177500"> * automatically gets a descriptor. All other descriptors are specified by</span>
<span style="color: #177500"> * the application at service registration time.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">max_attrs</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * A GATT server uses these when a peer performs a &quot;write long</span>
<span style="color: #177500"> * characteristic values&quot; or &quot;write long characteristic descriptors&quot;</span>
<span style="color: #177500"> * procedure. One of these resources is consumed each time a peer sends a</span>
<span style="color: #177500"> * partial write. These procedures are not used often.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_prep_entries</span>;
<span style="color: #177500">/*** L2CAP settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Each connection requires three L2CAP channels (signal, ATT, and security</span>
<span style="color: #177500"> * manager). In addition, the nimble host may allow channels to be created</span>
<span style="color: #177500"> * &quot;on the fly&quot; (connection-oriented channels). This functionality is not</span>
<span style="color: #177500"> * available at the moment, so a safe formula to use is:</span>
<span style="color: #177500"> * (max-connections * 3)</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_l2cap_chans</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The maximum number of concurrent L2CAP signalling procedures. Only one</span>
<span style="color: #177500"> * L2CAP signalling procedure is supported: slave-initiated connection</span>
<span style="color: #177500"> * update. You will never need more of these than the max number of</span>
<span style="color: #177500"> * connections.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_l2cap_sig_procs</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The maximum number of concurrent security manager procedures. Security</span>
<span style="color: #177500"> * manager procedures include pairing and restoration of a bonded link.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">max_l2cap_sm_procs</span>;
<span style="color: #177500">/*** Security manager settings. */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">sm_io_cap</span>;
<span style="color: #A90D91">unsigned</span> <span style="color: #000000">sm_oob_data_flag:</span><span style="color: #1C01CE">1</span>;
<span style="color: #A90D91">unsigned</span> <span style="color: #000000">sm_bonding:</span><span style="color: #1C01CE">1</span>;
<span style="color: #A90D91">unsigned</span> <span style="color: #000000">sm_mitm:</span><span style="color: #1C01CE">1</span>;
<span style="color: #A90D91">unsigned</span> <span style="color: #000000">sm_sc:</span><span style="color: #1C01CE">1</span>;
<span style="color: #A90D91">unsigned</span> <span style="color: #000000">sm_keypress:</span><span style="color: #1C01CE">1</span>;
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">sm_our_key_dist</span>;
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">sm_their_key_dist</span>;
<span style="color: #177500">/*** Store settings. */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * These function callbacks handle persistence of sercurity material</span>
<span style="color: #177500"> * (bonding).</span>
<span style="color: #177500"> */</span>
<span style="color: #000000">ble_store_read_fn</span> <span style="color: #000000">*store_read_cb</span>;
<span style="color: #000000">ble_store_write_fn</span> <span style="color: #000000">*store_write_cb</span>;
<span style="color: #000000">ble_store_delete_fn</span> <span style="color: #000000">*store_delete_cb</span>;
<span style="color: #177500">/*** privacy settings */</span>
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The frequency at which new resovlable private addresses are generated.</span>
<span style="color: #177500"> * Units are seconds.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">rpa_timeout</span>;
};
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">extern</span> <span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_hs_cfg</span> <span style="color: #000000">ble_hs_cfg_dflt</span>;
</code></pre></div>
<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 (incubating) 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>