1 # System Architecture: Linux Based Host
2 Below diagram depicts building blocks of Linux based ESP-Hosted solution.
4 ![ESP-Hosted linux based design](./linux_hosted_design.png)
7 ## 1. ESP Host Software
9 This implements ESP-Hosted solution part that runs on Linux host. It mainly consists of following.
11 * Control/command interface
12 * Python convenience scripts
16 ### 1.1 ESP Host Driver
18 ESP Host driver implements following.
20 * **SDIO Host driver**
21 This implements data path over SDIO interface. Communication protocol is explained in further section.
24 This implements data path over SPI interface. Communication protocol is explained in further section.
26 * **Virtual Serial interface driver**
27 This implements virtual serial interface over SDIO/SPI interface. This virtual serial interface is used as a control interface to configure Wi-Fi of ESP peripheral
29 * **802.3 network interface**
30 This registers two network interfaces with Linux kernel: ethsta0 and ethap0. This allows exchange of 802.3 frames between Linux kernel and ESP firmware.
33 This registers HCI interface with Linux kernel. This interface is implemented over SDIO/SPI.
38 ### 1.2 Control/Command Interface
40 * This implements custom control commands that are based on protobuf.
41 * These commands are used to control and configure Wi-Fi on ESP peripheral.
42 * Control interface makes use of virtual serial interface provided by ESP Host driver.
43 * There are 2 flavors of control interface implementation:
44 * C based implementation
45 * Python based implementation - It uses C based implementation using `ctypes` package.
46 * API's are described in subsequent section
47 * Control path design and implemetation details explained in [Control Path](../common/contrl_path.md) documentation