void ddsSetFTW (uint32_t ftw)
{
int x = ftw - freqTable[0];
- putchar (x > 0 ? 0xff : 0x0);
+ putchar (x > 0 ? 0xc0 : 0x40);
}
/**
va_start(ap, fmt);
c = vsprintf((char *) tncBufferPnt, fmt, ap);
+ if (*fmt == '\015')
+ fprintf (stderr, "\n");
+ else
+ vfprintf(stderr, fmt, ap);
va_end(ap);
tncBufferPnt += c;
tncLength += c;
tncPrintf ("*%02X", gpsNMEAChecksum(tncBuffer + 1, tncLength - 1));
}
+/**
+ * Generate the plain text position packet. Data is written through the tncTxByte
+ * callback function
+ */
+void tncPositionPacket(void)
+{
+ int32_t latitude = 45.4694766 * 10000000;
+ int32_t longitude = -122.7376250 * 10000000;
+ uint32_t altitude = 10000;
+ uint16_t lat_deg;
+ uint16_t lon_deg;
+ uint16_t lat_min;
+ uint16_t lat_frac;
+ uint16_t lon_min;
+ uint16_t lon_frac;
+
+ char lat_sign = 'N', lon_sign = 'E';
+
+// tncPrintf (">ANSR ");
+ if (latitude < 0) {
+ lat_sign = 'S';
+ latitude = -latitude;
+ }
+
+ if (longitude < 0) {
+ lon_sign = 'W';
+ longitude = -longitude;
+ }
+
+ lat_deg = latitude / 10000000;
+ latitude -= lat_deg * 10000000;
+ latitude *= 60;
+ lat_min = latitude / 10000000;
+ latitude -= lat_min * 10000000;
+ lat_frac = (latitude + 50000) / 100000;
+
+ lon_deg = longitude / 10000000;
+ longitude -= lon_deg * 10000000;
+ longitude *= 60;
+ lon_min = longitude / 10000000;
+ longitude -= lon_min * 10000000;
+ lon_frac = (longitude + 50000) / 100000;
+
+ tncPrintf ("=%02u%02u.%02u%c\\%03u%02u.%02u%cO",
+ lat_deg, lat_min, lat_frac, lat_sign,
+ lon_deg, lon_min, lon_frac, lon_sign);
+
+ tncPrintf (" /A=%06u", altitude * 100 / 3048);
+}
+
+
+
/**
* Generate the plain text status packet. Data is written through the tncTxByte
* callback function.
tncPrintf (">ANSR ");
// Display the flight time.
- tncPrintf ("%02U:%02U:%02U ", timeHours, timeMinutes, timeSeconds);
+ tncPrintf ("%02u:%02u:%02u ", timeHours, timeMinutes, timeSeconds);
// Altitude in feet.
tncPrintf ("%ld' ", gpsPosition.altitudeFeet);
break;
case TNC_GGA:
- tncGPGGAPacket();
+ tncPositionPacket();
+// tncGPGGAPacket();
// Select the next packet we will generate.
tncPacketType = TNC_RMC;