]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - iotdev/awsiot.git/blobdiff - docs/html/aws__iot__shadow__interface_8h.html
removed all content, added redirect
[iotdev/awsiot.git] / docs / html / aws__iot__shadow__interface_8h.html
diff --git a/docs/html/aws__iot__shadow__interface_8h.html b/docs/html/aws__iot__shadow__interface_8h.html
deleted file mode 100644 (file)
index 5de2b45..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>AWSIoTCSDK: aws_iot_shadow_interface.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javaScript" src="search/search.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body onload='searchBox.OnSelectItem(0);'>
-<!-- Generated by Doxygen 1.7.2 -->
-<script type="text/javascript"><!--
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
---></script>
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li id="searchli">
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="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.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<h1>aws_iot_shadow_interface.h File Reference</h1>  </div>
-</div>
-<div class="contents">
-
-<p>Interface for thing shadow.  
-<a href="#_details">More...</a></p>
-<code>#include &quot;aws_iot_mqtt_interface.h&quot;</code><br/>
-<code>#include &quot;aws_iot_shadow_json_data.h&quot;</code><br/>
-<!-- startSectionHeader --><div class="dynheader">
-Include dependency graph for aws_iot_shadow_interface.h:<!-- endSectionHeader --></div>
-<!-- startSectionSummary --><!-- endSectionSummary --><!-- startSectionContent --><div class="dyncontent">
-<div class="center"><img src="aws__iot__shadow__interface_8h__incl.png" border="0" usemap="#aws__iot__shadow__interface_8h" alt=""/></div>
-<map name="aws__iot__shadow__interface_8h" id="aws__iot__shadow__interface_8h">
-</map>
-<!-- endSectionContent --></div>
-<!-- startSectionHeader --><div class="dynheader">
-This graph shows which files directly or indirectly include this file:<!-- endSectionHeader --></div>
-<!-- startSectionSummary --><!-- endSectionSummary --><!-- startSectionContent --><div class="dyncontent">
-<div class="center"><img src="aws__iot__shadow__interface_8h__dep__incl.png" border="0" usemap="#aws__iot__shadow__interface_8hdep" alt=""/></div>
-<map name="aws__iot__shadow__interface_8hdep" id="aws__iot__shadow__interface_8hdep">
-</map>
-<!-- endSectionContent --></div>
-
-<p><a href="aws__iot__shadow__interface_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structShadowParameters__t.html">ShadowParameters_t</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Shadow Connect parameters.  <a href="structShadowParameters__t.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a> )(const char *pThingName, <a class="el" href="aws__iot__shadow__interface_8h.html#a1fc9e025434023d44d33737f8b7c2a8c">ShadowActions_t</a> action, <a class="el" href="aws__iot__shadow__interface_8h.html#ad946163c2ac5df0aa896520949d47956">Shadow_Ack_Status_t</a> status, const char *pReceivedJsonDocument, void *pContextData)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function Pointer typedef used as the callback for every action.  <a href="#a3aa42acf96d7ca3039a196c94ca57445"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#ad946163c2ac5df0aa896520949d47956">Shadow_Ack_Status_t</a> { <b>SHADOW_ACK_TIMEOUT</b>, 
-<b>SHADOW_ACK_REJECTED</b>, 
-<b>SHADOW_ACK_ACCEPTED</b>
- }</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>Thing Shadow Acknowledgment enum. </p>
- <a href="aws__iot__shadow__interface_8h.html#ad946163c2ac5df0aa896520949d47956">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a1fc9e025434023d44d33737f8b7c2a8c">ShadowActions_t</a> { <b>SHADOW_GET</b>, 
-<b>SHADOW_UPDATE</b>, 
-<b>SHADOW_DELETE</b>
- }</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>Thing Shadow Action type enum. </p>
- <a href="aws__iot__shadow__interface_8h.html#a1fc9e025434023d44d33737f8b7c2a8c">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a79596d860d0f30ece4d2ee167784a2aa">aws_iot_shadow_init</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the Thing Shadow before use.  <a href="#a79596d860d0f30ece4d2ee167784a2aa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a2c923cc396a5e82f0c7d3468400fea2c">aws_iot_shadow_connect</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, <a class="el" href="structShadowParameters__t.html">ShadowParameters_t</a> *pParams)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the AWS IoT Thing Shadow service over MQTT.  <a href="#a2c923cc396a5e82f0c7d3468400fea2c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a0c5d153544c57027f0f802bf29376f87">aws_iot_shadow_yield</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, int timeout)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Yield function to let the background tasks of MQTT and Shadow.  <a href="#a0c5d153544c57027f0f802bf29376f87"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#afdd8ea8d0677badf06b2765b5ec27109">aws_iot_shadow_disconnect</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disconnect from the AWS IoT Thing Shadow service over MQTT.  <a href="#afdd8ea8d0677badf06b2765b5ec27109"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#ab762304e44b7315a39e9f1ed5462a498">aws_iot_shadow_update</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, const char *pThingName, char *pJsonString, <a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a> callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the one used to perform an Update action to a Thing Name's Shadow.  <a href="#ab762304e44b7315a39e9f1ed5462a498"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#adf3d2ab4117b6061aeb756a6ec639966">aws_iot_shadow_get</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, const char *pThingName, <a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a> callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the one used to perform an Get action to a Thing Name's Shadow.  <a href="#adf3d2ab4117b6061aeb756a6ec639966"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a826d6fd7d28b753d8cef2cc4ed717f7a">aws_iot_shadow_delete</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, const char *pThingName, <a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a> callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscriptions)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the one used to perform an Delete action to a Thing Name's Shadow.  <a href="#a826d6fd7d28b753d8cef2cc4ed717f7a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">IoT_Error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a2018994362d1ecc99af2151227d5bb41">aws_iot_shadow_register_delta</a> (<a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *pClient, <a class="el" href="structjsonStruct.html">jsonStruct_t</a> *pStruct)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to listen on the delta topic of <a class="el" href="aws__iot__config_8h.html#ae5283c01e3f612fd5eb92dbc3e446d38" title="Thing Name of the Shadow this device is associated with.">AWS_IOT_MY_THING_NAME</a> mentioned in the <a class="el" href="aws__iot__config_8h.html" title="AWS IoT specific configuration file.">aws_iot_config.h</a> file.  <a href="#a2018994362d1ecc99af2151227d5bb41"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a2885a09ae8254c80f9db61c50c3018ca">aws_iot_shadow_reset_last_received_version</a> (void)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the last received version number to zero. This will be useful if the Thing Shadow is deleted and would like to to reset the local version.  <a href="#a2885a09ae8254c80f9db61c50c3018ca"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a416a959f46ab39f97ca4e137e8d8ed71">aws_iot_shadow_get_last_received_version</a> (void)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Version of a document is received with every accepted/rejected and the SDK keeps track of the last received version of the JSON document of <a class="el" href="aws__iot__config_8h.html#ae5283c01e3f612fd5eb92dbc3e446d38" title="Thing Name of the Shadow this device is associated with.">AWS_IOT_MY_THING_NAME</a> shadow.  <a href="#a416a959f46ab39f97ca4e137e8d8ed71"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#a764d85d53cff3f15f8a3d8047002a487">aws_iot_shadow_enable_discard_old_delta_msgs</a> (void)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable the ignoring of delta messages with old version number.  <a href="#a764d85d53cff3f15f8a3d8047002a487"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af539707306365d92f333efdb5b4d0046"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_disable_discard_old_delta_msgs" ref="af539707306365d92f333efdb5b4d0046" args="(void)" -->
-void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="aws__iot__shadow__interface_8h.html#af539707306365d92f333efdb5b4d0046">aws_iot_shadow_disable_discard_old_delta_msgs</a> (void)</td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable the ignoring of delta messages with old version number. <br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>These are the functions and structs to manage/interact the Thing Shadow(in the cloud). This SDK will let you interact with your own thing shadow or any other shadow using its Thing Name. There are totally 3 actions a device can perform on the shadow - Get, Update and Delete.</p>
-<p>Currently the device should use MQTT/S underneath. In the future this will also support other protocols. As it supports MQTT, the shadow needs to connect and disconnect. It will also work on the pub/sub model. On performing any action, the acknowledgment will be received in either accepted or rejected. For Example: If we want to perform a GET on the thing shadow the following messages will be sent and received: 1. A MQTT Publish on the topic - $aws/things/{thingName}/shadow/get 2. Subscribe to MQTT topics - $aws/things/{thingName}/shadow/get/accepted and $aws/things/{thingName}/shadow/get/rejected. If the request was successful we will receive the things json document in the accepted topic. </p>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="a3aa42acf96d7ca3039a196c94ca57445"></a><!-- doxytag: member="aws_iot_shadow_interface.h::fpActionCallback_t" ref="a3aa42acf96d7ca3039a196c94ca57445" args=")(const char *pThingName, ShadowActions_t action, Shadow_Ack_Status_t status, const char *pReceivedJsonDocument, void *pContextData)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void(* <a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a>)(const char *pThingName, <a class="el" href="aws__iot__shadow__interface_8h.html#a1fc9e025434023d44d33737f8b7c2a8c">ShadowActions_t</a> action, <a class="el" href="aws__iot__shadow__interface_8h.html#ad946163c2ac5df0aa896520949d47956">Shadow_Ack_Status_t</a> status, const char *pReceivedJsonDocument, void *pContextData)</td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This function will be called from the context of <code><a class="el" href="aws__iot__shadow__interface_8h.html#a0c5d153544c57027f0f802bf29376f87" title="Yield function to let the background tasks of MQTT and Shadow.">aws_iot_shadow_yield()</a></code> context</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pThingName</td><td>Thing Name of the response received </td></tr>
-    <tr><td class="paramname">action</td><td>The response of the action </td></tr>
-    <tr><td class="paramname">status</td><td>Informs if the action was Accepted/Rejected or Timed out </td></tr>
-    <tr><td class="paramname">pReceivedJsonDocument</td><td>Received JSON document </td></tr>
-    <tr><td class="paramname">pContextData</td><td>the void* data passed in during the action call(update, get or delete) </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Enumeration Type Documentation</h2>
-<a class="anchor" id="ad946163c2ac5df0aa896520949d47956"></a><!-- doxytag: member="aws_iot_shadow_interface.h::Shadow_Ack_Status_t" ref="ad946163c2ac5df0aa896520949d47956" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="aws__iot__shadow__interface_8h.html#ad946163c2ac5df0aa896520949d47956">Shadow_Ack_Status_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This enum type is use in the callback for the action response </p>
-
-</div>
-</div>
-<a class="anchor" id="a1fc9e025434023d44d33737f8b7c2a8c"></a><!-- doxytag: member="aws_iot_shadow_interface.h::ShadowActions_t" ref="a1fc9e025434023d44d33737f8b7c2a8c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="aws__iot__shadow__interface_8h.html#a1fc9e025434023d44d33737f8b7c2a8c">ShadowActions_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This enum type is use in the callback for the action response </p>
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a2c923cc396a5e82f0c7d3468400fea2c"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_connect" ref="a2c923cc396a5e82f0c7d3468400fea2c" args="(MQTTClient_t *pClient, ShadowParameters_t *pParams)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_connect </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structShadowParameters__t.html">ShadowParameters_t</a> *&#160;</td>
-          <td class="paramname"> <em>pParams</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This function does the TLSv1.2 handshake and establishes the MQTT connection</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">pParams</td><td>Shadow Conenction parameters like TLS cert location </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed Connection </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a826d6fd7d28b753d8cef2cc4ed717f7a"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_delete" ref="a826d6fd7d28b753d8cef2cc4ed717f7a" args="(MQTTClient_t *pClient, const char *pThingName, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscriptions)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_delete </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname"> <em>pThingName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a>&#160;</td>
-          <td class="paramname"> <em>callback</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"> <em>pContextData</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">uint8_t&#160;</td>
-          <td class="paramname"> <em>timeout_seconds</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool&#160;</td>
-          <td class="paramname"> <em>isPersistentSubscriptions</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is not a very common use case for device. It is generally the responsibility of the accompanying app to do the delete. It is similar to the Update function internally except it does not take a JSON document as the input. The Thing Shadow referred by the ThingName will be deleted.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">pThingName</td><td>Thing Name of the Shadow that should be deleted </td></tr>
-    <tr><td class="paramname">callback</td><td>This is the callback that will be used to inform the caller of the response from the AWS IoT Shadow service.Callback could be set to NULL if response is not important </td></tr>
-    <tr><td class="paramname">pContextData</td><td>This is an extra parameter that could be passed along with the callback. It should be set to NULL if not used </td></tr>
-    <tr><td class="paramname">timeout_seconds</td><td>It is the time the SDK will wait for the response on either accepted/rejected before declaring timeout on the action </td></tr>
-    <tr><td class="paramname">isPersistentSubscribe</td><td>As mentioned above, every time if a device deletes the same Sahdow (JSON document) then this should be set to true to avoid repeated subscription and un-subscription. If the Thing Name is one off delete then this should be set to false </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed delete action </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="afdd8ea8d0677badf06b2765b5ec27109"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_disconnect" ref="afdd8ea8d0677badf06b2765b5ec27109" args="(MQTTClient_t *pClient)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_disconnect </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>&#160;)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This will close the underlying TCP connection, MQTT connection will also be closed</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed disconnect status </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a764d85d53cff3f15f8a3d8047002a487"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_enable_discard_old_delta_msgs" ref="a764d85d53cff3f15f8a3d8047002a487" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void aws_iot_shadow_enable_discard_old_delta_msgs </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname">&#160;)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>As we use MQTT underneath, there could be more than 1 of the same message if we use QoS 0. To avoid getting called for the same message, this functionality should be enabled. All the old message will be ignored </p>
-
-</div>
-</div>
-<a class="anchor" id="adf3d2ab4117b6061aeb756a6ec639966"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_get" ref="adf3d2ab4117b6061aeb756a6ec639966" args="(MQTTClient_t *pClient, const char *pThingName, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_get </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname"> <em>pThingName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a>&#160;</td>
-          <td class="paramname"> <em>callback</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"> <em>pContextData</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">uint8_t&#160;</td>
-          <td class="paramname"> <em>timeout_seconds</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool&#160;</td>
-          <td class="paramname"> <em>isPersistentSubscribe</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>One use of this function is usually to get the config of a device at boot up. It is similar to the Update function internally except it does not take a JSON document as the input. The entire JSON document will be sent over the accepted topic</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">pThingName</td><td>Thing Name of the JSON document that is needed </td></tr>
-    <tr><td class="paramname">callback</td><td>This is the callback that will be used to inform the caller of the response from the AWS IoT Shadow service.Callback could be set to NULL if response is not important </td></tr>
-    <tr><td class="paramname">pContextData</td><td>This is an extra parameter that could be passed along with the callback. It should be set to NULL if not used </td></tr>
-    <tr><td class="paramname">timeout_seconds</td><td>It is the time the SDK will wait for the response on either accepted/rejected before declaring timeout on the action </td></tr>
-    <tr><td class="paramname">isPersistentSubscribe</td><td>As mentioned above, every time if a device gets the same Sahdow (JSON document) then this should be set to true to avoid repeated subscription and un-subscription. If the Thing Name is one off get then this should be set to false </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed get action </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a416a959f46ab39f97ca4e137e8d8ed71"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_get_last_received_version" ref="a416a959f46ab39f97ca4e137e8d8ed71" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">uint32_t aws_iot_shadow_get_last_received_version </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname">&#160;)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>One exception to this version tracking is that, the SDK will ignore the version from update/accepted topic. Rest of the responses will be scanned to update the version number. Accepting version change for update/accepted may cause version conflicts for delta message if the update message is received before the delta.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>version number of the last received response </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a79596d860d0f30ece4d2ee167784a2aa"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_init" ref="a79596d860d0f30ece4d2ee167784a2aa" args="(MQTTClient_t *pClient)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_init </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>&#160;)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This function takes care of initializing the internal book-keeping data structures</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed Initialization </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a2018994362d1ecc99af2151227d5bb41"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_register_delta" ref="a2018994362d1ecc99af2151227d5bb41" args="(MQTTClient_t *pClient, jsonStruct_t *pStruct)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_register_delta </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structjsonStruct.html">jsonStruct_t</a> *&#160;</td>
-          <td class="paramname"> <em>pStruct</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Any time a delta is published the Json document will be delivered to the pStruct-&gt;cb. If you don't want the parsing done by the SDK then use the jsonStruct_t key set to "state". A good example of this is displayed in the sample_apps/shadow_console_echo.c</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">pStruct</td><td>The struct used to parse JSON value </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed delta registering </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a2885a09ae8254c80f9db61c50c3018ca"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_reset_last_received_version" ref="a2885a09ae8254c80f9db61c50c3018ca" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void aws_iot_shadow_reset_last_received_version </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname">&#160;)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl class="return"><dt><b>Returns:</b></dt><dd>no return values </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ab762304e44b7315a39e9f1ed5462a498"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_update" ref="ab762304e44b7315a39e9f1ed5462a498" args="(MQTTClient_t *pClient, const char *pThingName, char *pJsonString, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_update </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname"> <em>pThingName</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&#160;</td>
-          <td class="paramname"> <em>pJsonString</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="aws__iot__shadow__interface_8h.html#a3aa42acf96d7ca3039a196c94ca57445">fpActionCallback_t</a>&#160;</td>
-          <td class="paramname"> <em>callback</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"> <em>pContextData</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">uint8_t&#160;</td>
-          <td class="paramname"> <em>timeout_seconds</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">bool&#160;</td>
-          <td class="paramname"> <em>isPersistentSubscribe</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>update is one of the most frequently used functionality by a device. In most cases the device may be just reporting few params to update the thing shadow in the cloud Update Action if no callback or if the JSON document does not have a client token then will just publish the update and not track it.</p>
-<dl class="note"><dt><b>Note:</b></dt><dd>The update has to subscribe to two topics update/accepted and update/rejected. This function waits 2 seconds to ensure the subscriptions are registered before publishing the update message. The following steps are performed on using this function: 1. Subscribe to Shadow topics - $aws/things/{thingName}/shadow/update/accepted and $aws/things/{thingName}/shadow/update/rejected 2. wait for 2 seconds for the subscription to take effect 3. Publish on the update topic - $aws/things/{thingName}/shadow/update 4. In the <code><a class="el" href="aws__iot__shadow__interface_8h.html#a0c5d153544c57027f0f802bf29376f87" title="Yield function to let the background tasks of MQTT and Shadow.">aws_iot_shadow_yield()</a></code> function the response will be handled. In case of timeout or if the response is received, the subscription to shadow response topics are un-subscribed from. On the contrary if the persistent subscription is set to true then the un-subscribe will not be done. The topics will always be listened to</dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">pThingName</td><td>Thing Name of the shadow that needs to be Updated </td></tr>
-    <tr><td class="paramname">pJsonString</td><td>The update action expects a JSON document to sent. This JSON document should adhere to the AWS IoT Thing Shadow specification. To help in the process of creating this document- SDK provides apis in <code><a class="el" href="aws__iot__shadow__json__data_8h_source.html">aws_iot_shadow_json_data.h</a></code> </td></tr>
-    <tr><td class="paramname">callback</td><td>This is the callback that will be used to inform the caller of the response from the AWS IoT Shadow service.Callback could be set to NULL if response is not important </td></tr>
-    <tr><td class="paramname">pContextData</td><td>This is an extra parameter that could be passed along with the callback. It should be set to NULL if not used </td></tr>
-    <tr><td class="paramname">timeout_seconds</td><td>It is the time the SDK will wait for the response on either accepted/rejected before declaring timeout on the action </td></tr>
-    <tr><td class="paramname">isPersistentSubscribe</td><td>As mentioned above, every time if a device updates the same shadow then this should be set to true to avoid repeated subscription and unsubscription. If the Thing Name is one off update then this should be set to false </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed update action </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a0c5d153544c57027f0f802bf29376f87"></a><!-- doxytag: member="aws_iot_shadow_interface.h::aws_iot_shadow_yield" ref="a0c5d153544c57027f0f802bf29376f87" args="(MQTTClient_t *pClient, int timeout)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">IoT_Error_t aws_iot_shadow_yield </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structMQTTClient__t.html">MQTTClient_t</a> *&#160;</td>
-          <td class="paramname"> <em>pClient</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"> <em>timeout</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This function could be use in a separate thread waiting for the incoming messages, ensuring the connection is kept alive with the AWS Service. It also ensures the expired requests of Shadow actions are cleared and Timeout callback is executed. </p>
-<dl class="note"><dt><b>Note:</b></dt><dd>All callbacks ever used in the SDK will be executed in the context of this function.</dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pClient</td><td>MQTT Client used as the protocol layer </td></tr>
-    <tr><td class="paramname">timeout</td><td>in milliseconds, This is the maximum time the yield function will wait for a message and/or read the messages from the TLS buffer </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>An IoT Error Type defining successful/failed Yield </dd></dl>
-
-</div>
-</div>
-</div>
-<!--- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Defines</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<hr class="footer"/><address class="footer"><small>Generated on Tue Oct 6 2015 05:14:49 for AWSIoTCSDK by&#160;
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
-</body>
-</html>