mirror of
https://github.com/FreeRTOS/coreMQTT
synced 2025-05-12 21:35:41 +08:00
1372 lines
85 KiB
HTML
1372 lines
85 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_state.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__state_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="#func-members">Functions</a> |
|
|
<a href="#var-members">Variables</a> </div>
|
|
<div class="headertitle"><div class="title">core_mqtt_state.c File Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Implements the functions in <a class="el" href="core__mqtt__state_8h.html" title="Function to keep state of MQTT PUBLISH packet deliveries.">core_mqtt_state.h</a>.
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <assert.h></code><br />
|
|
<code>#include <string.h></code><br />
|
|
<code>#include "<a class="el" href="core__mqtt__state_8h_source.html">core_mqtt_state.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:a49d2236ebe2b3d27e82e54a7b9e74984"><td class="memItemLeft" align="right" valign="top"><a id="a49d2236ebe2b3d27e82e54a7b9e74984" name="a49d2236ebe2b3d27e82e54a7b9e74984"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><b>MQTT_INVALID_STATE_COUNT</b>   ( ~<a class="el" href="core__mqtt__state_8c.html#ab93bbb754488b23d5ac75abcd385e086">ZERO_SIZE_T</a> )</td></tr>
|
|
<tr class="memdesc:a49d2236ebe2b3d27e82e54a7b9e74984"><td class="mdescLeft"> </td><td class="mdescRight">This macro depicts the invalid value for the state publishes. <br /></td></tr>
|
|
<tr class="separator:a49d2236ebe2b3d27e82e54a7b9e74984"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a50892214c51968df798f584272f16a17"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>(position)   ( ( uint16_t ) 0x01U << ( ( uint16_t ) position ) )</td></tr>
|
|
<tr class="memdesc:a50892214c51968df798f584272f16a17"><td class="mdescLeft"> </td><td class="mdescRight">Create a 16-bit bitmap with bit set at specified position. <br /></td></tr>
|
|
<tr class="separator:a50892214c51968df798f584272f16a17"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:acd96521b31682b7d93de544704fd9594"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#acd96521b31682b7d93de544704fd9594">UINT16_SET_BIT</a>(x, position)   ( ( x ) = ( uint16_t ) ( ( x ) | ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) ) )</td></tr>
|
|
<tr class="memdesc:acd96521b31682b7d93de544704fd9594"><td class="mdescLeft"> </td><td class="mdescRight">Set a bit in an 16-bit unsigned integer. <br /></td></tr>
|
|
<tr class="separator:acd96521b31682b7d93de544704fd9594"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a085ab1307745f304ce2e6d24bdc3f6a7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a085ab1307745f304ce2e6d24bdc3f6a7">UINT16_CHECK_BIT</a>(x, position)   ( ( ( x ) & ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) ) == ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) )</td></tr>
|
|
<tr class="memdesc:a085ab1307745f304ce2e6d24bdc3f6a7"><td class="mdescLeft"> </td><td class="mdescRight">Macro for checking if a bit is set in a 16-bit unsigned integer. <br /></td></tr>
|
|
<tr class="separator:a085ab1307745f304ce2e6d24bdc3f6a7"><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:aad1473b9a2d46be62c3e80dd3524af9d"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#aad1473b9a2d46be62c3e80dd3524af9d">validateTransitionPublish</a> (<a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> currentState, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> newState, MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos)</td></tr>
|
|
<tr class="memdesc:aad1473b9a2d46be62c3e80dd3524af9d"><td class="mdescLeft"> </td><td class="mdescRight">Test if a transition to new state is possible, when dealing with PUBLISHes. <br /></td></tr>
|
|
<tr class="separator:aad1473b9a2d46be62c3e80dd3524af9d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac85ca8874163b399b7f8e5e17d3c5872"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#ac85ca8874163b399b7f8e5e17d3c5872">validateTransitionAck</a> (<a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> currentState, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> newState)</td></tr>
|
|
<tr class="memdesc:ac85ca8874163b399b7f8e5e17d3c5872"><td class="mdescLeft"> </td><td class="mdescRight">Test if a transition to a new state is possible, when dealing with acks. <br /></td></tr>
|
|
<tr class="separator:ac85ca8874163b399b7f8e5e17d3c5872"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aaf9d4c6e766e40189ff7b68ffea40aa0"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#aaf9d4c6e766e40189ff7b68ffea40aa0">isPublishOutgoing</a> (<a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> packetType, MQTTStateOperation_t opType)</td></tr>
|
|
<tr class="memdesc:aaf9d4c6e766e40189ff7b68ffea40aa0"><td class="mdescLeft"> </td><td class="mdescRight">Test if the publish corresponding to an ack is outgoing or incoming. <br /></td></tr>
|
|
<tr class="separator:aaf9d4c6e766e40189ff7b68ffea40aa0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac805558ac65e84ea9111ce70c873e59e"><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#ac805558ac65e84ea9111ce70c873e59e">findInRecord</a> (const <a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> *records, size_t recordCount, uint16_t packetId, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> *pQos, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> *pCurrentState)</td></tr>
|
|
<tr class="memdesc:ac805558ac65e84ea9111ce70c873e59e"><td class="mdescLeft"> </td><td class="mdescRight">Find a packet ID in the state record. <br /></td></tr>
|
|
<tr class="separator:ac805558ac65e84ea9111ce70c873e59e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6cd7b86de2ddb125fee886d58d1a5fd4"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a6cd7b86de2ddb125fee886d58d1a5fd4">compactRecords</a> (<a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> *records, size_t recordCount)</td></tr>
|
|
<tr class="memdesc:a6cd7b86de2ddb125fee886d58d1a5fd4"><td class="mdescLeft"> </td><td class="mdescRight">Compact records. <br /></td></tr>
|
|
<tr class="separator:a6cd7b86de2ddb125fee886d58d1a5fd4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5d0ffdfde0c38a1cc1d4e3f4750a8cc4"><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__state_8c.html#a5d0ffdfde0c38a1cc1d4e3f4750a8cc4">addRecord</a> (<a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> *records, size_t recordCount, uint16_t packetId, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> publishState)</td></tr>
|
|
<tr class="memdesc:a5d0ffdfde0c38a1cc1d4e3f4750a8cc4"><td class="mdescLeft"> </td><td class="mdescRight">Store a new entry in the state record. <br /></td></tr>
|
|
<tr class="separator:a5d0ffdfde0c38a1cc1d4e3f4750a8cc4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a819c7c72087621fcf97a028bff02759e"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a819c7c72087621fcf97a028bff02759e">updateRecord</a> (<a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> *records, size_t recordIndex, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> newState, bool shouldDelete)</td></tr>
|
|
<tr class="memdesc:a819c7c72087621fcf97a028bff02759e"><td class="mdescLeft"> </td><td class="mdescRight">Update and possibly delete an entry in the state record. <br /></td></tr>
|
|
<tr class="separator:a819c7c72087621fcf97a028bff02759e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:adfc09b0c75d5de09cd73650f944699c0"><td class="memItemLeft" align="right" valign="top">static uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#adfc09b0c75d5de09cd73650f944699c0">stateSelect</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, uint16_t searchStates, <a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> *pCursor)</td></tr>
|
|
<tr class="memdesc:adfc09b0c75d5de09cd73650f944699c0"><td class="mdescLeft"> </td><td class="mdescRight">Get the packet ID and index of an outgoing publish in specified states. <br /></td></tr>
|
|
<tr class="separator:adfc09b0c75d5de09cd73650f944699c0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a174a91b9491a344d6fb4f0b39189392f"><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__state_8c.html#a174a91b9491a344d6fb4f0b39189392f">updateStateAck</a> (<a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> *records, size_t maxRecordCount, size_t recordIndex, uint16_t packetId, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> currentState, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> newState)</td></tr>
|
|
<tr class="memdesc:a174a91b9491a344d6fb4f0b39189392f"><td class="mdescLeft"> </td><td class="mdescRight">Update the state records for an ACK after state transition validations. <br /></td></tr>
|
|
<tr class="separator:a174a91b9491a344d6fb4f0b39189392f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa0550584e3733da2e31c9478b9307b49"><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__state_8c.html#aa0550584e3733da2e31c9478b9307b49">updateStatePublish</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, size_t recordIndex, uint16_t packetId, MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> currentState, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> newState)</td></tr>
|
|
<tr class="memdesc:aa0550584e3733da2e31c9478b9307b49"><td class="mdescLeft"> </td><td class="mdescRight">Update the state record for a PUBLISH packet after validating the state transitions. <br /></td></tr>
|
|
<tr class="separator:aa0550584e3733da2e31c9478b9307b49"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0cad28e34f03b84aff43ee243ce8e2cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a0cad28e34f03b84aff43ee243ce8e2cf">MQTT_CalculateStateAck</a> (<a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> packetType, MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos)</td></tr>
|
|
<tr class="memdesc:a0cad28e34f03b84aff43ee243ce8e2cf"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the state from a PUBACK, PUBREC, PUBREL, or PUBCOMP. <br /></td></tr>
|
|
<tr class="separator:a0cad28e34f03b84aff43ee243ce8e2cf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a43bc5d82716e1d8b6e167ec0fe50de5d"><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__state_8c.html#a43bc5d82716e1d8b6e167ec0fe50de5d">MQTT_ReserveState</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, uint16_t packetId, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos)</td></tr>
|
|
<tr class="memdesc:a43bc5d82716e1d8b6e167ec0fe50de5d"><td class="mdescLeft"> </td><td class="mdescRight">Reserve an entry for an outgoing QoS 1 or Qos 2 publish. <br /></td></tr>
|
|
<tr class="separator:a43bc5d82716e1d8b6e167ec0fe50de5d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aadc4fdd8af74ac25b848a33e916bff50"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#aadc4fdd8af74ac25b848a33e916bff50">MQTT_CalculateStatePublish</a> (MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos)</td></tr>
|
|
<tr class="memdesc:aadc4fdd8af74ac25b848a33e916bff50"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the new state for a publish from its qos and operation type. <br /></td></tr>
|
|
<tr class="separator:aadc4fdd8af74ac25b848a33e916bff50"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad657bd67745c66bc50f0441b4cc94763"><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__state_8c.html#ad657bd67745c66bc50f0441b4cc94763">MQTT_UpdateStatePublish</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, uint16_t packetId, MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> qos, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> *pNewState)</td></tr>
|
|
<tr class="memdesc:ad657bd67745c66bc50f0441b4cc94763"><td class="mdescLeft"> </td><td class="mdescRight">Update the state record for a PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:ad657bd67745c66bc50f0441b4cc94763"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aef2c13cffbbd5c71183282e69ac9d799"><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__state_8c.html#aef2c13cffbbd5c71183282e69ac9d799">MQTT_RemoveStateRecord</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, uint16_t packetId)</td></tr>
|
|
<tr class="memdesc:aef2c13cffbbd5c71183282e69ac9d799"><td class="mdescLeft"> </td><td class="mdescRight">Remove the state record for a PUBLISH packet. <br /></td></tr>
|
|
<tr class="separator:aef2c13cffbbd5c71183282e69ac9d799"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a09a013b709085ffd51faa33c067cce1f"><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__state_8c.html#a09a013b709085ffd51faa33c067cce1f">MQTT_UpdateStateAck</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, uint16_t packetId, <a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> packetType, MQTTStateOperation_t opType, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> *pNewState)</td></tr>
|
|
<tr class="memdesc:a09a013b709085ffd51faa33c067cce1f"><td class="mdescLeft"> </td><td class="mdescRight">Update the state record for an ACKed publish. <br /></td></tr>
|
|
<tr class="separator:a09a013b709085ffd51faa33c067cce1f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae58ade262ec01262687554b349b2fdf5"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#ae58ade262ec01262687554b349b2fdf5">MQTT_PubrelToResend</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, <a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> *pCursor, <a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> *pState)</td></tr>
|
|
<tr class="memdesc:ae58ade262ec01262687554b349b2fdf5"><td class="mdescLeft"> </td><td class="mdescRight">Get the packet ID of next pending PUBREL ack to be resent. <br /></td></tr>
|
|
<tr class="separator:ae58ade262ec01262687554b349b2fdf5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a44b3cf50dc477a9f97413a9238a961f6"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a44b3cf50dc477a9f97413a9238a961f6">MQTT_PublishToResend</a> (const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> *pMqttContext, <a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> *pCursor)</td></tr>
|
|
<tr class="memdesc:a44b3cf50dc477a9f97413a9238a961f6"><td class="mdescLeft"> </td><td class="mdescRight">Get the packet ID of next pending publish to be resent. <br /></td></tr>
|
|
<tr class="separator:a44b3cf50dc477a9f97413a9238a961f6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a53d786203ca4d5d5630a9eb3dd4cddae"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="core__mqtt__state_8c.html#a53d786203ca4d5d5630a9eb3dd4cddae">MQTT_State_strerror</a> (<a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> state)</td></tr>
|
|
<tr class="memdesc:a53d786203ca4d5d5630a9eb3dd4cddae"><td class="mdescLeft"> </td><td class="mdescRight">State to string conversion for state engine. <br /></td></tr>
|
|
<tr class="separator:a53d786203ca4d5d5630a9eb3dd4cddae"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
|
Variables</h2></td></tr>
|
|
<tr class="memitem:ab93bbb754488b23d5ac75abcd385e086"><td class="memItemLeft" align="right" valign="top"><a id="ab93bbb754488b23d5ac75abcd385e086" name="ab93bbb754488b23d5ac75abcd385e086"></a>
|
|
static const size_t </td><td class="memItemRight" valign="bottom"><b>ZERO_SIZE_T</b> = 0U</td></tr>
|
|
<tr class="memdesc:ab93bbb754488b23d5ac75abcd385e086"><td class="mdescLeft"> </td><td class="mdescRight">A global static variable used to generate the macro <a class="el" href="core__mqtt__state_8c.html#a49d2236ebe2b3d27e82e54a7b9e74984" title="This macro depicts the invalid value for the state publishes.">MQTT_INVALID_STATE_COUNT</a> of size_t length. <br /></td></tr>
|
|
<tr class="separator:ab93bbb754488b23d5ac75abcd385e086"><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 functions in <a class="el" href="core__mqtt__state_8h.html" title="Function to keep state of MQTT PUBLISH packet deliveries.">core_mqtt_state.h</a>. </p>
|
|
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="a50892214c51968df798f584272f16a17" name="a50892214c51968df798f584272f16a17"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a50892214c51968df798f584272f16a17">◆ </a></span>UINT16_BITMAP_BIT_SET_AT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define UINT16_BITMAP_BIT_SET_AT</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">position</td><td>)</td>
|
|
<td>   ( ( uint16_t ) 0x01U << ( ( uint16_t ) position ) )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Create a 16-bit bitmap with bit set at specified position. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>The position at which the bit need to be set. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="acd96521b31682b7d93de544704fd9594" name="acd96521b31682b7d93de544704fd9594"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acd96521b31682b7d93de544704fd9594">◆ </a></span>UINT16_SET_BIT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define UINT16_SET_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 ) = ( uint16_t ) ( ( x ) | ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) ) )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Set a bit in an 16-bit unsigned integer. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>The 16-bit unsigned integer to set a bit. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">position</td><td>The position at which the bit need to be set. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a085ab1307745f304ce2e6d24bdc3f6a7" name="a085ab1307745f304ce2e6d24bdc3f6a7"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a085ab1307745f304ce2e6d24bdc3f6a7">◆ </a></span>UINT16_CHECK_BIT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define UINT16_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 ) & ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) ) == ( <a class="el" href="core__mqtt__state_8c.html#a50892214c51968df798f584272f16a17">UINT16_BITMAP_BIT_SET_AT</a>( position ) ) )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Macro for checking if a bit is set in a 16-bit unsigned integer. </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 16-bit integer 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>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="aad1473b9a2d46be62c3e80dd3524af9d" name="aad1473b9a2d46be62c3e80dd3524af9d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aad1473b9a2d46be62c3e80dd3524af9d">◆ </a></span>validateTransitionPublish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static bool validateTransitionPublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>currentState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>newState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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></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>Test if a transition to new state is possible, when dealing with PUBLISHes. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">currentState</td><td>The current state. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">newState</td><td>State to transition to. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Reserve, Send, or Receive. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>0, 1, or 2.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section note"><dt>Note</dt><dd>This function does not validate the current state, or the new state based on either the operation type or QoS. It assumes the new state is valid given the opType and QoS, which will be the case if calculated by <a class="el" href="core__mqtt__state_8c.html#aadc4fdd8af74ac25b848a33e916bff50" title="Calculate the new state for a publish from its qos and operation type.">MQTT_CalculateStatePublish()</a>.</dd></dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if transition is possible, else <code>false</code> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac85ca8874163b399b7f8e5e17d3c5872" name="ac85ca8874163b399b7f8e5e17d3c5872"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac85ca8874163b399b7f8e5e17d3c5872">◆ </a></span>validateTransitionAck()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static bool validateTransitionAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>currentState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>newState</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>Test if a transition to a new state is possible, when dealing with acks. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">currentState</td><td>The current state. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">newState</td><td>State to transition to.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if transition is possible, else <code>false</code>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aaf9d4c6e766e40189ff7b68ffea40aa0" name="aaf9d4c6e766e40189ff7b68ffea40aa0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aaf9d4c6e766e40189ff7b68ffea40aa0">◆ </a></span>isPublishOutgoing()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static bool isPublishOutgoing </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> </td>
|
|
<td class="paramname"><em>packetType</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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>Test if the publish corresponding to an ack is outgoing or incoming. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetType</td><td>PUBACK, PUBREC, PUBREL, or PUBCOMP. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send, or Receive.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if corresponds to outgoing publish, else <code>false</code>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac805558ac65e84ea9111ce70c873e59e" name="ac805558ac65e84ea9111ce70c873e59e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac805558ac65e84ea9111ce70c873e59e">◆ </a></span>findInRecord()</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 findInRecord </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> * </td>
|
|
<td class="paramname"><em>records</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordCount</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"><a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> * </td>
|
|
<td class="paramname"><em>pQos</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> * </td>
|
|
<td class="paramname"><em>pCurrentState</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>Find a packet ID in the state record. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">records</td><td>State record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordCount</td><td>Length of record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>packet ID to search for. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pQos</td><td>QoS retrieved from record. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pCurrentState</td><td>state retrieved from record.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>index of the packet id in the record if it exists, else the record length. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6cd7b86de2ddb125fee886d58d1a5fd4" name="a6cd7b86de2ddb125fee886d58d1a5fd4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6cd7b86de2ddb125fee886d58d1a5fd4">◆ </a></span>compactRecords()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void compactRecords </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> * </td>
|
|
<td class="paramname"><em>records</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordCount</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>Compact records. </p>
|
|
<p>Records are arranged in the relative order to maintain message ordering. This will lead to fragmentation and this function will help in defragmenting the records array.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">records</td><td>State record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordCount</td><td>Length of record array. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5d0ffdfde0c38a1cc1d4e3f4750a8cc4" name="a5d0ffdfde0c38a1cc1d4e3f4750a8cc4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5d0ffdfde0c38a1cc1d4e3f4750a8cc4">◆ </a></span>addRecord()</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> addRecord </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> * </td>
|
|
<td class="paramname"><em>records</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordCount</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"><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"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>publishState</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>Store a new entry in the state record. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">records</td><td>State record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordCount</td><td>Length of record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>Packet ID of new entry. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>QoS of new entry. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">publishState</td><td>State of new entry.</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#ggaba7ec045874a1c3432f99173367f735cab1be4db832a0468f024243bca151a8df">MQTTNoMemory</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca8d05b92240dea6df08eab5a9e3799c11">MQTTStateCollision</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a819c7c72087621fcf97a028bff02759e" name="a819c7c72087621fcf97a028bff02759e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a819c7c72087621fcf97a028bff02759e">◆ </a></span>updateRecord()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static void updateRecord </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> * </td>
|
|
<td class="paramname"><em>records</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordIndex</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>newState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">bool </td>
|
|
<td class="paramname"><em>shouldDelete</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>Update and possibly delete an entry in the state record. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">records</td><td>State record array. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordIndex</td><td>index of record to update. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">newState</td><td>New state to update. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">shouldDelete</td><td>Whether an existing entry should be deleted. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="adfc09b0c75d5de09cd73650f944699c0" name="adfc09b0c75d5de09cd73650f944699c0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#adfc09b0c75d5de09cd73650f944699c0">◆ </a></span>stateSelect()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">static uint16_t stateSelect </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint16_t </td>
|
|
<td class="paramname"><em>searchStates</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> * </td>
|
|
<td class="paramname"><em>pCursor</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>Get the packet ID and index of an outgoing publish in specified states. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">searchStates</td><td>The states to search for in 2-byte bit map. </td></tr>
|
|
<tr><td class="paramdir">[in,out]</td><td class="paramname">pCursor</td><td>Index at which to start searching.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Packet ID of the outgoing publish. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a174a91b9491a344d6fb4f0b39189392f" name="a174a91b9491a344d6fb4f0b39189392f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a174a91b9491a344d6fb4f0b39189392f">◆ </a></span>updateStateAck()</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> updateStateAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="struct_m_q_t_t_pub_ack_info__t.html">MQTTPubAckInfo_t</a> * </td>
|
|
<td class="paramname"><em>records</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>maxRecordCount</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordIndex</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"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>currentState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>newState</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>Update the state records for an ACK after state transition validations. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">records</td><td>State records pointer. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">maxRecordCount</td><td>The maximum number of records. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordIndex</td><td>Index at which the record is stored. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>Packet id of the packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">currentState</td><td>Current state of the publish record. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">newState</td><td>New state 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#ggaba7ec045874a1c3432f99173367f735ca67905d7a05f98faa557a73eb5092bd8f">MQTTIllegalState</a>, or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aa0550584e3733da2e31c9478b9307b49" name="aa0550584e3733da2e31c9478b9307b49"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa0550584e3733da2e31c9478b9307b49">◆ </a></span>updateStatePublish()</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> updateStatePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">size_t </td>
|
|
<td class="paramname"><em>recordIndex</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">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>currentState</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>newState</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>Update the state record for a PUBLISH packet after validating the state transitions. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">recordIndex</td><td>Index in state records at which publish record exists. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>ID of the PUBLISH packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send or Receive. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>0, 1, or 2. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">currentState</td><td>Current state of the publish record. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">newState</td><td>New state of the publish record.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca67905d7a05f98faa557a73eb5092bd8f">MQTTIllegalState</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca8d05b92240dea6df08eab5a9e3799c11">MQTTStateCollision</a> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a0cad28e34f03b84aff43ee243ce8e2cf" name="a0cad28e34f03b84aff43ee243ce8e2cf"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0cad28e34f03b84aff43ee243ce8e2cf">◆ </a></span>MQTT_CalculateStateAck()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> MQTT_CalculateStateAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> </td>
|
|
<td class="paramname"><em>packetType</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Calculate the state from a PUBACK, PUBREC, PUBREL, or PUBCOMP. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetType</td><td>PUBACK, PUBREC, PUBREL, or PUBCOMP. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send or Receive. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>1 or 2.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The calculated state. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a43bc5d82716e1d8b6e167ec0fe50de5d" name="a43bc5d82716e1d8b6e167ec0fe50de5d"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a43bc5d82716e1d8b6e167ec0fe50de5d">◆ </a></span>MQTT_ReserveState()</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_ReserveState </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</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"><a class="el" href="group__mqtt__enum__types.html#gae308a5928d7f537379c29a894228093a">MQTTQoS_t</a> </td>
|
|
<td class="paramname"><em>qos</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Reserve an entry for an outgoing QoS 1 or Qos 2 publish. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>The ID of the publish packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>1 or 2.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>MQTTSuccess, MQTTNoMemory, or MQTTStateCollision. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aadc4fdd8af74ac25b848a33e916bff50" name="aadc4fdd8af74ac25b848a33e916bff50"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aadc4fdd8af74ac25b848a33e916bff50">◆ </a></span>MQTT_CalculateStatePublish()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> MQTT_CalculateStatePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Calculate the new state for a publish from its qos and operation type. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send or Receive. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>0, 1, or 2.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The calculated state. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad657bd67745c66bc50f0441b4cc94763" name="ad657bd67745c66bc50f0441b4cc94763"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad657bd67745c66bc50f0441b4cc94763">◆ </a></span>MQTT_UpdateStatePublish()</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_UpdateStatePublish </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</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">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</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"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> * </td>
|
|
<td class="paramname"><em>pNewState</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Update the state record for a PUBLISH packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>ID of the PUBLISH packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send or Receive. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">qos</td><td>0, 1, or 2. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pNewState</td><td>Updated state 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#ggaba7ec045874a1c3432f99173367f735ca67905d7a05f98faa557a73eb5092bd8f">MQTTIllegalState</a>, <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca8d05b92240dea6df08eab5a9e3799c11">MQTTStateCollision</a> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aef2c13cffbbd5c71183282e69ac9d799" name="aef2c13cffbbd5c71183282e69ac9d799"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aef2c13cffbbd5c71183282e69ac9d799">◆ </a></span>MQTT_RemoveStateRecord()</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_RemoveStateRecord </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</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>Remove the state record for a PUBLISH packet. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>ID of the 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> or <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a>. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a09a013b709085ffd51faa33c067cce1f" name="a09a013b709085ffd51faa33c067cce1f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a09a013b709085ffd51faa33c067cce1f">◆ </a></span>MQTT_UpdateStateAck()</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_UpdateStateAck </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</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"><a class="el" href="group__mqtt__enum__types.html#ga8c1bee959b3ed5fab2a2688dd72bf237">MQTTPubAckType_t</a> </td>
|
|
<td class="paramname"><em>packetType</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">MQTTStateOperation_t </td>
|
|
<td class="paramname"><em>opType</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> * </td>
|
|
<td class="paramname"><em>pNewState</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Update the state record for an ACKed publish. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetId</td><td>ID of the ack packet. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">packetType</td><td>PUBACK, PUBREC, PUBREL, or PUBCOMP. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">opType</td><td>Send or Receive. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pNewState</td><td>Updated state 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> if an invalid parameter is passed; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735caa5d7507e7664a14d63a8bc44b280093e">MQTTBadResponse</a> if the packet from the network is not found in the records; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca67905d7a05f98faa557a73eb5092bd8f">MQTTIllegalState</a> if the requested update would result in an illegal transition; <a class="el" href="group__mqtt__enum__types.html#ggaba7ec045874a1c3432f99173367f735ca484e062cb4f3fccc1858dd25cfeee056">MQTTSuccess</a> otherwise. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae58ade262ec01262687554b349b2fdf5" name="ae58ade262ec01262687554b349b2fdf5"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae58ade262ec01262687554b349b2fdf5">◆ </a></span>MQTT_PubrelToResend()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint16_t MQTT_PubrelToResend </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> * </td>
|
|
<td class="paramname"><em>pCursor</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> * </td>
|
|
<td class="paramname"><em>pState</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the packet ID of next pending PUBREL ack to be resent. </p>
|
|
<p>This function will need to be called to get the packet for which a PUBREL need to be sent when a session is reestablished. Calling this function repeatedly until packet id is 0 will give all the packets for which a PUBREL need to be resent in the correct order.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in,out]</td><td class="paramname">pCursor</td><td>Index at which to start searching. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">pState</td><td>State indicating that PUBREL packet need to be sent. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a44b3cf50dc477a9f97413a9238a961f6" name="a44b3cf50dc477a9f97413a9238a961f6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a44b3cf50dc477a9f97413a9238a961f6">◆ </a></span>MQTT_PublishToResend()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint16_t MQTT_PublishToResend </td>
|
|
<td>(</td>
|
|
<td class="paramtype">const <a class="el" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * </td>
|
|
<td class="paramname"><em>pMqttContext</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> * </td>
|
|
<td class="paramname"><em>pCursor</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Get the packet ID of next pending publish to be resent. </p>
|
|
<p>This function will need to be called to get the packet for which a publish need to be sent when a session is reestablished. Calling this function repeatedly until packet id is 0 will give all the packets for which a publish need to be resent in the correct order.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">pMqttContext</td><td>Initialized MQTT context. </td></tr>
|
|
<tr><td class="paramdir">[in,out]</td><td class="paramname">pCursor</td><td>Index at which to start searching.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="comment">// For this example assume this function returns an outgoing unacknowledged</span></div>
|
|
<div class="line"><span class="comment">// QoS 1 or 2 publish from its packet identifier.</span></div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * getPublish( uint16_t packetID );</div>
|
|
<div class="line"> </div>
|
|
<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_typedef" href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a> cursor = <a class="code hl_define" href="group__mqtt__constants.html#ga666ad78e7eaaffa51f5cab96201a9476">MQTT_STATE_CURSOR_INITIALIZER</a>;</div>
|
|
<div class="line"><span class="keywordtype">bool</span> sessionPresent;</div>
|
|
<div class="line">uint16_t packetID;</div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_publish_info__t.html">MQTTPublishInfo_t</a> * pResendPublish = NULL;</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"> </div>
|
|
<div class="line"><span class="comment">// This is assumed to have been initialized before the call to MQTT_Connect().</span></div>
|
|
<div class="line"><a class="code hl_struct" href="struct_m_q_t_t_context__t.html">MQTTContext_t</a> * pContext;</div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Set clean session to false to attempt session resumption.</span></div>
|
|
<div class="line">connectInfo.<a class="code hl_variable" href="struct_m_q_t_t_connect_info__t.html#a606e7765c4f2215fb2bf630f6eb9ff6b">cleanSession</a> = <span class="keyword">false</span>;</div>
|
|
<div class="line">connectInfo.<a class="code hl_variable" href="struct_m_q_t_t_connect_info__t.html#a010f8f6993cbf8899648d5c515ff7884">pClientIdentifier</a> = <span class="stringliteral">"someClientID"</span>;</div>
|
|
<div class="line">connectInfo.<a class="code hl_variable" href="struct_m_q_t_t_connect_info__t.html#a8077ef36ab318f3d35bee6f098fa54d4">clientIdentifierLength</a> = strlen( connectInfo.<a class="code hl_variable" href="struct_m_q_t_t_connect_info__t.html#a010f8f6993cbf8899648d5c515ff7884">pClientIdentifier</a> );</div>
|
|
<div class="line">connectInfo.<a class="code hl_variable" href="struct_m_q_t_t_connect_info__t.html#a7d05d53261732ebdfbb9ee665a347591">keepAliveSeconds</a> = 60;</div>
|
|
<div class="line"><span class="comment">// Optional connect parameters are not relevant to this example.</span></div>
|
|
<div class="line"> </div>
|
|
<div class="line"><span class="comment">// Create an MQTT connection. Use 100 milliseconds as a timeout.</span></div>
|
|
<div class="line">status = <a class="code hl_function" href="core__mqtt_8h.html#aed1e4dc123a8ba79ac569cb17c69bfa0">MQTT_Connect</a>( pContext, &connectInfo, NULL, 100, &sessionPresent );</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="keywordflow">if</span>( sessionPresent )</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">// Loop while packet ID is nonzero.</span></div>
|
|
<div class="line"> <span class="keywordflow">while</span>( ( packetID = <a class="code hl_function" href="core__mqtt__state_8h.html#a44b3cf50dc477a9f97413a9238a961f6">MQTT_PublishToResend</a>( pContext, &cursor ) ) != 0 )</div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">// Assume this function will succeed.</span></div>
|
|
<div class="line"> pResendPublish = getPublish( packetID );</div>
|
|
<div class="line"> <span class="comment">// Set DUP flag.</span></div>
|
|
<div class="line"> pResendPublish-><a class="code hl_variable" href="struct_m_q_t_t_publish_info__t.html#aa1c8954e83bfa678d1ff5429679d4e89">dup</a> = <span class="keyword">true</span>;</div>
|
|
<div class="line"> status = <a class="code hl_function" href="core__mqtt_8h.html#a1d8217e9d30fb2aed002060a8c97c63e">MQTT_Publish</a>( pContext, pResendPublish, 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">// Application can decide how to handle a failure.</span></div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> }</div>
|
|
<div class="line"> <span class="keywordflow">else</span></div>
|
|
<div class="line"> {</div>
|
|
<div class="line"> <span class="comment">// The broker did not resume a session, so we can clean up the</span></div>
|
|
<div class="line"> <span class="comment">// list of outgoing publishes.</span></div>
|
|
<div class="line"> }</div>
|
|
<div class="line">}</div>
|
|
<div class="ttc" id="acore__mqtt_8h_html_a1d8217e9d30fb2aed002060a8c97c63e"><div class="ttname"><a href="core__mqtt_8h.html#a1d8217e9d30fb2aed002060a8c97c63e">MQTT_Publish</a></div><div class="ttdeci">MQTTStatus_t MQTT_Publish(MQTTContext_t *pContext, const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId)</div><div class="ttdoc">Publishes a message to the given topic name.</div><div class="ttdef"><b>Definition:</b> core_mqtt.c:2805</div></div>
|
|
<div class="ttc" id="acore__mqtt_8h_html_aed1e4dc123a8ba79ac569cb17c69bfa0"><div class="ttname"><a href="core__mqtt_8h.html#aed1e4dc123a8ba79ac569cb17c69bfa0">MQTT_Connect</a></div><div class="ttdeci">MQTTStatus_t MQTT_Connect(MQTTContext_t *pContext, const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, uint32_t timeoutMs, bool *pSessionPresent)</div><div class="ttdoc">Establish an MQTT session.</div><div class="ttdef"><b>Definition:</b> core_mqtt.c:2679</div></div>
|
|
<div class="ttc" id="acore__mqtt__state_8h_html_a44b3cf50dc477a9f97413a9238a961f6"><div class="ttname"><a href="core__mqtt__state_8h.html#a44b3cf50dc477a9f97413a9238a961f6">MQTT_PublishToResend</a></div><div class="ttdeci">uint16_t MQTT_PublishToResend(const MQTTContext_t *pMqttContext, MQTTStateCursor_t *pCursor)</div><div class="ttdoc">Get the packet ID of next pending publish to be resent.</div><div class="ttdef"><b>Definition:</b> core_mqtt_state.c:1123</div></div>
|
|
<div class="ttc" id="agroup__mqtt__basic__types_html_ga2ca7d486d83fe555953a8c7876ee0d6e"><div class="ttname"><a href="group__mqtt__basic__types.html#ga2ca7d486d83fe555953a8c7876ee0d6e">MQTTStateCursor_t</a></div><div class="ttdeci">size_t MQTTStateCursor_t</div><div class="ttdoc">Cursor for iterating through state records.</div><div class="ttdef"><b>Definition:</b> core_mqtt_state.h:51</div></div>
|
|
<div class="ttc" id="agroup__mqtt__constants_html_ga666ad78e7eaaffa51f5cab96201a9476"><div class="ttname"><a href="group__mqtt__constants.html#ga666ad78e7eaaffa51f5cab96201a9476">MQTT_STATE_CURSOR_INITIALIZER</a></div><div class="ttdeci">#define MQTT_STATE_CURSOR_INITIALIZER</div><div class="ttdoc">Initializer value for an MQTTStateCursor_t, indicating a search should start at the beginning of a st...</div><div class="ttdef"><b>Definition:</b> core_mqtt_state.h:45</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_connect_info__t_html_a010f8f6993cbf8899648d5c515ff7884"><div class="ttname"><a href="struct_m_q_t_t_connect_info__t.html#a010f8f6993cbf8899648d5c515ff7884">MQTTConnectInfo_t::pClientIdentifier</a></div><div class="ttdeci">const char * pClientIdentifier</div><div class="ttdoc">MQTT client identifier. Must be unique per client.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:147</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_connect_info__t_html_a606e7765c4f2215fb2bf630f6eb9ff6b"><div class="ttname"><a href="struct_m_q_t_t_connect_info__t.html#a606e7765c4f2215fb2bf630f6eb9ff6b">MQTTConnectInfo_t::cleanSession</a></div><div class="ttdeci">bool cleanSession</div><div class="ttdoc">Whether to establish a new, clean session or resume a previous session.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:137</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_connect_info__t_html_a7d05d53261732ebdfbb9ee665a347591"><div class="ttname"><a href="struct_m_q_t_t_connect_info__t.html#a7d05d53261732ebdfbb9ee665a347591">MQTTConnectInfo_t::keepAliveSeconds</a></div><div class="ttdeci">uint16_t keepAliveSeconds</div><div class="ttdoc">MQTT keep alive period.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:142</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_connect_info__t_html_a8077ef36ab318f3d35bee6f098fa54d4"><div class="ttname"><a href="struct_m_q_t_t_connect_info__t.html#a8077ef36ab318f3d35bee6f098fa54d4">MQTTConnectInfo_t::clientIdentifierLength</a></div><div class="ttdeci">uint16_t clientIdentifierLength</div><div class="ttdoc">Length of the client identifier.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:152</div></div>
|
|
<div class="ttc" id="astruct_m_q_t_t_context__t_html"><div class="ttname"><a href="struct_m_q_t_t_context__t.html">MQTTContext_t</a></div><div class="ttdoc">A struct representing an MQTT connection.</div><div class="ttdef"><b>Definition:</b> core_mqtt.h:173</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 class="ttc" id="astruct_m_q_t_t_publish_info__t_html_aa1c8954e83bfa678d1ff5429679d4e89"><div class="ttname"><a href="struct_m_q_t_t_publish_info__t.html#aa1c8954e83bfa678d1ff5429679d4e89">MQTTPublishInfo_t::dup</a></div><div class="ttdeci">bool dup</div><div class="ttdoc">Whether this is a duplicate publish message.</div><div class="ttdef"><b>Definition:</b> core_mqtt_serializer.h:216</div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="a53d786203ca4d5d5630a9eb3dd4cddae" name="a53d786203ca4d5d5630a9eb3dd4cddae"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a53d786203ca4d5d5630a9eb3dd4cddae">◆ </a></span>MQTT_State_strerror()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">const char * MQTT_State_strerror </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__mqtt__enum__types.html#ga0480de7552eedd739a26a23fa8e6fd94">MQTTPublishState_t</a> </td>
|
|
<td class="paramname"><em>state</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>State to string conversion for state engine. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">state</td><td>The state to convert to a string.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The string representation of the state. </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__state_8c.html">core_mqtt_state.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>
|