<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
        <link rel="canonical" href="http://mynewt.apache.org/os/tutorials/lora/lorawanapp/"> -->
        <link rel="shortcut icon" href="/img/mynewt-logo-only-newt32x32.png">
        

	    <title>LoraWAN app - Apache Mynewt</title>

        <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../../css/highlight.css">
        <link href="../../../../css/base.css" rel="stylesheet">
        <link href="../../../../css/custom.css" rel="stylesheet">
        <link href="../../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
        <link href="../../../../extra.css" rel="stylesheet">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="LoraWAN app">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.5.0 </a> released (Nov 5, 2018)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

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

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_4_0">
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" selected="selected" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../../../get_started/vocabulary/">Concepts</a>
    </li>

              
          
              
                
  
  
    <li ><a href="../../tutorials/">Tutorials</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../blinky/">Project Blinky</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../repo/add_repos/">Work with repositories</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../project-slinky/">Project Slinky for Remote Comms</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../ble_bare_bones/
">Bluetooth Low Energy</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ./
">LoRa</a>
  
  
    <ul>
          
              
                
    <li class="active">
      <a href="./">LoraWAN app</a>
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../event_queue/
">OS Fundamentals</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../add_newtmgr/
">Remote Device Management</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  
  
  ../../sensors/sensors/

">Sensors</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../segger_rtt/
">Tooling</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../codesize/
">Other</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../../../../known_issues/">Known Issues</a>
    </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../../newt/install/prev_releases/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; <a href="../../tutorials/">Tutorials</a></li>
        
      
        
          <li>&raquo; LoRa</li>
        
      
      
        <li>&raquo; LoraWAN app</li>
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/tutorials/lora/lorawanapp.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.3.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="lorawan-app">LoRaWAN App</h2>
<p><br></p>
<h3 id="objective">Objective</h3>
<p>The purpose of this tutorial is to demonstrate how to build the lora app shell application for either a class A or class C lora device and to perform basic functions such as joining and sending data packets to a lora gateway/server.</p>
<p>NOTE: This tutorial presumes that you have a running lora gateway and lora network server. No description of the gateway/server is provided. It is expected that the user understands how to configure and operate the gateway/server so that it can communicate with a class A or class C device.</p>
<p><br></p>
<h3 id="hardware-needed">Hardware needed</h3>
<ul>
<li>Telenor EE02 module</li>
<li>Segger J-Link or similar debugger</li>
<li>LORA gateway</li>
<li>Laptop running Mac OS</li>
<li>It is assumed you have already installed newt tool. </li>
<li>It is assumed you understand the basics of the mynewt OS</li>
<li>3-wire serial cable to connect telenor module to your laptop</li>
<li>Some form of terminal emulation application running on your laptop.</li>
</ul>
<p><br></p>
<h3 id="create-a-project">Create a project.</h3>
<p>Create a new project to hold your work.  For a deeper understanding, you can read about project creation in 
<a href="../get_started/project_create.md">Get Started -- Creating Your First Project</a>
or just follow the commands below.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>    $ mkdir ~/dev
    $ cd ~/dev
    $ newt new mylora
    Downloading project skeleton from apache/mynewt-blinky...
    Installing skeleton in mylora...
    Project mylora successfully created.
    $ cd mylora
</pre></div>


<p><br></p>
<h3 id="install-everything">Install Everything</h3>
<p>Now that you have defined the needed repositories, it's time to install everything so
that you can get started.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>    $ newt install -v 
    apache-mynewt-core
    Downloading repository description for apache-mynewt-core... success!
    ...
    apache-mynewt-core successfully installed version 1.2.0-none
    ...
</pre></div>


<p><br></p>
<h3 id="create-the-targets">Create the targets</h3>
<p>Create two targets - one for the bootloader and one for the lora app shell application.  </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt target create telee02_boot
$ newt target set telee02_boot bsp=@apache-mynewt-core/hw/bsp/telee02
$ newt target set telee02_boot app=@apache-mynewt-core/apps/boot
$ newt target set telee02_boot build_profile=optimized

$ newt target create lora_app_shell_telee02
$ newt target set lora_app_shell_telee02 bsp=@apache-mynewt-core/hw/bsp/telee02
$ newt target set lora_app_shell_telee02 app=@apache-mynewt-core/apps/lora_app_shell
$ newt target set lora_app_shell_telee02 build_profile=optimized
</pre></div>


<p>The lora app shell application requires a few additional system configuration variables. 
Create and edit a file called syscfg.yml in dev/mylora/targets/lora_app_shell. The file
contents should be the following:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>### Package: targets/lora_app_shell_telee02

syscfg.vals:
    SHELL_CMD_ARGC_MAX: &quot;20&quot;
    LORA_MAC_TIMER_NUM: &quot;4&quot;
    TIMER_4: &quot;1&quot;
</pre></div>


<p>You can now "display" the targets you created to make sure they are correct:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt target show telee02_boot
targets/telee02_boot
    app=@apache-mynewt-core/apps/boot
    bsp=@apache-mynewt-core/hw/bsp/telee02
    build_profile=optimized

$ newt target show lora_app_shell_telee02
targets/lora_app_shell_telee02
    app=@apache-mynewt-core/apps/lora_app_shell
    bsp=@apache-mynewt-core/hw/bsp/telee02
    build_profile=optimized
    syscfg=LORA_MAC_TIMER_NUM=4:SHELL_CMD_ARGC_MAX=20:TIMER_4=1
</pre></div>


<p><font color="#F2853F">
Note: If you've already built and installed a bootloader for your ee02 module then you do
not need to create a target for it here, or build and load it as below. </font>
<br></p>
<h3 id="build-the-target-executables">Build the target executables</h3>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt clean telee02_boot
$ newt build telee02_boot
Building target targets/telee02_boot
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c    

        . . .

Archiving telee02_boot-sysinit-app.a
Archiving util_mem.a
Linking /Users/wes/dev/wes/bin/targets/telee02_boot/app/apps/boot/boot.elf
Target successfully built: targets/telee02_boot

$ newt clean lora_app_shell_telee02
$ newt build lora_app_shell_telee02
Building target targets/lora_app_shell_telee02
Assembling repos/apache-mynewt-core/hw/bsp/telee02/src/arch/cortex_m4/gcc_startup_nrf52_split.s
Compiling repos/apache-mynewt-core/encoding/base64/src/hex.c
Compiling repos/apache-mynewt-core/encoding/base64/src/base64.c
        . . .


Archiving util_mem.a
Archiving util_parse.a
Linking /Users/wes/dev/wes/bin/targets/lora_app_shell_telee02/app/apps/lora_app_shell/lora_app_shell.elf
Target successfully built: targets/lora_app_shell_telee0
</pre></div>


<p><font color="#F2853F">
Note: The newt clean step is not necessary but shown here for good measure. </font>
<br></p>
<h3 id="sign-and-create-the-application-image">Sign and create the application image</h3>
<p>You must sign and version your application image to download it using newt to the board. 
Use the newt create-image command to perform this action. You may assign an arbitrary 
version (e.g. 1.0.0) to the image.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt create-image lora_app_shell_telee02 0.0.0
App image succesfully generated: /Users/wes/dev/wes/bin/targets/lora_app_shell_telee02/app/apps/lora_app_shell/lora_app_shell.img
</pre></div>


<p><font color="#F2853F">
Note: Only the application image requires this step; the bootloader does not </font>
<br></p>
<h3 id="connect-the-board">Connect the board</h3>
<p>Connect the evaluation board via micro-USB to your PC via USB cable. Connect the Segger J-link debugger to the 9-pin
SWD connector. Connect the UART pins (RX, TX and GND) to the board. Terminal settings 115200, N, 8, 1.</p>
<p><br></p>
<h3 id="download-bootloader-and-application">Download bootloader and application</h3>
<p><br></p>
<p><strong>Note:</strong> If you want to erase the flash and load the image again, you can use JLinkExe to issue an <code>erase</code> command.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ JLinkExe -device nRF52 -speed 4000 -if SWD
SEGGER J-Link Commander V5.12c (Compiled Apr 21 2016 16:05:51)
DLL version V5.12c, compiled Apr 21 2016 16:05:45

Connecting to J-Link via USB...O.K.
Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Mar 15 2016 18:03:17
Hardware version: V1.00
S/N: 682863966
VTref = 3.300V


Type &quot;connect&quot; to establish a target connection, &#39;?&#39; for help
J-Link&gt;erase
Cortex-M4 identified.
Erasing device (0;?i?)...
Comparing flash   [100%] Done.
Erasing flash     [100%] Done.
Verifying flash   [100%] Done.
J-Link: Flash download: Total time needed: 0.363s (Prepare: 0.093s, Compare: 0.000s, Erase: 0.262s, Program: 0.000s, Verify: 0.000s, Restore: 0.008s)
Erasing done.
J-Link&gt;exit
$
</pre></div>


<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt load telee02_boot
Loading bootloader
$ newt load lora_app_shell_telee02
Loading app image into slot 1
</pre></div>


<p>Assuming you attached the serial port and have a terminal up you should set the following output on the terminal:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>000002 lora_app_shell
</pre></div>


<p><br></p>
<h3 id="shell-commands">Shell Commands</h3>
<p>There are a number of shell commands that will allow you to join and send both unconfirmed and confirmed data. If you type 'help' in your terminal you will see the various commands displayed. Here is a screen shot of the output of help</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>000002 lora_app_shell
help

032766 help
032766 stat                          
032767 tasks                         
032768 mpool                         
032769 date                          
032770 las_wr_mib                    
032771 las_rd_mib                    
032772 las_rd_dev_eui                
032773 las_wr_dev_eui                
032774 las_rd_app_eui                
032775 las_wr_app_eui                
032776 las_rd_app_key                
032777 las_wr_app_key                
032778 las_app_port                  
032779 las_app_tx                    
032780 las_join                      
032781 las_link_chk                  
032782 compat&gt; 
</pre></div>


<p>The following table lists the commands and gives a brief description of the commands. The lora commands are described in more detail later in the tutorial as well as their syntax (syntax not shown in the table).</p>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>help</td>
<td>Display list of available shell commands</td>
</tr>
<tr>
<td>stat</td>
<td>Display statistics. Syntax: stat \&lt;statistics group>. 'stat' with no group displays avaialable groups</td>
</tr>
<tr>
<td>tasks</td>
<td>Display OS tasks</td>
</tr>
<tr>
<td>mpool</td>
<td>Displays OS memory pools and memory pool statistics</td>
</tr>
<tr>
<td>date</td>
<td>Displays current date/time</td>
</tr>
<tr>
<td>las_wr_mib</td>
<td>Write lora MIB</td>
</tr>
<tr>
<td>las_rd_mib</td>
<td>Read lora MIB</td>
</tr>
<tr>
<td>las_rd_dev_eui</td>
<td>Read lora device EUI</td>
</tr>
<tr>
<td>las_wr_dev_eui</td>
<td>Write lora device EUI</td>
</tr>
<tr>
<td>las_rd_app_eui</td>
<td>Read lora application EUI</td>
</tr>
<tr>
<td>las_wr_app_eui</td>
<td>Write lora application EUI</td>
</tr>
<tr>
<td>las_rd_app_key</td>
<td>Read lora application key</td>
</tr>
<tr>
<td>las_wr_app_key</td>
<td>Write lora application key</td>
</tr>
<tr>
<td>las_app_port</td>
<td>Open/close lora application port</td>
</tr>
<tr>
<td>las_app_tx</td>
<td>Transmit on lora application port</td>
</tr>
<tr>
<td>las_join</td>
<td>Perform a lora OTA join</td>
</tr>
<tr>
<td>las_link_chk</td>
<td>Perform a lora link check</td>
</tr>
</tbody>
</table>
<h3 id="ota-join">OTA Join</h3>
<p>Before sending any application data a lora end device must be joined to its lora network. To perform a lora OTA (over-the-air) join there are some commands that must be issued prior to attempting to join. The reason for these commands is that a lora end device must be configured with a device EUI, application EUI and application key prior to performing an OTA join.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>598763 compat&gt; las_wr_app_eui 0x00:0x11:0x22:0x01:0x01:0x00:0x10:10

623106 compat&gt; las_wr_app_key 03:03:03:03:03:03:03:03:03:03:03:03:03:03:03:03

623758 compat&gt; las_wr_dev_eui 0x00:0x11:0x22:0x02:0x02:0x00:0x00:0x00

630333 compat&gt; las_join 1

630634 Attempting to join...
019802 compat&gt; Join cb. status=0 attempts=1
</pre></div>


<p>If the join is successful the status returned should be 0. If it fails the status will be a non-zero lora status code (lora status error codes are described later in this tutorial).</p>
<p>A note about "endianness" in the device EUI commands. The first three bytes of the EUI are the OUI and the last 5 bytes are unique (for that OUI). The above example assumes an OUI of 001122. This is not the same order as the address over the air as device addresses are sent "least significant byte" first (little endian). The same convention also applies to keys: they are in big-endian order in the command but sent little endian over the air.
<br></p>
<h3 id="openingclosing-an-application-port">Opening/closing an application port</h3>
<p>Another step that must be performed prior to sending application data is to open an application port. All data frames containing application data are sent to a specific port. Port numbers are in the range 1 - 223 as port 0 is reserved for MLME-related activities. Ports 224-255 are reserved for future standardized application extensions.</p>
<p>The lora app shell does not open any application ports by default.</p>
<p>To open and/or close an application port the following commands are used. Note that the application port which you are using to send data must be open if you want to send data (or receive it).</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>115647 compat&gt; las_app_port open 1

150958 Opened app port 1
150958 compat&gt; las_app_port close 1

151882 Closed app port 1
</pre></div>


<p><br></p>
<h3 id="sending-data">Sending data</h3>
<p>The lora app shell allows the user to send both unconfirmed and confirmed data. The command to send data is <em>las_app_tx \&lt;port> \&lt;len> \&lt;type></em></p>
<p>NOTE: the current usage for this command shows an optional data rate and retries for this command. That feature has not been implemented and the command will not be accepted if they are separated.</p>
<p>Where:
    port = port number on which to send
    len = size n bytes of app data
    type = 0 for unconfirmed, 1 for confirmed</p>
<p>To send a confirmed data transmission of size 5 bytes on port 10 the command would be: las_app_tx 10 20 1</p>
<p>Once the end device has sent the frame requested there should be a message which contains some additional information. Here is a screen shot using the above example. Note that there will be some delay between seeing the "Packet sent on port 10" message and the additional information as the additional information is the "confirmation" that the lora stack provides and the confirmation will not be returned until the lora stack is finished transmitting the frame and has received an acknowledgement or has finished waiting for all the receive windows.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>449751 compat&gt; las_app_tx 10 5 1

452144 Packet sent on port 10
452144 compat&gt; Txd on port 10 type=conf status=0 len=5
452325  dr:0
452325  txpower:5
452325  tries:1
452326  ack_rxd:1
452326  tx_time_on_air:330
452327  uplink_cntr:0
452327  uplink_freq:903500000
</pre></div>


<p>The information contained in the confirmation is the following:</p>
<p>dr: The data rate on which the frame was sent.<br />
txpower: Transmit power level of the device.<br />
tries: # of attempts made to transmit the frame successfully.<br />
ack_rxd: Was an acknowledgement received (0 no 1 yes).<br />
tx_time_on_air: The on-air length of the frame (in milliseconds).<br />
uplink_cntr: The frame uplink counter that this frame used.<br />
uplink_freq: The frequency (logical) on which the frame was sent (in Hz).  </p>
<p><br></p>
<p><br></p>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    <a href=../../blehci_project/>
        <span class="fa fa-arrow-left"></span>
        Previous: BLE HCI interface
    </a>
    
    </li>
    <li class="pull-right">
    
    <a href=../../event_queue/>
        Next: Events and Event Queues
        <span class="fa fa-arrow-right"></span>
    </a>
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            <small class="footnote">
            Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
            </small>
             <a href="https://join.slack.com/mynewt/shared_invite/MTkwMTg1ODM1NTg5LTE0OTYxNzQ4NzQtZTU1YmNhYjhkMg">
                <img src="/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
             </a>
        </div>
    </div>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../../js/highlight.pack.js"></script>
        <script src="../../../../js/base.js"></script>
        <script src="../../../../js/custom.js"></script>

    </body>
</html>