Not stable, still under development...
A unified network driver for Cortex-M: brings up Ethernet/LwIP, runs client and server tasks, manages connections and disconnections, and provides a clean API to the application.
-
FreeRTOS: separate tasks for server dispatcher, client dispatcher, interface input task, and one task per connection/session.
-
Semaphores/IRQ: ETH interrupt triggers
net__irq()
, driver signals semaphorepvSmphrInput
, input task consumes frame and passes it to LwIP. -
Link state: callback in
net.c
tracks previous state, updates flags, and shuts down all servers on down.
- Call
net__init(&net)
. - Register servers/clients with
net__add_srv()
/net__add_clt()
using a fillednet_init_t
and your ownnet_if_fn_t
set. - Run
net__run(&net)
— dispatchers and input task will start; sessions will spawn automatically as connections are made.
- Add a couple of examples (a number are available yet but not prepared)
- Add wrappers for thread calls and thus get support for various RTOS not only FreeRTOS
- Do a deep code refactoring and add support of Linux