diff options
author | Keith Packard <keithp@keithp.com> | 2011-06-28 01:03:00 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-06-28 01:03:00 -0700 |
commit | 7fd9b8f720add559b262e81d61ededc9df16ca94 (patch) | |
tree | ae32f830c27c99aacdfd6fb231e70a3ceee0f3ff /altosui/AltosSerial.java | |
parent | cb239b7161feea8646425b1f5788c3c82ae24321 (diff) |
altosui: Support raw telemetry from TeleDongle
Use raw telemetry frames when TeleDongle supports them, this involves
parsing the hex dump of the packet instead of having teledongle take
the packet apart. Only the legacy format is working at this point; the
altos bits for the new split telemetry frames is not written yet.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosui/AltosSerial.java')
-rw-r--r-- | altosui/AltosSerial.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/altosui/AltosSerial.java b/altosui/AltosSerial.java index 6c80b66f..3666cb41 100644 --- a/altosui/AltosSerial.java +++ b/altosui/AltosSerial.java @@ -95,7 +95,7 @@ public class AltosSerial implements Runnable { } if (debug) System.out.printf("\t\t\t\t\t%s\n", line); - if (line.startsWith("VERSION") || line.startsWith("CRC")) { + if (line.startsWith("TELEM") || line.startsWith("VERSION") || line.startsWith("CRC")) { for (int e = 0; e < monitors.size(); e++) { LinkedBlockingQueue<AltosLine> q = monitors.get(e); q.put(new AltosLine (line)); @@ -325,11 +325,22 @@ public class AltosSerial implements Runnable { set_callsign(AltosPreferences.callsign()); } + private int telemetry_len() { + switch (telemetry) { + case 1: + default: + return Altos.ao_telemetry_legacy_len; + case 2: + return Altos.ao_telemetry_split_len; + } + } + public void set_channel(int in_channel) { channel = in_channel; if (altos != null) { if (monitor_mode) - printf("m 0\nc r %d\nm %d\n", channel, telemetry); + printf("m 0\nc r %d\nm %x\n", + channel, telemetry_len()); else printf("c r %d\n", channel); flush_output(); @@ -340,7 +351,7 @@ public class AltosSerial implements Runnable { telemetry = in_telemetry; if (altos != null) { if (monitor_mode) - printf("m 0\nm %d\n", telemetry); + printf("m 0\nm %x\n", telemetry_len()); flush_output(); } } @@ -349,7 +360,7 @@ public class AltosSerial implements Runnable { monitor_mode = monitor; if (altos != null) { if (monitor) - printf("m %d\n", telemetry); + printf("m %x\n", telemetry_len()); else printf("m 0\n"); flush_output(); @@ -393,7 +404,7 @@ public class AltosSerial implements Runnable { line = ""; monitor_mode = false; frame = null; - telemetry = Altos.ao_telemetry_full; + telemetry = Altos.ao_telemetry_split; monitors = new LinkedList<LinkedBlockingQueue<AltosLine>> (); reply_queue = new LinkedBlockingQueue<AltosLine> (); open(); |