Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
sdk:gps-tcp-server-gnsstogps [2020/07/21 14:27] – [tcp server proxy script] fachetsdk:gps-tcp-server-gnsstogps [2020/07/21 14:33] (current) – [tcp server proxy script] fachet
Line 113: Line 113:
     chars = explode(s);     chars = explode(s);
         for (i = 1; i < pos; i++) { /* skip $ and *XX */          for (i = 1; i < pos; i++) { /* skip $ and *XX */ 
-        c = ord(chars[i]); + c = ord(chars[i]); 
-                cs ^= c;+            cs ^= c;
         }         }
         r = sprintf("%s%02X%s", substr(s, 0, pos + 1), cs, substr(s, pos + 3));         r = sprintf("%s%02X%s", substr(s, 0, pos + 1), cs, substr(s, pos + 3));
Line 122: Line 122:
 /* main() */ /* main() */
  
-if (argc < 2) {+if (argc < 2)
     usage();     usage();
-} 
- 
  
 /* open TCP server socket */ /* open TCP server socket */
Line 133: Line 131:
     exit(-1);     exit(-1);
 } }
- 
  
 ret = bind(server, server_port, ""); ret = bind(server, server_port, "");
Line 152: Line 149:
 while (!quit) { while (!quit) {
     client = accept(server);     client = accept(server);
-        if (client < 0) { +    if (client < 0) { 
-        nb_syslog("accept failed\n");+ nb_syslog("accept failed\n");
         sleep(1);         sleep(1);
         continue;         continue;
-    }  else { +    } else { 
-         nb_syslog("new client connection: %i",client); +        nb_syslog("new client connection: %i",client); 
-         clients=mkarray(client);+        clients=mkarray(client);
     }      } 
     clientConnection=true;     clientConnection=true;
Line 168: Line 165:
     /* process NMEA stream */     /* process NMEA stream */
     nb_syslog("Processing NMEA data");     nb_syslog("Processing NMEA data");
-    while(clientConnection) {+    while (clientConnection) {
         /* connect to gpsd */         /* connect to gpsd */
-        if(gpsd < 0) {+        if (gpsd < 0) {
             gpsd = gpsd_connect(gpsd);             gpsd = gpsd_connect(gpsd);
-            if(gpsd < 0) { +            if (gpsd < 0) { 
-                nb_syslog("ERROR: Unable to connect to daemon"); + nb_syslog("ERROR: Unable to connect to daemon"); 
-                sleep(5);+ sleep(5);
                 continue;                 continue;
             }             }
Line 182: Line 179:
         rv = select(array_merge(clients,mkarray(gpsd,server)), 1);         rv = select(array_merge(clients,mkarray(gpsd,server)), 1);
  
-        if(rv == -1) {+        if (rv == -1) {
             nb_syslog("ERROR: select failed, re-connecting");             nb_syslog("ERROR: select failed, re-connecting");
             close(gpsd);             close(gpsd);
             gpsd = -1;             gpsd = -1;
             continue;             continue;
-        } else if(rv == 0) {+        } else if (rv == 0) {
             /* nothing received */             /* nothing received */
             continue;             continue;
         } else if(rv == server) {         } else if(rv == server) {
-            newclient = accept(server); + newclient = accept(server); 
-            if (newclient < 0) { + if (newclient < 0) { 
-            nb_syslog("accept failed\n"); + nb_syslog("accept failed\n"); 
-            continue; + continue; 
-            } else {+ } else {
                 nb_syslog("new client connection: %i",newclient);                 nb_syslog("new client connection: %i",newclient);
                 clients=array_merge(clients,mkarray(newclient));                 clients=array_merge(clients,mkarray(newclient));
Line 205: Line 202:
         len = strlen(data);         len = strlen(data);
         /* Check for correct framing: CR+LF */         /* Check for correct framing: CR+LF */
-        if(len > 2) { +        if (len > 2) { 
-            if(strrchr(data, "\r") != len-2 || strrchr(data, "\n") != len-1) {+            if (strrchr(data, "\r") != len-2 || strrchr(data, "\n") != len-1) {
                 nb_syslog("ERROR: NMEA framing wrong");                 nb_syslog("ERROR: NMEA framing wrong");
                 close(gpsd);                 close(gpsd);
Line 215: Line 212:
         }         }
  
-        if(len == 0) {+        if (len == 0) {
             nb_syslog("ERROR: no data, re-connecting");             nb_syslog("ERROR: no data, re-connecting");
             close(gpsd);             close(gpsd);
Line 222: Line 219:
         }         }
         /* Convert message $GN to $GP for backward compatibility */         /* Convert message $GN to $GP for backward compatibility */
-        if(strstr(data, "$GN") == 0) {;+        if (strstr(data, "$GN") == 0) {;
             a_arr = explode(data);             a_arr = explode(data);
             a_arr[2] = "P";             a_arr[2] = "P";
Line 232: Line 229:
         */          */ 
         for (i=0;i<length(clients);i++) {         for (i=0;i<length(clients);i++) {
-        sent = send(clients[i], data ); + sent = send(clients[i], data); 
-        if(sent < 0 ) { + if (sent < 0) { 
-            nb_syslog("ERROR: Unable to send, removing client (%i)",clients[i]);  + nb_syslog("ERROR: Unable to send, removing client (%i)",clients[i]);  
-            clients=array_compact(array_unset(clients,i)); + clients=array_compact(array_unset(clients,i)); 
-        +
         }          } 
     }     }
Line 244: Line 241:
 } }
  
-if (gpsd > -1)  {+if (gpsd > -1)
     close(gpsd);     close(gpsd);
-+if (server > -1)
-if (server > -1) {+
     close(server);     close(server);
-} 
 exit(-1); exit(-1);
- 
 </code> </code>
 +
 +
 +