<!DOCTYPE html>
  
  
  
  
   <html class="no-js"> 

  <head lang="en-us">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    <title>XDK110 - Eclipse Mita</title>
    <meta name="generator" content="Hugo 0.42.1" />

    
    <meta name="description" content="The documentation of Eclipse Mita.">
    
    <link rel="canonical" href="../../platforms/xdk110/">
    

    <meta property="og:url" content="/platforms/xdk110/">
    <meta property="og:title" content="Eclipse Mita">
    <meta property="og:image" content="/images/mita.svg">
    <meta name="apple-mobile-web-app-title" content="Eclipse Mita">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

    <link rel="shortcut icon" type="image/x-icon" href="../../images/favicon.ico">
    <link rel="icon" type="image/x-icon" href="../../images/favicon.ico">

    <style>
      @font-face {
        font-family: 'Icon';
        src: url('/fonts/icon.eot');
        src: url('/fonts/icon.eot')
               format('embedded-opentype'),
             url('/mita/fonts/icon.woff')
               format('woff'),
             url('/mita/fonts/icon.ttf')
               format('truetype'),
             url('/fonts/icon.svg')
               format('svg');
        font-weight: normal;
        font-style: normal;
      }
    </style>

    <link rel="stylesheet" href="../../stylesheets/application.css">
    <link rel="stylesheet" href="../../stylesheets/temporary.css">
    <link rel="stylesheet" href="../../stylesheets/palettes.css">
    <link rel="stylesheet" href="../../stylesheets/highlight/highlight.css">

    
    
    
    <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Ubuntu:400,700|Ubuntu&#43;Mono">
    <style>
      body, input {
        font-family: 'Ubuntu', Helvetica, Arial, sans-serif;
      }
      pre, code {
        font-family: 'Ubuntu Mono', 'Courier New', 'Courier', monospace;
      }
    </style>

    
    <link rel="stylesheet" href="../../css/custom.css">
    
    <script src="../../javascripts/modernizr.js"></script>

    

  </head>
  <body class="palette-primary-blue-grey palette-accent-light-blue">




<div class="backdrop">
	<div class="backdrop-paper"></div>
</div>

<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>

<header class="header">
	<nav aria-label="Header">
  <div class="bar default">
    <div class="button button-menu" role="button" aria-label="Menu">
      <label class="toggle-button icon icon-menu" for="toggle-drawer">
        <span></span>
      </label>
    </div>
    <div class="stretch">
      <div class="title">
        XDK110
      </div>
    </div>

    
    <div class="button button-twitter" role="button" aria-label="Twitter">
       <a href="https://twitter.com/eclipse_mita" title="@eclipse_mita on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
    </div>
    

    
    <div class="button button-github" role="button" aria-label="GitHub">
      <a href="https://github.com/eclipse/mita" title="@eclipse/mita on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
    </div>
    
    
        
  </div>
  <div class="bar search">
    <div class="button button-close" role="button" aria-label="Close">
      <label class="toggle-button icon icon-back" for="toggle-search"></label>
    </div>
    <div class="stretch">
      <div class="field">
        <input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck>
      </div>
    </div>
    <div class="button button-reset" role="button" aria-label="Search">
      <button class="toggle-button icon icon-close" id="reset-search"></button>
    </div>
  </div>
</nav>
</header>

<main class="main">
	<div class="drawer">
		<nav aria-label="Navigation">
  <a href="../../" class="project">
    <div class="banner">
      
        <div class="logo">
          <img src="../../images/mita.svg">
        </div>
      
      <div class="name">
        <strong>Eclipse Mita </strong>
        
      </div>
    </div>
  </a>

  <div class="scrollable">
    <div class="wrapper">
      

      <div class="toc">
        
        <ul>
          




<li>
  
    



<a  title="Download" href="http://github.com/eclipse/mita">
	
	Download
</a>



  
</li>



<li>
  
    



<a  title="Concepts" href="../../concepts/">
	
	Concepts
</a>



  
</li>



<li>
  
    <span class="section">Language</span>
    <ul>
      
        
        



<a  title="Introduction" href="../../language/introduction/">
	
	Introduction
</a>



      
        
        



<a  title="Basics" href="../../language/basics/">
	
	Basics
</a>



      
        
        



<a  title="Packages" href="../../language/packages/">
	
	Packages
</a>



      
        
        



<a  title="System Setup" href="../../language/setup/">
	
	System Setup
</a>



      
        
        



<a  title="Types" href="../../language/types/">
	
	Types
</a>



      
        
        



<a  title="Arrays" href="../../language/arrays/">
	
	Arrays
</a>



      
        
        



<a  title="Functions" href="../../language/functions/">
	
	Functions
</a>



      
        
        



<a  title="Foreign Function Interface" href="../../language/foreignfunctioninterface/">
	
	Foreign Function Interface
</a>



      
        
        



<a  title="Events" href="../../language/events/">
	
	Events
</a>



      
        
        



<a  title="Exceptions" href="../../language/exceptions/">
	
	Exceptions
</a>



      
    </ul>
  
</li>



<li>
  
    <span class="section">Platforms</span>
    <ul>
      
        
        



<a class="current" title="XDK110" href="../../platforms/xdk110/">
	
	XDK110
</a>


<ul id="scrollspy">
</ul>


      
    </ul>
  
</li>


        </ul>
        

        
      </div>
    </div>
  </div>
</nav>

	</div>

	<article class="article">
		<div class="wrapper">
			<h1>XDK110 </h1>

			

<p>The Bosch Cross Domain Development Kit (XDK) is a programmable sensor device for building IoT applications.
It contains a wide range of sensors and means of connectivity, is extensible using its extension bus.
Due to its versatility it also serves as reference platform for Mita.</p>

<p>To learn more about the XDK head over to <a href="http://xdk.io">http://xdk.io</a>.</p>

<h2 id="sensor-environment-bme280">Sensor: environment (BME280)</h2>

<h3 id="configuration-items">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>power_mode</b> : <span class="kt">BME280_PowerMode</span></pre></div></td>
            <td>Defaults to <i>BME280_PowerMode.Normal</i>. The BME280 power mode</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>standby_time</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The standby time used in normal mode in milliseconds.
            Beware that the value supplied here will be clipped to the nearest valid value.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>temperature_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the temperature measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>pressure_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the pressure measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>humidity_oversampling</b> : <span class="kt">BME280_Oversampling</span></pre></div></td>
            <td>Reduces noise in the humidity measurement by over sampling.
            Higher over sampling settings reduce noise but increase measurement time and power consumption.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>temperature</b> : <span class="kt">int32</span></pre></div></td>
            <td>The temperature in milli-celcius</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>pressure</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The pressure in pascal</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>humidity</b> : <span class="kt">float</span></pre></div></td>
            <td>The relative humidity as percentage</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>humidity_fixed_point</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The relative humidity as percentage in Q22.10 integer format.
            Divide this value by 1024 to get the percentage.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-accelerometer-bma280">Sensor: accelerometer (BMA280)</h2>

<h3 id="configuration-items-1">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>range</b> : <span class="kt">BMA280_Range</span></pre></div></td>
            <td>Defaults to <i>BMA280_Range.Range_2G</i>. The range of acceleration we want to measure.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>bandwidth</b> : <span class="kt">BMA280_Bandwidth</span></pre></div></td>
            <td>Defaults to <i>BMA280_Bandwidth.BW_500Hz</i>. The low-pass filter bandwidth used by the BMA.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>any_motion_threshold</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>20</i>. The threshold of acceleration that has to be crossed before an any motion event is triggered.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>no_motion_threshold</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>20</i>. The threshold of acceleration that must not be exceeded for a no motion event to be triggered.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities-1">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>x_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The X axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>y_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The Y axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>z_axis</b> : <span class="kt">int32</span></pre></div></td>
            <td>The Z axis of the BMA280</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>magnitude</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The L2 norm of the acceleration vector: sqrt(x^2 + y^2 + z^2)</td>
        </tr>
    </tbody>
</table>

<h4 id="events">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>any_motion</b></pre></div></td>
            <td>The any motion event (also called activity) uses the change between two successive
            acceleration measurements to detect changes in motion. An event is generated when this change
            exceeds the any_motion_threshold.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>no_motion</b></pre></div></td>
            <td>The no motion event (also called any inactivity) uses the change between two successive
            acceleration measurements to detect changes in motion. An event is generated when this change
            consecutively stays below the no_motion_threshold.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>low_g</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>high_g</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>single_tap</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>double_tap</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>flat</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>orientation</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>fifo_full</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>fifo_wml</b></pre></div></td>
            <td></td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>new_data</b></pre></div></td>
            <td>This event serves the asynchronous reading of data. It is generated after storing a new value
            of z-axis acceleration data in the data register.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-light-max44009">Sensor: light (MAX44009)</h2>

<h3 id="configuration-items-2">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>manual_mode</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. Enables the manual configuration of integration time and high brightness mode.
            If set to false (default) the chip automatically selects those values.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>integration_time</b> : <span class="kt">MAX44009_IntegrationTime</span></pre></div></td>
            <td>Defaults to <i>MAX44009_IntegrationTime.MS_800</i>. The integration time is the time the sensor collects light for. In automatic mode
            (manual mode set to false) the chip automatically selects the integration time.
            
            This configuration item is only used when manual_mode is set to true.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>high_brightness</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. Set to true so that only 1/8 of the photo diode current goes to the ADC. This mode is used in
            high-brightness situations to avoid saturation/clipping effects of the ADC.
            
            This configuration item is only used when manual_mode is set to true.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>continuous_mode</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. In default mode (false) the IC measures lux intensity only once every 800ms regardless
            of integration time. This mode allows the part to operate at its lowest possible supply current.
            
            In continuous mode (true) the IC continuously measures lux intensity. That is, as soon as one
            reading is finished, a new one begins. If integration time is 6.25ms, readings are taken every 6.25ms.
            If integration time is 800ms, readings are taken every 800ms. In this mode, the part consumes slightly
            higher power than in the default mode.</td>
        </tr>
    </tbody>
</table>

<h4 id="modalities-2">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>intensity</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The light intensity in millilux.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-button-one-button">Sensor: button_one (Button)</h2>

<h4 id="modalities-3">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>is_pressed</b> : <span class="kt">bool</span></pre></div></td>
            <td>True if the button is pressed in this very right moment. False otherwise.</td>
        </tr>
    </tbody>
</table>

<h4 id="events-1">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>pressed</b></pre></div></td>
            <td>Fires after the button was pressed.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>released</b></pre></div></td>
            <td>Fires after the button was released.</td>
        </tr>
    </tbody>
</table>

<h2 id="sensor-button-two-button">Sensor: button_two (Button)</h2>

<h4 id="modalities-4">Modalities</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>is_pressed</b> : <span class="kt">bool</span></pre></div></td>
            <td>True if the button is pressed in this very right moment. False otherwise.</td>
        </tr>
    </tbody>
</table>

<h4 id="events-2">Events</h4>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>pressed</b></pre></div></td>
            <td>Fires after the button was pressed.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>released</b></pre></div></td>
            <td>Fires after the button was released.</td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-ble">Connectivity: BLE</h2>

<p>BLE is Bluetooth Low Energy using GATT profiles.
At the moment we only support slave mode where the XDK becomes a device that can be connected to (as compared to connecting to some other device).</p>

<h3 id="configuration-items-3">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>deviceName</b> : <span class="kt">string</span></pre></div></td>
            <td>The name of the device as advertised via GAP.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>serviceUid</b> : <span class="kt">uint32</span></pre></div></td>
            <td>The last four bytes of the UUID of the GATT service we'll create.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>advertisingInterval</b> : <span class="kt">int16</span></pre></div></td>
            <td>Defaults to <i>1000</i>. The advertising interval in milliseconds.</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>bool_characteristic</b> : <span class="kt">bool</span></pre></div></td>
            <td>Creates a boolean GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>uint32_characteristic</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Creates an unsigned integer GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>int32_characteristic</b> : <span class="kt">int32</span></pre></div></td>
            <td>Creates a signed integer GATT characteristic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>UUID</b> : <span class="kt">uint32</span></pre></div>
                    The last four bytes of the characteristic UUID. Defaults to the hash code of the VCI name.
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-led">Connectivity: LED</h2>

<p>Displays state using three differently colored LEDs on the device.</p>

<h3 id="variable-configuration-items-1">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>light_up</b> : <span class="kt">bool</span></pre></div></td>
            <td></td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>color</b> : <span class="kt">LedColor</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-wlan">Connectivity: WLAN</h2>

<p>Specifies the connection to a wireless wide-area network, also refered to as WiFi.</p>

<h3 id="configuration-items-4">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>ssid</b> : <span class="kt">string</span></pre></div></td>
            <td>The SSID of the WLAN network we want to connect to.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>psk</b> : <span class="kt">string</span></pre></div></td>
            <td>The pre-shared key of the WLAN we're connecting to. Note that this
            setting implies WPA2-PSK as authentication method. At this moment
            the WLAN connectivity does not support enterprise WLAN.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>useDHCP</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>true</i>. If true we'll attempt to configure the wireless interface using DHCP and
            all static settings will be ignored. If false, the static settings have to
            be present.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticIP</b> : <span class="kt">string</span></pre></div></td>
            <td>The static IP address to use. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is mandatory.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticGW</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default gateway. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticDNS</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default DNS server. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>staticMask</b> : <span class="kt">string</span></pre></div></td>
            <td>The IP address of the default Subnet Mask. This field has to be in the number-dot
            customary for IPv4 addresses (see IETF draft-main-ipaddr-text-rep-02).
            If useDHCP is true this field is ignored. If useDHCP is false, this field
            is recommended.</td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-mqtt">Connectivity: MQTT</h2>

<p>MQTT (Message Queuing Telemetry Transport) is an ISO standard (ISO/IEC PRF 20922) publish-subscribe-based messaging protocol.
This MQTT connectivity requires WLAN to be setup as well.</p>

<h3 id="configuration-items-5">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>transport</b> : <span class="kt">WLAN</span></pre></div></td>
            <td>The underlying transport connectivity we use to send the data out. In the future we might also
            support LoRa here.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>url</b> : <span class="kt">string</span></pre></div></td>
            <td>The URL pointing to the MQTT broker, for example: mqtt://does-not.exist:8000</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>clientId</b> : <span class="kt">string</span></pre></div></td>
            <td>The client identifier (here: clientID) is a identifier of each MQTT client
            connecting to a MQTT broker. It needs to be unique for the broker to
            know the state of the client.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>cleanSession</b> : <span class="kt">bool</span></pre></div></td>
            <td>Defaults to <i>false</i>. The clean session flag indicates to the broker whether the client wants
            to establish a clean session or a persistent session where all
            subscriptions and messages (QoS 1 & 2) are stored for the client.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>keepAliveInterval</b> : <span class="kt">uint32</span></pre></div></td>
            <td>Defaults to <i>60</i>. The keep alive interval (in seconds) is the time the client commits to for
            when sending regular pings to the broker. The broker responds to the
            pings enabling both sides to determine if the other one is still alive and
            reachable.</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items-2">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>topic</b> : <span class="kt">string</span></pre></div></td>
            <td>Publishes a message to a particular topic.</td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>name</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>qos</b> : <span class="kt">uint32</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

<h2 id="connectivity-httprestclient">Connectivity: HttpRestClient</h2>

<p>Implements an HTTP REST Client over WIFI</p>

<h3 id="configuration-items-6">Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>transport</b> : <span class="kt">WLAN</span></pre></div></td>
            <td>The underlying transport connectivity we use to send the data out. In the future we might also
            support LoRa here.</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><b>endpointBase</b> : <span class="kt">string</span></pre></div></td>
            <td>The part of the endpoint URL common to all requests, e.g. http://foobar.com/api/v1</td>
        </tr>
        <tr>
            <td><div class="highlight"><pre><small>optional</small> <b>header</b> : <span class="kt">string</span></pre></div></td>
            <td>A custom header which is added to each HTTP request. Example:
              X-Auth: MySecretToken\nX-Version: 1.0</td>
        </tr>
    </tbody>
</table>

<h3 id="variable-configuration-items-3">Variable Configuration Items</h3>

<table>
    <thead>
        <tr>
            <td>Name</td>
            <td>Description</td>
            <td>Parameters</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><div class="highlight"><pre><b>resource</b> : <span class="kt">string</span></pre></div></td>
            <td></td>
            <td>
                <ul>
                <li>
                    <div class="highlight"><pre> <b>endpoint</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>contentType</b> : <span class="kt">string</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>writeMethod</b> : <span class="kt">HttpMethod</span></pre></div>
                </li>
                <li>
                    <div class="highlight"><pre><small>optional</small>  <b>readMethod</b> : <span class="kt">HttpMethod</span></pre></div>
                </li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>


			<aside class="copyright" role="note">
				
				&copy; 2018 The Eclipse Mita Project &ndash;
				
				Documentation built with
				<a href="https://www.gohugo.io" target="_blank">Hugo</a>
				using the
				<a href="http://github.com/digitalcraftsman/hugo-material-docs" target="_blank">Material</a> theme.
			</aside>

			<footer class="footer">
				

<nav class="pagination" aria-label="Footer">
  <div class="previous">
  
      <a href="../../language/functions/" title="Functions">
        <span class="direction">
          Previous
        </span>
        <div class="page">
          <div class="button button-previous" role="button" aria-label="Previous">
            <i class="icon icon-back"></i>
          </div>
          <div class="stretch">
            <div class="title">
              Functions
            </div>
          </div>
        </div>
      </a>
  
  </div>

  <div class="next">
  
      <a href="../../language/foreignfunctioninterface/" title="Foreign Function Interface">
        <span class="direction">
          Next
        </span>
        <div class="page">
          <div class="stretch">
            <div class="title">
              Foreign Function Interface
            </div>
          </div>
          <div class="button button-next" role="button" aria-label="Next">
            <i class="icon icon-forward"></i>
          </div>
        </div>
      </a>
  
  </div>
</nav>





			</footer>
		</div>
	</article>

	<div class="results" role="status" aria-live="polite">
		<div class="scrollable">
			<div class="wrapper">
				<div class="meta"></div>
				<div class="list"></div>
			</div>
		</div>
	</div>
</main>

    <script>
    
      var base_url = '';
      var repo_id  = '';
    
    </script>

    <script src="../../javascripts/application.js"></script>
    

    <script>
      /* Add headers to scrollspy */
      var headers   = document.getElementsByTagName("h2");
      var scrollspy = document.getElementById('scrollspy');

      if(scrollspy) {
        if(headers.length > 0) {
          for(var i = 0; i < headers.length; i++) {
            var li = document.createElement("li");
            li.setAttribute("class", "anchor");

            var a  = document.createElement("a");
            a.setAttribute("href", "#" + headers[i].id);
            a.setAttribute("title", headers[i].innerHTML);
            a.innerHTML = headers[i].innerHTML;

            li.appendChild(a)
            scrollspy.appendChild(li);
          }
        } else {
          scrollspy.parentElement.removeChild(scrollspy)
        }


        /* Add permanent link next to the headers */
        var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");

        for(var i = 0; i < headers.length; i++) {
            var a = document.createElement("a");
            a.setAttribute("class", "headerlink");
            a.setAttribute("href", "#" + headers[i].id);
            a.setAttribute("title", "Permanent link")
            a.innerHTML = "#";
            headers[i].appendChild(a);
        }
      }
    </script>

    

    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
  </body>
</html>

