Changeset 1847 in ntrip


Ignore:
Timestamp:
Jun 8, 2009, 4:07:22 PM (15 years ago)
Author:
stoecker
Message:

fixed NMEA sending

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ntripclient/ntripclient.c

    r1830 r1847  
    11/*
    22  NTRIP client for POSIX.
    3   $Id: ntripclient.c,v 1.48 2009/04/27 09:49:54 stoecker Exp $
     3  $Id: ntripclient.c,v 1.49 2009/05/06 14:52:52 stuerze Exp $
    44  Copyright (C) 2003-2008 by Dirk Stöcker <soft@dstoecker.de>
    55
     
    6565
    6666/* CVS revision and version */
    67 static char revisionstr[] = "$Revision: 1.48 $";
    68 static char datestr[]     = "$Date: 2009/04/27 09:49:54 $";
     67static char revisionstr[] = "$Revision: 1.49 $";
     68static char datestr[]     = "$Date: 2009/05/06 14:52:52 $";
    6969
    7070enum MODE { HTTP = 1, RTSP = 2, NTRIP1 = 3, AUTO = 4, UDP = 5, END };
     
    10851085            "Ntrip-Component: Ntripclient\r\n"
    10861086            "User-Agent: %s/%s\r\n"
     1087            "%s%s%s"
    10871088            "Transport: RTP/GNSS;unicast;client_port=%u%s",
    10881089            args.server, proxyserver ? ":" : "", proxyserver ? args.port : "",
    1089             args.data, cseq++, AGENTSTRING, revisionstr, localport,
     1090            args.data, cseq++, AGENTSTRING, revisionstr,
     1091            args.nmea ? "Ntrip-GGA: " : "", args.nmea ? args.nmea : "",
     1092            args.nmea ? "\r\n" : "",
     1093            localport,
    10901094            (*args.user || *args.password) ? "\r\nAuthorization: Basic " : "");
    10911095            if(i > MAXDATASIZE-40 || i < 0) /* second check for old glibc */
     
    11041108            buf[i++] = '\r';
    11051109            buf[i++] = '\n';
    1106             if(args.nmea)
    1107             {
    1108               int j = snprintf(buf+i, MAXDATASIZE-i, "%s\r\n", args.nmea);
    1109               if(j >= 0 && j < MAXDATASIZE-i)
    1110                 i += j;
    1111               else
    1112               {
    1113                 fprintf(stderr, "NMEA string too long\n");
    1114                 stop = 1;
    1115               }
    1116             }
    11171110          }
    11181111          if(!stop && !error)
     
    14201413            else
    14211414            {
     1415              const char *nmeahead = (args.nmea && args.mode == HTTP) ? args.nmea : 0;
     1416
    14221417              i=snprintf(buf, MAXDATASIZE-40, /* leave some space for login */
    14231418              "GET %s%s%s%s/%s HTTP/1.1\r\n"
    14241419              "Host: %s\r\n%s"
    14251420              "User-Agent: %s/%s\r\n"
     1421              "%s%s%s"
    14261422              "Connection: close%s"
    14271423              , proxyserver ? "http://" : "", proxyserver ? proxyserver : "",
     
    14301426              args.mode == NTRIP1 ? "" : "Ntrip-Version: Ntrip/2.0\r\n",
    14311427              AGENTSTRING, revisionstr,
     1428              nmeahead ? "Ntrip-GGA: " : "", nmeahead ? nmeahead : "",
     1429              nmeahead ? "\r\n" : "",
    14321430              (*args.user || *args.password) ? "\r\nAuthorization: Basic " : "");
    14331431              if(i > MAXDATASIZE-40 || i < 0) /* second check for old glibc */
     
    14501448                  buf[i++] = '\r';
    14511449                  buf[i++] = '\n';
    1452                   if(args.nmea)
     1450                  if(args.nmea && !nmeahead)
    14531451                  {
    14541452                    int j = snprintf(buf+i, MAXDATASIZE-i, "%s\r\n", args.nmea);
Note: See TracChangeset for help on using the changeset viewer.