<!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>Events - Eclipse Mita</title>
    <meta name="generator" content="Hugo 0.42.1" />

    
    <meta name="description" content="The documentation of Eclipse Mita.">
    
    <link rel="canonical" href="../../mita/language/events/">
    

    <meta property="og:url" content="/mita/language/events/">
    <meta property="og:title" content="Eclipse Mita">
    <meta property="og:image" content="/mita/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="../../mita/images/favicon.ico">
    <link rel="icon" type="image/x-icon" href="../../mita/images/favicon.ico">

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

    <link rel="stylesheet" href="../../mita/stylesheets/application.css">
    <link rel="stylesheet" href="../../mita/stylesheets/temporary.css">
    <link rel="stylesheet" href="../../mita/stylesheets/palettes.css">
    <link rel="stylesheet" href="../../mita/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="../../mita/css/custom.css">
    
    <script src="../../mita/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">
        Events
      </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="../../mita/" class="project">
    <div class="banner">
      
        <div class="logo">
          <img src="../../mita/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  title="XDK110" href="../../platforms/xdk110/">
	
	XDK110
</a>



      
    </ul>
  
</li>


        </ul>
        

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

	</div>

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

			<p>System resources and time define events. All events can be handled using the <code>every</code> keyword.</p>
<div class="highlight"><pre class="chroma"><code class="language-TypeScript" data-lang="TypeScript"><span class="nx">every</span> <span class="nx">accelerometer</span><span class="p">.</span><span class="nx">any_motion</span> <span class="p">{</span> <span class="p">}</span>
<span class="nx">every</span> <span class="mi">60</span> <span class="nx">seconds</span> <span class="p">{</span> <span class="p">}</span></code></pre></div>
<p>Time comes in different resolutions:</p>

<ul>
<li><code>milliseconds</code></li>
<li><code>seconds</code></li>
<li><code>minutes</code></li>
<li><code>hours</code></li>
</ul>

<p>Most platforms can only define a limited amount of timers. Therefore the number of time event handlers is limited by that amount.
Furthermore, since time is a limited resource, especially on embedded devices, events can be handled multiple times.
Event handlers will be executed in the order they appear in the source code.</p>
<div class="highlight"><pre class="chroma"><code class="language-TypeScript" data-lang="TypeScript"><span class="kd">var</span> <span class="nx">foo</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">every</span> <span class="nx">accelerometer</span><span class="p">.</span><span class="nx">any_motion</span> <span class="p">{</span> 
	<span class="nx">foo</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> 
<span class="p">}</span>
<span class="nx">every</span> <span class="nx">accelerometer</span><span class="p">.</span><span class="nx">any_motion</span> <span class="p">{</span> 
	<span class="nx">foo</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> 
<span class="p">}</span> </code></pre></div>

			<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="../../mita/language/foreignfunctioninterface/" title="Foreign Function Interface">
        <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">
              Foreign Function Interface
            </div>
          </div>
        </div>
      </a>
  
  </div>

  <div class="next">
  
      <a href="../../mita/language/exceptions/" title="Exceptions">
        <span class="direction">
          Next
        </span>
        <div class="page">
          <div class="stretch">
            <div class="title">
              Exceptions
            </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="../../mita/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>

