The component provides a general purpose connectivity engine between two microcontrollers, one acting as PPP server (slave), the other one as PPP client (host).
This component could be used for extending network using physical serial connection. Applications could vary from providing PRC engine for multiprocessor solutions to serial connection to POSIX machine. This uses a standard PPP protocol to negotiate IP addresses and networking, so standard PPP toolset could be used, e.g. a pppd
service on linux. Typical application is a WiFi connectivity provider for chips that do not have WiFi
Using this component we can construct a WiFi connectivity gateway on PPP channel. The below diagram depicts an application where PPP server is running on a WiFi capable chip with NAPT module translating packets between WiFi and PPPoS interface. We usually call this node a SLAVE microcontroller. The "HOST" microcontroller runs PPP client and connects only to the serial line, brings in the WiFi connectivity from the "SLAVE" microcontroller.
SLAVE micro HOST micro
\|/ +----------------+ +----------------+
| | | serial line | |
+---+ WiFi NAT PPPoS |=== UART / SPI / SDIO =====| PPPoS client |
| (server)| | |
+----------------+ +----------------+
eppp_connect()
-- Simplified API. Provides the initialization, starts the task and blocks until we're connected
eppp_listen()
-- Simplified API. Provides the initialization, starts the task and blocks until the client connects
eppp_init()
-- Initializes one endpoint (client/server).eppp_deinit()
-- Destroys the endpointeppp_netif_start()
-- Starts the network, could be called after startup or whenever a connection is losteppp_netif_stop()
-- Stops the networkeppp_perform()
-- Perform one iteration of the PPP task (need to be called regularly in task-less configuration)
Tested with WiFi-NAPT example
- TCP - 2Mbits/s
- UDP - 2Mbits/s
- TCP - 5Mbits/s
- UDP - 8Mbits/s
- TCP - 9Mbits/s
- UDP - 11Mbits/s