diff --git a/Libraries/aprs/aprs.c b/Libraries/aprs/aprs.c
new file mode 100644
--- /dev/null
+++ b/Libraries/aprs/aprs.c
@@ -0,0 +1,91 @@
+/*
+ * FeatherHAB
+ *
+ * This file is part of FeatherHAB.
+ *
+ * FeatherHab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * FeatherHab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with FeatherHAB. If not, see .
+ *
+ * Ethan Zonca
+ *
+ */
+
+#include
+#include
+
+#include "config.h"
+#include "aprs.h"
+//#include "gps.h"
+//#include "adc.h"
+#include "ax25.h"
+
+
+int32_t meters_to_feet(int32_t m)
+{
+ // 10000 ft = 3048 m
+ return (float)m / 0.3048;
+}
+
+void aprs_send(void)
+{
+ struct s_address addresses[] = {
+ {D_CALLSIGN, D_CALLSIGN_ID}, // Destination callsign
+ {"", S_CALLSIGN_ID}, // Source callsign (-11 = balloon, -9 = car)
+ //{S_CALLSIGN, S_CALLSIGN_ID},
+#ifdef DIGI_PATH1
+ {DIGI_PATH1, DIGI_PATH1_TTL}, // Digi1 (first digi in the chain)
+#endif
+#ifdef DIGI_PATH2
+ {DIGI_PATH2, DIGI_PATH2_TTL}, // Digi2 (second digi in the chain)
+#endif
+ };
+
+ strncpy(addresses[1].callsign, S_CALLSIGN, 7);
+
+ // emz: modified this to get the size of the first address rather than the size of the struct itself, which fails
+ ax25_send_header(addresses, sizeof(addresses)/sizeof(addresses[0]));
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_latitude());
+ ax25_send_string("42.153749");
+ ax25_send_byte(',');
+ //ax25_send_string(get_longitude());
+ ax25_send_string("53.234823");
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_speedKnots());
+ ax25_send_string("33");
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_gpsaltitude());
+ ax25_send_string("3847");
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_pressure());
+ ax25_send_string("8383.00");
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_temperature());
+ ax25_send_string("25.3");
+ ax25_send_byte(',');
+
+ //ax25_send_string(get_temperature());
+ //ax25_send_string(get_hdop());
+ //ax25_send_byte(',');
+
+
+ ax25_send_footer();
+ ax25_flush_frame();
+}
+
+// vim:softtabstop=4 shiftwidth=4 expandtab