Changeset 9448 in ntrip for trunk


Ignore:
Timestamp:
May 28, 2021, 12:23:36 PM (3 years ago)
Author:
stuerze
Message:

data upload to localhost added

Location:
trunk/ntripserver
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ntripserver/README

    r9404 r9448  
    33----------------------------------------------------------------------
    44
    5 (c) German Federal Agency for Cartography and Geodesy (BKG), 2002-2019
     5(c) German Federal Agency for Cartography and Geodesy (BKG), 2002-2021
    66
    77
     
    5151from a single NTRIP source running under a POSIX operating system.
    5252
    53 Basically the ntripserver grabs a GNSS byte stream (Input, Source)
     53The purpose of this program is to pick up a GNSS data stream (Input, Source)
    5454from either
    5555
    56 1. a Serial port, or
    57 2. an IP server, or
    58 3. a File, or
    59 4. a SISNeT Data Server, or
    60 5. a UDP server, or
    61 6. an NTRIP Version 1.0 Caster
    62 
    63 and forwards that incoming stream to either
    64 
    65 1. an NTRIP Version 2.0 Caster via TCP/IP (Output, Destination), or
    66 2. an NTRIP Version 2.0 Caster via RTSP/RTP (Output, Destination), or
    67 3. an NTRIP Version 2.0 Caster via plain UDP (Output, Destination), or
    68 4. an NTRIP Version 1.0 Caster.
    69 
    70 Please note, the options to support NTRIP Version 2.0 are currently still
    71 under development and should be used with care. Keep in mind that details
    72 of the NTRIP Version 2.0 transport protocol are still under discussion
    73 and may be changed.
    74 
     56  1. a Serial port, or
     57  2. an IP server, or
     58  3. a File, or
     59  4. a SISNeT Data Server, or
     60  5. a UDP server, or
     61  6. an NTRIP Version 1.0 Caster
     62  7. an NTRIP Version 2.0 Caster in HTTP mode
     63
     64and forward that incoming stream (Output, Destination) to either
     65
     66  1. an NTRIP Version 2.0 Caster via TCP/IP (Output, Destination), or
     67  2. an NTRIP Version 2.0 Caster via RTSP/RTP (Output, Destination), or
     68  3. an NTRIP Version 2.0 Caster via plain UDP (Output, Destination), or
     69  4. an NTRIP Version 1.0 Caster, or
     70  5. an IP server via TCP/IP
    7571
    7672Installation
     
    9894The user may call the program with the following options:
    9995
    100 -h|? print this help screen
    101 
    102 -E <ProxyHost>       Proxy server host name or address, required i.e. when
    103                      running the program in a proxy server protected LAN,
    104                      optional
    105 -F <ProxyPort>       Proxy server IP port, required i.e. when running
    106                      the program in a proxy server protected LAN, optional
    107 -R <maxDelay>        Reconnect mechanism with maximum delay between reconnect
    108                      attemts in seconds, default: no reconnect activated,
    109                      optional
    110 
    111 -M <InputMode> Sets the input mode (1 = Serial Port, 2 = IP server,
    112    3 = File, 4 = SISNeT Data Server, 5 = UDP server, 6 = NTRIP Caster),
    113    mandatory
    114 
    115    <InputMode> = 1 (Serial Port): (using 8-N-1 = data bits-parity-stop bits)
    116    -i <Device>       Serial input device, default: /dev/gps, mandatory if
    117                      <InputMode>=1
    118    -b <BaudRate>     Serial input baud rate, default: 19200 bps, mandatory
    119                      if <InputMode>=1
    120    -f <InitFile>     Name of initialization file to be send to input device,
    121                      optional
    122 
    123    <InputMode> = 2|5 (IP port | UDP port):
    124    -H <ServerHost>   Input host name or address, default: 127.0.0.1,
    125                      mandatory if <InputMode> = 2|5
    126    -P <ServerPort>   Input port, default: 1025, mandatory if <InputMode>= 2|5
    127    -f <ServerFile>   Name of initialization file to be send to server,
    128                      optional
    129    -x <ServerUser>   User ID to access incoming stream, optional
    130    -y <ServerPass>   Password, to access incoming stream, optional
    131    -B Bind to incoming UDP stream, optional for <InputMode> = 5
    132 
    133    <InputMode> = 3 (File):
    134    -s <File>         File name to simulate stream by reading data from (log)
    135                      file, default is /dev/stdin, mandatory for <InputMode> = 3
    136 
    137    <InputMode> = 4 (SISNeT Data Server):
    138    -H <SisnetHost>   SISNeT Data Server name or address,
    139                      default: 131.176.49.142, mandatory if <InputMode> = 4
    140    -P <SisnetPort>   SISNeT Data Server port, default: 7777, mandatory if
    141                      <InputMode> = 4
    142    -u <SisnetUser>   SISNeT Data Server user ID, mandatory if <InputMode> = 4
    143    -l <SisnetPass>   SISNeT Data Server password, mandatory if <InputMode> = 4
    144    -V <SisnetVers>   SISNeT Data Server Version number, options are 2.1, 3.0
    145                      or 3.1, default: 3.1, mandatory if <InputMode> = 4
    146 
    147    <InputMode> = 6 (NTRIP Version 1.0 Caster):
    148    -H <SourceHost>   Source caster name or address, default: 127.0.0.1,
    149                      mandatory if <InputMode> = 6
    150    -P <SourcePort>   Source caster port, default: 2101, mandatory if
    151                      <InputMode> = 6
    152    -D <SourceMount>  Source caster mountpoint for stream input, mandatory if
    153                      <InputMode> = 6
    154    -U <SourceUser>   Source caster user Id for input stream access, mandatory
    155                      for protected streams if <InputMode> = 6
    156    -W <SourcePass>   Source caster password for input stream access, mandatory
    157                      for protected streams if <InputMode> = 6
    158 
    159 -O <OutputMode> Sets output mode for communatation with destination caster
    160    1 = http: NTRIP Version 2.0 Caster in TCP/IP mode
    161    2 = rtsp: NTRIP Version 2.0 Caster in RTSP/RTP mode
    162    3 = ntrip1: NTRIP Version 1.0 Caster
    163    4 = udp: NTRIP Version 2.0 Caster in Plain UDP mode
    164    optional
    165 
    166    Defaults to NTRIP1.0, but will change to 2.0 in future versions
    167    Note that the program automatically falls back from mode rtsp to mode http and
    168    further to mode ntrip1 if necessary.
    169 
    170    -a <DestHost>     Destination caster name or address, default: 127.0.0.1,
    171                      mandatory
    172    -p <DestPort>     Destination caster port, default: 2101, mandatory
    173    -m <DestMount>    Destination caster mountpoint for stream upload,
    174                      mandatory
    175    -n <DestUser>     Destination caster user ID for stream upload to
    176                      mountpoint, only for NTRIP Version 2.0 destination
    177                      casters, mandatory
    178    -c <DestPass>     Destination caster password for stream upload to
    179                      mountpoint, mandatory
    180    -N <STR-record>   Sourcetable STR-record
    181                      optional for NTRIP Version 2.0 in RTSP/RTP and TCP/IP mode
     96./ntripserver [OPTIONS]
     97
     98 -h|? print this help screen
     99
     100   -E <ProxyHost>       Proxy server host name or address, required i.e. when
     101                        running the program in a proxy server protected LAN,
     102                        optional
     103   -F <ProxyPort>       Proxy server IP port, required i.e. when running
     104                        the program in a proxy server protected LAN, optional
     105   -R <maxDelay>        Reconnect mechanism with maximum delay between reconnect
     106                        attemts in seconds, default: no reconnect activated,
     107                        optional
     108   -M <InputMode> Sets the input mode (1 = Serial Port, 2 = IP server,
     109      3 = File, 4 = SISNeT Data Server, 5 = UDP server, 6 = NTRIP1 Caster,
     110      7 = NTRIP2 Caster in HTTP mode),
     111      mandatory
     112      <InputMode> = 1 (Serial Port):
     113      -i <Device>       Serial input device, default: /dev/gps, mandatory if
     114                        <InputMode>=1
     115      -b <BaudRate>     Serial input baud rate, default: 19200 bps, mandatory
     116                        if <InputMode>=1
     117      -f <InitFile>     Name of initialization file to be send to input device,
     118                        optional
     119      <InputMode> = 2|5 (IP port | UDP port):
     120      -H <ServerHost>   Input host name or address, default: 127.0.0.1,
     121                        mandatory if <InputMode> = 2|5
     122      -P <ServerPort>   Input port, default: 1025, mandatory if <InputMode>= 2|5
     123      -f <ServerFile>   Name of initialization file to be send to server,
     124                        optional
     125      -x <ServerUser>   User ID to access incoming stream, optional
     126      -y <ServerPass>   Password, to access incoming stream, optional
     127      -B                Bind to incoming UDP stream, optional for <InputMode> = 5
     128      <InputMode> = 3 (File):
     129      -s <File>         File name to simulate stream by reading data from (log)
     130                        file, default is /dev/stdin, mandatory for <InputMode> = 3
     131      <InputMode> = 4 (SISNeT Data Server):
     132      -H <SisnetHost>   SISNeT Data Server name or address,
     133                        default: 131.176.49.142, mandatory if <InputMode> = 4
     134      -P <SisnetPort>   SISNeT Data Server port, default: 7777, mandatory if
     135                        <InputMode> = 4
     136      -u <SisnetUser>   SISNeT Data Server user ID, mandatory if <InputMode> = 4
     137      -l <SisnetPass>   SISNeT Data Server password, mandatory if <InputMode> = 4
     138      -V <SisnetVers>   SISNeT Data Server Version number, options are 2.1, 3.0
     139                        or 3.1, default: 3.1, mandatory if <InputMode> = 4
     140      <InputMode> = 6|7 (NTRIP Version 1.0|2.0 Caster):
     141      -H <SourceHost>   Source caster name or address, default: 127.0.0.1,
     142                        mandatory if <InputMode> = 6|7
     143      -P <SourcePort>   Source caster port, default: 2101, mandatory if
     144                        <InputMode> = 6|7
     145      -D <SourceMount>  Source caster mountpoint for stream input, mandatory if
     146                        <InputMode> = 6|7
     147      -U <SourceUser>   Source caster user Id for input stream access, mandatory
     148                        for protected streams if <InputMode> = 6|7
     149      -W <SourcePass>   Source caster password for input stream access, mandatory
     150                        for protected streams if <InputMode> = 6|7
     151   -O <OutputMode> Sets output mode for communication with destination caster / server
     152      1 = http  : NTRIP Version 2.0 Caster in TCP/IP mode
     153      2 = rtsp  : NTRIP Version 2.0 Caster in RTSP/RTP mode
     154      3 = ntrip1: NTRIP Version 1.0 Caster
     155      4 = udp   : NTRIP Version 2.0 Caster in Plain UDP mode
     156      5 = tcpip : IP server in TCP/IP mode
     157      Defaults to NTRIP1.0, but will change to 2.0 in future versions
     158      Note that the program automatically falls back from mode rtsp to mode http and
     159      further to mode ntrip1 if necessary.
     160      -a <DestHost>     Destination caster/server name or address, default: 127.0.0.1,
     161                        mandatory
     162      -p <DestPort>     Destination caster/server port, default: 2101,
     163                        mandatory
     164      -m <DestMount>    Destination caster mountpoint for stream upload,
     165                        only for NTRIP destination casters, mandatory
     166      -n <DestUser>     Destination caster user ID for stream upload to mountpoint,
     167                        only for NTRIP Version 2.0 destination casters, mandatory
     168      -c <DestPass>     Destination caster password for stream upload to mountpoint,
     169                        only for NTRIP destination casters, mandatory
     170      -N <STR-record>   Sourcetable STR-record
     171                        optional for NTRIP Version 2.0 in RTSP/RTP and TCP/IP mode
    182172
    183173
     
    198188program needs a password (and a user ID for NTRIP Version 2.0)
    199189and one mountpoint per stream.
    200 For the NTRIP Broadcasters EUREF-IP or IGS-IP this is currently
    201 available from https://igs.bkg.bund.de/ntrip/registerprovider
    202 
     190For the NTRIP Broadcasters EUREF-IP or IGS-IP please contact
     191euref-ip@bkg.bund.de or igs-ip@bkg.bund.de
    203192
    204193Disclaimer
  • trunk/ntripserver/ntripserver.c

    r9404 r9448  
    104104  NTRIP1 = 3,
    105105  UDP = 4,
    106   TDC = 5,
     106  TCPIP = 5,
    107107  END
    108108};
     
    230230  const char *ntrip_str = "";
    231231
    232   const char *dabplus_provider = 0;
    233   char dabplus_provider_str[17] = "";
    234 
    235232  const char *user = "";
    236233  const char *password = "";
     
    296293  }
    297294  while ((c = getopt(argc, argv,
    298       "M:i:h:b:p:s:a:m:c:H:P:f:x:y:l:u:V:D:U:W:O:E:F:R:N:T:n:B")) != EOF) {
     295      "M:i:h:b:p:s:a:m:c:H:P:f:x:y:l:u:V:D:U:W:O:E:F:R:N:n:B")) != EOF) {
    299296    switch (c) {
    300297      case 'M': /*** InputMode ***/
     
    422419        else if (!strcmp(optarg, "u") || !strcmp(optarg, "udp"))
    423420          outputmode = UDP;
    424         else if (!strcmp(optarg, "t") || !strcmp(optarg, "tdc"))
    425           outputmode = TDC;
     421        else if (!strcmp(optarg, "t") || !strcmp(optarg, "tcpip"))
     422          outputmode = TCPIP;
    426423        else
    427424          outputmode = atoi(optarg);
     
    438435        ntrip_str = optarg;
    439436        break;
    440       case 'T':
    441         dabplus_provider = optarg;
    442         break;
    443437      case 'h': /* print help screen */
    444438      case '?':
     
    471465  }
    472466
    473   if (!mountpoint && outputmode != TDC) {
     467  if (!mountpoint && outputmode != TCPIP) {
    474468    fprintf(stderr, "ERROR: Missing mountpoint argument for stream upload\n");
    475469    exit(1);
    476470  }
    477 
    478   if (outputmode == TDC) {
    479     fprintf(stderr, "ERROR: DABPLUS server upload implementation is so far not completed\n\n");
    480     exit(0);
    481 
     471  if (outputmode == TCPIP) {
    482472    mountpoint = NULL;
    483     if (dabplus_provider) {
    484       i = snprintf(dabplus_provider_str, 17, "%16s", dabplus_provider);
    485       if ((i > 16) || (i < 0)) {
    486         fprintf(stderr, "ERROR: DABPLUS provider name to long - length = %d (max: %d)\n", i, 16);
    487         exit(0);
    488       }
    489     }
    490     else {
    491       fprintf(stderr, "ERROR: DABPLUS provider name required\n");
    492       exit(0);
    493     }
    494473  }
    495474
    496475  if (!password[0]) {
    497     if (outputmode != TDC)
     476    if (outputmode != TCPIP)
    498477      fprintf(stderr,
    499478          "WARNING: Missing password argument for stream upload - are you really sure?\n");
     
    515494  /*** proxy server handling ***/
    516495  if (*proxyhost) {
    517     if (outputmode == TDC) {
    518       fprintf(stderr, "\nWARNING: TDC is not able to support proxy servers, try direct connection\n\n");
    519       inhost = proxyhost;
    520       inport = proxyport;
    521       outhost = casterouthost;
    522       outport = casteroutport;
    523     } else {
    524       outhost = inhost = proxyhost;
    525       outport = inport = proxyport;
    526     }
    527     i = snprintf(szSendBuffer, sizeof(szSendBuffer), "http://%s:%d", casterouthost, casteroutport);
    528     if ((i > SZ) || (i < 0)) {
    529       fprintf(stderr,
    530           "ERROR: Destination caster name/port to long - length = %d (max: %d)\n",
    531           i, SZ);
    532       exit(0);
    533     } else {
    534       strncpy(post_extension, szSendBuffer, (size_t) i);
    535       strcpy(szSendBuffer, "");
    536       i = snprintf(szSendBuffer, sizeof(szSendBuffer), ":%d", casteroutport);
    537       strncpy(rtsp_extension, szSendBuffer, SZ);
    538       strcpy(szSendBuffer, ""); i = 0;
    539     }
     496    inhost = proxyhost;
     497    inport = proxyport;
    540498    i = snprintf(szSendBuffer, sizeof(szSendBuffer), "http://%s:%d", casterinhost, casterinport);
    541499    if ((i > SZ) || (i < 0)) {
     
    549507      i = 0;
    550508    }
     509    if (strstr(casterouthost, "127.0.0.1") ||
     510        strstr(casterouthost, "localhost")) {
     511      outhost = casterouthost;
     512      outport = casteroutport;
     513    }
     514    else {
     515      outhost = proxyhost;
     516      outport = proxyport;
     517      i = snprintf(szSendBuffer, sizeof(szSendBuffer), "http://%s:%d", casterouthost, casteroutport);
     518      if ((i > SZ) || (i < 0)) {
     519        fprintf(stderr,
     520            "ERROR: Destination caster name/port to long - length = %d (max: %d)\n",
     521            i, SZ);
     522        exit(0);
     523      } else {
     524        strncpy(post_extension, szSendBuffer, (size_t) i);
     525        strcpy(szSendBuffer, "");
     526        i = snprintf(szSendBuffer, sizeof(szSendBuffer), ":%d", casteroutport);
     527        strncpy(rtsp_extension, szSendBuffer, SZ);
     528        strcpy(szSendBuffer, ""); i = 0;
     529      }
     530    }
     531
    551532  } else {
    552533    outhost = casterouthost;
     
    682663          }
    683664        } /* connect to input-caster or proxy server*/
    684         else if (connect(gps_socket, (struct sockaddr*) &caster, sizeof(caster))
    685             < 0) {
     665        else if (connect(gps_socket, (struct sockaddr*) &caster, sizeof(caster)) < 0) {
    686666          fprintf(stderr, "WARNING: can't connect input to %s at port %d\n",
    687667              inet_ntoa(caster.sin_addr), inport);
     
    728708        szSendBuffer[nBufferBytes++] = '\r';
    729709        szSendBuffer[nBufferBytes++] = '\n';
    730         // fprintf(stdout, "%s\n", szSendBuffer);
     710        fprintf(stdout, "%s\n", szSendBuffer);
    731711        if ((send(gps_socket, szSendBuffer, (size_t) nBufferBytes, 0)) != nBufferBytes) {
    732712          fprintf(stderr, "WARNING: could not send Source caster request\n");
     
    917897        break;
    918898      }
    919 
    920899      memset((char*) &caster, 0x00, sizeof(caster));
    921900      memcpy(&caster.sin_addr, he->h_addr, (size_t)he->h_length);
     
    929908          outputmode == HTTP   ? "http"   :
    930909          outputmode == UDP    ? "udp"    :
    931           outputmode == RTSP   ? "rtsp"   : "tdc");
     910          outputmode == RTSP   ? "rtsp"   : "tcpip");
    932911
    933912      if (connect(socket_tcp, (struct sockaddr*) &caster, sizeof(caster)) < 0) {
     
    11901169            break;
    11911170          }
    1192           if ((getsockname(socket_udp, (struct sockaddr*) &local, &len))
    1193               != -1) {
     1171          if ((getsockname(socket_udp, (struct sockaddr*) &local, &len)) != -1) {
    11941172            client_port = (unsigned int) ntohs(local.sin_port);
    11951173          } else {
     
    13271305          input_init = output_init = 0;
    13281306          break;
    1329         case TDC:
     1307        case TCPIP:
    13301308          fallback = 0;
    1331           szSendBuffer[0] = 0x28;
    1332           szSendBuffer[1] = 0x11;
    1333           szSendBuffer[2] = 0x19;
    1334           szSendBuffer[3] = 0x69;
    1335           strncpy(szSendBuffer + 4, dabplus_provider_str, 16);
    1336           szSendBuffer[20] = 0; // mot
    1337           nBufferBytes =  strlen(szSendBuffer);
    1338           if ((nBufferBytes > 20) || (nBufferBytes < 0)) {
    1339             fprintf(stderr, "ERROR: Destination server request to long\n");
    1340             reconnect_sec_max = 0;
    1341             output_init = 0;
    1342             break;
    1343           }
    1344           if (!send_to_caster(szSendBuffer, socket_tcp, nBufferBytes)) {
    1345             output_init = 0;
    1346             break;
    1347           }
    1348           /* check Destination server's response
    1349           in case of a unidirectional connection muxd will close the connection
    1350           if an error occurs without transmitting any status information
    1351           */
    13521309          send_receive_loop(socket_tcp, outputmode, NULL, 0, 0, chunkymode);
    13531310          input_init = output_init = 0;
     
    15801537    /*  send data    */
    15811538    /*****************/
    1582     if ((nBufferBytes) && (outmode == NTRIP1)) {
     1539    if ((nBufferBytes) && (outmode == NTRIP1 || outmode == TCPIP)) {
    15831540      int i;
    15841541      if ((i = send(sock, buffer, (size_t) nBufferBytes, MSG_DONTWAIT)) != nBufferBytes) {
     
    17501707      }
    17511708    }
    1752     else if ((nBufferBytes) && (outmode == TDC)) {
    1753 
     1709    else if ((nBufferBytes) && (outmode == TCPIP)) {
     1710      int i;
     1711      if ((i = send(sock, buffer, (size_t) nBufferBytes, MSG_DONTWAIT)) != nBufferBytes) {
     1712        if (i < 0) {
     1713          if (errno != EAGAIN) {
     1714            perror("WARNING: could not send data to IP server and port");
     1715            return;
     1716          }
     1717        } else if (i) {
     1718          memmove(buffer, buffer + i, (size_t) (nBufferBytes - i));
     1719          nBufferBytes -= i;
     1720        }
     1721      } else {
     1722        nBufferBytes = 0;
     1723      }
    17541724    }
    17551725    if (send_recv_success == 3)
     
    19391909  fprintf(stderr,
    19401910      "   and forward that incoming stream (Output, Destination) to either\n\n");
    1941   fprintf(stderr, "     - an NTRIP Version 1.0 Caster, or\n");
    1942   fprintf(stderr, "     - an NTRIP Version 2.0 Caster via TCP/IP or RTSP/RTP, or \n");
    1943   fprintf(stderr, "     - an DABPLUS Content Server via TCP/IP and TDC \n\n\n");
     1911  fprintf(stderr, "     1. an NTRIP Version 2.0 Caster via TCP/IP (Output, Destination), or\n");
     1912  fprintf(stderr, "     2. an NTRIP Version 2.0 Caster via RTSP/RTP (Output, Destination), or\n");
     1913  fprintf(stderr, "     3. an NTRIP Version 2.0 Caster via plain UDP (Output, Destination), or\n");
     1914  fprintf(stderr, "     4. an NTRIP Version 1.0 Caster, or\n");
     1915  fprintf(stderr, "     5. an IP server via TCP/IP\n\n\n");
    19441916  fprintf(stderr, "OPTIONS\n");
    19451917  fprintf(stderr, "   -h|? print this help screen\n\n");
     
    19531925  fprintf(stderr, "                         optional\n\n");
    19541926  fprintf(stderr, "    -M <InputMode> Sets the input mode (1 = Serial Port, 2 = IP server,\n");
    1955   fprintf(stderr, "       3 = File, 4 = SISNeT Data Server, 5 = UDP server, 6 = NTRIP1 Caster, 7 = NTRIP2 Caster in HTTP mode),\n");
     1927  fprintf(stderr, "       3 = File, 4 = SISNeT Data Server, 5 = UDP server, 6 = NTRIP1 Caster,\n");
     1928  fprintf(stderr, "       7 = NTRIP2 Caster in HTTP mode),\n");
    19561929  fprintf(stderr, "       mandatory\n\n");
    19571930  fprintf(stderr, "       <InputMode> = 1 (Serial Port):\n");
     
    19951968  fprintf(stderr, "                         for protected streams if <InputMode> = 6|7\n\n");
    19961969  fprintf(stderr, "    -O <OutputMode> Sets output mode for communication with destination caster / server\n");
    1997   fprintf(stderr, "       1 = http NTRIP Version 2.0 Caster in TCP/IP mode\n");
    1998   fprintf(stderr, "       2 = rtsp NTRIP Version 2.0 Caster in RTSP/RTP mode\n");
     1970  fprintf(stderr, "       1 = http  : NTRIP Version 2.0 Caster in TCP/IP mode\n");
     1971  fprintf(stderr, "       2 = rtsp  : NTRIP Version 2.0 Caster in RTSP/RTP mode\n");
    19991972  fprintf(stderr, "       3 = ntrip1: NTRIP Version 1.0 Caster\n");
    2000   fprintf(stderr, "       4 = udp:    NTRIP Version 2.0 Caster in Plain UDP mode\n");
    2001   fprintf(stderr, "       5 = tdc:    DABPLUS Content Server in TDC mode\n\n\n");
     1973  fprintf(stderr, "       4 = udp   : NTRIP Version 2.0 Caster in Plain UDP mode\n");
     1974  fprintf(stderr, "       5 = tcpip : IP server in TCP/IP mode\n\n\n");
    20021975  fprintf(stderr, "       Defaults to NTRIP1.0, but will change to 2.0 in future versions\n");
    20031976  fprintf(stderr, "       Note that the program automatically falls back from mode rtsp to mode http and\n");
    20041977  fprintf(stderr, "       further to mode ntrip1 if necessary.\n\n");
    2005   fprintf(stderr, "       -a <DestHost>     Destination caster name or address, default: 127.0.0.1,\n");
     1978  fprintf(stderr, "       -a <DestHost>     Destination caster/server name or address, default: 127.0.0.1,\n");
    20061979  fprintf(stderr, "                         mandatory\n");
    2007   fprintf(stderr, "       -p <DestPort>     Destination caster port, default: 2101,\n");
     1980  fprintf(stderr, "       -p <DestPort>     Destination caster/server port, default: 2101,\n");
    20081981  fprintf(stderr, "                         mandatory\n");
    20091982  fprintf(stderr, "       -m <DestMount>    Destination caster mountpoint for stream upload,\n");
     
    20151988  fprintf(stderr, "       -N <STR-record>   Sourcetable STR-record\n");
    20161989  fprintf(stderr, "                         optional for NTRIP Version 2.0 in RTSP/RTP and TCP/IP mode\n\n");
    2017   fprintf(stderr, "       -T <DAB+provider> DAB+ provider name, not longer than 16 char, mandatory for \n");
    2018   fprintf(stderr, "                         upload to DABPLUS Content Server in TDC mode\n");
    20191990  exit(rc);
    20201991} /* usage */
Note: See TracChangeset for help on using the changeset viewer.