What is the Wiselib?
The Wiselib is an algorithm library for sensor networks. It contains various algorithm classes (for instance, localization or routing) that can be compiled for several sensor network platforms such as iSense or Contiki, or the sensor network simulator Shawn. It is completely written in C++, and uses templates in the same way as Boost and CGAL. This makes it possible to write generic and platform independent code that is very efficiently compiled for the various 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 any line of algorithm code.
Algorithms can be directly integrated in your application. 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. Another scenario are pure Wiselib applications: We provide an own application_main that is called by Wiselib code, and you can integrate algorithm implementations there. The advantage is that these applications can be compiled for any supported platform, without changing any line of code (instead, just makefile targets). Similarly to the own Wiselib application, any algorithm can be compiled as an OpenCom? component, which allows for dynamically loading an algorithm in your application.
Wiselib Download & Support
- Download zipped archive:
- Anonymous SVN Access:
- Mailinglist Subscription:
- Write an empty mail to wiselib-subscribe@wisebed.eu, and confirm as described in the received mail.
Wiselib Papers and Presentations
- Wiselib: A Generic Algorithm Library for Heterogeneous Sensor Networks (EWSN2010) paper, slides.
- Topology control algorithms in WISELIB (ICSE2010) paper.
Wiselib Development
Introduction
First Steps
- Supported Platforms
- Compiler Setup
- Coding Guidelines
- Wiselib Application Development - Examples of how to integrate an algorithm in an application
- Generic Wiselib Application (How to write an application that can be compiled for different platforms)
- iSense Wiselib Application? (Direct integration in iSense applications)
- Shawn Wiselib Application? (Direct integration in Shawn processor)
Tutorials
Advanced Topics
Wiselib Design
Concepts and Implementations
- External Interface Concepts - Os Facets
- Basic Concepts
- Os Facet
- Radio Facet
- VariablePowerRadio Facet (provides ability to change transmission power)
- Extended Data Radio Facet (provides additional data in receive method - for instance, link quality information)
- Reliable Radio Facet?
- Timer Facet
- Debug/Logging Facet
- Clock Facet
- Serial Communication Facet
- Random Number Facet?
- Position Facet?
- Basic Sensor Facet?
- Internal Interface Concepts - Data Structures
- pSTL (Standard Data Structures)
- WSN Related Data Structures
- Routing Table Concept?
- Neighborhood?
- Link Metric?
- TxPower?
- Standard Time?
- Extended Time? (Time data structure with extended functionality such as add/sub/...)
- Algorithm Concepts
Templates for new Wiki pages
Background Information
- General C++ Issues
- C++-Compiler for Embedded Systems (and their restrictions)
- Sensor Node Hardware
- Sensor Node OSs (Information about Contiki, TinyOS, iSense OS, ...)
- Delegates (concept for callback realization without virtual member functions)
Trac
- TracGuide -- Built-in Documentation
- The Trac project -- Trac Open Source Project
- Trac FAQ -- Frequently Asked Questions
- TracSupport -- Trac Support
![(please configure the [header_logo] section in trac.ini)](http://www.wisebed.eu/wisebed-logo.png)