RT-IP

Portable TCP-IP Network Stack

For Embedded Applications

Put Your Embedded Application on
the WEB with RTIP




RT-IP is the only TCP-IP solution you need for Embedded applications. It is embedded in set top boxes to connect thousands of homes to the internet through their cable TV provider. It links thousands of sites to a home office for interactive satellite based training.
It connects instruments to a PC or workstation over ethernet. It links gaming tables and industrial controllers on LAN's to host computers. RT-IP is sophisticated enough to handle the toughest wide area networking jobs but is still compact and economical enough to be used in simple lan applications. RT-IP's low cost, clean implementation and high functionality make it a breeze to add TCPIP networking to any application.

Read on and we'll show you what RT-IP can do for you.



Features of RTIP
100 % 'C' Source code
Royalty Free
Free Technical Support
Supports BOOTP,RARP,ARP,ICMP,UDP,TCP
Excellent TCP implementation
Supports SNMP
Standard sockets API
Proprietary Extensions API
Sample programs Included
Built in DNS support
Callable Telnet and FTP
Excellent PPP support
World Wide Web Server
NFS Client Library
Thorough Regression Test
No-copy for both UDP and TCP
Supports IP fragments
Supports 68000, PowerPC, 80X86 etc..
Standard IBM-PC DOS port available
Kernel friendly good behavior
Supports AMX, SMX, RtKernel, CMX
Supports Nucleus, Pharlap.
Supports polled mode (no kernel)
Ez to port to new kernels
SLIP and Ethernet Included
PCMCIA/Ethernet support available
Integration and training services
Excellent Documentation
CLICK HERE TO RETURN TO THE HOME PAGE.




RTIP API Functions
RTIP API Functions
Socket Programmer's Interface
Function Description Function Description
acceptAccept a connection from any remote host; TCP only. bindBind a socket to a local port number and IP address.
closesocketClose a socket and sever any connections. connectEstablish a connection to a remote host.
getpeernameGet port # and IP address of connected remote host. getsocketnameGet port number and IP address of local host.
getsockoptGet value of a socket option. htonlConvert unsigned long from host to network byte order.
htonsConvert unsigned short from host to network byte order. ioctlsocketTurns I/O blocking on or off.
listenEstablish a backlog queue for a socket; TCP only. ntohlConvert unsigned long from network to host byte order.
ntohsConvert unsigned short from network to host byte order. recvReceive data at a socket.
recvfromReceive data at a socket and retrieve host address. selectBlock until status (read or write ready or error status).
sendSend data to a socket. sendtoSend data to a host.
setsockoptSet a socket option. shutdownDisable receives and/or sends on a socket.
socketAllocate a UDP or TCP socket port.
Database Programmer's Interface
Function Description Function Description
getprotobynameGet protocol info from protocol name. getprotobynumberGet protocol info form protocol number.
getservbynameGet service info from server name and protocol name. getservbyportGet service info from server port and protocol name.



DNS API Functions
DNS API Functions
Domain Name Server Programmer's Interface
Function Description Function Description
xn_add_host_table_entryAdd entry to global host table. xn_clear_host_cacheReinitializes the internal host cache.
xn_delete_host_table_entryDelete entry from glocal host table. xn_set_server_listSet global name server list.
gethostbyaddrTakes IP address and returns name string. gethostbynameTakes name string and returns IP address.



RTIP API Functions
RTIP API Functions
RTIP API CALLS
Function Description Function Description
xn_abortAbort a socket and sever any connections. xn_arp_addManually add a host to the arp cache.
xn_attachOpen a serial interface. xn_bootpCall a bootpserver to get htis nodes's IP address..
xn_initInitialize TCPIP run time environment. xn_interface_closeClose interface.
xn_interface_infoReturns interface information. xn_interface_openOpen an interface for ethernet or loopback interface.
xn_ping"PING" a host and wait for it to reply. xn_pkt_allocAllocate a message buffer for the high speed interface.
xn_pkt_data_maxReturns number of bytes transferable per packet. xn_pkt_data_pointerReturns the address of the user area in a pcaket.
xn_pkt_data_sizeReturns count of valid user bytes in a received packet. xn_pkt_freeFree a message buffer for the high speed interface .
xn_pkt_recvZero copy wait for next packet at a port. xn_pkt_recv_fromZero copy wait for next packet at a port,retrieve host address .
xn_pkt_sendZero copy send data directly to port. xn_pkt_send_toZero copy send data directly to a host.
xn_rarpCall a rarp server to get this node's IP address. xn_rt_addAdd a route to the routing table.
xn_rtip_exitPerform cleanup before exiting. xn_set_ipSet the IP address and IP network mask for an interface.
xn_set_multicastInstall a receive multicast address list in an interface.



The FTP/TELNET option includes the source code for an FTP server, FTP client and a TELNET server. The FTP module uses a virtual file system layer to provide file services. We currently support our own file system (RTFS), DOS and a memory only file system for diskless systems. Other file systems may be added easilly as can pure virtual file systems. The telnet server creates a connection and simply echoes text back to the telnet server. It can be customized to attach to a command interpreter for your embedded application.

The FTP/TELNET package comes with a sample application for each protocol.

Telnet and FTP Application Services
Function Description Function Description
ftpcli_connectConnect to an ftp server. ftpcli_pwdGet current working directory.
ftpcli_rmdirDelete a directory. ftpcli_dirSend directory information to a callback routine.
ftpcli_quitEnd the ftp client session tftpcli_sendfileSend a file to a tftp server
tftp_mainStart a tftp server telnet_serverStart a telnet server
ftpcli_cwdSet current working directory ftpcli_mkdirMake a directory
ftpcli_unlinkDelete a file ftpcli_xferSend or receive a file
tftpcli_connectConnect to a tftp server tftpcli_recvfileRetreive a file from a tftp server
ftpsrv_mainStart an ftp server



EBS PPP is a port of publicly available PPP code that has been customized for use in embedded systems and has been tightly integrated with the RT-IP network stack. EBS PPP supports LCP, PAP and IPCP as described in RFC's 1331, 1172, 1334 and 1332. PPP runs in both passive and active modes and has been run against Unix, NT, Win 95, Chameleon etc. A clearly defined interface to the link layer makes porting PPP to new boards/uarts easy.
EBS PPP Services
Function Description Function Description
xn_ipcp_openEnable IPCP protocol. xn_ipcp_set_optionSet / Clear ipcp options.
xn_ipcp_want_addressSet IP address for negotiation. xn_lcp_openOpen a PPP connection.
xn_lcp_set_optionSet/Clear lcp options. xn_lcp_want_accmSet Character Map to Negotiate
xn_lcp_want_magicSet Magic # to Negotiate. xn_lcp_want_mruSet mru value to negotiate
xn_lcp_want_optionVarious LCP options. xn_lcp_want_papSet/Clear password authentification
xn_pap_add_userAdd a PAP user/Password. xn_pap_userChange user setting
xn_ppp_closeClose a connection. xn_pap_initRestore default settings



The NFS client services provides a rich API for manipulating a mounted remote file system. With the NFS client, the embedded system can use a workstation's disk drive as if it were its own, reading parameter files and reading and writing data directly to the workstation's disk. All necessary filesystem primitives are implemented. If the EBS RTFS local file system is in use, a layer is provided to transparently route requests to either NFS or RTFS. A comprehensive manual is supplied as is an interactive command shell which lets the user mount and manipulate remote file systems. The command shell also provides documented sample code for using the NFS package.
EBS NFS Client
Function Description Function Description
nfs_dskabortAbort operations on a remote disk nfs_dskcloseUnmount a remote disk gracefully
nfs_dskopenMount a remote disk nfs_fi_closeClose a remote file
nfs_fi_flushFlush a remote file to disk nfs_fi_lseekMove remote file pointer
nfs_fi_openOpen a remote file nfs_fi_readRead from a remote file
nfs_fi_truncateTruncate a remote file nfs_fi_writeWrite to a remote file
nfs_gdoneFree nfs_gfirst/gnext's resources nfs_get_attributesGet file attributes
nfs_gfirstGet first entry in a remote directory nfs_gnextGet next entry in a remote directory
nfs_initInitialize NFS library nfs_isdirTest if a remote directory entry is a subdirectory
nfs_mkdirCreate a remote subdirectory nfs_mvRename a remote file
nfs_pwdReturn the current working directory nfs_rmdirDelete a remote directory
nfs_set_cwdSet the current working directory nfs_set_attributesSet remote file attributes
nfs_set_default_driveSet working mount nfs_set_machine_nameSet machine name for authentification
nfs_set_srv_ipSet the remote IP address before mount nfs_statStat a remote directory or file
nfs_unlinkRemove a remote file




Porting RTIP

Our real-time OS porting layer is short and sweet, only one header file and one small 'C' file need modification to port the library to a new kernel. We currently support the following kernels: AMX, SMX, RtKernel, CMX, Nucleus and Pharlap. Call for more information or the latest list of supported kernels.

RTIP runs in polled mode for those installations not requiring a real time kernel.

We specialize in integrating RT-IP with proprietary kernels. We can visit your site to assist you.





Driver Support

Supports the following ethernet boards:

Western Digital/SMC - 8003 and 8013 series, Elite Ultra (8216),SMC91C90, SMC91C92 and SMC91C94
3Com - 3C503, 3C509
Novell - NE1000 and NE2000
DEC - DE4X5 for the PCI Bus

We also provide a UART driver for SLIP and PPP.

Adding a new driver is easy. You just need to add the entry points into a device table.




We provide sample programs that demonstrate and exercise each of RT-IPs features. In most cases you should be able to start with a demo program and add the functionality you need for your application. This flattens your learning curve significantly.
RTIP Sample Programs
echo This program lets you run the following options:
-sends console input to a UDP or TCP echo server and displays the response.
-echoes packets sent to the UDP or TCP echo port.
-sends ICMP echo requests to remote hosts.
rtipdemo This program sends and recieves simultaneously over both TCP and UDP between two RTIP systems. It demonstrates RT-IP's ability to handle multiple full speed conections when working with a real time kernel.
regressThis program regression tests TCP, DNS, PPP, UDP and the API
ftpdemo (OPTIONAL) This program demonstrates the callable application services by providing TELNET Server and FTP server and interactive FTP client.
WebDemo (OPTIONAL) This program demonstrates the callable WEB server by providing a web server with canned pages.
nfsdemo (OPTIONAL) This program demonstrates the callable NFS client code by providing an interactive file management shell as well providing a regression test.




MICRO-WEB Embedded Web Server

For Embedded Applications




Micro-Web is a full featured HTML server that is specifically designed for embedded systems. With very little additional overhead an embedded system can display its data in nicely formatted HTML tables and pages on PC's running Netscape or a similar browser. With very little programming you can present professional looking screens from your enbedded system. Micro-Web supports HTML forms so the PC can also send data to the embedded system. Be sure to run Micro-Web to see what it can do.
Check out these features.
CompactMicro Web was written from scratch, it is small and efficient
Callable SubroutineSpawn a task to call Micro-Web from your application
No file system requiredWeb pages may be written and tested and then compiled directly into the application.
File systems supportedWeb pages may be displayed from disk files if a file system is available.
All file type supportedGIF, JPEG, HTML.
Virtual function support (CGI)Web pages may contain CGI calls which invoke 'C' functions to display data. These functions may display real time or calculated data.
Server Push SupportThe server can be programmed to refresh fields without client re-load requests.