Git Product home page Git Product logo

sparrow's Introduction

Sparrow Application Layer and Tools

This repository contain a full implementation of the Sparrow application layer protocol and tools needed to make use of it. The implementation is based on Contiki OS and some of the popular platforms are supported from start.

Sparrow is communicating on top of IPv6/UDP and defines an encapsulation format (called encap) that encapsulates different types of payload. The most important payload is the TLV payload. This is used for all of the application data to and from IoT devices running Sparrow. TLVs consist of type, length and values and are fairly similar to OMA TLVs used in OMA LWM2M.

The application layer also defines an object model where each IoT device can present a number of object instances at runtime. There is a discovery procedure to discover the number of objects that any IoT device implements and their type. All Sparrow devices have instance 0 which is a management and discovery instance. Instance 0 includes one variable that describes the number of instances available on this device and knowing the instance count, all other instances can be discovered (e.g. read out type of object and other parameters).

License

Sparrow Application Layer is released under BSD 3-Clause License.

Contributions

Design by Yanzi Networks. Main contributors:

Lars Ramfelt [email protected]
Stefan Sandhagen [email protected]
Fredrik Ljungberg [email protected]
Oriol Piñol Piñol [email protected]
Marie Lassborn [email protected]
Simon Gidlund [email protected]

The work on preparing the Sparrow Application Layer for open source release have been done by Niclas Finne and Joakim Eriksson, SICS Swedish ICT ([email protected] and [email protected]).

Using Sparrow

Start by checking out needed submodules. Contiki OS is included as a git submodule and some of the Contiki OS submodules are also needed.

> cd sparrow
> git submodule update --init --recursive

Using Sparrow OTA with Zolertia Zoul RE-MOTE

There is an example application included for testing with Zolertia RE-MOTE. To begin with, the RE-MOTE needs to be programmed with a rescue image that contains the Sparrow bootloader. The RE-MOTE can always be reprogrammed again using the serial bootloader so it is no problems reprogramming the RE-MOTE later with another non-Sparrow application.

Program a Zolertia Zoul RE-MOTE with rescue-image

> cd examples/zoul/remote
> make IMAGE=1
> make rescue-image

Make sure the RE-MOTE is connected via USB

> make upload-rescue-image

Now the RE-MOTE should be running an example application where it is possible to control the LEDs and listen to the user button using the Sparrow application layer. Make sure you have a border router running and wait for the RE-MOTE to connect to your network before trying to communicate with the node.

Program a Zolertia Zoul RE-MOTE over-the-air.

Start by creating an image archive for OTA. An image archive contains both images which makes it easy for the upload tool to simply upload the image for the container that is currently not used in the node.

NOTE: Remember to always increase the INC number when recompiling during each day to mark the newly compiled image as newer than the previous image. If both images have the same date and same INC, the first one will be used when booting.

 > cd examples/zoul/remote
 > make images INC=0
 > make upload-fast DST=<IP-address-of-the-RE-MOTE-node>

The make rule upload-fast can be used for faster update of locally connected (single hop) nodes. The make rule upload uses a slower update process that should be used for multihop networks or to avoid affecting the network during updates.

During bootup, before the application is started, the Zoul RE-MOTE will blink once if booting on the first image, and twice if booting on the second image.

sparrow's People

Contributors

nfi avatar jeremy-ang avatar bahlgren avatar

Watchers

Jonas Bülow avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.