blob: 76facced2db1f9dd406cb9602ebe7c8116a44dab [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>GATT feature API for btshell &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="API for btshell app" href="btshell_api.html"/>
<link rel="next" title="Advertisement Data Fields" href="btshell_advdata.html"/>
<link rel="prev" title="GAP API for btshell" href="btshell_GAP.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">BLE User Guide</a> /
<a href="btshell_api.html">API for btshell app</a> /
GATT feature API for btshell
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-nimble/edit/master/docs/btshell/btshell_GATT.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" selected="selected" >
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" >
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 current"><a class="reference internal" href="../index.html">BLE User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../ble_sec.html">NimBLE Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ble_setup/ble_setup_intro.html">NimBLE Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ble_hs/ble_hs.html">NimBLE Host</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="btshell_api.html">btshell Usage API</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="btshell_GAP.html">GAP</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">GATT</a></li>
<li class="toctree-l3"><a class="reference internal" href="btshell_advdata.html">Advertisement Data Fields</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../mesh/index.html">Bluetooth Mesh</a></li>
</ul>
</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"><a class="reference internal" href="../../mynewt_faq/index.html">Mynewt FAQ</a></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.11.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="gatt-feature-api-for-btshell">
<h1>GATT feature API for btshell<a class="headerlink" href="#gatt-feature-api-for-btshell" title="Permalink to this headline"></a></h1>
<p>GATT(GENERIC ATTRIBUTE PROFILE) describes a service framework using the Attribute Protocol for discovering services,
and for reading and writing characteristic values on a peer device. There are 11 features defined in the GATT Profile,
and each of the features is mapped to procedures and sub-procedures:</p>
<div class="section" id="available-commands">
<h2>Available commands<a class="headerlink" href="#available-commands" title="Permalink to this headline"></a></h2>
<p>Parameters default values (if applicable) are marked red.</p>
<div class="section" id="configuration">
<h3>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline"></a></h3>
<table class="docutils align-default">
<colgroup>
<col style="width: 26%" />
<col style="width: 12%" />
<col style="width: 20%" />
<col style="width: 42%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p><strong>Command</strong></p></th>
<th class="head"><p><strong>Parmeters</strong></p></th>
<th class="head"><p>** Possible values**</p></th>
<th class="head"><p><strong>Description</strong></p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><strong>gatt-discover-characteristic</strong></p></td>
<td></td>
<td></td>
<td><p>Discover GATT characteristics</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>uuid</p></td>
<td><p>[UINT16]</p></td>
<td><p>Characteristic UUID</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>start</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery start handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>end</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery end handle</p></td>
</tr>
<tr class="row-odd"><td><p><strong>gatt-discover-descriptor</strong></p></td>
<td></td>
<td></td>
<td><p>Discover GATT descriptors</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>start</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery start handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>end</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery end handle</p></td>
</tr>
<tr class="row-odd"><td><p><strong>gatt-discover-service</strong></p></td>
<td></td>
<td></td>
<td><p>Discover services</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>uuid16</p></td>
<td><p>[UINT16]</p></td>
<td><p>Service UUID</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-discover-full</strong></p></td>
<td></td>
<td></td>
<td><p>Discover services, characteristic and descriptors</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-find-included-services</strong></p></td>
<td></td>
<td></td>
<td><p>Find included services</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>start</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery start handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>end</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery end handle</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-exchange-mtu</strong></p></td>
<td></td>
<td></td>
<td><p>Initiate ATT MTU exchange procedure</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-read</strong></p></td>
<td></td>
<td></td>
<td><p>Read attribute</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>long</p></td>
<td><p>[<code class="docutils literal notranslate"><span class="pre">0</span></code>-1]</p></td>
<td><p>Long read</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>attr</p></td>
<td><p>[UINT16]</p></td>
<td><p>Attribute handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>offset</p></td>
<td><p>[UINT16]</p></td>
<td><p>Long read offset value</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>uuid</p></td>
<td><p>[UINT16]</p></td>
<td><p>Characteristic UUID</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>start</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery start handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>end</p></td>
<td><p>[UINT16]</p></td>
<td><p>Discovery end handle</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-notify</strong></p></td>
<td></td>
<td></td>
<td><p>Send notification or indication to all subscribed peers</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>attr</p></td>
<td><p>[UINT16]</p></td>
<td><p>Attribute handle</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-service-changed</strong></p></td>
<td></td>
<td></td>
<td><p>Send Services Changed notification</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>start</p></td>
<td><p>[UINT16]</p></td>
<td><p>Start handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>end</p></td>
<td><p>[UINT16]</p></td>
<td><p>End handle</p></td>
</tr>
<tr class="row-odd"><td><p><strong>gatt-service-visibility</strong></p></td>
<td></td>
<td></td>
<td><p>Set service visibility</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>handle</p></td>
<td><p>[UINT16]</p></td>
<td><p>Service handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>visibility</p></td>
<td><p>[<code class="docutils literal notranslate"><span class="pre">0</span></code>-1]</p></td>
<td><p>Service visibility</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-show</strong></p></td>
<td></td>
<td></td>
<td><p>Show remote devices discovered databases structure</p></td>
</tr>
<tr class="row-odd"><td><p><strong>gatt-show-local</strong></p></td>
<td></td>
<td></td>
<td><p>Show local database structure</p></td>
</tr>
<tr class="row-even"><td><p><strong>gatt-write</strong></p></td>
<td></td>
<td></td>
<td><p>Write attribute</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>conn</p></td>
<td><p>[UINT16]</p></td>
<td><p>Connection handle</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>no_rsp</p></td>
<td><p>[<code class="docutils literal notranslate"><span class="pre">0</span></code>-1]</p></td>
<td><p>Use Write Without Response</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>long</p></td>
<td><p>[<code class="docutils literal notranslate"><span class="pre">0</span></code>-1]</p></td>
<td><p>Use Long Write procedure</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>attr</p></td>
<td><p>[UINT16]</p></td>
<td><p>Attribute handle</p></td>
</tr>
<tr class="row-odd"><td></td>
<td><p>offset</p></td>
<td><p>[UINT16]</p></td>
<td><p>Long write offset value</p></td>
</tr>
<tr class="row-even"><td></td>
<td><p>value</p></td>
<td><p>XX:XX:XX…</p></td>
<td><p>Data to write</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="btshell_advdata.html" class="btn btn-neutral float-right" title="Advertisement Data Fields" accesskey="n">Next: Advertisement Data Fields <span class="fa fa-arrow-circle-right"></span></a>
<a href="btshell_GAP.html" class="btn btn-neutral" title="GAP API for btshell" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: GAP API for btshell</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>