This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
gsoc:2023-gsoc-zephyr [2023/02/12 14:44] cfriedt [Project #1 Arduino module based on Zephyr] |
gsoc:2023-gsoc-zephyr [2023/03/14 15:52] cfriedtfb [Project #1 HTTP Server Implementation] Clarify that contributor must choose |
||
---|---|---|---|
Line 32: | Line 32: | ||
**To be updated** | **To be updated** | ||
- | ==== Project #2 HTTP Server Implementation ==== | + | ==== Project #1 HTTP Server Implementation ==== |
1 contributor full-size (350 hours). | 1 contributor full-size (350 hours). | ||
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]] |
- | * [[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/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/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/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 authentication | + | * 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]] |