blob: 81abb63bf84399773b624e2a3aaa18a081201f3d [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>GATT server 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="GATT server 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/">Init and config</a>
</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/">GATT server</a>
<ul>
<li><a href="
./
">Definitions</a>
<ul>
<li class="active">
<a href="./">GATT server definitions</a>
</li>
</ul>
</li>
<li><a href="
../../functions/ble_gatts_count_cfg/
">Functions</a>
</li>
</ul>
</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/ble_gatts/ble_gatts/">GATT server</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; GATT server 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="gatt-server-definitions"><font color="#F2853F" style="font-size:24pt">GATT Server Definitions</font></h2>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">typedef</span> <span style="color: #A90D91">int</span> <span style="color: #000000">ble_gatt_access_fn</span>(<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">conn_handle</span>, <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">attr_handle</span>,
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_access_ctxt</span> <span style="color: #000000">*ctxt</span>, <span style="color: #A90D91">void</span> <span style="color: #000000">*arg</span>);
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">typedef</span> <span style="color: #A90D91">uint16_t</span> <span style="color: #000000">ble_gatt_chr_flags</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_gatt_chr_def</span> {
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Pointer to first element in a uint8_t[16]; use the BLE_UUID16 macro for</span>
<span style="color: #177500"> * 16-bit UUIDs; NULL if there are no more characteristics in the service.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">*uuid128</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Callback that gets executed when this characteristic is read or</span>
<span style="color: #177500"> * written.</span>
<span style="color: #177500"> */</span>
<span style="color: #000000">ble_gatt_access_fn</span> <span style="color: #000000">*access_cb</span>;
<span style="color: #177500">/** Optional argument for callback. */</span>
<span style="color: #A90D91">void</span> <span style="color: #000000">*arg</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Array of this characteristic&#39;s descriptors. NULL if no descriptors.</span>
<span style="color: #177500"> * Do not include CCCD; it gets added automatically if this</span>
<span style="color: #177500"> * characteristic&#39;s notify or indicate flag is set.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_dsc_def</span> <span style="color: #000000">*descriptors</span>;
<span style="color: #177500">/** Specifies the set of permitted operations for this characteristic. */</span>
<span style="color: #000000">ble_gatt_chr_flags</span> <span style="color: #000000">flags</span>;
<span style="color: #177500">/** </span>
<span style="color: #177500"> * At registration time, this is filled in with the characteristic&#39;s value</span>
<span style="color: #177500"> * attribute handle.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">*</span> <span style="color: #A90D91">const</span> <span style="color: #000000">val_handle</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_gatt_svc_def</span> {
<span style="color: #177500">/**</span>
<span style="color: #177500"> * One of the following:</span>
<span style="color: #177500"> * o BLE_GATT_SVC_TYPE_PRIMARY - primary service</span>
<span style="color: #177500"> * o BLE_GATT_SVC_TYPE_SECONDARY - secondary service</span>
<span style="color: #177500"> * o 0 - No more services in this array.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">type</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Pointer to first element in a uint8_t[16]; use the BLE_UUID16 macro for</span>
<span style="color: #177500"> * 16-bit UUIDs.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">uint8_t</span> <span style="color: #000000">*uuid128</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Array of pointers to other service definitions. These services are</span>
<span style="color: #177500"> * reported as &quot;included services&quot; during service discovery. Terminate the</span>
<span style="color: #177500"> * array with NULL.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_svc_def</span> <span style="color: #000000">**includes</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Array of characteristic definitions corresponding to characteristics</span>
<span style="color: #177500"> * belonging to this service.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_chr_def</span> <span style="color: #000000">*characteristics</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_gatt_dsc_def</span> {
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The first element in a uint8_t[16]; use the BLE_UUID16 macro for 16-bit</span>
<span style="color: #177500"> * UUIDs; NULL if there are no more descriptors in the characteristic.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">*uuid128</span>;
<span style="color: #177500">/** Specifies the set of permitted operations for this descriptor. */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">att_flags</span>;
<span style="color: #177500">/** Callback that gets executed when the descriptor is read or written. */</span>
<span style="color: #000000">ble_gatt_access_fn</span> <span style="color: #000000">*access_cb</span>;
<span style="color: #177500">/** Optional argument for callback. */</span>
<span style="color: #A90D91">void</span> <span style="color: #000000">*arg</span>;
};
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/**</span>
<span style="color: #177500"> * Context for an access to a GATT characteristic or descriptor. When a client</span>
<span style="color: #177500"> * reads or writes a locally registered characteristic or descriptor, an</span>
<span style="color: #177500"> * instance of this struct gets passed to the application callback.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_access_ctxt</span> {
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Indicates the gatt operation being performed. This is equal to one of</span>
<span style="color: #177500"> * the following values:</span>
<span style="color: #177500"> * o BLE_GATT_ACCESS_OP_READ_CHR</span>
<span style="color: #177500"> * o BLE_GATT_ACCESS_OP_WRITE_CHR</span>
<span style="color: #177500"> * o BLE_GATT_ACCESS_OP_READ_DSC</span>
<span style="color: #177500"> * o BLE_GATT_ACCESS_OP_WRITE_DSC</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">op</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * A container for the GATT access data.</span>
<span style="color: #177500"> * o For reads: The application populates this with the value of the</span>
<span style="color: #177500"> * characteristic or descriptor being read.</span>
<span style="color: #177500"> * o For writes: This is already populated with the value being written</span>
<span style="color: #177500"> * by the peer. If the application wishes to retain this mbuf for</span>
<span style="color: #177500"> * later use, the access callback must set this pointer to NULL to</span>
<span style="color: #177500"> * prevent the stack from freeing it.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">os_mbuf</span> <span style="color: #000000">*om</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The GATT operation being performed dictates which field in this union is</span>
<span style="color: #177500"> * valid. If a characteristic is being accessed, the chr field is valid.</span>
<span style="color: #177500"> * Otherwise a descriptor is being accessed, in which case the dsc field</span>
<span style="color: #177500"> * is valid.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">union</span> {
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The characteristic definition corresponding to the characteristic</span>
<span style="color: #177500"> * being accessed. This is what the app registered at startup.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_chr_def</span> <span style="color: #000000">*chr</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The descriptor definition corresponding to the descriptor being</span>
<span style="color: #177500"> * accessed. This is what the app registered at startup.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_dsc_def</span> <span style="color: #000000">*dsc</span>;
};
};
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/**</span>
<span style="color: #177500"> * Context passed to the registration callback; represents the GATT service,</span>
<span style="color: #177500"> * characteristic, or descriptor being registered.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">union</span> <span style="color: #3F6E75">ble_gatt_register_ctxt</span> {
<span style="color: #177500">/** Service; valid if op == BLE_GATT_REGISTER_OP_SVC. */</span>
<span style="color: #A90D91">struct</span> {
<span style="color: #177500">/** The ATT handle of the service definition attribute. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">handle</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The service definition representing the service being</span>
<span style="color: #177500"> * registered.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_svc_def</span> <span style="color: #000000">*svc_def</span>;
} <span style="color: #000000">svc</span>;
<span style="color: #177500">/** Characteristic; valid if op == BLE_GATT_REGISTER_OP_CHR. */</span>
<span style="color: #A90D91">struct</span> {
<span style="color: #177500">/** The ATT handle of the characteristic definition attribute. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">def_handle</span>;
<span style="color: #177500">/** The ATT handle of the characteristic value attribute. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">val_handle</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The characteristic definition representing the characteristic being</span>
<span style="color: #177500"> * registered.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_chr_def</span> <span style="color: #000000">*chr_def</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The service definition corresponding to the characteristic&#39;s parent</span>
<span style="color: #177500"> * service.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_svc_def</span> <span style="color: #000000">*svc_def</span>;
} <span style="color: #000000">chr</span>;
<span style="color: #177500">/** Descriptor; valid if op == BLE_GATT_REGISTER_OP_DSC. */</span>
<span style="color: #A90D91">struct</span> {
<span style="color: #177500">/** The ATT handle of the descriptor definition attribute. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">handle</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The descriptor definition corresponding to the descriptor being</span>
<span style="color: #177500"> * registered.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_dsc_def</span> <span style="color: #000000">*dsc_def</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The characteristic definition corresponding to the descriptor&#39;s</span>
<span style="color: #177500"> * parent characteristic.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_chr_def</span> <span style="color: #000000">*chr_def</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * The service definition corresponding to the descriptor&#39;s grandparent</span>
<span style="color: #177500"> * service</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">const</span> <span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_svc_def</span> <span style="color: #000000">*svc_def</span>;
} <span style="color: #000000">dsc</span>;
};
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #A90D91">typedef</span> <span style="color: #A90D91">void</span> <span style="color: #000000">ble_gatt_register_fn</span>(<span style="color: #A90D91">uint8_t</span> <span style="color: #000000">op</span>,
<span style="color: #A90D91">union</span> <span style="color: #3F6E75">ble_gatt_register_ctxt</span> <span style="color: #000000">*ctxt</span>,
<span style="color: #A90D91">void</span> <span style="color: #000000">*arg</span>);
</code></pre></div>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code><span style="color: #177500">/**</span>
<span style="color: #177500"> * Contains counts of resources required by the GATT server. The contents of</span>
<span style="color: #177500"> * this struct are generally used to populate a configuration struct before</span>
<span style="color: #177500"> * the host is initialized.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">struct</span> <span style="color: #3F6E75">ble_gatt_resources</span> {
<span style="color: #177500">/** Number of services. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">svcs</span>;
<span style="color: #177500">/** Number of included services. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">incs</span>;
<span style="color: #177500">/** Number of characteristics. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">chrs</span>;
<span style="color: #177500">/** Number of descriptors. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">dscs</span>;
<span style="color: #177500">/**</span>
<span style="color: #177500"> * Number of client characteristic configuration descriptors. Each of</span>
<span style="color: #177500"> * these also contributes to the total descriptor count.</span>
<span style="color: #177500"> */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">cccds</span>;
<span style="color: #177500">/** Total number of ATT attributes. */</span>
<span style="color: #A90D91">uint16_t</span> <span style="color: #000000">attrs</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>