GSoC/GCI Archive
Google Summer of Code 2014

The Wiselib

License: GNU Library or "Lesser" General Public License (LGPL)

Web Page: http://www.wiselib.org/gsoc/project_ideas.html

Mailing List: wiselib@wiselib.org

The Wiselib (http://www.wiselib.org) is an algorithms and protocol library for networked embedded devices, such as microcontroller-based sensor nodes, Internet-of-Things-enabled devices and Android- or iOS-based mobile phones. It contains standard protocols (e.g., 6LowPAN, CoAP), algorithms (e.g., localization, routing, time synchronization, clustering), and data structures (e.g., an external-memory lists and sets, an RDF database), that can be compiled for several different platforms. The supported platforms include TinyOS and Contiki, the two major operating systems for sensor-class devices, the popular open source Arduino platform, as well as several device-specific firmwares (iSense, Feuerwhere, TriSOS, etc). The two major handheld OS (Android and iOS) are supported as well. The Wiselib is written in C++. It uses templates and template specialization in the same way as Boost, CGAL, and the STL. This makes it possible to write generic and platform-independent code that is very efficiently compiled for the various platforms. The motivating issue behind the Wiselib is the severe fragmentation of Internet of Things (IoT) devices. For sensor nodes, TinyOS dominates the US, Contiki Europe, hindering exchange of ideas and code. Also Arduino is the power behind most DIY and crowdfunded projects and a really easy to use electronics prototyping platform. Many IoT scenarios (say, Smart Cities where people can use their handheld to interact with local city services) require connectivity between mobile phones, infrastructure devices, and battery-powered sensors and actors. This requires either programming against a truly platform-independent API (such as the Wiselib), or porting and maintaining code for 5-10 completely different platforms. We provide easy-to-use interfaces to the OS, which simplifies the development process and decreases the need for dealing with low-level functionality of specific hardware platforms. Algorithms can even be run in a simulation environment first (for debugging purposes, for example), and then compiled for real hardware platforms without changing a single line of algorithm code. Algorithms can be directly integrated in applications. For example, when developing an application for iSense that collects sensor data values, a Wiselib routing algorithm can be used to route the data to a sink. The Wiselib started as an academic project, it was developed and is used in several research projects spanning Europe, and some German national projects, see http://www.wisebed.eu, http://spitfire-project.eu, http://fronts.cti.gr, and http://www.rwglab.de for some research projects using the Wiselib. Developers come from over 15 universities, often working towards a thesis. A company selling IoT devices (Coalesenses GmbH) is already supporting the Wiselib; they have released some code to our Open Source code base, additionally they have commercial applications based on the Wiselib.

Projects

  • FAT16/32 implementation in the Wiselib. This project targets to provide interfaces to access File systems through the Wiselib. The next part of the project involves implementing FAT File system on the Wiselib. The implemented File system will reduce overhead of complex File systems and only possess features necessary in embedded devices. This will tremendously improve performance of embedded devices and enable the File system to run with a very low memory foot-print.
  • Flash Translation Layer The Wiselib offers great support for accessing block devices such as SD cards and hard disks through the block memory concept. SD cards contain an embedded Flash Translation Layer that cares to adapt these different storage concepts to each other, and can also care for wear levelling, bad-block remapping and caching. This project proposal entails the implementation of a lightweight flash controller for the Wiselib in software that can be used to enable use of this memory.
  • Implementing iBeacon support for Wiselib The Internet Of Things gets more important in upcoming developments. Particularly portable objects must know their position within their area of movement to act in a smart way. Apple's new "iBeacons" use Bluetooth Low Energy to send nearby devices proximity information. Localization algorithms like the ones included in the Wiselib can use such input information to calculate the receiver's position. Therefore this project aims to integrate the iBeacon protocol into the Wiselib.
  • MQTT-SN implementation for Wiselib MQTT-SN is equivalent to the HTTP in the Internet of Things. It is an open communication standard between devices that communicate with each other without human interaction. It is estimated that in 2020 fifteen billion of such devices will work over the world. MQTT-SN is suitable for constrained environments which consist of low-power devices with limited processing capabilities. This is a project which aim is to provide generic implementation of MQTT-SN protocol for 802.15.4 in Wiselib.
  • Software Audio Interface for Wireless Sensor Networks "[...] this project targets the implementation of a software based sound card for the Wiselib. [...] Since sensor nodes are resource constrained devices, this soundcard is not supposed to implement Dolby Surround or THX Sound, but rather a limited version of Midi and/or Wave Audio (e.g. 8-bit 11 kHz Mono). The sound should be generated using PWM on digital output pins or using analog output pins on the node. [...]" http://www.wiselib.org/gsoc/project_ideas.html