User Tools

Site Tools


gsoc:2023-gsoc-zephyr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gsoc:2023-gsoc-zephyr [2023/02/12 14:44]
cfriedt [Project #2 HTTP Server Implementation]
gsoc:2023-gsoc-zephyr [2023/03/27 11:59] (current)
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]] 
-* [[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]]
  
 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.
gsoc/2023-gsoc-zephyr.1676213084.txt.gz · Last modified: 2023/02/12 14:44 by cfriedt