-
Notifications
You must be signed in to change notification settings - Fork 1
GSOC Idea List
Below is a list of project ideas proposed for GSOC 2015 (don't hesitate to come forward with your own idea, if you have one that motivates you most). There are 3 categories of project ideas:
- System
- Network
- Application
Project Category: System
Brief explanation: The goal of dynamic linking support in RIOT is two-fold, (i) enable loading and unloading of modules/functionalities at runtime, and (ii) implement the first phase of an approach towards enabling (automatic) software updates.
Expected results: concept and prototype implementation of dynamic linker.
Knowledge Prerequisite: C, gcc, git, notions of how compiler and linker work.
Any of these are optional but not all of them.
Project Category: System
Brief explanation: RIOT can already run as a process in Linux via the native port and several RIOT instances can be networked on the same Linux machine via dedicated tools (nativenet and desvirt). However, RIOT support within ns3 is expected to enable the community to simulate larger networks of RIOT instances and finer grained network characteristics -- before deployment of the exact same code base on real hardware.
Expected results: multiple, networked instances of RIOT can be simulated within ns3.
Knowledge Prerequisite: C, C++, Python, git, ns3.
Any of these are optional but not all of them.
Project Category: Network
Brief explanation: Security is essential to protect the communication between IoT devices. Datagram Transport Layer Security (DTLS) RFC 6347 is the mandatory standard to provide security in this context. There are several implementation challenges of DTLS on embedded systems that one needs to keep in mind.
Expected results: Transport Layer Security can be used over the available UDP implementation in RIOT.
Knowledge Prerequisite: C, git, COAP, some notions of cryptography
Any of these are optional but not all of them.
Project Category: Application
Brief explanation: Python is used for simple object oriented programming. The goal of this project is two-fold (i) to allow easier application programming in RIOT and (ii) in a second optional phase, to provide a generic way to access sensor data through Python scripts.
Expected results: implement the C API (and an interpreter) of Python to allow the standard libraries of Python and Python scripts to run on RIOT.
Knowledge Prerequisite: C, Python, git, some notions of programming theory, and embedded programming.
Project Category: Application
Brief explanation: eLua is a bare-metal embedded distribution of the Lua programming language. It sports a minimal MCU specific layer on top of which embedded devices can be programmed in Lua. This project aims to create a generic port of eLua to RIOT so that eLua's extensive Lua interpreter, libraries and applications can be run on any RIOT powered device with enough ressources.
Expected results: eLua runs as an application on top of RIOT.
Knowledge Prerequisite: C, Lua, git
Any of these are optional but not all of them.
Project Category: System
Brief explanation: RPython is a subset of the Python language that can be compiled to C. The goal of this project is two-fold (i) to use PyPy to compile RPython to C which can be compiled along with RIOT for embedded devices, and (ii) to develop an RPython module to interface with RIOT.
Expected results: Implementation of an RPython module to allow the development of RPython applications that interface with RIOT. Integration of PyPy for embedded devices.
Knowledge Prerequisite: C, Python, git, some notions of programming theory, and embedded programming.
Project Category: System
Brief explanation: BLE (Bluetooth Low Energy) is a key element of the Internet of Things, on the wider consumer electronics side (devices like smartphone, Tablets etc.). Newer embedded hardware such as Nordic nRF BLE provides this network functionality via a cheap ARM M0 SoC. The main challenge here is its very limited memory, and the BLE spec implementation.
Expected results: Port of RIOT for the Nordic nRF BLE. Two RIOT-based BLE boards exchanging messages over Bluetooth and the UDP/IP/6LoWPAN stack already provided by RIOT.
Knowledge Prerequisite: C, git, basic computer network knowledge (wireless link layer)
Project Category: Application
Brief explanation: RIOT TV is a visualization tool for RIOT based on node.js, but so far rather static. the goal of this project is to collect the required data for visualization in a non-invasive manner and visualize a priori unknown topologies.
Expected results: Visualize different types of RIOT networks without changes to the operating system in flexible way
Knowledge Prerequisite: C, git, radio sniffers, node.js, graph visualization
Project Category: Application
Brief explanation: POSIX compliant shell are very useful for a variety of tasks, including easy porting to RIOT of scripts that were developed for Linux.
Expected results: port dash (or busybox), a lightweight POSIX compliant shell, to RIOT.
Knowledge Prerequisite: C, git, POSIX
Project Category: System
Brief explanation: Go is programming language that targets multicore and networked machines, based on a specific type system that enables flexible and modular program construction.
Expected results: you can link a simple Go application with RIOT.
Knowledge Prerequisite: C, Go, git
Project Category: Network, Application, System
Brief explanation: In order for an IoT to connect to the Internet a Border Gateway Router is required. It translates between the IoT network protocol and the regular Internet protocol. RIOT already has a Border Gateway Router, but it is in an unknown state. Make it shine!
Expected Results: An application that bridges between the IoT network and the Border Gateway Router and the Border Gateway Router itself. The application should be demonstrated to run on at least one of physical RIOT platforms and the native platform. The border gateway router should run on at least Linux and one other POSIX platform with Valgrind without errors.
Knowledge Prerequisite: C, git, knowledge of networks, especially IPv6 and 6LoWPAN, and POSIX system programming
RIOT - The friendly Operating System for the Internet of Things
Homepage | [GitHub] (https://github.com/RIOT-OS/) | Developers Mailing List | Users Mailing List | Twitter @RIOT_OS
- Family: ARM
- Board: Airfy Beacon
- Board: Arduino Due
- Board: CC2538DK
- Board: CC2650STK
- Board: HikoB Fox
- Board: IoT LAB M3
- Board: LimiFrog-v1
- Board: mbed_lpc1768
- Board: MSB-IoT
- Board: MSBA2
- Board: Nucleo-L1
- Board: Nucleo-F334
- Board: Nucleo-F303
- Board: Nucleo-F091
- Board: Mulle
- Board: OpenMote
- Board: PCA1000x (nRF51822 Development Kit)
- Board: Phytec phyWAVE-KW22
- Board: RFduino
- Board: SAMR21-xpro
- Board: SAML21-xpro
- Board: Spark Core
- Board: STM32F0discovery
- Board: STM32F3discovery
- Board: STM32F4discovery
- Board: UDOO
- Board: yunjia-nrf51822
- Board: Zolertia remote
- Family: ATmega
- Board: Arduino Mega2560
- Family: MSP430
- Board: MSB-430H
- Board: TelosB
- Board: WSN430
- Board: Zolertia Z1
- Board: eZ430-Chronos
- Family: native
- Board: native
- Family: x86
- Board: Intel Galileo