---------------------------------------------------------------------- NTRIP Client for POSIX systems ---------------------------------------------------------------------- Easy example NTRIP client for POSIX systems. Copyright (C) 2003-2007 by Dirk Stoecker <soft@dstoecker.de> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA or read http://www.gnu.org/licenses/gpl.txt Files in ntripclient.zip ----------------------------- ntripclient.c: Ntrip POSIX client source code serial.c: source code to support for serial output README: Dokumentation startntripclient: Shell script to start client makefile: Easy makefile to build source Ntrip ----- The ntripclient is an HTTP client based on 'Networked Transport of RTCM via Internet Protocol' (Ntrip). This is an application-level protocol streaming Global Navigation Satellite System (GNSS) data over the Internet. Ntrip Version 1.0 is a generic, stateless protocol based on the Hypertext Transfer Protocol HTTP/1.1. The HTTP objects are enhanced to GNSS data streams. The primary motivation for Ntrip Version 2.0 is to develop a fully HTTP-compatible Internet protocol standard that would work with proxy servers and to add an optional data transport via UDP. Hence, one Ntrip Version 2.0 transport approach is still based on HTTP1.1 on top of TCP. The second Ntrip Version 2.0 transport approach is based on both, the Internet Standard Protocol RTSP (Real Time Streaming Protocol) for stream control on top of TCP and the Internet Standard Protocol RTP (Real Time Transport Protocol) for data transport on top of connectionless UDP. Ntrip is designed for disseminating differential correction data (e.g in the RTCM-104 format) or other kinds of GNSS streaming data to stationary or mobile users over the Internet, allowing simultaneous PC, Laptop, PDA, or receiver connections to a broadcasting host. Ntrip supports Wireless Internet access through Mobile IP Networks like GSM, GPRS, EDGE, or UMTS. Ntrip is implemented in three system software components: NtripClients, NtripServers and NtripCasters. The NtripCaster is the actual HTTP server program whereas NtripClient and NtripServer are acting as HTTP clients. ntripclient ----------- This POSIX Ntrip client program is written under GNU General Public License in C programming language. The program reads data from an Ntrip Broadcaster and writes on standard output for further redirection of data to a file or COM-port. PLEASE NOTE THAT THIS PROGRAM VERSION DOES NOT HANDLE POTENTIALLY OCCURRING INTERRUPTIONS OF COMMUNICATION OR NETWORK CONGESTION SITUATIONS. Its distribution may stimulate those intending to write their own client program. Call the program with following arguments: ./ntripclient -s server -u user ... -m --mountpoint the requested data set or sourcetable filtering criteria -s --server the server name or address -p --password the login password -r --port the server port number (default 2101) -u --user the user name -M --mode mode for data request Valid modes are: 1, h, http NTRIP Version 2.0 Caster in TCP/IP mode 2, r, rtsp NTRIP Version 2.0 Caster in RTSP/RTP mode 3, n, ntrip1 NTRIP Version 1.0 Caster 4, a, auto automatic detection (default) 5, u, udp NTRIP Version 2.0 Caster in UDP mode or using an URL: ./ntripclient ntrip:mountpoint[/user[:password]][@[server][:port][@proxyhost[:proxyport]]][;nmea] Expert options: -n --nmea NMEA string for sending to server -b --bitrate output bitrate -I --initudp send initial UDP packet for firewall handling -P --udpport set the local UDP port -S --proxyhost proxy name or address -R --proxyport proxy port, optional (default 2101) Serial input/output: -D --serdevice serial device for output -B --baud baudrate for serial device -T --stopbits stopbits for serial device -C --protocol protocol for serial device -Y --parity parity for serial device -A --databits databits for serial device -l --serlogfile logfile for serial data The argument '-h' will cause a HELP on the screen. Without any argument ntripclient will provide the a table of available resources (sourcetable). Sourcetable filtering ---------------------- A missing argument '-m' leads to the output of the complete broadcaster sourcetable. This may comprise hundreds of lines in case of large networks. To limit the output, the sourcetable contents can be filtered through entering the argument '-m' followed by a sequence of query strings, one for each sourcetable data field. Only those sourcetable lines are returned from the broadcaster whoes data fields match the corresponding query strings. A sequence of query strings has to be initiated by a '?' and a semicolon is acting as query string delimiter in analogy to the sourcetable data field delimiter. Note that for fully understanding the sourcetable filtering option you have to make yourself familiar with the details of the sourcetable contents. In general, search criterias can be applied on each sourcetable data field. The following query string operators are available for integer and floating-point numbers in the sourcetable lines: - Equation operators: <, >, >=, <=, =, != (not equal) - Approximation operator: ~n (find value with minimal distance to n) The following query string operators are available for alphanumeric strings in the sourcetable lines: - Wildcard operator: '*' means any number of characters - Alternation operator: expression|expression - Grouping operator: (expression) - Any character matching for strings (case insensitivity) The following operators are available for both text as well as integer and floating-point numbers in the sourcetable lines: - Logical operators: ! (NOT), & (AND), | (OR) - Grouping operator: [!] (Expression) Examples: - Searching in a sourcetable for streams in Germany would require entering the '-m' argument followed by the query string: ?STR;;;;;;DEU - Searching in a sourcetable for free streams fom the EUREF network and coming from the Frankfurt area would require entering the '-m' argument followed by the query string: ?STR;;;;;;;EUREF;;=>50&<=51;=>8.1&<8.6;;;;;N Compilation/Installation ------------------------ Please extract the archive and copy its contents into an appropriate directory. Compile the source code under POSIX systems by calling 'make'. To compile the source code on a Windows system where a mingw gcc compiler is available, you may like to run the following command: gcc -DWINDOWSVERSION -o ntripclient.exe ntripclient.c -lwsock32 Registration ------------ Some of the data streams (mountpoints) from an NtripCaster may be available for test, demonstration, and evaluation purposes and accessible without authentication/authorization. For accessing other data streams (mountpoints) the user needs a user-ID and a user password. Authorization can be provided for a single stream, for a group of streams (network) or for all available streams. Currently, registration can be requested via the registration form on http://igs.bkg.bund.de/index_ntrip_reg.htm Ntrip Broadaster Address and Port --------------------------------- The current Internet address of the Ntrip Broadcaster is www.euref-ip.net. The port number is 2101. Disclaimer ---------- Note that this ntripclient program is for experimental use only. The BKG disclaims any liability nor responsibility to any person or entity with respect to any loss or damage caused, or alleged to be caused, directly or indirectly by the use and application of the Ntrip technology. Further Information ------------------- http://igs.bkg.bund.de/index_ntrip.htm euref-ip@bkg.bund.de Matternet Addendum ------------------ We have now forked this open source software in our github. The standard production version is built with make: make The build a debug version: make debug The debug version creates a logfile with debug output in: /home/debian/ntripclient/ntripclient.log Expected usage: ./ntripclient -s <server> -m <mount point> -r <port> -u <Matternet username> -p <Matternet password> -n <initial NMEA GGA sentence> Server (-s), mount point (-p), port (-r), username (-u), and password (-p) are required. NMEA parameter (-n) is optional. Selecting NMEA without providing an initial GGA sentence will be the same as not having the NMEA option. We have added the following features/bugfixes: JIRA Description ------ ------------ AVX-52 I/O of NMEA GGA sentence. Initial GGA sentence sent as command argument. Subsequent GGA sentences received from IPC pipe connected to MATE. Send GGA sentence to NTRIP caster/server via socket connection. Also removed compiler warnings (that occurred in some build environments) and added comments to explain functionality AVX-61 modified make file to compile to gnu99 standard AVX-67 added debug target and phony targets to makefile. Debug target creates logfile, /home/debian/ntripclient/ntripclient.log AVX-66 fixed bug preventing debug data from going to debug log file