This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
gsoc:2023-gsoc-zephyr [2023/02/12 14:47] cfriedt [Project #1 HTTP Server Implementation] |
gsoc:2023-gsoc-zephyr [2023/03/27 11:59] IulianaProdan |
||
---|---|---|---|
Line 38: | Line 38: | ||
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. | 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 features required 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. | + | 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/develop/test/ztest.html|ZTest Framework]] | ||
Line 45: | Line 45: | ||
* [[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/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 | * [[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: | The goal of the GSoC project is the following: | ||
Line 51: | Line 56: | ||
* Port the basic HTTP server to Zephyr (initial Kconfig, tests, samples, documentation) | * 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 3 mandatory features: REST API, TLS, and Compressed Resources in Memory (CRiMe) | ||
- | * Test Plan and Tests to demonstrate 1 optional feature from: JSON support, Filesystem support, Web-based Dashboard, or OAuth | + | * 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]] | * 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]] | * 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. | 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. | Difficulty: High. | ||
Line 67: | Line 74: | ||
Code License: Apache 2.0. | Code License: Apache 2.0. | ||
==== Project #2 Implement a driver for Audio NXP Platform Driver in Zephyr ==== | ==== Project #2 Implement a driver for Audio NXP Platform Driver in Zephyr ==== | ||
+ | |||
+ | 1 contributor full-size (350 hours). | ||
[[https://www.sofproject.org/|Sound Open Firmware (SOF)]] is an open source audio Digital Signal Processing (DSP) firmware infrastructure and SDK. | [[https://www.sofproject.org/|Sound Open Firmware (SOF)]] is an open source audio Digital Signal Processing (DSP) firmware infrastructure and SDK. |