This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
gsoc:2024-gsoc-zephyr [2024/01/22 11:55] IulianaProdan [Project #2 Implement a driver for Audio NXP Platform Driver in Zephyr] |
gsoc:2024-gsoc-zephyr [2024/02/07 17:23] (current) kartben |
||
---|---|---|---|
Line 31: | Line 31: | ||
**To be updated** | **To be updated** | ||
- | |||
- | ==== Project #1 HTTP Server Implementation ==== | ||
- | |||
- | 1 contributor full-size (350 hours). | ||
- | |||
- | Zephyr has historically incorporated the [[https://github.com/civetweb/civetweb|CivetWeb]] embedded HTTP server. However, Zephyr's CivetWeb module was [[https://github.com/zephyrproject-rtos/zephyr/pull/46061|deprecated]] and subsequently module [[https://github.com/zephyrproject-rtos/zephyr/pull/46746|removed]] due to complications of maintaining a fork of a 3rd-party project in an external module. | ||
- | |||
- | The project has specified many desired features for a new, fully-integrated, and in-tree [[https://github.com/zephyrproject-rtos/zephyr/issues/46758|replacement for CivetWeb]]. The proposed design will be able to take advantage of Zephyr's many existing building blocks. | ||
- | |||
- | * [[https://docs.zephyrproject.org/latest/develop/test/ztest.html|ZTest Framework]] | ||
- | * [[https://docs.zephyrproject.org/latest/connectivity/networking/api/http.html|HTTP]], [[https://docs.zephyrproject.org/latest/connectivity/networking/api/websocket.html|WebSocket]], [[https://docs.zephyrproject.org/latest/services/misc.html#json|JSON]], and [[https://github.com/zephyrproject-rtos/mbedtls|mbedTLS]] libraries | ||
- | * [[https://docs.zephyrproject.org/latest/services/portability/posix.html|POSIX API]] support for socket, threads, and filesystem operations | ||
- | * [[https://docs.zephyrproject.org/latest/build/kconfig/index.html|Kconfig]] and [[https://docs.zephyrproject.org/latest/build/cmake/index.html|Build System]] to fine-tune built-in server options | ||
- | * [[https://docs.zephyrproject.org/latest/kernel/iterable_sections/index.html|Iterable Section]] support, for flexible specification of HTTP services and resources | ||
- | |||
- | {{ :gsoc:gsoc-2023-httpd.png?400 | HTTP Server Layers}} | ||
- | |||
- | |||
- | An API layer diagram of the project is above. The GSoC contributor is responsible for the items shown in Grey. Please see GitHub links for full details. | ||
- | |||
- | The goal of the GSoC project is the following: | ||
- | |||
- | * Prototype the basic HTTP 2.0 server using POSIX APIs (complexity analysis, instrumentation & telemetry, performance benchmarks) | ||
- | * Port the basic HTTP server to Zephyr (initial Kconfig, tests, samples, documentation) | ||
- | * Test Plan and Tests to demonstrate 3 mandatory features: REST API, TLS, and Compressed Resources in Memory (CRiMe) | ||
- | * Test Plan and Tests to demonstrate 1 feature from: JSON support, Filesystem support, Web-based Dashboard, or OAuth | ||
- | * Generate test coverage reports using the [[https://docs.zephyrproject.org/latest/guides/test/ztest.html|Zephyr Test Framework]] | ||
- | * Demonstrate HTTP server functionality with one of Zephyr's many [[https://docs.zephyrproject.org/latest/boards/index.html|supported boards]] or [[https://docs.zephyrproject.org/latest/guides/networking/qemu_user_setup.html|Qemu]] | ||
- | |||
- | The successful candidate must be able to demonstrate writing a simple socket-based program in C that presents a "Hello, world!" web page to the user with a WireShark capture of the network traffic between the client and host. | ||
- | |||
- | Candidates must ensure that they have made a clear choice which feature they have chosen to implement (JSON support, Filesystem support, Web-based Dashboard, or OAuth) and explain how that feature would benefit the community. | ||
- | |||
- | Difficulty: High. | ||
- | |||
- | Mentors: | ||
- | * Chris Friedt - SWE / ASIC FW at Meta (cfriedt AT meta.com) - POSIX API Maintainer | ||
- | * Robert Lubos - SWE at Nordic Semiconductor (Robert.lubos AT nordicsemi.no) - Network Subsystem Maintainer | ||
- | |||
- | Skills that are Required: Zephyr RTOS,C,CXX,Python,WireShark | ||
- | |||
- | Code License: Apache 2.0. | ||