summaryrefslogtreecommitdiff
path: root/altosui/AltosSerial.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-06-28 01:03:00 -0700
committerKeith Packard <keithp@keithp.com>2011-06-28 01:03:00 -0700
commit7fd9b8f720add559b262e81d61ededc9df16ca94 (patch)
treeae32f830c27c99aacdfd6fb231e70a3ceee0f3ff /altosui/AltosSerial.java
parentcb239b7161feea8646425b1f5788c3c82ae24321 (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.java21
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();