From 16bcffc69ba07f4687fcd4145597852ee3868aec Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Fri, 13 May 2016 14:20:37 +0200 Subject: [PATCH 1/2] doc: add operational flow figure for netdev --- doc/doxygen/src/riot-netdev-rx.svg | 597 +++++++++++++++++++++++++++++ 1 file changed, 597 insertions(+) create mode 100644 doc/doxygen/src/riot-netdev-rx.svg diff --git a/doc/doxygen/src/riot-netdev-rx.svg b/doc/doxygen/src/riot-netdev-rx.svg new file mode 100644 index 0000000000..d21c7840f7 --- /dev/null +++ b/doc/doxygen/src/riot-netdev-rx.svg @@ -0,0 +1,597 @@ + + + RIOT's netdev - RX event example + + + + image/svg+xml + + RIOT's netdev - RX event example + + + + Martine Lenders + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ISR context + + + + Thread context + + + + + ISR + + + + + + Device Driver + + + + + + + Event Handler + + + + + + [1] + + + + [2] + + + + return + + + + + [3] + + + + [4] + + + + [5] + + + + return + + + + return + + + From af2e169db1693ab64b1ea6d72760000f8cac65b3 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Fri, 13 May 2016 14:20:57 +0200 Subject: [PATCH 2/2] netdev2: doc: update doc text for operational flow figure --- drivers/include/net/netdev2.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/include/net/netdev2.h b/drivers/include/net/netdev2.h index dce2bc92a2..ff9fde95d7 100644 --- a/drivers/include/net/netdev2.h +++ b/drivers/include/net/netdev2.h @@ -20,13 +20,20 @@ * * Example call flow: * - * 1. packet arrives -> driver calls netdev2->event_callback with - * event==NETDEV_EVENT_ISR (from interrupt routine) - * 2. event_callback wakes up upper layer thread - * 3. upper layer calls netdev2->driver.isr() - * 4. netdev2->driver.isr() calls netdev2->event_callback() with - * event==NETDEV_EVENT_RX_COMPLETE - * 5. netdev2->event_callback() uses netdev2->driver.recv() to fetch packet + * 1. packet arrives for device + * 2. The driver previously registered an ISR for handling received packets. + * This ISR then calls @ref netdev2_t::event_callback "netdev->event_callback()" + * with `event` := @ref NETDEV2_EVENT_ISR (from Interrupt Service Routine) + * which wakes up event handler + * 3. event handler calls @ref netdev2_driver_t::isr "netdev2->driver->isr()" + * (from thread context) + * 4. @ref netdev2_driver_t::isr "netdev->driver->isr()" calls + * @ref netdev2_t::event_callback "netdev->event_callback()" with + * `event` := @ref NETDEV2_EVENT_RX_COMPLETE + * 5. @ref netdev2_t::event_callback "netdev->event_callback()" uses + * @ref netdev2_driver_t::recv "netdev2->driver->recv()" to fetch packet + * + * ![RX event example](riot-netdev-rx.svg) * * @file * @brief Definitions low-level network driver interface