This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
sdk:scripts:gps-udp-client [2017/10/11 15:48] – fachet | sdk:scripts:gps-udp-client [2017/10/11 16:30] – fachet | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
====== SDK Script gps-udp-client.are ====== | ====== SDK Script gps-udp-client.are ====== | ||
<code c gps-udp-client.are> | <code c gps-udp-client.are> | ||
Line 99: | Line 100: | ||
</ | </ | ||
- | ====== SDK Script gps-udp-broadcast.are ====== | ||
- | <code c gps-udp-broadcast.are> | ||
- | /* DESC: This script sends the local GPS NMEA via UDP broadcast to multiple ports | ||
- | * selected by NMEA type. | ||
- | * Copyright (C) 2013-2017 NetModule AG, Switzerland | ||
- | */ | ||
- | |||
- | BroadcastIP = " | ||
- | |||
- | // Connect to GPS Deamon | ||
- | int connect_gpsd() { | ||
- | nb_syslog(" | ||
- | sock = -1; | ||
- | while(true) | ||
- | { | ||
- | sock = socket(AF_INET, | ||
- | if (sock < 0) | ||
- | { | ||
- | nb_syslog(" | ||
- | sleep(5); | ||
- | continue; | ||
- | } | ||
- | |||
- | if (connect(sock, | ||
- | { | ||
- | nb_syslog(" | ||
- | close(sock); | ||
- | sleep(5); | ||
- | continue; | ||
- | } | ||
- | nb_syslog(" | ||
- | return(sock); | ||
- | break; | ||
- | } | ||
- | } | ||
- | |||
- | |||
- | |||
- | gpsd = connect_gpsd(); | ||
- | |||
- | /* open UDP server socket */ | ||
- | server = socket(AF_INET, | ||
- | if (server < 0) { | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | setsockopt(server, | ||
- | |||
- | nb_syslog(" | ||
- | // process NMEA stream | ||
- | |||
- | nb_syslog(" | ||
- | |||
- | while (true) { | ||
- | rv = select(gpsd, | ||
- | if (rv > 0) { | ||
- | data = recv(gpsd); | ||
- | len = strlen(data); | ||
- | } else if (rv < 0) { | ||
- | nb_syslog(" | ||
- | len = -1; | ||
- | } else { // nothing received | ||
- | continue; | ||
- | | ||
- | if (len <= 0) { | ||
- | nb_syslog(" | ||
- | close(gpsd); | ||
- | gpsd = connect_gpsd(); | ||
- | if (gpsd < 0) | ||
- | | ||
- | } else { | ||
- | // printf(" | ||
- | while(true) | ||
- | { | ||
- | newlinepos = strstr(data, | ||
- | seplen = 0; | ||
- | if (newlinepos != ()) { | ||
- | | ||
- | } else { | ||
- | | ||
- | if (newlinepos != ()) { | ||
- | seplen = 1; | ||
- | } | ||
- | } | ||
- | | ||
- | if (seplen != 0) { { | ||
- | frame = strcat(left(data, | ||
- | // printf(" | ||
- | if (left(frame, | ||
- | // | ||
- | if (sendto(server, | ||
- | | ||
- | if (sendto(server, | ||
- | | ||
- | if (sendto(server, | ||
- | | ||
- | } | ||
- | if (left(frame, | ||
- | // | ||
- | if (sendto(server, | ||
- | | ||
- | } | ||
- | if (left(frame, | ||
- | // | ||
- | if (sendto(server, | ||
- | | ||
- | | ||
- | data = substr(data, | ||
- | } | ||
- | else | ||
- | | ||
- | | ||
- | } | ||
- | } | ||
- | } | ||
- | exit(-3); | ||
- | |||
- | </ | ||