Earthworm Module: reftek2ew
Contributed by:
Function
A Reftek data feeding program
Details
Module reftek2ew was developed and provided by Refraction Technologies, Inc. The module translates data from the Reftek data server, RTP, into Earthworm trace data format and writes Earthworm trace messages to an Earthworm shared memory ring.
Refraction Technologies, Inc. has provided the source code for both the Solaris and Windows 2000 versions. Along with this module, there are several other programs provided by Reftek which are required to run reftek2ew. Those can be found in the utils subdirectory in the reftek2ew source directory:
utils/solaris:
- rtpd - rtp server daemon program used to boot up Reftek boxes and control communication with them
- rtpc - rtp client program used for Reftek control
utils/winnt: (among other things)
- rtpudpsvc.exe - rtp server
- fsc.exe - Field Setup Controller
- nci.exe - Network Control Interface
INSTALLING AND CONFIGURING REFTEK DATA LOGGERS, CISCO ROUTERS, AND RTPD SERVERS
Lucky Vidmar Fri Jan 29 11:49:21 MST 1999
This file contains instructions for configuring RefTek data loggers
(e.g. model 72A with serial card RT422) to deliver data into a Solaris
or NT machine and convert it into Earthworm packets. The instructions
contained here are the result of trial-and-error, complemented with a
hefty dose of tech support from RefTek. Consulting ALL of the available
RefTek documentation is strongly recommended.
Communication between a RefTek data logger (Data Acquisition System -
DAS) and the server machine is done via the RefTek Protocol (RTP). RTP
is designed to provide full-duplex, packet-oriented transport over UDP.
RTP is implemented as a client-server process with a DAS with a RT422
serial card as the client, and the RTPD application as the server. RTPD
is available for NT and Solaris - see instructions below for installing
RPTD on each platform.
RefTek recommends that RTP is implemented through a router, for example
a Cisco 2509, such that the set up will consist of two class C networks
(one on each side of the router). The client DAS is on one network and
will connect to the router through an asynch serial interface using
PPP. The server is on the other network and the router takes care of
routing the traffic between the two networks.
SERVER
RTPD
192.168.6.80
|
|
| 192.168.6.0 network
-------------------------------------------
|
|
| 192.168.6.1
--------------------------
| |
| CISCO 2509 |
| |
--------------------------
| |
Async1 Async2
192.168.7.1 192.168.7.2
| |
| PPP |
| LINK |
| |
192.168.7.9 192.168.7.10
| |
------------ ------------
| | | |
| DAS#7853 | | DAS#7854 |
| | | |
------------ ------------
The Cisco router configuration for the setup shown above is as
follows:
hostname RefTekRouter
!
!
username das#7853 password 0 das#7853
username das#7854 password 0 das#7854
!
interface Ethernet0
ip address 192.168.6.1 255.255.255.0
!
interface Serial0
no ip address
shutdown
!
interface Serial1
no ip address
shutdown
!
interface Async1
interface Async1
ip address 192.168.7.1 255.255.255.0
ip helper-address 192.168.6.255
encapsulation ppp
async mode interactive
peer default ip address 192.168.7.9
no cdp enable
ppp authentication pap callin
!
interface Async2
interface Async2
ip address 192.168.7.2 255.255.255.0
ip helper-address 192.168.6.255
encapsulation ppp
async mode interactive
peer default ip address 192.168.7.10
no cdp enable
ppp authentication pap callin
!
ip http server
ip classless
ip forward-protocol udp 2543
ip route 192.168.6.0 255.255.255.0 Ethernet0
ip route 192.168.7.9 255.255.255.255 Async1
ip route 192.168.7.10 255.255.255.255 Async2
no logging console
access-list 101 permit ip any any
access-list 101 deny igrp any host 255.255.255.255
dialer-list 1 protocol ip list 101
!
line con 0
exec-timeout 0 0
line 1 2
autoselect ppp
modem InOut
transport input all
flowcontrol hardware
line 3 8
transport input all
line aux 0
transport input all
line vty 0 4
exec-timeout 0 0
password reftek
login
!
end
For more information about RTP consult the RefTek Protocol Manual.
CONFIGURING RTPD SERVER
More information about installing and troubleshooting RTPD can be found in the RTPD Installation and Users Guide Manual. 1. Windows NT 4.0 To configure the RTPD server as a Windows NT 4.0 service, copy the service executable rtpudpsvc.exe and the startup file rtpd.ini from the utils/winnt directory to, for example, c:\reftek. Edit the rtpd.ini file to reflect local customizations (for example, directory names, etc) then execute the following commands to install this program as a service: c: cd \reftek svcins rptd_service "RefTek Data Server" c:\reftek\rtpudpsvc.exe The RTPD service can now be controlled like any other NT service, using the Services icon within the Control Panel. 2. Solaris 2.6 o Copy the rtpd binary from the utils/solaris directory to whatever directory you find convenient, and make sure it is setuid as the user you want it to run as. This example assumes user "root", with executables in /usr/local/bin. In that case you would copy rtpd to /usr/local/bin and execute the following commands: chown root /usr/local/bin/rtpd chmod 4555 /usr/local/bin/rtpd o Copy the rtpd.ini file from solaris/winnt to, for example, /usr/local/etc directory and make any local customizations to it. The Solaris version of the file is identical to the NT version, with the exception that path names are different. You also have the choice of using the syslog logging facility. Suppose you want to use syslog. Then select a facility and give it in the ini file like: Facility LOCAL6 Then, edit /etc/syslog.conf and include the following line: local6.debug /var/log/local6 Note that it should be a TAB between the two tokens. Create /var/log/local6 and HUP syslogd (as root, kill -HUP ), once to get it to reread the conf file. See syslog.conf(4) and syslogd(1M) for additional information. o Copy the startup script utils/solaris/rtpd_init to /etc/init.d and make sure that it is executable (mode 544) and owned by root. Change directory names and make any other local customizations. Make the following soft links:: # ln -s /etc/init.d/rtpd_init /etc/rc3.d/S75rtpd_init # ln -s /etc/init.d/rtpd_init /etc/rc2.d/K10rtpd_init # ln -s /etc/init.d/rtpd_init /etc/rc0.d/K10rtpd_init This will cause RTPD to be started automatically at boot time, and to go down gracefully at system shutdown. The following command will manually stop the RTPD server: reftek% /etc/init.d/rtpd_init stop The following command will manually start the RTPD server: reftek% /etc/init.d/rtpd_init start
How to Compile Reftek2ew
In order to build this program, you need to define the following in
your earthworm.d file:
RAW_RING - transport ring for raw packets from the RTP server
MOD_IMPORT_RTP - module id for this process
TYPE_REFTEK - message type for raw RTP server packets
If you want to assign pin numbers, you will need to define them in a
parameter file. See import_rtp.d for the specification syntax, and
see reftek.scn for an example.
All dialog with the RTP server is done via the Refraction Technology
API and libraries. You can get a copy of this toolkit from
ftp://ftp.reftek.com:/pub/rtp
Install the libraries and include files as per the instructions provided
with the toolkit. You will need to specify the installation location in
your makefile. See the comments in the makefile appropriate for your
system.
Example Configuration File
# @(#)import_rtp.d 1.3 07/01/98 # reftek2ew parameter file # Basic Earthworm setup: MyModuleId MOD_REFTEK2EW # module id for this process WaveRing WAVE_RING # output ring for TRACEBUF messages RawRing RAW_RING # output ring for REFTEK messages HeartBeatInterval 30 # seconds between heartbeats # At least one of WaveRing and RtpRing must be defined. # # If you have selected a WaveRing to output TRACEBUF messages, then it # is necessary to define a mapping between the digitizer, stream, channel # information that is contained in each packet to the station, channel, # net, and pin number that is required by the TRACEBUF messages. There # is no standard way to do this in vanilla Earthworm, therefore import_rtp # defines yet another parameter file. If you don't specify this file, # then import_rtp issues a warning message on start up and then generates # its own names. Station name is the unit id, channel name is built up # from the stream and channel values in the DT header (stream:chan), the # networm name is set to "RTP", and the pin number is set to -1. SCNLFile reftek.scnl # Give the fully qualified host name, or the IP address of the server in # the usual decimal dot notation, followed by the port number for the RTP # service. If you are running this on the same computer as the RTP server, # then specify "localhost" as the host name. Server localhost 7000 # The API allows you to request data from a single, specific, DAS or from # all DAS(es). There is no provision in the API for requesting data from # a subset of the available digitizers. If you want data from a single DAS, # give its unit id here, otherwise enter 0 to select all digitizers. DASid 0 # You may filter the input based on packet type. The following types are # supported: AD CD DS DT EH ET OM SC SH. List the ones you want, or enter # ALL for all available. PktMask ET DT SC # You may filter the DT packets based on stream. List the stream id's you # want to see. The stream codes here are the one-based values that are # used by people, not the zero-based values that are in the headers. StrMask 1 2 3 4 5 6 7 8
EXAMPLE REFTEK2EW DESCRIPTOR FILE
modName reftek2ew modId MOD_REFTEK2EW instId INST_MENLO # tsec: 60 page: 0 mail: 10 # # Uncomment the "restartMe" line to enable automatic restart of this # process by statmgr/startstop. statmgr will issue a TYPE_RESTART # message for this process_id if it declares the patient dead. # restartMe # err: 1 nerr: 1 tsec: 0 page: 0 mail: 20 text: "RTP server OK." # err: 2 nerr: 1 tsec: 0 page: 0 mail: 20 text: "RTP server not responding." # err: 3 nerr: 1 tsec: 0 page: 0 mail: 20 text: "no data from RTP server."
