Architecture
This section will give an introduction to the components included in the reference design software and where the sources for each component is located in the source tree.
The image below shows the oWL Pico API and the surrounding components included in the reference design software. All components are described below.
Directory Structure
toolkit/owl/ | Application development toolkit.
toolkit/owl/core/ | Core toolkit components such as shell and timer support.
toolkit/owl/drivers/ | Hardware interface layer for uarts, rtc etc.
toolkit/owl/components/ | Drivers for external components
toolkit/owl/util/ | Utilities that uses the owl core interfaces
|
toolkit/pico | Utilities that uses the wlp_api interface
toolkit/pico/wlp_shell.c | Shell commands for reference design.
toolkit/pico/wlp_ttcp.c | TTCP implementation for reference design.
toolkit/pico/wlp_ntp.c | NTP client implementation for reference design.
toolkit/pico/wlp_ping.c | ICMP echo implementatio for reference design.
toolkit/pico/wlp_httpd.c | HTTP server implementation for reference design.
|
platform/ | Platform-specific code
platform/xmega/ | XMEGA-specific code
platform/xmega/owl/ | Hardware interface layer implementation for XMEGA hosts.
platform/xmega/util/ | Utilities for XMEGA hosts
platform/linux | Linux-specific code
platform/linux/owl/ | Hardware layer implementation for linux hosts.
platform/linux/util/ | Utilities for linux hosts
|
wlp_api/ | oWL Pico API source code and includes.
|
os/ | OS abstraction layer implementation
|
apps/pico_client/ | Reference design application
apps/webconfig/ | Configuration application example
|
LICENSE | License information.
Directory Structure (<= 1.2.2)
owl/ | Application development toolkit.
owl/core/ | Core toolkit components such as shell and timer support.
owl/drivers/ | Hardware interface layer for uarts, rtc etc.
owl/ports/avr8/ | Hardware interface layer implementation for XPLAIN hosts.
owl/ports/linux/ | Hardware layer implementation for linux hosts.
|
wlp_api/ | oWL Pico API source code and includes.
|
main.c | Reference design main file.
wlp_shell.c | Shell commands for reference design.
wlp_ttcp.c | TTCP implementation for reference design.
wlp_ntp.c | NTP client implementation for reference design.
wlp_ping.c | ICMP echo implementatio for reference design.
httpd/ | HTTP server implementation for reference design.
ports/avr8 | Makefile for XPLAIN host.
ports/linux | Makefile for linux host.
LICENSE | License information.
oWL Pico API
This is the core component that provides the oWL Pico API. Complete sources for oWL Pico API can be found in the
wlp_api/
directory of the reference design code. The complete API documentation can be found in the file
wlp_api/wlp_api.h
.
The oWL Pico API is logically divided into three sections, the Link API, the Network API and the Socket API. The different sections controls different
layers of the communication protocols.
The oWL Pico API component is platform- and application-independent. For a quick tutorial on how to use the oWL Pico API, see
PicoTutorial.
Link API
The link layer API enables access and operations to link layer functions.
Network API
The network layer API allows the client to control IP address configuration.
Socket API
The socket layer API allows operations on different kinds of network sockets.
Reference Design Application
The reference design is a complete example application which can be used to evaluate some functions of the oWL Pico API. As the reference design software can be compiled for many different platform, Makefiles for different platforms are available in the
build/
directory.
TTCP
The TTCP component is a part ot the reference design and is an example implementation of the TTCP protocol used to test throughput performance. Sources for the TTCP component can be found in the
wlp_ttcp.c
and
wlp_ttcp.h
files.
HTTP Server
The TTCP component is a part ot the reference design and is an example implementation of an HTTP server. Sources for the HTTP component can be found in the
wlp_httpd.c and wlp_httpd.h files.
NTP Client
The NTP Client is a part ot the reference design and is an example implementation of a NTP Client. The NTP client is a simple example on how to get the current time by using UDP sockets for communication. Sources for the NTP component can be found in the
wlp_ntp.c
and
wlp_ntp.h
files.
ICMP
The PING command is part ot the reference design and is an example implementation of ping. The ping command is a simple example on how to use RAW sockets to implement ICMP messaging. Sources for the ping component can be found in the
wlp_ping.c
and
wlp_ping.h
files.
Pico Commands
The pico commands component is a part ot the reference design and provides a number of shell commands that maps directly to functions in the oWL Pico API; allowing a user to test and experiment with different network scenarios without first having to develop new code. Sources for the pico commands component can be found in the
wlp_shell.c
and
wlp_shell.h
files.
oWL Toolkit
The oWL Toolkit is a collection of some generic utilities that can be used an application, if desired. The reference design application uses the shell and timer component of the oWL Toolkit.
The code in the oWL Toolkit is divided into
core,
drivers,
components and
util:
- Core components are platform-independent and provides features such as shell, traces and timers.
- Drivers are components, or interfaces, to hardware features of platform, e.g. RTC, UARTs and LEDs.
- Components are drivers for peripheral components such as the SPB800P device, flash memories etc. These components only accesses the hardware through the owl driver interfaces.
- Utils are miscellaneous platform-independent utils that are not considered core components.
The driver interfaces are implemented for each supported platform in the
platform/<platform>/owl directory.
Note that the oWL Toolkit is not part of the oWL Pico API, it is rather a set of utlility code that can be used by an application if desired.
Sources for the oWL Toolkit can be found in the
owl/
directory.
Host UART0/pico
This is the physical UART port that connects the host platform to the SPB800.
Host UART1/shell
This is the physical UART port or console that provides the command input and output.
SPB800 Device
This is the SPB800 hardware device.