Much of the information in this chapter has been derived from
lwIP's
own raw API documentation, although additions, modifications and adaptations
for eCos have been made.
While the high level lwIP sequential
API is good for programs that are themselves sequential and can
benefit from the blocking open-read-write-close paradigm, lwIP itself
is event based by nature. If an application can be written with an
event-based approach, then it becomes possible to integrate directly
with the event-based design of the core lwIP code.
The raw TCP/IP API allows the application program to
integrate better with the TCP/IP code. Program execution is event based by
having callback functions being called from within the TCP/IP code. The
TCP/IP code and the application program both run in the same thread. The
sequential API has a much higher overhead and is not very well suited for
small systems since it forces a multithreaded paradigm on the application.
The raw TCP/IP interface is not only faster in terms of code execution
time but is also less memory intensive. The drawback is that program
development is somewhat harder and application programs written for
the raw TCP/IP interface are more difficult to understand. Still, this
is the preferred way of writing applications that should be small in
code size and memory usage.
Both APIs can be used simultaneously by different application
programs. In fact, the sequential API is implemented as an application
program using the raw TCP/IP interface.
An example of an application using the raw API can be found in the
tests/ subdirectory of the lwIP
eCos package. This test is built when the CDL configuration option
CYGBLD_NET_LWIP_BUILD_MANUAL_TESTS is enabled.
This raw API application acts as a simple HTTP server.