<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?action=history&amp;feed=atom&amp;title=IoTGateway%2FAgentLite_RMM3.3</id>
		<title>IoTGateway/AgentLite RMM3.3 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://ess-wiki.advantech.com.tw/wiki/index.php?action=history&amp;feed=atom&amp;title=IoTGateway%2FAgentLite_RMM3.3"/>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;action=history"/>
		<updated>2026-05-21T08:21:34Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.28.3</generator>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12190&amp;oldid=prev</id>
		<title>Eric.liang at 05:46, 19 June 2018</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12190&amp;oldid=prev"/>
				<updated>2018-06-19T05:46:05Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:46, 19 June 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Introduction =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Introduction =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:AgentLite is a layer to define the topology and behavior of sensor network. A complete device represented in WiseSnail includes one virtual gateway, one sensor connectivity interface and several sensor devices. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;WiseSnail &lt;/del&gt;provides a form-like array which we call it infospec array to define tha parameters of sensor device. And a form-like data array updates your real time data. So, you can easy to represent your device by creating several arrays.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:AgentLite is a layer to define the topology and behavior of sensor network. A complete device represented in WiseSnail includes one virtual gateway, one sensor connectivity interface and several sensor devices. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;AgentLite &lt;/ins&gt;provides a form-like array which we call it infospec array to define tha parameters of sensor device. And a form-like data array updates your real time data. So, you can easy to represent your device by creating several arrays.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Design intention =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Design intention =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eric.liang</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12189&amp;oldid=prev</id>
		<title>Eric.liang at 05:45, 19 June 2018</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12189&amp;oldid=prev"/>
				<updated>2018-06-19T05:45:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:45, 19 June 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Introduction =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Introduction =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;WiseSnail is the short name of Wise Sensor Network Abstract Interactive Layer. It &lt;/del&gt;is a layer to define the topology and behavior of sensor network. A complete device represented in WiseSnail includes one virtual gateway, one sensor connectivity interface and several sensor devices. WiseSnail provides a form-like array which we call it infospec array to define tha parameters of sensor device. And a form-like data array updates your real time data. So, you can easy to represent your device by creating several arrays.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;AgentLite &lt;/ins&gt;is a layer to define the topology and behavior of sensor network. A complete device represented in WiseSnail includes one virtual gateway, one sensor connectivity interface and several sensor devices. WiseSnail provides a form-like array which we call it infospec array to define tha parameters of sensor device. And a form-like data array updates your real time data. So, you can easy to represent your device by creating several arrays.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Design intention =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Design intention =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eric.liang</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12188&amp;oldid=prev</id>
		<title>Eric.liang: Created page with &quot;= Introduction =  :WiseSnail is the short name of Wise Sensor Network Abstract Interactive Layer. It is a layer to define the topology and behavior of sensor network. A comple...&quot;</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IoTGateway/AgentLite_RMM3.3&amp;diff=12188&amp;oldid=prev"/>
				<updated>2018-06-19T05:32:05Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Introduction =  :WiseSnail is the short name of Wise Sensor Network Abstract Interactive Layer. It is a layer to define the topology and behavior of sensor network. A comple...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
:WiseSnail is the short name of Wise Sensor Network Abstract Interactive Layer. It is a layer to define the topology and behavior of sensor network. A complete device represented in WiseSnail includes one virtual gateway, one sensor connectivity interface and several sensor devices. WiseSnail provides a form-like array which we call it infospec array to define tha parameters of sensor device. And a form-like data array updates your real time data. So, you can easy to represent your device by creating several arrays.&lt;br /&gt;
&lt;br /&gt;
= Design intention =&lt;br /&gt;
&lt;br /&gt;
[[File:WiseSnail designintention.png|frameless|right|500px|WiseSnail designintention.png]]&lt;br /&gt;
&lt;br /&gt;
:We refer the data handle flow on Wise-PaaS to design a data layout like right picture. There are two arrays, interface and sensor device, to implement the behavior of gateway. Each variable array includes several tags. A tag is a variable to indicate the parameter on interface or sensor device. So, we have two register functions and assign into two arrays to generate tags.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hardware requirements =&lt;br /&gt;
&lt;br /&gt;
:'''CPU architecture'''&lt;br /&gt;
::&lt;br /&gt;
*x86&lt;br /&gt;
::*arm&lt;br /&gt;
:'''Minimum ram size'''&lt;br /&gt;
::&lt;br /&gt;
*256kb and above.&lt;br /&gt;
&lt;br /&gt;
= OS =&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
*Ubuntu ( 14.04,&amp;amp;nbsp;16.04 )&lt;br /&gt;
:*Yocto ( 1.5.3 Dora )&lt;br /&gt;
:*OpenWRT&lt;br /&gt;
&lt;br /&gt;
= External library dependency requirements =&lt;br /&gt;
&lt;br /&gt;
#[https://www.openssl.org/ OpenSSL]&lt;br /&gt;
#[http://www.eclipse.org/paho/ Paho]&lt;br /&gt;
#[https://mosquitto.org/ Mosquitto]&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
&lt;br /&gt;
:'''GitHub'''&amp;lt;br/&amp;gt;&lt;br /&gt;
::[https://github.com/ADVANTECH-Corp/WiseSnail.git https://github.com/ADVANTECH-Corp/WiseSnail.git]&lt;br /&gt;
:'''Source tree'''&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| inc&lt;br /&gt;
| header files&lt;br /&gt;
|-&lt;br /&gt;
| library&lt;br /&gt;
| includes [[IoTGateway/AdvJSON|AdvJSON]], AdvLog, WiseCore&lt;br /&gt;
|-&lt;br /&gt;
| sample&lt;br /&gt;
| a simple sample to test library.&lt;br /&gt;
|-&lt;br /&gt;
| source&lt;br /&gt;
| source files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configure =&lt;br /&gt;
&lt;br /&gt;
:'''Optional'''&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| --disable-paho&lt;br /&gt;
| Disable Paho support.&lt;br /&gt;
|-&lt;br /&gt;
| --disable-mosquitto&lt;br /&gt;
| Disable Mosquitto support.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Compile'''&amp;lt;br/&amp;gt;&lt;br /&gt;
::You can perform the following steps to build this library.&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
./configure&amp;lt;br/&amp;gt;'''Or'''&amp;lt;br/&amp;gt;./configure --host=&amp;amp;lt;your cross compiler&amp;amp;gt; --prefix=&amp;amp;lt;install path&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;make&amp;lt;br/&amp;gt;make install&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Compile script'''&amp;lt;br/&amp;gt;&lt;br /&gt;
::This script combines compile steps and version control handling.&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
./snailconf.sh&amp;lt;br/&amp;gt;'''Or'''&amp;lt;br/&amp;gt;./snailconf.sh --host=&amp;amp;lt;your cross compiler&amp;amp;gt; --prefix=&amp;amp;lt;install path&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Build sample'''&lt;br /&gt;
::Enter the folder of sample,and make it directly. You can change the MQTT library by editing makefile.&lt;br /&gt;
&lt;br /&gt;
= Capability =&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#define MAX_DEVICES 16     //The Maximum number of sensor device&lt;br /&gt;
#define MAX_ITEMS 16       //The Maximum number of sensor value&lt;br /&gt;
#define MAX_CMDS 16        //The Maximum number of command that can be processed in one second.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Structures =&lt;br /&gt;
&lt;br /&gt;
== Data Type ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| '''Description'''&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
We provide several types to describe the type of data.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
    WISE_VALUE  //for numeric value&lt;br /&gt;
    WISE_FLOAT  //for floating point&lt;br /&gt;
    WISE_STRING //for string&lt;br /&gt;
    WISE_BOOL   //for boolean&lt;br /&gt;
    WISE_CUSTOMIZE          //for a customize value, use the following type definition&lt;br /&gt;
        WISE_BASE64         // a base64 format data.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Infospec ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| '''Description'''&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
The infospec structure defines your parameters in sensor device. Those parameter structures will represented in Wise-Paas like a tag. It includes two callback function pointers. You can use the callback pointers to define your own get and set function. The button on Wise-Paas for GPIO will be differed from whether the set function is assigned or not. If the set function is assigned, the value is writable by users on Wise-Paas.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
    struct WiseSnail_InfoSpec{&lt;br /&gt;
      WiseSnail_DataType type;&lt;br /&gt;
      char *name;&lt;br /&gt;
      char *unit;&lt;br /&gt;
      union {&lt;br /&gt;
        float value;&lt;br /&gt;
        char *string;&lt;br /&gt;
        WiseSnail_RAW *raw;&lt;br /&gt;
      };&lt;br /&gt;
      float min;&lt;br /&gt;
      float max;&lt;br /&gt;
      char *resourcetype;&lt;br /&gt;
      WiseSnail_SetValue setValue;&lt;br /&gt;
      WiseSnail_GetValue getValue;&lt;br /&gt;
      WiseSnail_FormatType format;&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''Example'''&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      WISE_VALUE,                  //WiseSnail_DataType &lt;br /&gt;
      &amp;quot;Temperature&amp;quot;,               //name&lt;br /&gt;
      &amp;quot;Cel&amp;quot;,                       //unit&lt;br /&gt;
      0,                           //value or string&lt;br /&gt;
      -100,                        //min&lt;br /&gt;
      200,                         //max&lt;br /&gt;
      &amp;quot;ucum.Cel&amp;quot;,                  //resourcetype, optional&lt;br /&gt;
      NULL,                        //set function&lt;br /&gt;
      NULL                         //get function&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Data ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| '''Description'''&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
The data structure defines your value you want to update in sensor device. The cliendId and infomation is for internal used and will be assigned while your callback function(like set) is called.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
    struct WiseSnail_Data{&lt;br /&gt;
      WiseSnail_DataType type;&lt;br /&gt;
      char *name;&lt;br /&gt;
      union {&lt;br /&gt;
        float value;&lt;br /&gt;
        char *string;&lt;br /&gt;
        WiseSnail_RAW *raw;&lt;br /&gt;
      };&lt;br /&gt;
      WiseSnail_FormatType format;&lt;br /&gt;
      char *clientId;              //internal&lt;br /&gt;
      WiseSnail_InfoSpec *info;    //internal&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '''Example'''&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      WISE_VALUE,                  //WiseSnail_DataType &lt;br /&gt;
      &amp;quot;Temperature&amp;quot;,               //name&lt;br /&gt;
      100                          //value or string&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| '''Set Callback'''&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
  typedef int (*WiseSnail_SetValue)(WiseSnail_Data *data);&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''Get Callback'''&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
  typedef int (*WiseSnail_GetValue)(WiseSnail_Data *data);&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''Sleep callback'''&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
  typedef void (*WiseSnail_SleepOneSecond)(void);&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Functions =&lt;br /&gt;
&lt;br /&gt;
== Initial &amp;amp; Uninitial ==&lt;br /&gt;
&lt;br /&gt;
*'''WiseSnail_Init'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_Init'''(char *'''productionName''', char *'''wanIp''', unsigned char *'''parentMac''', WiseSnail_InfoSpec *'''infospec''', int '''count''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | productionName&lt;br /&gt;
| Name for device.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | wanIp&lt;br /&gt;
| Ip address.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | parentMac&lt;br /&gt;
| The mac address of parent device.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | infospec&lt;br /&gt;
| Optional parameter array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | count&lt;br /&gt;
| The size of infospec.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*'''WiseSnail_Uninit'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_Uninit'''();&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | None&lt;br /&gt;
| None&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Register ==&lt;br /&gt;
&lt;br /&gt;
*'''WiseSnail_RegisterInterface'''&lt;br /&gt;
&lt;br /&gt;
::One instance only includes one interface.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_RegisterInterface'''(char *'''ifMac''', char *'''ifName''', int '''ifNumber''', WiseSnail_InfoSpec *'''infospec''', int '''count''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | ifMac&lt;br /&gt;
| The mac address of interface.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ifName&lt;br /&gt;
| The name of interface.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ifNumber&lt;br /&gt;
| The index number of interface.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | infospec&lt;br /&gt;
| Interface parameter array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | count&lt;br /&gt;
| The size of infospec.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*'''WiseSnail_RegisterSensor'''&lt;br /&gt;
&lt;br /&gt;
::The maximum number of sensor devcie, please refer to MAX_DEVICES.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_RegisterSensor'''(char *'''deviceMac''', char *'''defaultName''', WiseSnail_InfoSpec *'''infospec''', int '''count''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | deviceMac&lt;br /&gt;
| The mac address of sensor device.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | defaultName&lt;br /&gt;
| The default name of sensor device.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | infospec&lt;br /&gt;
| Sensor device parameter array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | count&lt;br /&gt;
| The size of infospec.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Connect ==&lt;br /&gt;
&lt;br /&gt;
*'''WiseSnail_Connect'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| int '''WiseSnail_Connect'''(char *'''server_url''', int '''port''', char *'''username''', char *'''password''', WiseSnail_InfoSpec *'''infospec''', int '''count''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm;margin-right:0cm;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | server_url&lt;br /&gt;
| The address of mqtt broker.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | port&lt;br /&gt;
| The port of mqtt broker.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | username&lt;br /&gt;
| The username of mqtt broker.(&amp;quot;&amp;quot; for none)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | password&lt;br /&gt;
| The password of mqtt broker.(&amp;quot;&amp;quot; for none)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | infospec&lt;br /&gt;
| Connect parameter array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | count&lt;br /&gt;
| The size of infospec.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
*'''WiseSnail_Update'''&lt;br /&gt;
&lt;br /&gt;
::You can update your data from this function by assigning a data array.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_Update'''(char *'''deviceMac''', WiseSnail_Data* '''data''', int '''count''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | deviceMac&lt;br /&gt;
| The mac of device which you will update.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | data&lt;br /&gt;
| Data array.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | count&lt;br /&gt;
| The size of data.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== Main Handle Loop function ==&lt;br /&gt;
&lt;br /&gt;
*'''WiseSnail_MainLoop'''&lt;br /&gt;
&lt;br /&gt;
::This is a very important function. It includes main logic and error handling. The interval of sleepOneSec must be one second.&amp;lt;br/&amp;gt;&lt;br /&gt;
::You also can run an external timer, but this function must be executed per one second.&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| void '''WiseSnail_MainLoop'''(WiseSnail_SleepOneSecond '''sleepOneSec''');&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:0.847cm; margin-right:0cm&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=&amp;quot;40%&amp;quot; | sleepOneSec&lt;br /&gt;
| a callback function for sleep one second.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
= Sample&amp;lt;span style=&amp;quot;font-size:x-small&amp;quot;&amp;gt;(pseudo code)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WiseSnail_InfoSpec interface[] = {&lt;br /&gt;
		{&lt;br /&gt;
				WISE_BOOL,&lt;br /&gt;
				&amp;quot;/Info/reset&amp;quot;,&lt;br /&gt;
				&amp;quot;&amp;quot;,&lt;br /&gt;
				0,&lt;br /&gt;
				0,&lt;br /&gt;
				1,&lt;br /&gt;
				&amp;quot;&amp;quot;,&lt;br /&gt;
				Reset&lt;br /&gt;
		}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void SetGPIO_1(WiseSnail_Data*data) {&lt;br /&gt;
    printf(&amp;quot;(GPIO 1) = %d\r\n&amp;quot;,data-&amp;gt;value);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void SetGPIO_2(WiseSnail_Data*data) {&lt;br /&gt;
    printf(&amp;quot;(GPIO 2) = %d\r\n&amp;quot;,data-&amp;gt;value);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***********************CUSTOMIZE VALUE FOR BASE64*******************************/&lt;br /&gt;
char rawData[128] = &amp;quot;ABCDE&amp;quot;;&lt;br /&gt;
WiseSnail_RAW rawItem = {&lt;br /&gt;
    .data = rawData,&lt;br /&gt;
    .len = 5&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int SetRAW(WiseSnail_Data *data) {&lt;br /&gt;
    if(data-&amp;gt;type == WISE_CUSTOMIZE) {&lt;br /&gt;
        memcpy(&amp;amp;rawItem, data-&amp;gt;raw, sizeof(rawItem));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int GetRAW(WiseSnail_Data *data) {&lt;br /&gt;
    if(data-&amp;gt;type == WISE_CUSTOMIZE) {&lt;br /&gt;
        memcpy(data-&amp;gt;raw, &amp;amp;rawItem, sizeof(rawItem));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
/********************************************************************************/&lt;br /&gt;
&lt;br /&gt;
WiseSnail_InfoSpec infospec[] = {&lt;br /&gt;
		{&lt;br /&gt;
				WISE_STRING,&lt;br /&gt;
				&amp;quot;/Info/Name&amp;quot;,&lt;br /&gt;
				&amp;quot;&amp;quot;,&lt;br /&gt;
				.string = &amp;quot;SenHub1&amp;quot;,  // Device Name of SenHub (*) &lt;br /&gt;
				0,&lt;br /&gt;
				0,&lt;br /&gt;
				&amp;quot;&amp;quot;,&lt;br /&gt;
				//SetSHName,&lt;br /&gt;
				.getValue = GetSHName&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
				WISE_VALUE,			//type&lt;br /&gt;
				&amp;quot;Temperature&amp;quot;,	    //name&lt;br /&gt;
				&amp;quot;Cel&amp;quot;,				//unit&lt;br /&gt;
				0,				    //value[union]&lt;br /&gt;
				-100,				//min&lt;br /&gt;
				200,				//max&lt;br /&gt;
				&amp;quot;ucum.Cel&amp;quot;			//resourceType&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
				WISE_VALUE,			//type&lt;br /&gt;
				&amp;quot;Humidity&amp;quot;,			//name&lt;br /&gt;
				&amp;quot;%&amp;quot;,				//unit&lt;br /&gt;
				0,				    //value[union]&lt;br /&gt;
				0,				    //min&lt;br /&gt;
				100,				//max&lt;br /&gt;
				&amp;quot;ucum.%&amp;quot;			//resourceType&lt;br /&gt;
		},&lt;br /&gt;
                {&lt;br /&gt;
		        	WISE_IO_BOOL,&lt;br /&gt;
                        	&amp;quot;GPIO1&amp;quot;,&lt;br /&gt;
                        	&amp;quot;&amp;quot;,&lt;br /&gt;
                        	0,&lt;br /&gt;
                        	0,&lt;br /&gt;
                        	1,&lt;br /&gt;
                        	&amp;quot;&amp;quot;,&lt;br /&gt;
                        	SetGPIO_1&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                        	WISE_IO_BOOL,&lt;br /&gt;
                        	&amp;quot;GPIO2&amp;quot;,&lt;br /&gt;
                        	&amp;quot;&amp;quot;,&lt;br /&gt;
                        	0,&lt;br /&gt;
                        	0,&lt;br /&gt;
                        	1,&lt;br /&gt;
                        	&amp;quot;&amp;quot;,&lt;br /&gt;
                        	SetGPIO_2&lt;br /&gt;
		},&lt;br /&gt;
                {&lt;br /&gt;
                                WISE_CUSTOMIZE,&lt;br /&gt;
                                &amp;quot;RAW&amp;quot;,&lt;br /&gt;
                                &amp;quot;&amp;quot;,&lt;br /&gt;
                                .raw = &amp;amp;rawItem,&lt;br /&gt;
                                0,&lt;br /&gt;
                                1,&lt;br /&gt;
                                &amp;quot;&amp;quot;,&lt;br /&gt;
                                SetRAW,&lt;br /&gt;
                                GetRAW,&lt;br /&gt;
                                WISE_BASE64&lt;br /&gt;
		}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
WiseSnail_Data data[] = {&lt;br /&gt;
		{&lt;br /&gt;
				WISE_VALUE,			//type&lt;br /&gt;
				&amp;quot;Temperature&amp;quot;,			//name&lt;br /&gt;
				100				//value&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
				WISE_VALUE,			//type&lt;br /&gt;
				&amp;quot;Humidity&amp;quot;,			//name&lt;br /&gt;
				55				//value&lt;br /&gt;
		},&lt;br /&gt;
                {&lt;br /&gt;
                                WISE_CUSTOMIZE,&lt;br /&gt;
                                &amp;quot;RAW&amp;quot;,&lt;br /&gt;
                                .raw = &amp;amp;rawItem,&lt;br /&gt;
                                WISE_BASE64&lt;br /&gt;
		}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void sleepOneSecond() {&lt;br /&gt;
	sleep(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#define SERVER_ADDRESS &amp;quot;rmm.wise-paas.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
	//initial&lt;br /&gt;
	WiseSnail_Init(&amp;quot;IotGW&amp;quot;,NULL, NULL, NULL, 0);&lt;br /&gt;
	WiseSnail_RegisterInterface(&amp;quot;000E4CAB1234&amp;quot;, &amp;quot;Ethernet&amp;quot;, -1, interface, 1);&lt;br /&gt;
		&lt;br /&gt;
	if(WiseSnail_Connect(SERVER_ADDRESS, 1883, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, NULL, 0) == 0) {&lt;br /&gt;
		//&lt;br /&gt;
		// no succesful connection to broker&lt;br /&gt;
		//&lt;br /&gt;
		return -1;&lt;br /&gt;
	} else {&lt;br /&gt;
		WiseSnail_RegisterSensor(&amp;quot;000E4C000000&amp;quot;, &amp;quot;OnBoard&amp;quot;, infospec, sizeof(infospec)/sizeof(WiseSnail_InfoSpec));&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	int count = 0;&lt;br /&gt;
	int second = 0;&lt;br /&gt;
	for(;;) {&lt;br /&gt;
		if(second == 0) {&lt;br /&gt;
			/*HDC1050_GetSensorData(&amp;amp;Temperature, &amp;amp;Humidity);&lt;br /&gt;
			  data[0].value = Temperature;&lt;br /&gt;
			  data[1].value = Humidity;&lt;br /&gt;
			*/&lt;br /&gt;
				&lt;br /&gt;
			if(data[0].value &amp;lt; 100) {&lt;br /&gt;
				data[0].value++;&lt;br /&gt;
			} else {&lt;br /&gt;
				data[0].value = 0;&lt;br /&gt;
			}&lt;br /&gt;
				&lt;br /&gt;
			if(data[1].value &amp;lt; 100) {&lt;br /&gt;
				data[1].value++;&lt;br /&gt;
			} else {&lt;br /&gt;
				data[1].value = 0;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			printf(&amp;quot;\r\n****** \033[33mSend update.\033[0m ******\r\n&amp;quot;);&lt;br /&gt;
			WiseSnail_Update(&amp;quot;000E4C000000&amp;quot;, data, 2);&lt;br /&gt;
		count++;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		WiseSnail_MainLoop(sleepOneSecond);	&lt;br /&gt;
		second = (second+1)%5;&lt;br /&gt;
	}&lt;br /&gt;
	return 0; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Eric.liang</name></author>	</entry>

	</feed>