summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drivers/ao_aprs.c55
-rw-r--r--src/test/ao_aprs_test.c2
2 files changed, 55 insertions, 2 deletions
diff --git a/src/drivers/ao_aprs.c b/src/drivers/ao_aprs.c
index 0a41d5fd..cea802bb 100644
--- a/src/drivers/ao_aprs.c
+++ b/src/drivers/ao_aprs.c
@@ -1371,6 +1371,58 @@ void tncGPRMCPacket()
}
/**
+ * 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.
*/
@@ -1466,7 +1518,8 @@ void tncTxPacket(TNC_DATA_MODE dataMode)
break;
case TNC_GGA:
- tncGPGGAPacket();
+ tncPositionPacket();
+// tncGPGGAPacket();
// Select the next packet we will generate.
tncPacketType = TNC_RMC;
diff --git a/src/test/ao_aprs_test.c b/src/test/ao_aprs_test.c
index 1c0b252b..cec4d617 100644
--- a/src/test/ao_aprs_test.c
+++ b/src/test/ao_aprs_test.c
@@ -79,7 +79,7 @@ int main(int argc, char **argv)
utcSeconds = 55;
// This is the main loop that process GPS data and waits for the once per second timer tick.
- for (i = 0; i < 5; i++)
+ for (i = 0; i < 3; i++)
{
audio_gap(10);
// Read the GPS engine serial port FIFO and process the GPS data.