|
|
|
@ -999,12 +999,14 @@ void CQnetGateway::ProcessIncomingSD(const SDSVT &dsvt)
|
|
|
|
case 0x30U: // GPS data
|
|
|
|
case 0x30U: // GPS data
|
|
|
|
if (sd.size + sd.ig < 255) {
|
|
|
|
if (sd.size + sd.ig < 255) {
|
|
|
|
memcpy(sd.gps+sd.ig, c+1, size);
|
|
|
|
memcpy(sd.gps+sd.ig, c+1, size);
|
|
|
|
sd.ig += size;
|
|
|
|
|
|
|
|
sd.size -= size;
|
|
|
|
|
|
|
|
if (c[1]=='\r' || c[2]=='\r') {
|
|
|
|
if (c[1]=='\r' || c[2]=='\r') {
|
|
|
|
sd.gps[sd.ig + (c[1] == '\r') ? 0 : 1] = '\0';
|
|
|
|
sd.gps[sd.ig + (c[1] == '\r') ? 0 : 1] = '\0';
|
|
|
|
printf("GPS[%d] String='%s'\n", i, sd.gps);
|
|
|
|
printf("GPS[%d] String='%s'\n", i, sd.gps);
|
|
|
|
|
|
|
|
memset(sd.gps, 0, 256);
|
|
|
|
sd.ig = sd.size = 0;
|
|
|
|
sd.ig = sd.size = 0;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
sd.ig += size;
|
|
|
|
|
|
|
|
sd.size -= size;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
printf("GPS string is too large at %d bytes\n", sd.ig + sd.size);
|
|
|
|
printf("GPS string is too large at %d bytes\n", sd.ig + sd.size);
|
|
|
|
@ -1058,6 +1060,7 @@ void CQnetGateway::ProcessIncomingSD(const SDSVT &dsvt)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
sd.gps[sd.ig+2] = '\0';
|
|
|
|
sd.gps[sd.ig+2] = '\0';
|
|
|
|
printf("GPS[%d] string='%s'\n", i, sd.gps);
|
|
|
|
printf("GPS[%d] string='%s'\n", i, sd.gps);
|
|
|
|
|
|
|
|
memset(sd.gps, 0, 256);
|
|
|
|
sd.ig = 0;
|
|
|
|
sd.ig = 0;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
sd.ig += sd.size;
|
|
|
|
sd.ig += sd.size;
|
|
|
|
|