SDK Main Modules
The Evolution SDK provides the programmer with high-level access to a large portion of the Evolution OS (or simply "Evolution") feature set. Complete documentation for all functions, structures, definitions, etc., are provided in the Evolution SDK Reference Manual. The functionality provided by Evolution includes:
- CLI Evolution uses a powerful Command Line Interface (CLI). The CLI is accessible through the serial ports, as well as through Telnet and SSH. It can be used for configuration, checking system status, and performing various functions available in the system. Using the SDK a developer can add custom commands to the CLI.
- XML Configuration Record (XCR) A powerful way to configure a MatchPort (MatchPort AR and MatchPort b/g Pro) running Evolution is with Extensible Markup Language (XML) Configuration Records (XCR). XML is human readable yet very efficient for machines to interpret. The XML engine has been designed to efficiently import and export XCRs and also provides a high degree of flexibility. XCRs can contain configuration information for the entire system, or for just a few parameters.
- HTTP Evolution includes a standard HTTP server which supports both HTTP v1.0 and v1.1. Included in the HTTP framework is full support for CGI, Cookies, Mime Types, Statistics, Logging, RSS, Authentication, and SSL. Already implemented within Evolution on the MatchPort is a powerful Web Manager, which provides users with status information, configuration capabilities, as well as the ability to perform numerous other system functions. The Evolution SDK allows users to easily expand on the MatchPort Web Manager by adding both static and customized CGI-based web pages. A wide range of API calls are available for parsing and decoding GET query strings, URL encoded and multipart POST data.
- Secure Shell (SSH) The Evolution Secure Shell is a fully interoperable version of the Secure Shell v2 protocol to provide secure remote login and other secure network services over an insecure network. The SSH implementation API’s are similar to standard Berkeley Socket API’s. A variety of algorithms for key exchange, authentication, and encryption are provided.
The following is a sampling of the additional APIs included in the Evolution SDK:
- Operating System: Common OS System functions such as Semaphores, Task Creation/Suspend/Kill
- BSD Socket Programming Interface: Provides standard access to protocol services including TCP, UDP, and DNS
- File System: Full file system support with an ANSI C like API, accessible via FTP, TFTP, CLI and Web Manager
- Data Structures: Includes Hash Tables, Link Lists, and AVL Trees
- Dynamic Memory Heap: Includes Malloc, Free, and Private Mbuf-like Buffer Pools
- Diagnostics: APIs for statistics such as Network statistics, Memory usage, File System usage and Process usage
- Email: Send email messages with message bodies
- Configurable I/O Pins: Full management of MatchPort configurable pins
- Serial Port: APIs to send and receive data on the serial ports
The Evolution SDK includes various sample programs to demonstrate a particular capability. Programmers can refer to these sample programs when creating their own custom applications.
- helloworld.c - Uses the SDK Serial API to print “Hello World" on serial port 1.
- thread.c - Uses the serial and semaphore APIs. A new thread is created to print “Hello World" multiple times, and uses a semaphore to signal the main thread when its execution is complete. All required memory is dynamically allocated.
- commandline.c - Uses the command line API to enhance the standard Evolution CLI with some simple custom commands.
- cgi.c - Uses the web APIs to create a simple CGI based page. The sample takes a string and “translates" it into all upper case text.
- sockets.c - A simple implementation of a telnet server that translates a string to uppercase using BSD sockets.
- tunnel.c - Basic tunneling application. Uses threads, sockets, serial read/write, and xml configuration.
- email.c - Uses XCR data to provide email settings, and then initiate the sending of an email message through the use of the API.
- sshclient.c - Uses BSD sockets and the Evolution SSH API to establish an outgoing SSH connection to the specified SSH
- sshserver.c - Uses BSD sockets and the SSH API to establish an SSH server and connect to incoming SSH clients
- sslclient.c - Uses BSD sockets and the Evolution SSL API to establish an outgoing SSL client connection to the specified SSL server.
- sslserver.c - Uses BSD sockets and the Evolution SSL API to establish an incoming SSL server connection to the requesting SSL client.
- custommib.c - Adds custom MIB data to the standard MIB data exposed automatically by Evolution.
- cpio.c - Configures, reads and sets the general purpose I/O pins of the MatchPort module.
- aestunnelclient.c - Creates the client (server implemented in aestunnelserver.c) for a rudimentary tunneling application using AES data encryption.
- aestunnelserver.c - Creates the server (client implemented in aestunnelclient.c) for a rudimentary tunneling application using AES data encryption. Uses XSR and XCR data for WLAN monitoring with the MatchPort b/g Pro.
- readconfig.c - Retrieves current configuration information using XSR data.
- xmlconfig.c - Sets configuration data using XCR data.
- tftpsample.c - Uses the File I/O API for file creation and the TFTP client API to put a file on a TFTP server.