Clarification on netdev netapi etc.

I see the terms netdev, netapi, pktbuf and more around the mailing lists and issue tracker, and I have understood that some of these terms refer to deprecated APIs and modules in RIOT, and some of them are referring to new APIs and modules. The page at https://github.com/RIOT-OS/RIOT/wiki/Model-for-the-network-stack describes some classes and use cases, and I believe it applies to the newer implementation.

Could someone explain briefly some of the most used terms and what are the different APIs for network in RIOT and how they relate to each other? What documentation/source code files and directories are relevant? Which parts are deprecated/obsolete/on its way out?

Best regards, Joakim Gebart Managing Director Eistec AB

Aurorum 1C 977 75 Luleå Tel: +46(0)730-65 13 83 joakim.gebart@eistec.se www.eistec.se

Hello Joakim, netdev (drivers/netdev/ + drivers/include/netdev/), netapi (sys/net/crosslayer/netapi/ + sys/net/include/netapi.h), and pktbuf (sys/net/crosslayer/pktbuf/ + sys/net/include/pktbuf.h) are new unified APIs to network devices (netdev), the network stack (netapi) and a new module for a centralized packet buffer (pktbuf). They that are bound to replace the old transceiver API (sys/transceiver/ + sys/include/transceiver.h which did not allow for multiple devices and had code that had just became unmanagable over time) and the old network stack (basically everything else that currently resides in sys/net/*_layer/ which had no common API or buffering to begin with).

Related PRs are currently amongst others #1454 [1], #1680 [2] #1733 [3], #1968 [4], and #2003 [5]. Some will hopefully make it into the 2014.12 release, some won’t simply due to time constraints.

We’ll release a paper next year describing the new API in detail, but the general idea is, that netdev is a function-based interface to the network devices, while netapi is a compatible IPC-based interface to the network stack.

Hope this was helpful, if not just ask.

Cheers, Martine

[1] https://github.com/RIOT-OS/RIOT/pull/1454 [2] https://github.com/RIOT-OS/RIOT/pull/1680

[3] https://github.com/RIOT-OS/RIOT/pull/1733 [4] https://github.com/RIOT-OS/RIOT/pull/1968

[5] https://github.com/RIOT-OS/RIOT/pull/2003