Files
hpw421/doc/网页版文档/xc__gatt__server__api_8h.html
T
2026-06-04 09:13:55 +08:00

752 lines
38 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.7"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BLE5.2: TEST2/api/xc_gatt_server_api.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="xinchip.png"/></td>
<td id="projectalign">
<div id="projectname">BLE5.2<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">开发文档说明</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.7 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>首页</span></a></li>
<li><a href="pages.html"><span>相关页面</span></a></li>
<li><a href="annotated.html"><span></span></a></li>
<li class="current"><a href="files.html"><span>文件</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>文件列表</span></a></li>
<li><a href="globals.html"><span>文件成员</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_e551eb05443008c96ab2f08dbb3250a6.html">TEST2</a></li><li class="navelem"><a class="el" href="dir_a213a656435eb838f44f965c240ae24d.html">api</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#enum-members">枚举</a> &#124;
<a href="#func-members">函数</a> </div>
<div class="headertitle"><div class="title">xc_gatt_server_api.h 文件参考</div></div>
</div><!--header-->
<div class="contents">
<p>GATT server API. Copyright (c) 2022 - 2025, XinChip All rights reserved.
<a href="#details">更多...</a></p>
<p><a href="xc__gatt__server__api_8h_source.html">浏览源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
枚举</h2></td></tr>
<tr class="memitem:a17af631b0bdca6dc42000d29d5e5d551"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#a17af631b0bdca6dc42000d29d5e5d551">gatt_err</a> { <a class="el" href="xc__gatt__server__api_8h.html#a17af631b0bdca6dc42000d29d5e5d551a15a01b2e866d4aef1794c1a9bb9e35cc">GATT_NO_ERROR</a> = 0x00
}</td></tr>
<tr class="separator:a17af631b0bdca6dc42000d29d5e5d551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af828ddd83bfcb936f1ffa2bf6ee21578"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#af828ddd83bfcb936f1ffa2bf6ee21578">gatt_switch</a> { <a class="el" href="xc__gatt__server__api_8h.html#af828ddd83bfcb936f1ffa2bf6ee21578ab40c9b7d024f76bedcb46cc77b1f9298">GATT_DISABLE</a> = 0
, <a class="el" href="xc__gatt__server__api_8h.html#af828ddd83bfcb936f1ffa2bf6ee21578a6e2397a60859a9bc3ae583d9f2b5328f">GATT_ENABLE</a> = 1
}</td></tr>
<tr class="separator:af828ddd83bfcb936f1ffa2bf6ee21578"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a0d2f9f632077a0aa60edfb1b4b958573"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#a0d2f9f632077a0aa60edfb1b4b958573">xc_ble_gatt_user_srv_register</a> (uint16_t pref_mtu, uint8_t prio_level, const gatt_srv_cb_t *p_cb, uint8_t *p_user_lid)</td></tr>
<tr class="memdesc:a0d2f9f632077a0aa60edfb1b4b958573"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used to register a GATT user. This must be done prior to any GATT procedure execution. <br /></td></tr>
<tr class="separator:a0d2f9f632077a0aa60edfb1b4b958573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a5e7496618129e47cc296204d57371"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#ae1a5e7496618129e47cc296204d57371">xc_ble_gatt_service_add</a> (uint8_t user_lid, uint8_t info, const uint8_t *p_uuid, uint8_t nb_att, const uint8_t *p_att_mask, const gatt_att_desc_t *p_atts, uint8_t nb_att_rsvd, uint16_t *p_start_hdl)</td></tr>
<tr class="memdesc:ae1a5e7496618129e47cc296204d57371"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used to add a service into local attribute database. <br /></td></tr>
<tr class="separator:ae1a5e7496618129e47cc296204d57371"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8bb092e4ad03053689b18478ba3720f"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#ab8bb092e4ad03053689b18478ba3720f">xc_ble_gatt_service16_add</a> (uint8_t user_lid, uint8_t info, uint16_t uuid16, uint8_t nb_att, const uint8_t *p_att_mask, const gatt_att16_desc_t *p_atts, uint8_t nb_att_rsvd, uint16_t *p_start_hdl)</td></tr>
<tr class="memdesc:ab8bb092e4ad03053689b18478ba3720f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used to add a service into local attribute database. <br /></td></tr>
<tr class="separator:ab8bb092e4ad03053689b18478ba3720f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0338534f23ffd6dc99129905a931c5cc"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#a0338534f23ffd6dc99129905a931c5cc">xc_ble_gatt_service_remove</a> (uint8_t user_lid, uint16_t start_hdl)</td></tr>
<tr class="memdesc:a0338534f23ffd6dc99129905a931c5cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used to remove a service from local attribute database. <br /></td></tr>
<tr class="separator:a0338534f23ffd6dc99129905a931c5cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2b3907a378e1e09c8af4c62ae190659"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#ad2b3907a378e1e09c8af4c62ae190659">xc_ble_gatt_srv_notify</a> (uint8_t conidx, uint8_t user_lid, uint16_t dummy, uint16_t hdl, uint16_t length, const uint8_t *p_value)</td></tr>
<tr class="memdesc:ad2b3907a378e1e09c8af4c62ae190659"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used by a GATT server user to send notifications <br /></td></tr>
<tr class="separator:ad2b3907a378e1e09c8af4c62ae190659"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac33c66a1b8d8b24a72c563be5d09e14b"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#ac33c66a1b8d8b24a72c563be5d09e14b">xc_ble_gatt_srv_indicate</a> (uint8_t conidx, uint8_t user_lid, uint16_t dummy, uint16_t hdl, uint16_t length, const uint8_t *p_value)</td></tr>
<tr class="memdesc:ac33c66a1b8d8b24a72c563be5d09e14b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command used by a GATT server user to send indication <br /></td></tr>
<tr class="separator:ac33c66a1b8d8b24a72c563be5d09e14b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a0dc7a37707ac90e70b5b9d08d1190c"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#a5a0dc7a37707ac90e70b5b9d08d1190c">xc_ble_gatt_srv_read_cfm</a> (uint8_t conidx, uint8_t user_lid, uint16_t token, uint16_t status, uint16_t att_length, uint16_t length, const uint8_t *p_value)</td></tr>
<tr class="memdesc:a5a0dc7a37707ac90e70b5b9d08d1190c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upper layer provide attribute value requested by GATT Layer for a read procedure If rejected, value is not used. <br /></td></tr>
<tr class="separator:a5a0dc7a37707ac90e70b5b9d08d1190c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fa35175559567fb8c7301b6bae1bf24"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xc__gatt__server__api_8h.html#a6fa35175559567fb8c7301b6bae1bf24">xc_ble_gatt_srv_write_cfm</a> (uint8_t conidx, uint8_t user_lid, uint16_t token, uint16_t status)</td></tr>
<tr class="memdesc:a6fa35175559567fb8c7301b6bae1bf24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upper layer provide status of attribute value modification by GATT server user. Confirmation server user when an attribute value has been written by a peer device. <br /></td></tr>
<tr class="separator:a6fa35175559567fb8c7301b6bae1bf24"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>GATT server API. Copyright (c) 2022 - 2025, XinChip All rights reserved. </p>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8h_source.html">xc_gatt_server_api.h</a> 中定义.</p>
</div><h2 class="groupheader">枚举类型说明</h2>
<a id="a17af631b0bdca6dc42000d29d5e5d551" name="a17af631b0bdca6dc42000d29d5e5d551"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17af631b0bdca6dc42000d29d5e5d551">&#9670;&#160;</a></span>gatt_err</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="xc__gatt__server__api_8h.html#a17af631b0bdca6dc42000d29d5e5d551">gatt_err</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a17af631b0bdca6dc42000d29d5e5d551a15a01b2e866d4aef1794c1a9bb9e35cc" name="a17af631b0bdca6dc42000d29d5e5d551a15a01b2e866d4aef1794c1a9bb9e35cc"></a>GATT_NO_ERROR&#160;</td><td class="fielddoc"><p>No error </p>
</td></tr>
</table>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8h_source.html">xc_gatt_server_api.h</a><a class="el" href="xc__gatt__server__api_8h_source.html#l00020">20</a> 行定义.</p>
</div>
</div>
<a id="af828ddd83bfcb936f1ffa2bf6ee21578" name="af828ddd83bfcb936f1ffa2bf6ee21578"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af828ddd83bfcb936f1ffa2bf6ee21578">&#9670;&#160;</a></span>gatt_switch</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="xc__gatt__server__api_8h.html#af828ddd83bfcb936f1ffa2bf6ee21578">gatt_switch</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="af828ddd83bfcb936f1ffa2bf6ee21578ab40c9b7d024f76bedcb46cc77b1f9298" name="af828ddd83bfcb936f1ffa2bf6ee21578ab40c9b7d024f76bedcb46cc77b1f9298"></a>GATT_DISABLE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="af828ddd83bfcb936f1ffa2bf6ee21578a6e2397a60859a9bc3ae583d9f2b5328f" name="af828ddd83bfcb936f1ffa2bf6ee21578a6e2397a60859a9bc3ae583d9f2b5328f"></a>GATT_ENABLE&#160;</td><td class="fielddoc"></td></tr>
</table>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8h_source.html">xc_gatt_server_api.h</a><a class="el" href="xc__gatt__server__api_8h_source.html#l00026">26</a> 行定义.</p>
</div>
</div>
<h2 class="groupheader">函数说明</h2>
<a id="ab8bb092e4ad03053689b18478ba3720f" name="ab8bb092e4ad03053689b18478ba3720f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8bb092e4ad03053689b18478ba3720f">&#9670;&#160;</a></span>xc_ble_gatt_service16_add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_service16_add </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>uuid16</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>nb_att</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_att_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const gatt_att16_desc_t *&#160;</td>
<td class="paramname"><em>p_atts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>nb_att_rsvd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>p_start_hdl</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used to add a service into local attribute database. </p>
<pre class="fragment"> Service and attributes UUIDs in service must be 16-bit
If start handle is set to zero (invalid attribute handle), GATT looks for a
free handle block matching with number of attributes to reserve.
Else, according to start handle, GATT checks if attributes to reserve are
not overlapping part of existing database.
An added service is automatically visible for peer device.
@note First attribute in attribute array must be a Primary or a Secondary service
</pre> <dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Service Information bit field (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>参见</dt><dd>enum gatt_svc_info_bf) </dd></dl>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">uuid16</td><td>Service UUID (16-bit UUID - LSB First) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nb_att</td><td>Number of attribute(s) in service </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_att_mask</td><td>Pointer to mask of attribute to insert in database:<ul>
<li>If NULL insert all attributes</li>
<li>If bit set to 1: attribute inserted</li>
<li>If bit set to 0: attribute not inserted </li>
</ul>
</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_atts</td><td>Pointer to List of attribute (with 16-bit uuid) description present in service. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nb_att_rsvd</td><td>Number of attribute(s) reserved for the service (shall be equals or greater nb_att) Prevent any services to be inserted between start_hdl and (start_hdl + nb_att_rsvd - 1) </td></tr>
<tr><td class="paramdir"></td><td class="paramname">[in|out]</td><td>p_start_hdl Pointer to Service Start Handle (0 = chosen by GATT module) Pointer updated with service start handle associated to created service.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00030">30</a> 行定义.</p>
</div>
</div>
<a id="ae1a5e7496618129e47cc296204d57371" name="ae1a5e7496618129e47cc296204d57371"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1a5e7496618129e47cc296204d57371">&#9670;&#160;</a></span>xc_ble_gatt_service_add()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_service_add </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_uuid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>nb_att</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_att_mask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const gatt_att_desc_t *&#160;</td>
<td class="paramname"><em>p_atts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>nb_att_rsvd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>p_start_hdl</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used to add a service into local attribute database. </p>
<pre class="fragment"> If start handle is set to zero (invalid attribute handle), GATT looks for a
free handle block matching with number of attributes to reserve.
Else, according to start handle, GATT checks if attributes to reserve are
not overlapping part of existing database.
An added service is automatically visible for peer device.
@note First attribute in attribute array must be a Primary or a Secondary service
</pre> <dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Service Information bit field (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>参见</dt><dd>enum gatt_svc_info_bf) </dd></dl>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">p_uuid</td><td>Pointer to service UUID (LSB first) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nb_att</td><td>Number of attribute(s) in service </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_att_mask</td><td>Pointer to mask of attribute to insert in database:<ul>
<li>If NULL insert all attributes</li>
<li>If bit set to 1: attribute inserted</li>
<li>If bit set to 0: attribute not inserted </li>
</ul>
</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_atts</td><td>Pointer to List of attribute description present in service. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">nb_att_rsvd</td><td>Number of attribute(s) reserved for the service (shall be equals or greater nb_att) Prevent any services to be inserted between start_hdl and (start_hdl + nb_att_rsvd -1) </td></tr>
<tr><td class="paramdir"></td><td class="paramname">[in|out]</td><td>p_start_hdl Pointer to Service Start Handle (0 = chosen by GATT module) Pointer updated with service start handle associated to created service.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00020">20</a> 行定义.</p>
</div>
</div>
<a id="a0338534f23ffd6dc99129905a931c5cc" name="a0338534f23ffd6dc99129905a931c5cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0338534f23ffd6dc99129905a931c5cc">&#9670;&#160;</a></span>xc_ble_gatt_service_remove()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_service_remove </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>start_hdl</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used to remove a service from local attribute database. </p>
<pre class="fragment"> Only GATT user responsible of service can remove it.
</pre> <dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">start_hdl</td><td>Service Start Handle</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00040">40</a> 行定义.</p>
</div>
</div>
<a id="ac33c66a1b8d8b24a72c563be5d09e14b" name="ac33c66a1b8d8b24a72c563be5d09e14b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac33c66a1b8d8b24a72c563be5d09e14b">&#9670;&#160;</a></span>xc_ble_gatt_srv_indicate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_srv_indicate </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>conidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>dummy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>hdl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used by a GATT server user to send indication </p>
<pre class="fragment"> Since user is not aware of MTU size of the bearer used for attribute
transmission it cannot be considered reliable. If size of the data buffer is too
big, data is truncated to max supported length.
Wait for @see cb_event_sent execution before starting a new procedure
</pre> <dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">conidx</td><td>Connection index </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">dummy</td><td>Dummy parameter whose meaning is upper layer dependent and which is returned in command complete. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">hdl</td><td>Attribute handle </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Value length </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_value</td><td>Pointer to Value to transmit</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) Consider status only if an error occurs; else wait for execution completion </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00069">69</a> 行定义.</p>
</div>
</div>
<a id="ad2b3907a378e1e09c8af4c62ae190659" name="ad2b3907a378e1e09c8af4c62ae190659"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2b3907a378e1e09c8af4c62ae190659">&#9670;&#160;</a></span>xc_ble_gatt_srv_notify()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_srv_notify </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>conidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>dummy</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>hdl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used by a GATT server user to send notifications </p>
<pre class="fragment"> Since user is not aware of MTU size of the bearer used for attribute
transmission it cannot be considered reliable. If size of the data buffer is too
big, data is truncated to max supported length.
Wait for @see cb_event_sent execution before starting a new procedure
</pre> <dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">conidx</td><td>Connection index </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">dummy</td><td>Dummy parameter whose meaning is upper layer dependent and which is returned in command complete. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">hdl</td><td>Attribute handle </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Value length </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_value</td><td>Pointer to Value to transmit</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) Consider status only if an error occurs; else wait for execution completion </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00045">45</a> 行定义.</p>
</div>
</div>
<a id="a5a0dc7a37707ac90e70b5b9d08d1190c" name="a5a0dc7a37707ac90e70b5b9d08d1190c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a0dc7a37707ac90e70b5b9d08d1190c">&#9670;&#160;</a></span>xc_ble_gatt_srv_read_cfm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_srv_read_cfm </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>conidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>token</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>status</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>att_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>p_value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Upper layer provide attribute value requested by GATT Layer for a read procedure If rejected, value is not used. </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">conidx</td><td>Connection index </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">token</td><td>Procedure token provided in corresponding callback </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">status</td><td>Status of attribute value get (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">att_length</td><td>Complete Length of the attribute value </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Value length </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_value</td><td>Pointer to buffer attribute data</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00093">93</a> 行定义.</p>
</div>
</div>
<a id="a6fa35175559567fb8c7301b6bae1bf24" name="a6fa35175559567fb8c7301b6bae1bf24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fa35175559567fb8c7301b6bae1bf24">&#9670;&#160;</a></span>xc_ble_gatt_srv_write_cfm()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_srv_write_cfm </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>conidx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>user_lid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>token</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>status</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Upper layer provide status of attribute value modification by GATT server user. Confirmation server user when an attribute value has been written by a peer device. </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">conidx</td><td>Connection index </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_lid</td><td>GATT User Local identifier </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">token</td><td>Procedure token provided in corresponding callback </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">status</td><td>Status of attribute value set (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err)</dd></dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00123">123</a> 行定义.</p>
</div>
</div>
<a id="a0d2f9f632077a0aa60edfb1b4b958573" name="a0d2f9f632077a0aa60edfb1b4b958573"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d2f9f632077a0aa60edfb1b4b958573">&#9670;&#160;</a></span>xc_ble_gatt_user_srv_register()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t xc_ble_gatt_user_srv_register </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>pref_mtu</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>prio_level</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const gatt_srv_cb_t *&#160;</td>
<td class="paramname"><em>p_cb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>p_user_lid</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Command used to register a GATT user. This must be done prior to any GATT procedure execution. </p>
<p>A GATT server can manipulate local attribute database and initiate server procedures. It shall be able to handle all server initiated events</p>
<p>Same module can register multiple GATT users.</p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pref_mtu</td><td>Preferred MTU for attribute exchange. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">prio_level</td><td>User attribute priority level </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">p_cb</td><td>Pointer to set of callback functions to be used for communication with the GATT server user </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">p_user_lid</td><td>Pointer where GATT user local identifier will be set</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>Status of the function execution (</dd></dl>
<dl class="section see"><dt>参见</dt><dd>enum hl_err) </dd></dl>
<p class="definition">在文件 <a class="el" href="xc__gatt__server__api_8c_source.html">xc_gatt_server_api.c</a><a class="el" href="xc__gatt__server__api_8c_source.html#l00013">13</a> 行定义.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
</small></address>
</body>
</html>