mirror of
https://github.com/FreeRTOS/coreMQTT
synced 2025-05-12 21:35:41 +08:00
3004 lines
238 KiB
HTML
3004 lines
238 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="en-US">
|
|
<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.6"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>coreMQTT: core_mqtt_serializer.c File Reference</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>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(document).ready(function() { init_search(); });
|
|
/* @license-end */
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="style.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="projectalign">
|
|
<div id="projectname">coreMQTT<span id="projectnumber"> v2.3.1</span>
|
|
</div>
|
|
<div id="projectbrief">MQTT 3.1.1 Client Library</div>
|
|
</td>
|
|
<td> <div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
|
|
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.6 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(document).ready(function(){initNavTree('core__mqtt__serializer_8c.html',''); initResizable(); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#enum-members">Enumerations</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle"><div class="title">core_mqtt_serializer.c File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Implements the user-facing functions in <a class="el" href="core__mqtt__serializer_8h.html" title="User-facing functions for serializing and deserializing MQTT 3.1.1 packets. This header should be inc...">core_mqtt_serializer.h</a>.
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <string.h></code><br />
|
|
<code>#include <assert.h></code><br />
|
|
<code>#include "<a class="el" href="core__mqtt__serializer_8h_source.html">core_mqtt_serializer.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="core__mqtt__config__defaults_8h_source.html">core_mqtt_config_defaults.h</a>"</code><br />
|
|
</div><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a7c621dd360dd439f0d6d8dc5d951a619"><td class="memItemLeft" align="right" valign="top"><a id="a7c621dd360dd439f0d6d8dc5d951a619" name="a7c621dd360dd439f0d6d8dc5d951a619"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_VERSION_3_1_1</b>   ( ( uint8_t ) 4U )</td></tr>
|
|
<tr class="memdesc:a7c621dd360dd439f0d6d8dc5d951a619"><td class="mdescLeft"> </td><td class="mdescRight">MQTT protocol version 3.1.1. <br /></td></tr>
|
|
<tr class="separator:a7c621dd360dd439f0d6d8dc5d951a619"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa7c310cb084af0025c356ed844ae443d"><td class="memItemLeft" align="right" valign="top"><a id="aa7c310cb084af0025c356ed844ae443d" name="aa7c310cb084af0025c356ed844ae443d"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_CONNECT_HEADER_SIZE</b>   ( 10UL )</td></tr>
|
|
<tr class="memdesc:aa7c310cb084af0025c356ed844ae443d"><td class="mdescLeft"> </td><td class="mdescRight">Size of the fixed and variable header of a CONNECT packet. <br /></td></tr>
|
|
<tr class="separator:aa7c310cb084af0025c356ed844ae443d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1b131e766e003e36fe499d9f6a79fc03"><td class="memItemLeft" align="right" valign="top"><a id="a1b131e766e003e36fe499d9f6a79fc03" name="a1b131e766e003e36fe499d9f6a79fc03"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_CLEAN</b>   ( 1 )</td></tr>
|
|
<tr class="memdesc:a1b131e766e003e36fe499d9f6a79fc03"><td class="mdescLeft"> </td><td class="mdescRight">Clean session. <br /></td></tr>
|
|
<tr class="separator:a1b131e766e003e36fe499d9f6a79fc03"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a04d8c55ea2b595a277cbcd4340e36d6c"><td class="memItemLeft" align="right" valign="top"><a id="a04d8c55ea2b595a277cbcd4340e36d6c" name="a04d8c55ea2b595a277cbcd4340e36d6c"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_WILL</b>   ( 2 )</td></tr>
|
|
<tr class="memdesc:a04d8c55ea2b595a277cbcd4340e36d6c"><td class="mdescLeft"> </td><td class="mdescRight">Will present. <br /></td></tr>
|
|
<tr class="separator:a04d8c55ea2b595a277cbcd4340e36d6c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2aee739b1fa7e61feb907bc92a73c3b4"><td class="memItemLeft" align="right" valign="top"><a id="a2aee739b1fa7e61feb907bc92a73c3b4" name="a2aee739b1fa7e61feb907bc92a73c3b4"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_WILL_QOS1</b>   ( 3 )</td></tr>
|
|
<tr class="memdesc:a2aee739b1fa7e61feb907bc92a73c3b4"><td class="mdescLeft"> </td><td class="mdescRight">Will QoS 1. <br /></td></tr>
|
|
<tr class="separator:a2aee739b1fa7e61feb907bc92a73c3b4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac750789b338a2b9be75725ab340dabce"><td class="memItemLeft" align="right" valign="top"><a id="ac750789b338a2b9be75725ab340dabce" name="ac750789b338a2b9be75725ab340dabce"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_WILL_QOS2</b>   ( 4 )</td></tr>
|
|
<tr class="memdesc:ac750789b338a2b9be75725ab340dabce"><td class="mdescLeft"> </td><td class="mdescRight">Will QoS 2. <br /></td></tr>
|
|
<tr class="separator:ac750789b338a2b9be75725ab340dabce"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8ae294d4ca7960920816339fedbdc4a0"><td class="memItemLeft" align="right" valign="top"><a id="a8ae294d4ca7960920816339fedbdc4a0" name="a8ae294d4ca7960920816339fedbdc4a0"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_WILL_RETAIN</b>   ( 5 )</td></tr>
|
|
<tr class="memdesc:a8ae294d4ca7960920816339fedbdc4a0"><td class="mdescLeft"> </td><td class="mdescRight">Will retain. <br /></td></tr>
|
|
<tr class="separator:a8ae294d4ca7960920816339fedbdc4a0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac5f0bb47789c1182392f5029e0238a81"><td class="memItemLeft" align="right" valign="top"><a id="ac5f0bb47789c1182392f5029e0238a81" name="ac5f0bb47789c1182392f5029e0238a81"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_PASSWORD</b>   ( 6 )</td></tr>
|
|
<tr class="memdesc:ac5f0bb47789c1182392f5029e0238a81"><td class="mdescLeft"> </td><td class="mdescRight">Password present. <br /></td></tr>
|
|
<tr class="separator:ac5f0bb47789c1182392f5029e0238a81"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8d23d14a4cf296feffb9db79728dd1d0"><td class="memItemLeft" align="right" valign="top"><a id="a8d23d14a4cf296feffb9db79728dd1d0" name="a8d23d14a4cf296feffb9db79728dd1d0"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_CONNECT_FLAG_USERNAME</b>   ( 7 )</td></tr>
|
|
<tr class="memdesc:a8d23d14a4cf296feffb9db79728dd1d0"><td class="mdescLeft"> </td><td class="mdescRight">User name present. <br /></td></tr>
|
|
<tr class="separator:a8d23d14a4cf296feffb9db79728dd1d0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3d04b1e1ad7ec25d18fd13726e164f06"><td class="memItemLeft" align="right" valign="top"><a id="a3d04b1e1ad7ec25d18fd13726e164f06" name="a3d04b1e1ad7ec25d18fd13726e164f06"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PUBLISH_FLAG_RETAIN</b>   ( 0 )</td></tr>
|
|
<tr class="memdesc:a3d04b1e1ad7ec25d18fd13726e164f06"><td class="mdescLeft"> </td><td class="mdescRight">MQTT PUBLISH retain flag. <br /></td></tr>
|
|
<tr class="separator:a3d04b1e1ad7ec25d18fd13726e164f06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac23212835606fade167fb5ce25eaf103"><td class="memItemLeft" align="right" valign="top"><a id="ac23212835606fade167fb5ce25eaf103" name="ac23212835606fade167fb5ce25eaf103"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PUBLISH_FLAG_QOS1</b>   ( 1 )</td></tr>
|
|
<tr class="memdesc:ac23212835606fade167fb5ce25eaf103"><td class="mdescLeft"> </td><td class="mdescRight">MQTT PUBLISH QoS1 flag. <br /></td></tr>
|
|
<tr class="separator:ac23212835606fade167fb5ce25eaf103"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afe1d2a0b7c0803f5a20ebb3c7a607d65"><td class="memItemLeft" align="right" valign="top"><a id="afe1d2a0b7c0803f5a20ebb3c7a607d65" name="afe1d2a0b7c0803f5a20ebb3c7a607d65"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PUBLISH_FLAG_QOS2</b>   ( 2 )</td></tr>
|
|
<tr class="memdesc:afe1d2a0b7c0803f5a20ebb3c7a607d65"><td class="mdescLeft"> </td><td class="mdescRight">MQTT PUBLISH QoS2 flag. <br /></td></tr>
|
|
<tr class="separator:afe1d2a0b7c0803f5a20ebb3c7a607d65"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a57c437ecc3720de76093b08eb0d4f813"><td class="memItemLeft" align="right" valign="top"><a id="a57c437ecc3720de76093b08eb0d4f813" name="a57c437ecc3720de76093b08eb0d4f813"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PUBLISH_FLAG_DUP</b>   ( 3 )</td></tr>
|
|
<tr class="memdesc:a57c437ecc3720de76093b08eb0d4f813"><td class="mdescLeft"> </td><td class="mdescRight">MQTT PUBLISH duplicate flag. <br /></td></tr>
|
|
<tr class="separator:a57c437ecc3720de76093b08eb0d4f813"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abdcffcd69d858203747236b5c4afa834"><td class="memItemLeft" align="right" valign="top"><a id="abdcffcd69d858203747236b5c4afa834" name="abdcffcd69d858203747236b5c4afa834"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_DISCONNECT_PACKET_SIZE</b>   ( 2UL )</td></tr>
|
|
<tr class="memdesc:abdcffcd69d858203747236b5c4afa834"><td class="mdescLeft"> </td><td class="mdescRight">The size of MQTT DISCONNECT packets, per MQTT spec. <br /></td></tr>
|
|
<tr class="separator:abdcffcd69d858203747236b5c4afa834"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6e8a49d0d88f0b038a5379d533858103"><td class="memItemLeft" align="right" valign="top"><a id="a6e8a49d0d88f0b038a5379d533858103" name="a6e8a49d0d88f0b038a5379d533858103"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_PINGREQ_SIZE</b>   ( 2UL )</td></tr>
|
|
<tr class="memdesc:a6e8a49d0d88f0b038a5379d533858103"><td class="mdescLeft"> </td><td class="mdescRight">A PINGREQ packet is always 2 bytes in size, defined by MQTT 3.1.1 spec. <br /></td></tr>
|
|
<tr class="separator:a6e8a49d0d88f0b038a5379d533858103"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac4f3ff016aa6011e3fc707b9f27f6b8c"><td class="memItemLeft" align="right" valign="top"><a id="ac4f3ff016aa6011e3fc707b9f27f6b8c" name="ac4f3ff016aa6011e3fc707b9f27f6b8c"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_DISCONNECT_REMAINING_LENGTH</b>   ( ( uint8_t ) 0 )</td></tr>
|
|
<tr class="memdesc:ac4f3ff016aa6011e3fc707b9f27f6b8c"><td class="mdescLeft"> </td><td class="mdescRight">The Remaining Length field of MQTT disconnect packets, per MQTT spec. <br /></td></tr>
|
|
<tr class="separator:ac4f3ff016aa6011e3fc707b9f27f6b8c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a999c4ebc0d629df9b08a3c88107b5b80"><td class="memItemLeft" align="right" valign="top"><a id="a999c4ebc0d629df9b08a3c88107b5b80" name="a999c4ebc0d629df9b08a3c88107b5b80"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_CONNACK_REMAINING_LENGTH</b>   ( ( uint8_t ) 2U )</td></tr>
|
|
<tr class="memdesc:a999c4ebc0d629df9b08a3c88107b5b80"><td class="mdescLeft"> </td><td class="mdescRight">A CONNACK packet always has a "Remaining length" of 2. <br /></td></tr>
|
|
<tr class="separator:a999c4ebc0d629df9b08a3c88107b5b80"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aab69dd14c12f8086245c2371288944f0"><td class="memItemLeft" align="right" valign="top"><a id="aab69dd14c12f8086245c2371288944f0" name="aab69dd14c12f8086245c2371288944f0"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_CONNACK_SESSION_PRESENT_MASK</b>   ( ( uint8_t ) 0x01U )</td></tr>
|
|
<tr class="memdesc:aab69dd14c12f8086245c2371288944f0"><td class="mdescLeft"> </td><td class="mdescRight">The "Session Present" bit is always the lowest bit. <br /></td></tr>
|
|
<tr class="separator:aab69dd14c12f8086245c2371288944f0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4c576df64bca769a91cb64d5d5d86505"><td class="memItemLeft" align="right" valign="top"><a id="a4c576df64bca769a91cb64d5d5d86505" name="a4c576df64bca769a91cb64d5d5d86505"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_SIMPLE_ACK_REMAINING_LENGTH</b>   ( ( uint8_t ) 2 )</td></tr>
|
|
<tr class="memdesc:a4c576df64bca769a91cb64d5d5d86505"><td class="mdescLeft"> </td><td class="mdescRight">PUBACK, PUBREC, PUBREl, PUBCOMP, UNSUBACK Remaining length. <br /></td></tr>
|
|
<tr class="separator:a4c576df64bca769a91cb64d5d5d86505"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aeab5c92e86ed98750cbf6422b8b57c06"><td class="memItemLeft" align="right" valign="top"><a id="aeab5c92e86ed98750cbf6422b8b57c06" name="aeab5c92e86ed98750cbf6422b8b57c06"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_PACKET_PINGRESP_REMAINING_LENGTH</b>   ( 0U )</td></tr>
|
|
<tr class="memdesc:aeab5c92e86ed98750cbf6422b8b57c06"><td class="mdescLeft"> </td><td class="mdescRight">A PINGRESP packet always has a "Remaining length" of 0. <br /></td></tr>
|
|
<tr class="separator:aeab5c92e86ed98750cbf6422b8b57c06"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9d9ea40a1ff486557a553523a0743647"><td class="memItemLeft" align="right" valign="top"><a id="a9d9ea40a1ff486557a553523a0743647" name="a9d9ea40a1ff486557a553523a0743647"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_MAX_REMAINING_LENGTH</b>   ( 268435455UL )</td></tr>
|
|
<tr class="memdesc:a9d9ea40a1ff486557a553523a0743647"><td class="mdescLeft"> </td><td class="mdescRight">Per the MQTT 3.1.1 spec, the largest "Remaining Length" of an MQTT packet is this value, 256 MB. <br /></td></tr>
|
|
<tr class="separator:a9d9ea40a1ff486557a553523a0743647"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af259c91b3075c24df53fa3ffe516b208"><td class="memItemLeft" align="right" valign="top"><a id="af259c91b3075c24df53fa3ffe516b208" name="af259c91b3075c24df53fa3ffe516b208"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>UINT8_SET_BIT</b>(x, position)   ( ( x ) = ( uint8_t ) ( ( x ) | ( 0x01U << ( position ) ) ) )</td></tr>
|
|
<tr class="memdesc:af259c91b3075c24df53fa3ffe516b208"><td class="mdescLeft"> </td><td class="mdescRight">Set a bit in an 8-bit unsigned integer. <br /></td></tr>
|
|
<tr class="separator:af259c91b3075c24df53fa3ffe516b208"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a07cc5f3f934e1ebf8011a6c15a667206"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a07cc5f3f934e1ebf8011a6c15a667206">UINT8_CHECK_BIT</a>(x, position)   ( ( ( x ) & ( 0x01U << ( position ) ) ) == ( 0x01U << ( position ) ) )</td></tr>
|
|
<tr class="memdesc:a07cc5f3f934e1ebf8011a6c15a667206"><td class="mdescLeft"> </td><td class="mdescRight">Macro for checking if a bit is set in a 1-byte unsigned int. <br /></td></tr>
|
|
<tr class="separator:a07cc5f3f934e1ebf8011a6c15a667206"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a24aab781ef139dd38be534ee137ea2f9"><td class="memItemLeft" align="right" valign="top"><a id="a24aab781ef139dd38be534ee137ea2f9" name="a24aab781ef139dd38be534ee137ea2f9"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>UINT16_HIGH_BYTE</b>(x)   ( ( uint8_t ) ( ( x ) >> 8 ) )</td></tr>
|
|
<tr class="memdesc:a24aab781ef139dd38be534ee137ea2f9"><td class="mdescLeft"> </td><td class="mdescRight">Get the high byte of a 16-bit unsigned integer. <br /></td></tr>
|
|
<tr class="separator:a24aab781ef139dd38be534ee137ea2f9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af2ae35b27e0140a77238cd175508cb4e"><td class="memItemLeft" align="right" valign="top"><a id="af2ae35b27e0140a77238cd175508cb4e" name="af2ae35b27e0140a77238cd175508cb4e"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>UINT16_LOW_BYTE</b>(x)   ( ( uint8_t ) ( ( x ) & 0x00ffU ) )</td></tr>
|
|
<tr class="memdesc:af2ae35b27e0140a77238cd175508cb4e"><td class="mdescLeft"> </td><td class="mdescRight">Get the low byte of a 16-bit unsigned integer. <br /></td></tr>
|
|
<tr class="separator:af2ae35b27e0140a77238cd175508cb4e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:acc849aa739edff3ec532219a3860a3a0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#acc849aa739edff3ec532219a3860a3a0">UINT16_DECODE</a>(ptr)</td></tr>
|
|
<tr class="memdesc:acc849aa739edff3ec532219a3860a3a0"><td class="mdescLeft"> </td><td class="mdescRight">Macro for decoding a 2-byte unsigned int from a sequence of bytes. <br /></td></tr>
|
|
<tr class="separator:acc849aa739edff3ec532219a3860a3a0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6f6b43661df6f9e9e9e7123ab01e9eb5"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6f6b43661df6f9e9e9e7123ab01e9eb5">MQTT_REMAINING_LENGTH_INVALID</a>   ( ( size_t ) 268435456 )</td></tr>
|
|
<tr class="memdesc:a6f6b43661df6f9e9e9e7123ab01e9eb5"><td class="mdescLeft"> </td><td class="mdescRight">A value that represents an invalid remaining length. <br /></td></tr>
|
|
<tr class="separator:a6f6b43661df6f9e9e9e7123ab01e9eb5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3b8709529a24bc195c7310183ffbcc2b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a3b8709529a24bc195c7310183ffbcc2b">MQTT_MIN_PUBLISH_REMAINING_LENGTH_QOS0</a>   ( 3U )</td></tr>
|
|
<tr class="memdesc:a3b8709529a24bc195c7310183ffbcc2b"><td class="mdescLeft"> </td><td class="mdescRight">The minimum remaining length for a QoS 0 PUBLISH. <br /></td></tr>
|
|
<tr class="separator:a3b8709529a24bc195c7310183ffbcc2b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
|
|
Enumerations</h2></td></tr>
|
|
<tr class="memitem:a92e39b92b76d439a183fc6f5e300195f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195f">MQTTSubscriptionType_t</a> { <a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195fa7dd20d5d68728190c8c1050599b562f7">MQTT_SUBSCRIBE</a>
|
|
, <a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195fa94eb5b78f584ff379c799a142b03e7a7">MQTT_UNSUBSCRIBE</a>
|
|
}</td></tr>
|
|
<tr class="memdesc:a92e39b92b76d439a183fc6f5e300195f"><td class="mdescLeft"> </td><td class="mdescRight">MQTT Subscription packet types. <a href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195f">More...</a><br /></td></tr>
|
|
<tr class="separator:a92e39b92b76d439a183fc6f5e300195f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a6b4138d990e2c8fbedbe28683c0fa83a"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6b4138d990e2c8fbedbe28683c0fa83a">serializePublishCommon</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, size_t remainingLength, uint16_t packetIdentifier, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer, bool serializePayload)</td></tr>
|
|
<tr class="memdesc:a6b4138d990e2c8fbedbe28683c0fa83a"><td class="mdescLeft"> </td><td class="mdescRight">Serializes MQTT PUBLISH packet into the buffer provided. <br /></td></tr>
|
|
<tr class="separator:a6b4138d990e2c8fbedbe28683c0fa83a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a76d0156e521588fb3319043f9d35ea9a"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a76d0156e521588fb3319043f9d35ea9a">calculatePublishPacketSize</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, size_t *pRemainingLength, size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a76d0156e521588fb3319043f9d35ea9a"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the packet size and remaining length of an MQTT PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:a76d0156e521588fb3319043f9d35ea9a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abdbabda0aa9db25166963afa975adb10"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#abdbabda0aa9db25166963afa975adb10">calculateSubscriptionPacketSize</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize, <a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195f">MQTTSubscriptionType_t</a> subscriptionType)</td></tr>
|
|
<tr class="memdesc:abdbabda0aa9db25166963afa975adb10"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the packet size and remaining length of an MQTT SUBSCRIBE or UNSUBSCRIBE packet. <br /></td></tr>
|
|
<tr class="separator:abdbabda0aa9db25166963afa975adb10"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a81262cb0b9d47dee979420f6fd8a7271"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a81262cb0b9d47dee979420f6fd8a7271">validateSubscriptionSerializeParams</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:a81262cb0b9d47dee979420f6fd8a7271"><td class="mdescLeft"> </td><td class="mdescRight">Validates parameters of <a class="el" href="core__mqtt__serializer_8c.html#a21273b13070e8340cc33b0f86bf79571" title="Serialize an MQTT SUBSCRIBE packet in the given buffer.">MQTT_SerializeSubscribe</a> or <a class="el" href="core__mqtt__serializer_8c.html#aab58219c203077c07ffd7061405e1adb" title="Serialize an MQTT UNSUBSCRIBE packet in the given buffer.">MQTT_SerializeUnsubscribe</a>. <br /></td></tr>
|
|
<tr class="separator:a81262cb0b9d47dee979420f6fd8a7271"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a95bf697a3b1f86950e5c199d9cf3a185"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a95bf697a3b1f86950e5c199d9cf3a185">serializeConnectPacket</a> (const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> *pConnectInfo, const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pWillInfo, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:a95bf697a3b1f86950e5c199d9cf3a185"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT CONNECT packet in the given buffer. <br /></td></tr>
|
|
<tr class="separator:a95bf697a3b1f86950e5c199d9cf3a185"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5451f2e3468faaf2bdf85220ebb95aaa"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a5451f2e3468faaf2bdf85220ebb95aaa">logConnackResponse</a> (uint8_t responseCode)</td></tr>
|
|
<tr class="memdesc:a5451f2e3468faaf2bdf85220ebb95aaa"><td class="mdescLeft"> </td><td class="mdescRight">Prints the appropriate message for the CONNACK response code if logs are enabled. <br /></td></tr>
|
|
<tr class="separator:a5451f2e3468faaf2bdf85220ebb95aaa"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3a3858fbb0cbd845f208b3fc60f36130"><td class="memItemLeft" align="right" valign="top">static uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a3a3858fbb0cbd845f208b3fc60f36130">encodeRemainingLength</a> (uint8_t *pDestination, size_t length)</td></tr>
|
|
<tr class="memdesc:a3a3858fbb0cbd845f208b3fc60f36130"><td class="mdescLeft"> </td><td class="mdescRight">Encodes the remaining length of the packet using the variable length encoding scheme provided in the MQTT v3.1.1 specification. <br /></td></tr>
|
|
<tr class="separator:a3a3858fbb0cbd845f208b3fc60f36130"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aeead0813fa045d754e3d6ec964d0686e"><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#aeead0813fa045d754e3d6ec964d0686e">remainingLengthEncodedSize</a> (size_t length)</td></tr>
|
|
<tr class="memdesc:aeead0813fa045d754e3d6ec964d0686e"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the size of the remaining length if it were to be encoded. <br /></td></tr>
|
|
<tr class="separator:aeead0813fa045d754e3d6ec964d0686e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a60e580c28431eb08f05a156949137f1f"><td class="memItemLeft" align="right" valign="top">static uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a60e580c28431eb08f05a156949137f1f">encodeString</a> (uint8_t *pDestination, const char *pSource, uint16_t sourceLength)</td></tr>
|
|
<tr class="memdesc:a60e580c28431eb08f05a156949137f1f"><td class="mdescLeft"> </td><td class="mdescRight">Encode a string whose size is at maximum 16 bits in length. <br /></td></tr>
|
|
<tr class="separator:a60e580c28431eb08f05a156949137f1f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5685b753d1d42788a00bd59ffa4639e2"><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a5685b753d1d42788a00bd59ffa4639e2">getRemainingLength</a> (<a class="el" href="group__mqtt__callback__types.html#ga227df31d6daf07e5d833537c12130167">TransportRecv_t</a> recvFunc, <a class="el" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> *pNetworkContext)</td></tr>
|
|
<tr class="memdesc:a5685b753d1d42788a00bd59ffa4639e2"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves and decodes the Remaining Length from the network interface by reading a single byte at a time. <br /></td></tr>
|
|
<tr class="separator:a5685b753d1d42788a00bd59ffa4639e2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8a4f72e05cd72fa57ba5a90e204569b3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a8a4f72e05cd72fa57ba5a90e204569b3">processRemainingLength</a> (const uint8_t *pBuffer, const size_t *pIndex, <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket)</td></tr>
|
|
<tr class="memdesc:a8a4f72e05cd72fa57ba5a90e204569b3"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves, decodes and stores the Remaining Length from the network interface by reading a single byte at a time. <br /></td></tr>
|
|
<tr class="separator:a8a4f72e05cd72fa57ba5a90e204569b3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a03dfebbfbc1635567839f7abb7c0f8db"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a03dfebbfbc1635567839f7abb7c0f8db">incomingPacketValid</a> (uint8_t packetType)</td></tr>
|
|
<tr class="memdesc:a03dfebbfbc1635567839f7abb7c0f8db"><td class="mdescLeft"> </td><td class="mdescRight">Check if an incoming packet type is valid. <br /></td></tr>
|
|
<tr class="separator:a03dfebbfbc1635567839f7abb7c0f8db"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a33a2680aab1ce2186acd7c78aeb270f1"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a33a2680aab1ce2186acd7c78aeb270f1">checkPublishRemainingLength</a> (size_t remainingLength, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos, size_t qos0Minimum)</td></tr>
|
|
<tr class="memdesc:a33a2680aab1ce2186acd7c78aeb270f1"><td class="mdescLeft"> </td><td class="mdescRight">Check the remaining length of an incoming PUBLISH packet against some value for QoS 0, or for QoS 1 and 2. <br /></td></tr>
|
|
<tr class="separator:a33a2680aab1ce2186acd7c78aeb270f1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a47a044115ee5df1ac7fe02d2ee37e1e0"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a47a044115ee5df1ac7fe02d2ee37e1e0">processPublishFlags</a> (uint8_t publishFlags, <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo)</td></tr>
|
|
<tr class="memdesc:a47a044115ee5df1ac7fe02d2ee37e1e0"><td class="mdescLeft"> </td><td class="mdescRight">Process the flags of an incoming PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:a47a044115ee5df1ac7fe02d2ee37e1e0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa7b25e1e3114536e9b0526fc93a1f76c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#aa7b25e1e3114536e9b0526fc93a1f76c">deserializeConnack</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pConnack, bool *pSessionPresent)</td></tr>
|
|
<tr class="memdesc:aa7b25e1e3114536e9b0526fc93a1f76c"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize a CONNACK packet. <br /></td></tr>
|
|
<tr class="separator:aa7b25e1e3114536e9b0526fc93a1f76c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a02cace9415c300f4dd3394bf1eee0787"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a02cace9415c300f4dd3394bf1eee0787">readSubackStatus</a> (size_t statusCount, const uint8_t *pStatusStart)</td></tr>
|
|
<tr class="memdesc:a02cace9415c300f4dd3394bf1eee0787"><td class="mdescLeft"> </td><td class="mdescRight">Decode the status bytes of a SUBACK packet to a <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a>. <br /></td></tr>
|
|
<tr class="separator:a02cace9415c300f4dd3394bf1eee0787"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae7b71036fc19c9a6da480dcfd3a2387b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#ae7b71036fc19c9a6da480dcfd3a2387b">deserializeSuback</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pSuback, uint16_t *pPacketIdentifier)</td></tr>
|
|
<tr class="memdesc:ae7b71036fc19c9a6da480dcfd3a2387b"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize a SUBACK packet. <br /></td></tr>
|
|
<tr class="separator:ae7b71036fc19c9a6da480dcfd3a2387b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6e8bcde1280e14706e0cb9180358607c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6e8bcde1280e14706e0cb9180358607c">deserializePublish</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket, uint16_t *pPacketId, <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo)</td></tr>
|
|
<tr class="memdesc:a6e8bcde1280e14706e0cb9180358607c"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize a PUBLISH packet received from the server. <br /></td></tr>
|
|
<tr class="separator:a6e8bcde1280e14706e0cb9180358607c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5d437c287290fa28a0ed65635fd6c9ae"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a5d437c287290fa28a0ed65635fd6c9ae">deserializeSimpleAck</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pAck, uint16_t *pPacketIdentifier)</td></tr>
|
|
<tr class="memdesc:a5d437c287290fa28a0ed65635fd6c9ae"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize an UNSUBACK, PUBACK, PUBREC, PUBREL, or PUBCOMP packet. <br /></td></tr>
|
|
<tr class="separator:a5d437c287290fa28a0ed65635fd6c9ae"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afdd9b08562ccaa6cf8dd68baa6bc7060"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#afdd9b08562ccaa6cf8dd68baa6bc7060">deserializePingresp</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pPingresp)</td></tr>
|
|
<tr class="memdesc:afdd9b08562ccaa6cf8dd68baa6bc7060"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize a PINGRESP packet. <br /></td></tr>
|
|
<tr class="separator:afdd9b08562ccaa6cf8dd68baa6bc7060"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a32de7fabeca85a4d360fa1dd06ff7cd0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a32de7fabeca85a4d360fa1dd06ff7cd0">MQTT_SerializePublishHeaderWithoutTopic</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, size_t remainingLength, uint8_t *pBuffer, size_t *headerSize)</td></tr>
|
|
<tr class="memdesc:a32de7fabeca85a4d360fa1dd06ff7cd0"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT PUBLISH packet header without the topic string in the given buffer. This function will add the topic string length to the provided buffer. This helps reduce an unnecessary copy of the topic string into the buffer. <br /></td></tr>
|
|
<tr class="separator:a32de7fabeca85a4d360fa1dd06ff7cd0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5e6043289c05db1cdb7e33e0921247a0"><td class="memItemLeft" align="right" valign="top">uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a5e6043289c05db1cdb7e33e0921247a0">MQTT_SerializeConnectFixedHeader</a> (uint8_t *pIndex, const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> *pConnectInfo, const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pWillInfo, size_t remainingLength)</td></tr>
|
|
<tr class="memdesc:a5e6043289c05db1cdb7e33e0921247a0"><td class="mdescLeft"> </td><td class="mdescRight">Serialize the fixed part of the connect packet header. <br /></td></tr>
|
|
<tr class="separator:a5e6043289c05db1cdb7e33e0921247a0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4e57ccef527a25b572dc66eeb2e217c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a4e57ccef527a25b572dc66eeb2e217c5">MQTT_GetConnectPacketSize</a> (const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> *pConnectInfo, const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pWillInfo, size_t *pRemainingLength, size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a4e57ccef527a25b572dc66eeb2e217c5"><td class="mdescLeft"> </td><td class="mdescRight">Get the size and Remaining Length of an MQTT CONNECT packet. <br /></td></tr>
|
|
<tr class="separator:a4e57ccef527a25b572dc66eeb2e217c5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa2e2300d6c43e61f8f2cf83f7149835c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#aa2e2300d6c43e61f8f2cf83f7149835c">MQTT_SerializeConnect</a> (const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> *pConnectInfo, const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pWillInfo, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:aa2e2300d6c43e61f8f2cf83f7149835c"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT CONNECT packet in the given fixed buffer <code>pFixedBuffer</code>. <br /></td></tr>
|
|
<tr class="separator:aa2e2300d6c43e61f8f2cf83f7149835c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abb9a703cb23ab39fdd6fe282a5f3ddc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#abb9a703cb23ab39fdd6fe282a5f3ddc5">MQTT_GetSubscribePacketSize</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:abb9a703cb23ab39fdd6fe282a5f3ddc5"><td class="mdescLeft"> </td><td class="mdescRight">Get packet size and Remaining Length of an MQTT SUBSCRIBE packet. <br /></td></tr>
|
|
<tr class="separator:abb9a703cb23ab39fdd6fe282a5f3ddc5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6fe31953d7b8dacb769adcf4c2719730"><td class="memItemLeft" align="right" valign="top">uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6fe31953d7b8dacb769adcf4c2719730">MQTT_SerializeSubscribeHeader</a> (size_t remainingLength, uint8_t *pIndex, uint16_t packetId)</td></tr>
|
|
<tr class="memdesc:a6fe31953d7b8dacb769adcf4c2719730"><td class="mdescLeft"> </td><td class="mdescRight">Serialize the fixed part of the subscribe packet header. <br /></td></tr>
|
|
<tr class="separator:a6fe31953d7b8dacb769adcf4c2719730"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5b6f47fa319a444835ffed2d6af04709"><td class="memItemLeft" align="right" valign="top">uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a5b6f47fa319a444835ffed2d6af04709">MQTT_SerializeUnsubscribeHeader</a> (size_t remainingLength, uint8_t *pIndex, uint16_t packetId)</td></tr>
|
|
<tr class="memdesc:a5b6f47fa319a444835ffed2d6af04709"><td class="mdescLeft"> </td><td class="mdescRight">Serialize the fixed part of the unsubscribe packet header. <br /></td></tr>
|
|
<tr class="separator:a5b6f47fa319a444835ffed2d6af04709"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a21273b13070e8340cc33b0f86bf79571"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a21273b13070e8340cc33b0f86bf79571">MQTT_SerializeSubscribe</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:a21273b13070e8340cc33b0f86bf79571"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT SUBSCRIBE packet in the given buffer. <br /></td></tr>
|
|
<tr class="separator:a21273b13070e8340cc33b0f86bf79571"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a2a18563d5f63c8975b57118a6836c932"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a2a18563d5f63c8975b57118a6836c932">MQTT_GetUnsubscribePacketSize</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a2a18563d5f63c8975b57118a6836c932"><td class="mdescLeft"> </td><td class="mdescRight">Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet. <br /></td></tr>
|
|
<tr class="separator:a2a18563d5f63c8975b57118a6836c932"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aab58219c203077c07ffd7061405e1adb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#aab58219c203077c07ffd7061405e1adb">MQTT_SerializeUnsubscribe</a> (const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:aab58219c203077c07ffd7061405e1adb"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT UNSUBSCRIBE packet in the given buffer. <br /></td></tr>
|
|
<tr class="separator:aab58219c203077c07ffd7061405e1adb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a9971fb98c6af22b1bfe697d44492a819"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a9971fb98c6af22b1bfe697d44492a819">MQTT_GetPublishPacketSize</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, size_t *pRemainingLength, size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a9971fb98c6af22b1bfe697d44492a819"><td class="mdescLeft"> </td><td class="mdescRight">Get the packet size and remaining length of an MQTT PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:a9971fb98c6af22b1bfe697d44492a819"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac6c453f9c4b7f48aad511bc677ec7eb9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#ac6c453f9c4b7f48aad511bc677ec7eb9">MQTT_SerializePublish</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, uint16_t packetId, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:ac6c453f9c4b7f48aad511bc677ec7eb9"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT PUBLISH packet in the given buffer. <br /></td></tr>
|
|
<tr class="separator:ac6c453f9c4b7f48aad511bc677ec7eb9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a659cf2bcaf2c5131daa0acc1917401a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a659cf2bcaf2c5131daa0acc1917401a2">MQTT_SerializePublishHeader</a> (const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo, uint16_t packetId, size_t remainingLength, const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer, size_t *pHeaderSize)</td></tr>
|
|
<tr class="memdesc:a659cf2bcaf2c5131daa0acc1917401a2"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT PUBLISH packet header in the given buffer. <br /></td></tr>
|
|
<tr class="separator:a659cf2bcaf2c5131daa0acc1917401a2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a11ea4ac5ea27e93121288e463ca34ee6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a11ea4ac5ea27e93121288e463ca34ee6">MQTT_SerializeAck</a> (const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer, uint8_t packetType, uint16_t packetId)</td></tr>
|
|
<tr class="memdesc:a11ea4ac5ea27e93121288e463ca34ee6"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT PUBACK, PUBREC, PUBREL, or PUBCOMP into the given buffer. <br /></td></tr>
|
|
<tr class="separator:a11ea4ac5ea27e93121288e463ca34ee6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6fdd8cbde6b7c4ff85c20aaca0fd8741"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6fdd8cbde6b7c4ff85c20aaca0fd8741">MQTT_GetDisconnectPacketSize</a> (size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a6fdd8cbde6b7c4ff85c20aaca0fd8741"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an MQTT DISCONNECT packet. <br /></td></tr>
|
|
<tr class="separator:a6fdd8cbde6b7c4ff85c20aaca0fd8741"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6aae40d4656eb533a74b67bf9c827d3b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a6aae40d4656eb533a74b67bf9c827d3b">MQTT_SerializeDisconnect</a> (const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:a6aae40d4656eb533a74b67bf9c827d3b"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT DISCONNECT packet into the given buffer. <br /></td></tr>
|
|
<tr class="separator:a6aae40d4656eb533a74b67bf9c827d3b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a015562f30e220d2534f773bfa45a5cfe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a015562f30e220d2534f773bfa45a5cfe">MQTT_GetPingreqPacketSize</a> (size_t *pPacketSize)</td></tr>
|
|
<tr class="memdesc:a015562f30e220d2534f773bfa45a5cfe"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an MQTT PINGREQ packet. <br /></td></tr>
|
|
<tr class="separator:a015562f30e220d2534f773bfa45a5cfe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af3b3e40858fd984c871511e02a61e15d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#af3b3e40858fd984c871511e02a61e15d">MQTT_SerializePingreq</a> (const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> *pFixedBuffer)</td></tr>
|
|
<tr class="memdesc:af3b3e40858fd984c871511e02a61e15d"><td class="mdescLeft"> </td><td class="mdescRight">Serialize an MQTT PINGREQ packet into the given buffer. <br /></td></tr>
|
|
<tr class="separator:af3b3e40858fd984c871511e02a61e15d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4c2aec031f31d0fe55c1cda46544e95a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a4c2aec031f31d0fe55c1cda46544e95a">MQTT_DeserializePublish</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket, uint16_t *pPacketId, <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> *pPublishInfo)</td></tr>
|
|
<tr class="memdesc:a4c2aec031f31d0fe55c1cda46544e95a"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize an MQTT PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:a4c2aec031f31d0fe55c1cda46544e95a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae9971855df71edf94124116e0625bf18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#ae9971855df71edf94124116e0625bf18">MQTT_DeserializeAck</a> (const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket, uint16_t *pPacketId, bool *pSessionPresent)</td></tr>
|
|
<tr class="memdesc:ae9971855df71edf94124116e0625bf18"><td class="mdescLeft"> </td><td class="mdescRight">Deserialize an MQTT CONNACK, SUBACK, UNSUBACK, PUBACK, PUBREC, PUBREL, PUBCOMP, or PINGRESP. <br /></td></tr>
|
|
<tr class="separator:ae9971855df71edf94124116e0625bf18"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a98cdda86f86a0a1888745a584199e930"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a98cdda86f86a0a1888745a584199e930">MQTT_GetIncomingPacketTypeAndLength</a> (<a class="el" href="group__mqtt__callback__types.html#ga227df31d6daf07e5d833537c12130167">TransportRecv_t</a> readFunc, <a class="el" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> *pNetworkContext, <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket)</td></tr>
|
|
<tr class="memdesc:a98cdda86f86a0a1888745a584199e930"><td class="mdescLeft"> </td><td class="mdescRight">Extract the MQTT packet type and length from incoming packet. <br /></td></tr>
|
|
<tr class="separator:a98cdda86f86a0a1888745a584199e930"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a94fd3f746074b3f6e16ae6b23dad9a28"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__serializer_8c.html#a94fd3f746074b3f6e16ae6b23dad9a28">MQTT_ProcessIncomingPacketTypeAndLength</a> (const uint8_t *pBuffer, const size_t *pIndex, <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> *pIncomingPacket)</td></tr>
|
|
<tr class="memdesc:a94fd3f746074b3f6e16ae6b23dad9a28"><td class="mdescLeft"> </td><td class="mdescRight">Extract the MQTT packet type and length from incoming packet. <br /></td></tr>
|
|
<tr class="separator:a94fd3f746074b3f6e16ae6b23dad9a28"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Implements the user-facing functions in <a class="el" href="core__mqtt__serializer_8h.html" title="User-facing functions for serializing and deserializing MQTT 3.1.1 packets. This header should be inc...">core_mqtt_serializer.h</a>. </p>
|
|
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="a07cc5f3f934e1ebf8011a6c15a667206" name="a07cc5f3f934e1ebf8011a6c15a667206"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a07cc5f3f934e1ebf8011a6c15a667206">◆ </a></span>UINT8_CHECK_BIT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define UINT8_CHECK_BIT</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">x, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">position </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td>   ( ( ( x ) & ( 0x01U << ( position ) ) ) == ( 0x01U << ( position ) ) )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Macro for checking if a bit is set in a 1-byte unsigned int. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The unsigned int to check. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>Which bit to check. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="acc849aa739edff3ec532219a3860a3a0" name="acc849aa739edff3ec532219a3860a3a0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acc849aa739edff3ec532219a3860a3a0">◆ </a></span>UINT16_DECODE</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define UINT16_DECODE</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">ptr</td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> ( uint16_t ) ( ( ( ( uint16_t ) ptr[ 0 ] ) << 8 ) | \</div>
|
|
<div class="line"> ( ( uint16_t ) ptr[ 1 ] ) )</div>
|
|
</div><!-- fragment -->
|
|
<p>Macro for decoding a 2-byte unsigned int from a sequence of bytes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">ptr</td><td>A uint8_t* that points to the high byte. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6f6b43661df6f9e9e9e7123ab01e9eb5" name="a6f6b43661df6f9e9e9e7123ab01e9eb5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6f6b43661df6f9e9e9e7123ab01e9eb5">◆ </a></span>MQTT_REMAINING_LENGTH_INVALID</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define MQTT_REMAINING_LENGTH_INVALID   ( ( size_t ) 268435456 )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>A value that represents an invalid remaining length. </p>
|
|
<p>This value is greater than what is allowed by the MQTT specification. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3b8709529a24bc195c7310183ffbcc2b" name="a3b8709529a24bc195c7310183ffbcc2b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3b8709529a24bc195c7310183ffbcc2b">◆ </a></span>MQTT_MIN_PUBLISH_REMAINING_LENGTH_QOS0</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define MQTT_MIN_PUBLISH_REMAINING_LENGTH_QOS0   ( 3U )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>The minimum remaining length for a QoS 0 PUBLISH. </p>
|
|
<p>Includes two bytes for topic name length and one byte for topic name. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Enumeration Type Documentation</h2>
|
|
<a id="a92e39b92b76d439a183fc6f5e300195f" name="a92e39b92b76d439a183fc6f5e300195f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a92e39b92b76d439a183fc6f5e300195f">◆ </a></span>MQTTSubscriptionType_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum <a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195f">MQTTSubscriptionType_t</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>MQTT Subscription packet types. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a92e39b92b76d439a183fc6f5e300195fa7dd20d5d68728190c8c1050599b562f7" name="a92e39b92b76d439a183fc6f5e300195fa7dd20d5d68728190c8c1050599b562f7"></a>MQTT_SUBSCRIBE </td><td class="fielddoc"><p>The type is a SUBSCRIBE packet. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="a92e39b92b76d439a183fc6f5e300195fa94eb5b78f584ff379c799a142b03e7a7" name="a92e39b92b76d439a183fc6f5e300195fa94eb5b78f584ff379c799a142b03e7a7"></a>MQTT_UNSUBSCRIBE </td><td class="fielddoc"><p>The type is a UNSUBSCRIBE packet. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="a6b4138d990e2c8fbedbe28683c0fa83a" name="a6b4138d990e2c8fbedbe28683c0fa83a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6b4138d990e2c8fbedbe28683c0fa83a">◆ </a></span>serializePublishCommon()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void serializePublishCommon </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetIdentifier</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool </td>
|
|
<td class="paramname"><em>serializePayload</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serializes MQTT PUBLISH packet into the buffer provided. </p>
|
|
<p>This function serializes MQTT PUBLISH packet into <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6" title="Pointer to buffer.">MQTTFixedBuffer_t.pBuffer</a>. Copy of the payload into the buffer is done as part of the serialization only if <code>serializePayload</code> is true.</p>
|
|
<p>param[in] pPublishInfo Publish information.</p>
|
|
<p>param[in] remainingLength Remaining length of the PUBLISH packet.</p>
|
|
<p>param[in] packetIdentifier Packet identifier of PUBLISH packet.</p>
|
|
<p>param[in, out] pFixedBuffer Buffer to which PUBLISH packet will be serialized.</p>
|
|
<p>param[in] serializePayload Copy payload to the serialized buffer only if true. Only PUBLISH header will be serialized if false. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a76d0156e521588fb3319043f9d35ea9a" name="a76d0156e521588fb3319043f9d35ea9a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a76d0156e521588fb3319043f9d35ea9a">◆ </a></span>calculatePublishPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static bool calculatePublishPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Calculates the packet size and remaining length of an MQTT PUBLISH packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPublishInfo</td><td>MQTT PUBLISH packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT PUBLISH packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT PUBLISH packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>false if the packet would exceed the size allowed by the MQTT spec; true otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="abdbabda0aa9db25166963afa975adb10" name="abdbabda0aa9db25166963afa975adb10"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#abdbabda0aa9db25166963afa975adb10">◆ </a></span>calculateSubscriptionPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> calculateSubscriptionPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195f">MQTTSubscriptionType_t</a> </td>
|
|
<td class="paramname"><em>subscriptionType</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Calculates the packet size and remaining length of an MQTT SUBSCRIBE or UNSUBSCRIBE packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT SUBSCRIBE or UNSUBSCRIBE packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT MQTT SUBSCRIBE or UNSUBSCRIBE packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionType</td><td><a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195fa7dd20d5d68728190c8c1050599b562f7" title="The type is a SUBSCRIBE packet.">MQTT_SUBSCRIBE</a> or <a class="el" href="core__mqtt__serializer_8c.html#a92e39b92b76d439a183fc6f5e300195fa94eb5b78f584ff379c799a142b03e7a7" title="The type is a UNSUBSCRIBE packet.">MQTT_UNSUBSCRIBE</a>.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if the packet would exceed the size allowed by the MQTT spec or a subscription is empty; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a81262cb0b9d47dee979420f6fd8a7271" name="a81262cb0b9d47dee979420f6fd8a7271"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a81262cb0b9d47dee979420f6fd8a7271">◆ </a></span>validateSubscriptionSerializeParams()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> validateSubscriptionSerializeParams </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Validates parameters of <a class="el" href="core__mqtt__serializer_8c.html#a21273b13070e8340cc33b0f86bf79571" title="Serialize an MQTT SUBSCRIBE packet in the given buffer.">MQTT_SerializeSubscribe</a> or <a class="el" href="core__mqtt__serializer_8c.html#aab58219c203077c07ffd7061405e1adb" title="Serialize an MQTT UNSUBSCRIBE packet in the given buffer.">MQTT_SerializeUnsubscribe</a>. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>Packet identifier. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining length of the packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a95bf697a3b1f86950e5c199d9cf3a185" name="a95bf697a3b1f86950e5c199d9cf3a185"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a95bf697a3b1f86950e5c199d9cf3a185">◆ </a></span>serializeConnectPacket()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void serializeConnectPacket </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> * </td>
|
|
<td class="paramname"><em>pConnectInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pWillInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT CONNECT packet in the given buffer. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pConnectInfo</td><td>MQTT CONNECT packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pWillInfo</td><td>Last Will and Testament. Pass NULL if not used. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length of MQTT CONNECT packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5451f2e3468faaf2bdf85220ebb95aaa" name="a5451f2e3468faaf2bdf85220ebb95aaa"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5451f2e3468faaf2bdf85220ebb95aaa">◆ </a></span>logConnackResponse()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void logConnackResponse </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>responseCode</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Prints the appropriate message for the CONNACK response code if logs are enabled. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">responseCode</td><td>MQTT standard CONNACK response code. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3a3858fbb0cbd845f208b3fc60f36130" name="a3a3858fbb0cbd845f208b3fc60f36130"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3a3858fbb0cbd845f208b3fc60f36130">◆ </a></span>encodeRemainingLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static uint8_t * encodeRemainingLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pDestination</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>length</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Encodes the remaining length of the packet using the variable length encoding scheme provided in the MQTT v3.1.1 specification. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pDestination</td><td>The destination buffer to store the encoded remaining length. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The remaining length to encode.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The location of the byte following the encoded value. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aeead0813fa045d754e3d6ec964d0686e" name="aeead0813fa045d754e3d6ec964d0686e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aeead0813fa045d754e3d6ec964d0686e">◆ </a></span>remainingLengthEncodedSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static size_t remainingLengthEncodedSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>length</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Retrieve the size of the remaining length if it were to be encoded. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The remaining length to be encoded.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The size of the remaining length if it were to be encoded. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a60e580c28431eb08f05a156949137f1f" name="a60e580c28431eb08f05a156949137f1f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a60e580c28431eb08f05a156949137f1f">◆ </a></span>encodeString()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static uint8_t * encodeString </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pDestination</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const char * </td>
|
|
<td class="paramname"><em>pSource</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>sourceLength</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Encode a string whose size is at maximum 16 bits in length. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pDestination</td><td>Destination buffer for the encoding. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSource</td><td>The source string to encode. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">sourceLength</td><td>The length of the source string to encode.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>A pointer to the end of the encoded string. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5685b753d1d42788a00bd59ffa4639e2" name="a5685b753d1d42788a00bd59ffa4639e2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5685b753d1d42788a00bd59ffa4639e2">◆ </a></span>getRemainingLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static size_t getRemainingLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__callback__types.html#ga227df31d6daf07e5d833537c12130167">TransportRecv_t</a> </td>
|
|
<td class="paramname"><em>recvFunc</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> * </td>
|
|
<td class="paramname"><em>pNetworkContext</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Retrieves and decodes the Remaining Length from the network interface by reading a single byte at a time. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recvFunc</td><td>Network interface receive function. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pNetworkContext</td><td>Network interface context to the receive function.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The Remaining Length of the incoming packet. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a8a4f72e05cd72fa57ba5a90e204569b3" name="a8a4f72e05cd72fa57ba5a90e204569b3"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8a4f72e05cd72fa57ba5a90e204569b3">◆ </a></span>processRemainingLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> processRemainingLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const uint8_t * </td>
|
|
<td class="paramname"><em>pBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const size_t * </td>
|
|
<td class="paramname"><em>pIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Retrieves, decodes and stores the Remaining Length from the network interface by reading a single byte at a time. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pBuffer</td><td>The buffer holding the raw data to be processed </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIndex</td><td>Pointer to the index within the buffer to marking the end of raw data available. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIncomingPacket</td><td>Structure used to hold the fields of the incoming packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>MQTTNeedMoreBytes is returned to show that the incoming packet is not yet fully received and decoded. Otherwise, MQTTSuccess shows that processing of the packet was successful. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a03dfebbfbc1635567839f7abb7c0f8db" name="a03dfebbfbc1635567839f7abb7c0f8db"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a03dfebbfbc1635567839f7abb7c0f8db">◆ </a></span>incomingPacketValid()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static bool incomingPacketValid </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>packetType</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Check if an incoming packet type is valid. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetType</td><td>The packet type to check.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the packet type is valid; <code>false</code> otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a33a2680aab1ce2186acd7c78aeb270f1" name="a33a2680aab1ce2186acd7c78aeb270f1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a33a2680aab1ce2186acd7c78aeb270f1">◆ </a></span>checkPublishRemainingLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> checkPublishRemainingLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> </td>
|
|
<td class="paramname"><em>qos</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>qos0Minimum</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Check the remaining length of an incoming PUBLISH packet against some value for QoS 0, or for QoS 1 and 2. </p>
|
|
<p>The remaining length for a QoS 1 and 2 packet will always be two greater than for a QoS 0.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining length of the PUBLISH packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>The QoS of the PUBLISH. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos0Minimum</td><td>Minimum possible remaining length for a QoS 0 PUBLISH.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a47a044115ee5df1ac7fe02d2ee37e1e0" name="a47a044115ee5df1ac7fe02d2ee37e1e0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a47a044115ee5df1ac7fe02d2ee37e1e0">◆ </a></span>processPublishFlags()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> processPublishFlags </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>publishFlags</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Process the flags of an incoming PUBLISH packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">publishFlags</td><td>Flags of an incoming PUBLISH. </td></tr>
|
|
<tr><td class="paramdir">[in,out]</td><td class="paramname">pPublishInfo</td><td>Pointer to <a class="el" href="struct_m_q_t_t_publish_info__t.html" title="MQTT PUBLISH packet parameters.">MQTTPublishInfo_t</a> struct where output will be written.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa7b25e1e3114536e9b0526fc93a1f76c" name="aa7b25e1e3114536e9b0526fc93a1f76c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa7b25e1e3114536e9b0526fc93a1f76c">◆ </a></span>deserializeConnack()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> deserializeConnack </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pConnack</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool * </td>
|
|
<td class="paramname"><em>pSessionPresent</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize a CONNACK packet. </p>
|
|
<p>Converts the packet from a stream of bytes to an <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pConnack</td><td>Pointer to an MQTT packet struct representing a CONNACK. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pSessionPresent</td><td>Whether a previous session was present.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if CONNACK specifies that CONNECT was accepted; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca25a3d1747e308e99daa805fe576f84b9">MQTTServerRefused</a> if CONNACK specifies that CONNECT was rejected; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if the CONNACK packet doesn't follow MQTT spec. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a02cace9415c300f4dd3394bf1eee0787" name="a02cace9415c300f4dd3394bf1eee0787"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a02cace9415c300f4dd3394bf1eee0787">◆ </a></span>readSubackStatus()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> readSubackStatus </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>statusCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t * </td>
|
|
<td class="paramname"><em>pStatusStart</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Decode the status bytes of a SUBACK packet to a <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a>. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">statusCount</td><td>Number of status bytes in the SUBACK. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pStatusStart</td><td>The first status byte in the SUBACK.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca25a3d1747e308e99daa805fe576f84b9">MQTTServerRefused</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae7b71036fc19c9a6da480dcfd3a2387b" name="ae7b71036fc19c9a6da480dcfd3a2387b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae7b71036fc19c9a6da480dcfd3a2387b">◆ </a></span>deserializeSuback()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> deserializeSuback </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSuback</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t * </td>
|
|
<td class="paramname"><em>pPacketIdentifier</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize a SUBACK packet. </p>
|
|
<p>Converts the packet from a stream of bytes to an <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a> and extracts the packet identifier.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSuback</td><td>Pointer to an MQTT packet struct representing a SUBACK. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketIdentifier</td><td>Packet ID of the SUBACK.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if SUBACK is valid; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if SUBACK packet doesn't follow the MQTT spec. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6e8bcde1280e14706e0cb9180358607c" name="a6e8bcde1280e14706e0cb9180358607c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6e8bcde1280e14706e0cb9180358607c">◆ </a></span>deserializePublish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> deserializePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t * </td>
|
|
<td class="paramname"><em>pPacketId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize a PUBLISH packet received from the server. </p>
|
|
<p>Converts the packet from a stream of bytes to an <a class="el" href="struct_m_q_t_t_publish_info__t.html" title="MQTT PUBLISH packet parameters.">MQTTPublishInfo_t</a> and extracts the packet identifier. Also prints out debug log messages about the packet.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIncomingPacket</td><td>Pointer to an MQTT packet struct representing a PUBLISH. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketId</td><td>Packet identifier of the PUBLISH. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPublishInfo</td><td>Pointer to <a class="el" href="struct_m_q_t_t_publish_info__t.html" title="MQTT PUBLISH packet parameters.">MQTTPublishInfo_t</a> where output is written.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if PUBLISH is valid; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if the PUBLISH packet doesn't follow MQTT spec. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5d437c287290fa28a0ed65635fd6c9ae" name="a5d437c287290fa28a0ed65635fd6c9ae"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5d437c287290fa28a0ed65635fd6c9ae">◆ </a></span>deserializeSimpleAck()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> deserializeSimpleAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pAck</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t * </td>
|
|
<td class="paramname"><em>pPacketIdentifier</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize an UNSUBACK, PUBACK, PUBREC, PUBREL, or PUBCOMP packet. </p>
|
|
<p>Converts the packet from a stream of bytes to an <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a> and extracts the packet identifier.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pAck</td><td>Pointer to the MQTT packet structure representing the packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketIdentifier</td><td>Packet ID of the ack type packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if UNSUBACK, PUBACK, PUBREC, PUBREL, or PUBCOMP is valid; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if the packet doesn't follow the MQTT spec. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="afdd9b08562ccaa6cf8dd68baa6bc7060" name="afdd9b08562ccaa6cf8dd68baa6bc7060"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afdd9b08562ccaa6cf8dd68baa6bc7060">◆ </a></span>deserializePingresp()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> deserializePingresp </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPingresp</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize a PINGRESP packet. </p>
|
|
<p>Converts the packet from a stream of bytes to an <a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c" title="Return codes from MQTT functions.">MQTTStatus_t</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPingresp</td><td>Pointer to an MQTT packet struct representing a PINGRESP.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if PINGRESP is valid; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if the PINGRESP packet doesn't follow MQTT spec. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a32de7fabeca85a4d360fa1dd06ff7cd0" name="a32de7fabeca85a4d360fa1dd06ff7cd0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a32de7fabeca85a4d360fa1dd06ff7cd0">◆ </a></span>MQTT_SerializePublishHeaderWithoutTopic()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializePublishHeaderWithoutTopic </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>headerSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT PUBLISH packet header without the topic string in the given buffer. This function will add the topic string length to the provided buffer. This helps reduce an unnecessary copy of the topic string into the buffer. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPublishInfo</td><td>MQTT PUBLISH packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pBuffer</td><td>Buffer for packet serialization. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">headerSize</td><td>Size of the serialized MQTT PUBLISH header.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> if the serialization is successful. Otherwise, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5e6043289c05db1cdb7e33e0921247a0" name="a5e6043289c05db1cdb7e33e0921247a0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5e6043289c05db1cdb7e33e0921247a0">◆ </a></span>MQTT_SerializeConnectFixedHeader()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t * MQTT_SerializeConnectFixedHeader </td>
|
|
<td>(</td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> * </td>
|
|
<td class="paramname"><em>pConnectInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pWillInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize the fixed part of the connect packet header. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pIndex</td><td>Pointer to the buffer where the header is to be serialized. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pConnectInfo</td><td>The connect information. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pWillInfo</td><td>The last will and testament information. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>The remaining length of the packet to be serialized.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>A pointer to the end of the encoded string. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a4e57ccef527a25b572dc66eeb2e217c5" name="a4e57ccef527a25b572dc66eeb2e217c5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4e57ccef527a25b572dc66eeb2e217c5">◆ </a></span>MQTT_GetConnectPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetConnectPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> * </td>
|
|
<td class="paramname"><em>pConnectInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pWillInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the size and Remaining Length of an MQTT CONNECT packet. </p>
|
|
<p>This function must be called before <a class="el" href="core__mqtt__serializer_8h.html#aa2e2300d6c43e61f8f2cf83f7149835c" title="Serialize an MQTT CONNECT packet in the given fixed buffer pFixedBuffer.">MQTT_SerializeConnect</a> in order to get the size of the MQTT CONNECT packet that is generated from <a class="el" href="struct_m_q_t_t_connect_info__t.html" title="MQTT CONNECT packet parameters.">MQTTConnectInfo_t</a> and optional <a class="el" href="struct_m_q_t_t_publish_info__t.html" title="MQTT PUBLISH packet parameters.">MQTTPublishInfo_t</a>. The size of the <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> supplied to <a class="el" href="core__mqtt__serializer_8h.html#aa2e2300d6c43e61f8f2cf83f7149835c" title="Serialize an MQTT CONNECT packet in the given fixed buffer pFixedBuffer.">MQTT_SerializeConnect</a> must be at least <code>pPacketSize</code>. The provided <code>pConnectInfo</code> and <code>pWillInfo</code> are valid for serialization with <a class="el" href="core__mqtt__serializer_8h.html#aa2e2300d6c43e61f8f2cf83f7149835c" title="Serialize an MQTT CONNECT packet in the given fixed buffer pFixedBuffer.">MQTT_SerializeConnect</a> only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. The remaining length returned in <code>pRemainingLength</code> and the packet size returned in <code>pPacketSize</code> are valid only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pConnectInfo</td><td>MQTT CONNECT packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pWillInfo</td><td>Last Will and Testament. Pass NULL if not used. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT CONNECT packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT CONNECT packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if the packet would exceed the size allowed by the MQTT spec; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> connectInfo = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> willInfo = { 0 };</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Initialize the connection info, the details are out of scope for this example.</span></div>
|
|
<div class="line">initializeConnectInfo( &connectInfo );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Initialize the optional will info, the details are out of scope for this example.</span></div>
|
|
<div class="line">initializeWillInfo( &willInfo );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the connect packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5">MQTT_GetConnectPacketSize</a>(</div>
|
|
<div class="line"> &connectInfo, &willInfo, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t</span></div>
|
|
<div class="line"> <span class="comment">// of size >= packetSize to serialize the connect request.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a4e57ccef527a25b572dc66eeb2e217c5"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5">MQTT_GetConnectPacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetConnectPacketSize(const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, size_t *pRemainingLength, size_t *pPacketSize)</div><div class="ttdoc">Get the size and Remaining Length of an MQTT CONNECT packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:1690</div></div>
|
|
<div class="ttc" id="agroup__mqtt__enum__types_html_gaba7ec045874a1c3432f99173367f735c"><div class="ttname"><a href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a></div><div class="ttdeci">MQTTStatus_t</div><div class="ttdoc">Return codes from MQTT functions.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:87</div></div>
|
|
<div class="ttc" id="agroup__mqtt__enum__types_html_ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056"><div class="ttname"><a href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a></div><div class="ttdeci">@ MQTTSuccess</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:88</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_connect_info__t_html"><div class="ttname"><a href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a></div><div class="ttdoc">MQTT CONNECT packet parameters.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:133</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a></div><div class="ttdoc">MQTT PUBLISH packet parameters.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:202</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="aa2e2300d6c43e61f8f2cf83f7149835c" name="aa2e2300d6c43e61f8f2cf83f7149835c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa2e2300d6c43e61f8f2cf83f7149835c">◆ </a></span>MQTT_SerializeConnect()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializeConnect </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> * </td>
|
|
<td class="paramname"><em>pConnectInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pWillInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT CONNECT packet in the given fixed buffer <code>pFixedBuffer</code>. </p>
|
|
<p><a class="el" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5" title="Get the size and Remaining Length of an MQTT CONNECT packet.">MQTT_GetConnectPacketSize</a> should be called with <code>pConnectInfo</code> and <code>pWillInfo</code> before invoking this function to get the size of the required <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> and <code>remainingLength</code>. The <code>remainingLength</code> must be the same as returned by <a class="el" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5" title="Get the size and Remaining Length of an MQTT CONNECT packet.">MQTT_GetConnectPacketSize</a>. The <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5" title="Get the size and Remaining Length of an MQTT CONNECT packet.">MQTT_GetConnectPacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pConnectInfo</td><td>MQTT CONNECT packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pWillInfo</td><td>Last Will and Testament. Pass NULL if not used. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5" title="Get the size and Remaining Length of an MQTT CONNECT packet.">MQTT_GetConnectPacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_connect_info__t.html">MQTTConnectInfo_t</a> connectInfo = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> willInfo = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Assume connectInfo and willInfo are initialized. Get the size requirement for</span></div>
|
|
<div class="line"><span class="comment">// the connect packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a4e57ccef527a25b572dc66eeb2e217c5">MQTT_GetConnectPacketSize</a>(</div>
|
|
<div class="line"> &connectInfo, &willInfo, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the connect packet into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#aa2e2300d6c43e61f8f2cf83f7149835c">MQTT_SerializeConnect</a>( &connectInfo, &willInfo, remainingLength, &fixedBuffer );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The connect packet can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_aa2e2300d6c43e61f8f2cf83f7149835c"><div class="ttname"><a href="core__mqtt__serializer_8h.html#aa2e2300d6c43e61f8f2cf83f7149835c">MQTT_SerializeConnect</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializeConnect(const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT CONNECT packet in the given fixed buffer pFixedBuffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:1790</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_fixed_buffer__t_html"><div class="ttname"><a href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a></div><div class="ttdoc">Buffer passed to MQTT library.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:123</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_fixed_buffer__t_html_a0b0b6a93cc62751ebeb03095d5431636"><div class="ttname"><a href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">MQTTFixedBuffer_t::size</a></div><div class="ttdeci">size_t size</div><div class="ttdoc">Size of buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:125</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_fixed_buffer__t_html_acea147448e044870fb36b7fa2347dbd6"><div class="ttname"><a href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">MQTTFixedBuffer_t::pBuffer</a></div><div class="ttdeci">uint8_t * pBuffer</div><div class="ttdoc">Pointer to buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:124</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="abb9a703cb23ab39fdd6fe282a5f3ddc5" name="abb9a703cb23ab39fdd6fe282a5f3ddc5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#abb9a703cb23ab39fdd6fe282a5f3ddc5">◆ </a></span>MQTT_GetSubscribePacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetSubscribePacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get packet size and Remaining Length of an MQTT SUBSCRIBE packet. </p>
|
|
<p>This function must be called before <a class="el" href="core__mqtt__serializer_8h.html#a21273b13070e8340cc33b0f86bf79571" title="Serialize an MQTT SUBSCRIBE packet in the given buffer.">MQTT_SerializeSubscribe</a> in order to get the size of the MQTT SUBSCRIBE packet that is generated from the list of <a class="el" href="struct_m_q_t_t_subscribe_info__t.html" title="MQTT SUBSCRIBE packet parameters.">MQTTSubscribeInfo_t</a>. The size of the <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> supplied to <a class="el" href="core__mqtt__serializer_8h.html#a21273b13070e8340cc33b0f86bf79571" title="Serialize an MQTT SUBSCRIBE packet in the given buffer.">MQTT_SerializeSubscribe</a> must be at least <code>pPacketSize</code>. The provided <code>pSubscriptionList</code> is valid for serialization with <a class="el" href="core__mqtt__serializer_8h.html#a21273b13070e8340cc33b0f86bf79571" title="Serialize an MQTT SUBSCRIBE packet in the given buffer.">MQTT_SerializeSubscribe</a> only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. The remaining length returned in <code>pRemainingLength</code> and the packet size returned in <code>pPacketSize</code> are valid only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT SUBSCRIBE packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT SUBSCRIBE packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if the packet would exceed the size allowed by the MQTT spec; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> subscriptionList[ NUMBER_OF_SUBSCRIPTIONS ] = { 0 };</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line"><span class="comment">// This is assumed to be a list of filters we want to subscribe to.</span></div>
|
|
<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> * filters[ NUMBER_OF_SUBSCRIPTIONS ];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Set each subscription.</span></div>
|
|
<div class="line"><span class="keywordflow">for</span>( <span class="keywordtype">int</span> i = 0; i < NUMBER_OF_SUBSCRIPTIONS; i++ )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> subscriptionList[ i ].<a class="code hl_variable" href="struct_m_q_t_t_subscribe_info__t.html#a64cf2e423f60cfec122eeaef80c0fd86">qos</a> = <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggae308a5928d7f537379c29a894228093aaad51b23a1ae1417f96d8f343c788d1d2">MQTTQoS0</a>;</div>
|
|
<div class="line"> <span class="comment">// Each subscription needs a topic filter.</span></div>
|
|
<div class="line"> subscriptionList[ i ].<a class="code hl_variable" href="struct_m_q_t_t_subscribe_info__t.html#adb0b28240fdcd82a85f11cf2f8b5bbf0">pTopicFilter</a> = filters[ i ];</div>
|
|
<div class="line"> subscriptionList[ i ].<a class="code hl_variable" href="struct_m_q_t_t_subscribe_info__t.html#a6972f8e036f8bde9b1f23a2aacb61382">topicFilterLength</a> = strlen( filters[ i ] );</div>
|
|
<div class="line">}</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the subscribe packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5">MQTT_GetSubscribePacketSize</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ], NUMBER_OF_SUBSCRIPTIONS, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t</span></div>
|
|
<div class="line"> <span class="comment">// of size >= packetSize to serialize the subscribe request.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_abb9a703cb23ab39fdd6fe282a5f3ddc5"><div class="ttname"><a href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5">MQTT_GetSubscribePacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetSubscribePacketSize(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)</div><div class="ttdoc">Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:1848</div></div>
|
|
<div class="ttc" id="agroup__mqtt__enum__types_html_ggae308a5928d7f537379c29a894228093aaad51b23a1ae1417f96d8f343c788d1d2"><div class="ttname"><a href="group__mqtt__enum__types.html#ggae308a5928d7f537379c29a894228093aaad51b23a1ae1417f96d8f343c788d1d2">MQTTQoS0</a></div><div class="ttdeci">@ MQTTQoS0</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:110</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_subscribe_info__t_html"><div class="ttname"><a href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a></div><div class="ttdoc">MQTT SUBSCRIBE packet parameters.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:180</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_subscribe_info__t_html_a64cf2e423f60cfec122eeaef80c0fd86"><div class="ttname"><a href="struct_m_q_t_t_subscribe_info__t.html#a64cf2e423f60cfec122eeaef80c0fd86">MQTTSubscribeInfo_t::qos</a></div><div class="ttdeci">MQTTQoS_t qos</div><div class="ttdoc">Quality of Service for subscription.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:184</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_subscribe_info__t_html_a6972f8e036f8bde9b1f23a2aacb61382"><div class="ttname"><a href="struct_m_q_t_t_subscribe_info__t.html#a6972f8e036f8bde9b1f23a2aacb61382">MQTTSubscribeInfo_t::topicFilterLength</a></div><div class="ttdeci">uint16_t topicFilterLength</div><div class="ttdoc">Length of subscription topic filter.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:194</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_subscribe_info__t_html_adb0b28240fdcd82a85f11cf2f8b5bbf0"><div class="ttname"><a href="struct_m_q_t_t_subscribe_info__t.html#adb0b28240fdcd82a85f11cf2f8b5bbf0">MQTTSubscribeInfo_t::pTopicFilter</a></div><div class="ttdeci">const char * pTopicFilter</div><div class="ttdoc">Topic filter to subscribe to.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:189</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a6fe31953d7b8dacb769adcf4c2719730" name="a6fe31953d7b8dacb769adcf4c2719730"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6fe31953d7b8dacb769adcf4c2719730">◆ </a></span>MQTT_SerializeSubscribeHeader()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t * MQTT_SerializeSubscribeHeader </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize the fixed part of the subscribe packet header. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>The remaining length of the packet to be serialized. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIndex</td><td>Pointer to the buffer where the header is to be serialized. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>The packet ID to be serialized.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>A pointer to the end of the encoded string. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5b6f47fa319a444835ffed2d6af04709" name="a5b6f47fa319a444835ffed2d6af04709"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5b6f47fa319a444835ffed2d6af04709">◆ </a></span>MQTT_SerializeUnsubscribeHeader()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t * MQTT_SerializeUnsubscribeHeader </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>pIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize the fixed part of the unsubscribe packet header. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>The remaining length of the packet to be serialized. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIndex</td><td>Pointer to the buffer where the header is to be serialized. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>The packet ID to be serialized.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>A pointer to the end of the encoded string. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a21273b13070e8340cc33b0f86bf79571" name="a21273b13070e8340cc33b0f86bf79571"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a21273b13070e8340cc33b0f86bf79571">◆ </a></span>MQTT_SerializeSubscribe()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializeSubscribe </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT SUBSCRIBE packet in the given buffer. </p>
|
|
<p><a class="el" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5" title="Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.">MQTT_GetSubscribePacketSize</a> should be called with <code>pSubscriptionList</code> before invoking this function to get the size of the required <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> and <code>remainingLength</code>. The <code>remainingLength</code> must be the same as returned by <a class="el" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5" title="Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.">MQTT_GetSubscribePacketSize</a>. The <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5" title="Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.">MQTT_GetSubscribePacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>packet ID generated by <a class="el" href="core__mqtt_8h.html#a00e1a3eba2c21899a6b4312c7d65d090" title="Get a packet ID that is valid according to the MQTT 3.1.1 spec.">MQTT_GetPacketId</a>. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5" title="Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.">MQTT_GetSubscribePacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> subscriptionList[ NUMBER_OF_SUBSCRIPTIONS ] = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Function to return a valid, unused packet identifier. The details are out of</span></div>
|
|
<div class="line"><span class="comment">// scope for this example.</span></div>
|
|
<div class="line">packetId = getNewPacketId();</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Assume subscriptionList has been initialized. Get the subscribe packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#abb9a703cb23ab39fdd6fe282a5f3ddc5">MQTT_GetSubscribePacketSize</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ], NUMBER_OF_SUBSCRIPTIONS, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the subscribe packet into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a21273b13070e8340cc33b0f86bf79571">MQTT_SerializeSubscribe</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ],</div>
|
|
<div class="line"> NUMBER_OF_SUBSCRIPTIONS,</div>
|
|
<div class="line"> packetId,</div>
|
|
<div class="line"> remainingLength,</div>
|
|
<div class="line"> &fixedBuffer</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The subscribe packet can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a21273b13070e8340cc33b0f86bf79571"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a21273b13070e8340cc33b0f86bf79571">MQTT_SerializeSubscribe</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializeSubscribe(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT SUBSCRIBE packet in the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:1932</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a2a18563d5f63c8975b57118a6836c932" name="a2a18563d5f63c8975b57118a6836c932"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2a18563d5f63c8975b57118a6836c932">◆ </a></span>MQTT_GetUnsubscribePacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetUnsubscribePacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet. </p>
|
|
<p>This function must be called before <a class="el" href="core__mqtt__serializer_8h.html#aab58219c203077c07ffd7061405e1adb" title="Serialize an MQTT UNSUBSCRIBE packet in the given buffer.">MQTT_SerializeUnsubscribe</a> in order to get the size of the MQTT UNSUBSCRIBE packet that is generated from the list of <a class="el" href="struct_m_q_t_t_subscribe_info__t.html" title="MQTT SUBSCRIBE packet parameters.">MQTTSubscribeInfo_t</a>. The size of the <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> supplied to <a class="el" href="core__mqtt__serializer_8h.html#aab58219c203077c07ffd7061405e1adb" title="Serialize an MQTT UNSUBSCRIBE packet in the given buffer.">MQTT_SerializeUnsubscribe</a> must be at least <code>pPacketSize</code>. The provided <code>pSubscriptionList</code> is valid for serialization with <a class="el" href="core__mqtt__serializer_8h.html#aab58219c203077c07ffd7061405e1adb" title="Serialize an MQTT UNSUBSCRIBE packet in the given buffer.">MQTT_SerializeUnsubscribe</a> only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. The remaining length returned in <code>pRemainingLength</code> and the packet size returned in <code>pPacketSize</code> are valid only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT UNSUBSCRIBE packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT UNSUBSCRIBE packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if the packet would exceed the size allowed by the MQTT spec; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> subscriptionList[ NUMBER_OF_SUBSCRIPTIONS ] = { 0 };</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Initialize the subscribe info. The details are out of scope for this example.</span></div>
|
|
<div class="line">initializeSubscribeInfo( &subscriptionList[ 0 ] );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the unsubscribe packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932">MQTT_GetUnsubscribePacketSize</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ], NUMBER_OF_SUBSCRIPTIONS, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t</span></div>
|
|
<div class="line"> <span class="comment">// of size >= packetSize to serialize the unsubscribe request.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a2a18563d5f63c8975b57118a6836c932"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932">MQTT_GetUnsubscribePacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetUnsubscribePacketSize(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)</div><div class="ttdoc">Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:1978</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="aab58219c203077c07ffd7061405e1adb" name="aab58219c203077c07ffd7061405e1adb"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aab58219c203077c07ffd7061405e1adb">◆ </a></span>MQTT_SerializeUnsubscribe()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializeUnsubscribe </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> * </td>
|
|
<td class="paramname"><em>pSubscriptionList</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>subscriptionCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT UNSUBSCRIBE packet in the given buffer. </p>
|
|
<p><a class="el" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932" title="Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.">MQTT_GetUnsubscribePacketSize</a> should be called with <code>pSubscriptionList</code> before invoking this function to get the size of the required <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> and <code>remainingLength</code>. The <code>remainingLength</code> must be the same as returned by <a class="el" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932" title="Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.">MQTT_GetUnsubscribePacketSize</a>. The <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932" title="Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.">MQTT_GetUnsubscribePacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pSubscriptionList</td><td>List of MQTT subscription info. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">subscriptionCount</td><td>The number of elements in pSubscriptionList. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>packet ID generated by <a class="el" href="core__mqtt_8h.html#a00e1a3eba2c21899a6b4312c7d65d090" title="Get a packet ID that is valid according to the MQTT 3.1.1 spec.">MQTT_GetPacketId</a>. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932" title="Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.">MQTT_GetUnsubscribePacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_subscribe_info__t.html">MQTTSubscribeInfo_t</a> subscriptionList[ NUMBER_OF_SUBSCRIPTIONS ] = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Function to return a valid, unused packet identifier. The details are out of</span></div>
|
|
<div class="line"><span class="comment">// scope for this example.</span></div>
|
|
<div class="line">packetId = getNewPacketId();</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Assume subscriptionList has been initialized. Get the unsubscribe packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a2a18563d5f63c8975b57118a6836c932">MQTT_GetUnsubscribePacketSize</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ], NUMBER_OF_SUBSCRIPTIONS, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the unsubscribe packet into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#aab58219c203077c07ffd7061405e1adb">MQTT_SerializeUnsubscribe</a>(</div>
|
|
<div class="line"> &subscriptionList[ 0 ],</div>
|
|
<div class="line"> NUMBER_OF_SUBSCRIPTIONS,</div>
|
|
<div class="line"> packetId,</div>
|
|
<div class="line"> remainingLength,</div>
|
|
<div class="line"> &fixedBuffer</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The unsubscribe packet can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_aab58219c203077c07ffd7061405e1adb"><div class="ttname"><a href="core__mqtt__serializer_8h.html#aab58219c203077c07ffd7061405e1adb">MQTT_SerializeUnsubscribe</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializeUnsubscribe(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT UNSUBSCRIBE packet in the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2016</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a9971fb98c6af22b1bfe697d44492a819" name="a9971fb98c6af22b1bfe697d44492a819"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9971fb98c6af22b1bfe697d44492a819">◆ </a></span>MQTT_GetPublishPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetPublishPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pRemainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the packet size and remaining length of an MQTT PUBLISH packet. </p>
|
|
<p>This function must be called before <a class="el" href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9" title="Serialize an MQTT PUBLISH packet in the given buffer.">MQTT_SerializePublish</a> in order to get the size of the MQTT PUBLISH packet that is generated from <a class="el" href="struct_m_q_t_t_publish_info__t.html" title="MQTT PUBLISH packet parameters.">MQTTPublishInfo_t</a>. The size of the <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> supplied to <a class="el" href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9" title="Serialize an MQTT PUBLISH packet in the given buffer.">MQTT_SerializePublish</a> must be at least <code>pPacketSize</code>. The provided <code>pPublishInfo</code> is valid for serialization with <a class="el" href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9" title="Serialize an MQTT PUBLISH packet in the given buffer.">MQTT_SerializePublish</a> only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. The remaining length returned in <code>pRemainingLength</code> and the packet size returned in <code>pPacketSize</code> are valid only if this function returns <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPublishInfo</td><td>MQTT PUBLISH packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pRemainingLength</td><td>The Remaining Length of the MQTT PUBLISH packet. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The total size of the MQTT PUBLISH packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if the packet would exceed the size allowed by the MQTT spec or if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> publishInfo = { 0 };</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Initialize the publish info.</span></div>
|
|
<div class="line">publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a178224d02b4acdec7e08e88de0e4b399">qos</a> = <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggae308a5928d7f537379c29a894228093aaad51b23a1ae1417f96d8f343c788d1d2">MQTTQoS0</a>;</div>
|
|
<div class="line">publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#aa80e8ca282d01630f878ad0afe81d7a4">pTopicName</a> = <span class="stringliteral">"/some/topic/name"</span>;</div>
|
|
<div class="line">publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a6161c792d20cc7cf8284c1b71ea1145f">topicNameLength</a> = strlen( publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#aa80e8ca282d01630f878ad0afe81d7a4">pTopicName</a> );</div>
|
|
<div class="line">publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#afc28299f4f625f5e674bb61b42f03380">pPayload</a> = <span class="stringliteral">"Hello World!"</span>;</div>
|
|
<div class="line">publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a7997964e11571f35f0c3b729db0f760f">payloadLength</a> = strlen( <span class="stringliteral">"Hello World!"</span> );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the publish packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819">MQTT_GetPublishPacketSize</a>(</div>
|
|
<div class="line"> &publishInfo, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t</span></div>
|
|
<div class="line"> <span class="comment">// of size >= packetSize to serialize the publish.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a9971fb98c6af22b1bfe697d44492a819"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819">MQTT_GetPublishPacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetPublishPacketSize(const MQTTPublishInfo_t *pPublishInfo, size_t *pRemainingLength, size_t *pPacketSize)</div><div class="ttdoc">Get the packet size and remaining length of an MQTT PUBLISH packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2057</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html_a178224d02b4acdec7e08e88de0e4b399"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#a178224d02b4acdec7e08e88de0e4b399">MQTTPublishInfo_t::qos</a></div><div class="ttdeci">MQTTQoS_t qos</div><div class="ttdoc">Quality of Service for message.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:206</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html_a6161c792d20cc7cf8284c1b71ea1145f"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#a6161c792d20cc7cf8284c1b71ea1145f">MQTTPublishInfo_t::topicNameLength</a></div><div class="ttdeci">uint16_t topicNameLength</div><div class="ttdoc">Length of topic name.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:226</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html_a7997964e11571f35f0c3b729db0f760f"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#a7997964e11571f35f0c3b729db0f760f">MQTTPublishInfo_t::payloadLength</a></div><div class="ttdeci">size_t payloadLength</div><div class="ttdoc">Message payload length.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:236</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html_aa80e8ca282d01630f878ad0afe81d7a4"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#aa80e8ca282d01630f878ad0afe81d7a4">MQTTPublishInfo_t::pTopicName</a></div><div class="ttdeci">const char * pTopicName</div><div class="ttdoc">Topic name on which the message is published.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:221</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_publish_info__t_html_afc28299f4f625f5e674bb61b42f03380"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#afc28299f4f625f5e674bb61b42f03380">MQTTPublishInfo_t::pPayload</a></div><div class="ttdeci">const void * pPayload</div><div class="ttdoc">Message payload.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:231</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="ac6c453f9c4b7f48aad511bc677ec7eb9" name="ac6c453f9c4b7f48aad511bc677ec7eb9"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac6c453f9c4b7f48aad511bc677ec7eb9">◆ </a></span>MQTT_SerializePublish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT PUBLISH packet in the given buffer. </p>
|
|
<p>This function will serialize complete MQTT PUBLISH packet into the given buffer. If the PUBLISH payload can be sent separately, consider using <a class="el" href="core__mqtt__serializer_8h.html#a659cf2bcaf2c5131daa0acc1917401a2" title="Serialize an MQTT PUBLISH packet header in the given buffer.">MQTT_SerializePublishHeader</a>, which will serialize only the PUBLISH header into the buffer.</p>
|
|
<p><a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a> should be called with <code>pPublishInfo</code> before invoking this function to get the size of the required <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> and <code>remainingLength</code>. The <code>remainingLength</code> must be the same as returned by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>. The <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPublishInfo</td><td>MQTT PUBLISH packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>packet ID generated by <a class="el" href="core__mqtt_8h.html#a00e1a3eba2c21899a6b4312c7d65d090" title="Get a packet ID that is valid according to the MQTT 3.1.1 spec.">MQTT_GetPacketId</a>. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> publishInfo = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0;</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// A packet identifier is unused for QoS 0 publishes. Otherwise, a valid, unused packet</span></div>
|
|
<div class="line"><span class="comment">// identifier must be used.</span></div>
|
|
<div class="line">packetId = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Assume publishInfo has been initialized. Get publish packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819">MQTT_GetPublishPacketSize</a>(</div>
|
|
<div class="line"> &publishInfo, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the publish packet into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9">MQTT_SerializePublish</a>(</div>
|
|
<div class="line"> &publishInfo,</div>
|
|
<div class="line"> packetId,</div>
|
|
<div class="line"> remainingLength,</div>
|
|
<div class="line"> &fixedBuffer</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The publish packet can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_ac6c453f9c4b7f48aad511bc677ec7eb9"><div class="ttname"><a href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9">MQTT_SerializePublish</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializePublish(const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT PUBLISH packet in the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2098</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a659cf2bcaf2c5131daa0acc1917401a2" name="a659cf2bcaf2c5131daa0acc1917401a2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a659cf2bcaf2c5131daa0acc1917401a2">◆ </a></span>MQTT_SerializePublishHeader()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializePublishHeader </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>remainingLength</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pHeaderSize</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT PUBLISH packet header in the given buffer. </p>
|
|
<p>This function serializes PUBLISH header in to the given buffer. The payload for PUBLISH will not be copied over to the buffer. This will help reduce the memory needed for the buffer and avoid an unwanted copy operation of the PUBLISH payload into the buffer. If the payload also would need to be part of the serialized buffer, consider using <a class="el" href="core__mqtt__serializer_8h.html#ac6c453f9c4b7f48aad511bc677ec7eb9" title="Serialize an MQTT PUBLISH packet in the given buffer.">MQTT_SerializePublish</a>.</p>
|
|
<p><a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a> should be called with <code>pPublishInfo</code> before invoking this function to get the size of the required <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> and <code>remainingLength</code>. The <code>remainingLength</code> must be the same as returned by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>. The <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html" title="Buffer passed to MQTT library.">MQTTFixedBuffer_t</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pPublishInfo</td><td>MQTT PUBLISH packet parameters. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>packet ID generated by <a class="el" href="core__mqtt_8h.html#a00e1a3eba2c21899a6b4312c7d65d090" title="Get a packet ID that is valid according to the MQTT 3.1.1 spec.">MQTT_GetPacketId</a>. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">remainingLength</td><td>Remaining Length provided by <a class="el" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819" title="Get the packet size and remaining length of an MQTT PUBLISH packet.">MQTT_GetPublishPacketSize</a>. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pHeaderSize</td><td>Size of the serialized MQTT PUBLISH header.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> publishInfo = { 0 };</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> remainingLength = 0, packetSize = 0, headerSize = 0;</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line">int32_t bytesSent;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// A packet identifier is unused for QoS 0 publishes. Otherwise, a valid, unused packet</span></div>
|
|
<div class="line"><span class="comment">// identifier must be used.</span></div>
|
|
<div class="line">packetId = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Assume publishInfo has been initialized. Get the publish packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a9971fb98c6af22b1bfe697d44492a819">MQTT_GetPublishPacketSize</a>(</div>
|
|
<div class="line"> &publishInfo, &remainingLength, &packetSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line"><span class="comment">// The payload will not be serialized, so the the fixed buffer does not need to hold it.</span></div>
|
|
<div class="line">assert( ( packetSize - publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a7997964e11571f35f0c3b729db0f760f">payloadLength</a> ) <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the publish packet header into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a659cf2bcaf2c5131daa0acc1917401a2">MQTT_SerializePublishHeader</a>(</div>
|
|
<div class="line"> &publishInfo,</div>
|
|
<div class="line"> packetId,</div>
|
|
<div class="line"> remainingLength,</div>
|
|
<div class="line"> &fixedBuffer,</div>
|
|
<div class="line"> &headerSize</div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The publish header and payload can now be sent to the broker.</span></div>
|
|
<div class="line"> <span class="comment">// mqttSocket here is a socket descriptor created and connected to the MQTT</span></div>
|
|
<div class="line"> <span class="comment">// broker outside of this function.</span></div>
|
|
<div class="line"> bytesSent = send( mqttSocket, ( <span class="keywordtype">void</span> * ) fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a>, headerSize, 0 );</div>
|
|
<div class="line"> assert( bytesSent == headerSize );</div>
|
|
<div class="line"> bytesSent = send( mqttSocket, publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#afc28299f4f625f5e674bb61b42f03380">pPayload</a>, publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a7997964e11571f35f0c3b729db0f760f">payloadLength</a>, 0 );</div>
|
|
<div class="line"> assert( bytesSent == publishInfo.<a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#a7997964e11571f35f0c3b729db0f760f">payloadLength</a> );</div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a659cf2bcaf2c5131daa0acc1917401a2"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a659cf2bcaf2c5131daa0acc1917401a2">MQTT_SerializePublishHeader</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializePublishHeader(const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer, size_t *pHeaderSize)</div><div class="ttdoc">Serialize an MQTT PUBLISH packet header in the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2183</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a11ea4ac5ea27e93121288e463ca34ee6" name="a11ea4ac5ea27e93121288e463ca34ee6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a11ea4ac5ea27e93121288e463ca34ee6">◆ </a></span>MQTT_SerializeAck()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializeAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t </td>
|
|
<td class="paramname"><em>packetType</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>packetId</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT PUBACK, PUBREC, PUBREL, or PUBCOMP into the given buffer. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetType</td><td>Byte of the corresponding packet fixed header per the MQTT spec. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>Packet ID of the publish.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line">uint8_t packetType;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"><span class="comment">// The fixed buffer must be large enough to hold 4 bytes.</span></div>
|
|
<div class="line">assert( BUFFER_SIZE >= <a class="code hl_define" href="group__mqtt__constants.html#ga26994fcfacb1cff892caa45ec31ca7c6">MQTT_PUBLISH_ACK_PACKET_SIZE</a> );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// The packet ID must be the same as the original publish packet.</span></div>
|
|
<div class="line">packetId = publishPacketId;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// The byte representing a packet of type ACK. This function accepts PUBACK, PUBREC, PUBREL, or PUBCOMP.</span></div>
|
|
<div class="line">packetType = <a class="code hl_define" href="group__mqtt__constants.html#ga5f279d63de47a973b41b95f74f47a4f6">MQTT_PACKET_TYPE_PUBACK</a>;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the publish acknowledgment into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a11ea4ac5ea27e93121288e463ca34ee6">MQTT_SerializeAck</a>( &fixedBuffer, packetType, packetId );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The publish acknowledgment can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a11ea4ac5ea27e93121288e463ca34ee6"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a11ea4ac5ea27e93121288e463ca34ee6">MQTT_SerializeAck</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializeAck(const MQTTFixedBuffer_t *pFixedBuffer, uint8_t packetType, uint16_t packetId)</div><div class="ttdoc">Serialize an MQTT PUBACK, PUBREC, PUBREL, or PUBCOMP into the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2266</div></div>
|
|
<div class="ttc" id="agroup__mqtt__constants_html_ga26994fcfacb1cff892caa45ec31ca7c6"><div class="ttname"><a href="group__mqtt__constants.html#ga26994fcfacb1cff892caa45ec31ca7c6">MQTT_PUBLISH_ACK_PACKET_SIZE</a></div><div class="ttdeci">#define MQTT_PUBLISH_ACK_PACKET_SIZE</div><div class="ttdoc">The size of MQTT PUBACK, PUBREC, PUBREL, and PUBCOMP packets, per MQTT spec.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:73</div></div>
|
|
<div class="ttc" id="agroup__mqtt__constants_html_ga5f279d63de47a973b41b95f74f47a4f6"><div class="ttname"><a href="group__mqtt__constants.html#ga5f279d63de47a973b41b95f74f47a4f6">MQTT_PACKET_TYPE_PUBACK</a></div><div class="ttdeci">#define MQTT_PACKET_TYPE_PUBACK</div><div class="ttdoc">PUBACK (bidirectional).</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:56</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a6fdd8cbde6b7c4ff85c20aaca0fd8741" name="a6fdd8cbde6b7c4ff85c20aaca0fd8741"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6fdd8cbde6b7c4ff85c20aaca0fd8741">◆ </a></span>MQTT_GetDisconnectPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetDisconnectPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the size of an MQTT DISCONNECT packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The size of the MQTT DISCONNECT packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if <code>pPacketSize</code> is NULL.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the disconnect packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a6fdd8cbde6b7c4ff85c20aaca0fd8741">MQTT_GetDisconnectPacketSize</a>( &packetSize );</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize == 2 );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t of</span></div>
|
|
<div class="line"><span class="comment">// size >= 2 to serialize the disconnect packet.</span></div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a6fdd8cbde6b7c4ff85c20aaca0fd8741"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a6fdd8cbde6b7c4ff85c20aaca0fd8741">MQTT_GetDisconnectPacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetDisconnectPacketSize(size_t *pPacketSize)</div><div class="ttdoc">Get the size of an MQTT DISCONNECT packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2321</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a6aae40d4656eb533a74b67bf9c827d3b" name="a6aae40d4656eb533a74b67bf9c827d3b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6aae40d4656eb533a74b67bf9c827d3b">◆ </a></span>MQTT_SerializeDisconnect()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializeDisconnect </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT DISCONNECT packet into the given buffer. </p>
|
|
<p>The input <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636" title="Size of buffer.">MQTTFixedBuffer_t.size</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a6fdd8cbde6b7c4ff85c20aaca0fd8741" title="Get the size of an MQTT DISCONNECT packet.">MQTT_GetDisconnectPacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the disconnect packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a6fdd8cbde6b7c4ff85c20aaca0fd8741">MQTT_GetDisconnectPacketSize</a>( &packetSize );</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the disconnect into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a6aae40d4656eb533a74b67bf9c827d3b">MQTT_SerializeDisconnect</a>( &fixedBuffer );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The disconnect packet can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a6aae40d4656eb533a74b67bf9c827d3b"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a6aae40d4656eb533a74b67bf9c827d3b">MQTT_SerializeDisconnect</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializeDisconnect(const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT DISCONNECT packet into the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2341</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a015562f30e220d2534f773bfa45a5cfe" name="a015562f30e220d2534f773bfa45a5cfe"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a015562f30e220d2534f773bfa45a5cfe">◆ </a></span>MQTT_GetPingreqPacketSize()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetPingreqPacketSize </td>
|
|
<td>(</td>
|
|
<td class="paramtype">size_t * </td>
|
|
<td class="paramname"><em>pPacketSize</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the size of an MQTT PINGREQ packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketSize</td><td>The size of the MQTT PINGREQ packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if pPacketSize is NULL.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><span class="keywordtype">size_t</span> packetSize = 0;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the size requirement for the ping request packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a015562f30e220d2534f773bfa45a5cfe">MQTT_GetPingreqPacketSize</a>( &packetSize );</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize == 2 );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// The application should allocate or use a static #MQTTFixedBuffer_t of</span></div>
|
|
<div class="line"><span class="comment">// size >= 2 to serialize the ping request.</span></div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a015562f30e220d2534f773bfa45a5cfe"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a015562f30e220d2534f773bfa45a5cfe">MQTT_GetPingreqPacketSize</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetPingreqPacketSize(size_t *pPacketSize)</div><div class="ttdoc">Get the size of an MQTT PINGREQ packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2384</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="af3b3e40858fd984c871511e02a61e15d" name="af3b3e40858fd984c871511e02a61e15d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af3b3e40858fd984c871511e02a61e15d">◆ </a></span>MQTT_SerializePingreq()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_SerializePingreq </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> * </td>
|
|
<td class="paramname"><em>pFixedBuffer</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Serialize an MQTT PINGREQ packet into the given buffer. </p>
|
|
<p>The input <a class="el" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636" title="Size of buffer.">MQTTFixedBuffer_t.size</a> must be at least as large as the size returned by <a class="el" href="core__mqtt__serializer_8h.html#a015562f30e220d2534f773bfa45a5cfe" title="Get the size of an MQTT PINGREQ packet.">MQTT_GetPingreqPacketSize</a>.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pFixedBuffer</td><td>Buffer for packet serialization.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a> if pFixedBuffer is too small to hold the MQTT packet; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if invalid parameters are passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_fixed_buffer__t.html">MQTTFixedBuffer_t</a> fixedBuffer;</div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"> </div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#acea147448e044870fb36b7fa2347dbd6">pBuffer</a> = buffer;</div>
|
|
<div class="line">fixedBuffer.<a class="code hl_variable" href="struct_m_q_t_t_fixed_buffer__t.html#a0b0b6a93cc62751ebeb03095d5431636">size</a> = BUFFER_SIZE;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Get the ping request packet size.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a015562f30e220d2534f773bfa45a5cfe">MQTT_GetPingreqPacketSize</a>( &packetSize );</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( packetSize <= BUFFER_SIZE );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Serialize the ping request into the fixed buffer.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#af3b3e40858fd984c871511e02a61e15d">MQTT_SerializePingreq</a>( &fixedBuffer );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> <span class="comment">// The ping request can now be sent to the broker.</span></div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_af3b3e40858fd984c871511e02a61e15d"><div class="ttname"><a href="core__mqtt__serializer_8h.html#af3b3e40858fd984c871511e02a61e15d">MQTT_SerializePingreq</a></div><div class="ttdeci">MQTTStatus_t MQTT_SerializePingreq(const MQTTFixedBuffer_t *pFixedBuffer)</div><div class="ttdoc">Serialize an MQTT PINGREQ packet into the given buffer.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2404</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a4c2aec031f31d0fe55c1cda46544e95a" name="a4c2aec031f31d0fe55c1cda46544e95a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4c2aec031f31d0fe55c1cda46544e95a">◆ </a></span>MQTT_DeserializePublish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_DeserializePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t * </td>
|
|
<td class="paramname"><em>pPacketId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * </td>
|
|
<td class="paramname"><em>pPublishInfo</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize an MQTT PUBLISH packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIncomingPacket</td><td><a class="el" href="struct_m_q_t_t_packet_info__t.html" title="MQTT incoming packet parameters.">MQTTPacketInfo_t</a> containing the buffer. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketId</td><td>The packet ID obtained from the buffer. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPublishInfo</td><td>Struct containing information about the publish.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// TransportRecv_t function for reading from the network.</span></div>
|
|
<div class="line">int32_t socket_recv(</div>
|
|
<div class="line"> <a class="code hl_typedef" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> * pNetworkContext,</div>
|
|
<div class="line"> <span class="keywordtype">void</span> * pBuffer,</div>
|
|
<div class="line"> <span class="keywordtype">size_t</span> bytesToRecv</div>
|
|
<div class="line">);</div>
|
|
<div class="line"><span class="comment">// Some context to be used with the above transport receive function.</span></div>
|
|
<div class="line"><a class="code hl_typedef" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> networkContext;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Other variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> incomingPacket;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> publishInfo = { 0 };</div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line"> </div>
|
|
<div class="line">int32_t bytesRecvd;</div>
|
|
<div class="line"><span class="comment">// A buffer to hold remaining data of the incoming packet.</span></div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Populate all fields of the incoming packet.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a98cdda86f86a0a1888745a584199e930">MQTT_GetIncomingPacketTypeAndLength</a>(</div>
|
|
<div class="line"> socket_recv,</div>
|
|
<div class="line"> &networkContext,</div>
|
|
<div class="line"> &incomingPacket</div>
|
|
<div class="line">);</div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line">assert( incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8">remainingLength</a> <= BUFFER_SIZE );</div>
|
|
<div class="line">bytesRecvd = socket_recv(</div>
|
|
<div class="line"> &networkContext,</div>
|
|
<div class="line"> ( <span class="keywordtype">void</span> * ) buffer,</div>
|
|
<div class="line"> incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8">remainingLength</a></div>
|
|
<div class="line">);</div>
|
|
<div class="line">incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#ac66cedff052bc844ec9b296387df60bc">pRemainingData</a> = buffer;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Deserialize the publish information if the incoming packet is a publish.</span></div>
|
|
<div class="line"><span class="keywordflow">if</span>( ( incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7fef40548c1aa0f0e7f812a6a7243758">type</a> & 0xF0 ) == <a class="code hl_define" href="group__mqtt__constants.html#ga5b2d79c61f2591c8e5772f974826d4ad">MQTT_PACKET_TYPE_PUBLISH</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a4c2aec031f31d0fe55c1cda46544e95a">MQTT_DeserializePublish</a>( &incomingPacket, &packetId, &publishInfo );</div>
|
|
<div class="line"> <span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">// The deserialized publish information can now be used from `publishInfo`.</span></div>
|
|
<div class="line"> }</div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a4c2aec031f31d0fe55c1cda46544e95a"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a4c2aec031f31d0fe55c1cda46544e95a">MQTT_DeserializePublish</a></div><div class="ttdeci">MQTTStatus_t MQTT_DeserializePublish(const MQTTPacketInfo_t *pIncomingPacket, uint16_t *pPacketId, MQTTPublishInfo_t *pPublishInfo)</div><div class="ttdoc">Deserialize an MQTT PUBLISH packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2447</div></div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_a98cdda86f86a0a1888745a584199e930"><div class="ttname"><a href="core__mqtt__serializer_8h.html#a98cdda86f86a0a1888745a584199e930">MQTT_GetIncomingPacketTypeAndLength</a></div><div class="ttdeci">MQTTStatus_t MQTT_GetIncomingPacketTypeAndLength(TransportRecv_t readFunc, NetworkContext_t *pNetworkContext, MQTTPacketInfo_t *pIncomingPacket)</div><div class="ttdoc">Extract the MQTT packet type and length from incoming packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2561</div></div>
|
|
<div class="ttc" id="agroup__mqtt__constants_html_ga5b2d79c61f2591c8e5772f974826d4ad"><div class="ttname"><a href="group__mqtt__constants.html#ga5b2d79c61f2591c8e5772f974826d4ad">MQTT_PACKET_TYPE_PUBLISH</a></div><div class="ttdeci">#define MQTT_PACKET_TYPE_PUBLISH</div><div class="ttdoc">PUBLISH (bidirectional).</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:55</div></div>
|
|
<div class="ttc" id="agroup__mqtt__struct__types_html_ga7769e434e7811caed8cd6fd7f9ec26ec"><div class="ttname"><a href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a></div><div class="ttdeci">struct NetworkContext NetworkContext_t</div><div class="ttdoc">The NetworkContext is an incomplete type. An implementation of this interface must define struct Netw...</div><div class="ttdef"><b>Definition:</b> transport_interface.h:191</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_packet_info__t_html"><div class="ttname"><a href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a></div><div class="ttdoc">MQTT incoming packet parameters.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:244</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_packet_info__t_html_a7c85becf08de0ec9776dd4be1fcc4bf8"><div class="ttname"><a href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8">MQTTPacketInfo_t::remainingLength</a></div><div class="ttdeci">size_t remainingLength</div><div class="ttdoc">Length of remaining serialized data.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:258</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_packet_info__t_html_a7fef40548c1aa0f0e7f812a6a7243758"><div class="ttname"><a href="struct_m_q_t_t_packet_info__t.html#a7fef40548c1aa0f0e7f812a6a7243758">MQTTPacketInfo_t::type</a></div><div class="ttdeci">uint8_t type</div><div class="ttdoc">Type of incoming MQTT packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:248</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_packet_info__t_html_ac66cedff052bc844ec9b296387df60bc"><div class="ttname"><a href="struct_m_q_t_t_packet_info__t.html#ac66cedff052bc844ec9b296387df60bc">MQTTPacketInfo_t::pRemainingData</a></div><div class="ttdeci">uint8_t * pRemainingData</div><div class="ttdoc">Remaining serialized data in the MQTT packet.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:253</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="ae9971855df71edf94124116e0625bf18" name="ae9971855df71edf94124116e0625bf18"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae9971855df71edf94124116e0625bf18">◆ </a></span>MQTT_DeserializeAck()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_DeserializeAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t * </td>
|
|
<td class="paramname"><em>pPacketId</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool * </td>
|
|
<td class="paramname"><em>pSessionPresent</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Deserialize an MQTT CONNACK, SUBACK, UNSUBACK, PUBACK, PUBREC, PUBREL, PUBCOMP, or PINGRESP. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIncomingPacket</td><td><a class="el" href="struct_m_q_t_t_packet_info__t.html" title="MQTT incoming packet parameters.">MQTTPacketInfo_t</a> containing the buffer. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pPacketId</td><td>The packet ID of obtained from the buffer. Not used in CONNACK or PINGRESP. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pSessionPresent</td><td>Boolean flag from a CONNACK indicating present session.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca25a3d1747e308e99daa805fe576f84b9">MQTTServerRefused</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// Variables used in this example.</span></div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> incomingPacket;</div>
|
|
<div class="line"><span class="comment">// Used for SUBACK, UNSUBACK, PUBACK, PUBREC, PUBREL, and PUBCOMP.</span></div>
|
|
<div class="line">uint16_t packetId;</div>
|
|
<div class="line"><span class="comment">// Used for CONNACK.</span></div>
|
|
<div class="line"><span class="keywordtype">bool</span> sessionPresent;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Receive an incoming packet and populate all fields. The details are out of scope</span></div>
|
|
<div class="line"><span class="comment">// for this example.</span></div>
|
|
<div class="line">receiveIncomingPacket( &incomingPacket );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Deserialize ack information if the incoming packet is not a publish.</span></div>
|
|
<div class="line"><span class="keywordflow">if</span>( ( incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7fef40548c1aa0f0e7f812a6a7243758">type</a> & 0xF0 ) != <a class="code hl_define" href="group__mqtt__constants.html#ga5b2d79c61f2591c8e5772f974826d4ad">MQTT_PACKET_TYPE_PUBLISH</a> )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#ae9971855df71edf94124116e0625bf18">MQTT_DeserializeAck</a>( &incomingPacket, &packetId, &sessionPresent );</div>
|
|
<div class="line"> <span class="keywordflow">if</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> )</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">// The packet ID or session present flag information is available. For</span></div>
|
|
<div class="line"> <span class="comment">// ping response packets, the only information is the status code.</span></div>
|
|
<div class="line"> }</div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt__serializer_8h_html_ae9971855df71edf94124116e0625bf18"><div class="ttname"><a href="core__mqtt__serializer_8h.html#ae9971855df71edf94124116e0625bf18">MQTT_DeserializeAck</a></div><div class="ttdeci">MQTTStatus_t MQTT_DeserializeAck(const MQTTPacketInfo_t *pIncomingPacket, uint16_t *pPacketId, bool *pSessionPresent)</div><div class="ttdoc">Deserialize an MQTT CONNACK, SUBACK, UNSUBACK, PUBACK, PUBREC, PUBREL, PUBCOMP, or PINGRESP.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.c:2484</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a98cdda86f86a0a1888745a584199e930" name="a98cdda86f86a0a1888745a584199e930"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a98cdda86f86a0a1888745a584199e930">◆ </a></span>MQTT_GetIncomingPacketTypeAndLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_GetIncomingPacketTypeAndLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__callback__types.html#ga227df31d6daf07e5d833537c12130167">TransportRecv_t</a> </td>
|
|
<td class="paramname"><em>readFunc</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> * </td>
|
|
<td class="paramname"><em>pNetworkContext</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Extract the MQTT packet type and length from incoming packet. </p>
|
|
<p>This function must be called for every incoming packet to retrieve the <a class="el" href="struct_m_q_t_t_packet_info__t.html#a7fef40548c1aa0f0e7f812a6a7243758" title="Type of incoming MQTT packet.">MQTTPacketInfo_t.type</a> and <a class="el" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8" title="Length of remaining serialized data.">MQTTPacketInfo_t.remainingLength</a>. A <a class="el" href="struct_m_q_t_t_packet_info__t.html" title="MQTT incoming packet parameters.">MQTTPacketInfo_t</a> is not valid until this routine has been invoked.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">readFunc</td><td>Transport layer read function pointer. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pNetworkContext</td><td>The network context pointer provided by the application. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pIncomingPacket</td><td>Pointer to <a class="el" href="struct_m_q_t_t_packet_info__t.html" title="MQTT incoming packet parameters.">MQTTPacketInfo_t</a> structure. This is where type, remaining length and packet identifier are stored.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> on successful extraction of type and length, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if <code>pIncomingPacket</code> is invalid, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa14bc8aa4ad218702d782366945d43ac">MQTTRecvFailed</a> on transport receive failure, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if an invalid packet is read, and <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca676f21c0ddf297ae3ec874bc829aa957">MQTTNoDataAvailable</a> if there is nothing to read.</dd></dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// TransportRecv_t function for reading from the network.</span></div>
|
|
<div class="line">int32_t socket_recv(</div>
|
|
<div class="line"> <a class="code hl_typedef" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> * pNetworkContext,</div>
|
|
<div class="line"> <span class="keywordtype">void</span> * pBuffer,</div>
|
|
<div class="line"> <span class="keywordtype">size_t</span> bytesToRecv</div>
|
|
<div class="line">);</div>
|
|
<div class="line"><span class="comment">// Some context to be used with above transport receive function.</span></div>
|
|
<div class="line"><a class="code hl_typedef" href="group__mqtt__struct__types.html#ga7769e434e7811caed8cd6fd7f9ec26ec">NetworkContext_t</a> networkContext;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Struct to hold the incoming packet information.</span></div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> incomingPacket;</div>
|
|
<div class="line"><a class="code hl_enumeration" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> status = <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>;</div>
|
|
<div class="line">int32_t bytesRecvd;</div>
|
|
<div class="line"><span class="comment">// Buffer to hold the remaining data of the incoming packet.</span></div>
|
|
<div class="line">uint8_t buffer[ BUFFER_SIZE ];</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Loop until data is available to be received.</span></div>
|
|
<div class="line"><span class="keywordflow">do</span>{</div>
|
|
<div class="line"> status = <a class="code hl_function" href="core__mqtt__serializer_8h.html#a98cdda86f86a0a1888745a584199e930">MQTT_GetIncomingPacketTypeAndLength</a>(</div>
|
|
<div class="line"> socket_recv,</div>
|
|
<div class="line"> &networkContext,</div>
|
|
<div class="line"> &incomingPacket</div>
|
|
<div class="line"> );</div>
|
|
<div class="line">} <span class="keywordflow">while</span>( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca676f21c0ddf297ae3ec874bc829aa957">MQTTNoDataAvailable</a> );</div>
|
|
<div class="line"> </div>
|
|
<div class="line">assert( status == <a class="code hl_enumvalue" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> );</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Receive the rest of the incoming packet.</span></div>
|
|
<div class="line">assert( incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8">remainingLength</a> <= BUFFER_SIZE );</div>
|
|
<div class="line">bytesRecvd = socket_recv(</div>
|
|
<div class="line"> &networkContext,</div>
|
|
<div class="line"> ( <span class="keywordtype">void</span> * ) buffer,</div>
|
|
<div class="line"> incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8">remainingLength</a></div>
|
|
<div class="line">);</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Set the remaining data field.</span></div>
|
|
<div class="line">incomingPacket.<a class="code hl_variable" href="struct_m_q_t_t_packet_info__t.html#ac66cedff052bc844ec9b296387df60bc">pRemainingData</a> = buffer;</div>
|
|
<div class="ttc" id="agroup__mqtt__enum__types_html_ggaba7ec045874a1c3432f99173367f735ca676f21c0ddf297ae3ec874bc829aa957"><div class="ttname"><a href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca676f21c0ddf297ae3ec874bc829aa957">MQTTNoDataAvailable</a></div><div class="ttdeci">@ MQTTNoDataAvailable</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:95</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a94fd3f746074b3f6e16ae6b23dad9a28" name="a94fd3f746074b3f6e16ae6b23dad9a28"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a94fd3f746074b3f6e16ae6b23dad9a28">◆ </a></span>MQTT_ProcessIncomingPacketTypeAndLength()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#gaba7ec045874a1c3432f99173367f735c">MQTTStatus_t</a> MQTT_ProcessIncomingPacketTypeAndLength </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const uint8_t * </td>
|
|
<td class="paramname"><em>pBuffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const size_t * </td>
|
|
<td class="paramname"><em>pIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_packet_info__t.html">MQTTPacketInfo_t</a> * </td>
|
|
<td class="paramname"><em>pIncomingPacket</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Extract the MQTT packet type and length from incoming packet. </p>
|
|
<p>This function must be called for every incoming packet to retrieve the <a class="el" href="struct_m_q_t_t_packet_info__t.html#a7fef40548c1aa0f0e7f812a6a7243758" title="Type of incoming MQTT packet.">MQTTPacketInfo_t.type</a> and <a class="el" href="struct_m_q_t_t_packet_info__t.html#a7c85becf08de0ec9776dd4be1fcc4bf8" title="Length of remaining serialized data.">MQTTPacketInfo_t.remainingLength</a>. A <a class="el" href="struct_m_q_t_t_packet_info__t.html" title="MQTT incoming packet parameters.">MQTTPacketInfo_t</a> is not valid until this routine has been invoked.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pBuffer</td><td>The buffer holding the raw data to be processed </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pIndex</td><td>Pointer to the index within the buffer to marking the end of raw data available. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pIncomingPacket</td><td>Structure used to hold the fields of the incoming packet.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> on successful extraction of type and length, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa39030c93b0263b2699502a074f003b5">MQTTBadParameter</a> if <code>pIncomingPacket</code> is invalid, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if an invalid packet is read, and <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca676f21c0ddf297ae3ec874bc829aa957">MQTTNoDataAvailable</a> if there is nothing to read. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html">source</a></li><li class="navelem"><a class="el" href="core__mqtt__serializer_8c.html">core_mqtt_serializer.c</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|