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
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.