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.ctracks 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_tand your ownnet_if_fn_tset. - 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