projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altosui: Simple timeouts don't work with query data
[fw/altos]
/
altosui
/
AltosSerial.java
diff --git
a/altosui/AltosSerial.java
b/altosui/AltosSerial.java
index 111bd77170fc5514107c4ef75f0ca050a84c4a9a..cb82a574ed4381d5c87862f2d9de23757dad5afb 100644
(file)
--- a/
altosui/AltosSerial.java
+++ b/
altosui/AltosSerial.java
@@
-25,6
+25,7
@@
import java.lang.*;
import java.io.*;
import java.util.concurrent.*;
import java.util.*;
import java.io.*;
import java.util.concurrent.*;
import java.util.*;
+import java.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@@
-95,7
+96,7
@@
public class AltosSerial implements Runnable {
}
if (debug)
System.out.printf("\t\t\t\t\t%s\n", line);
}
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));
for (int e = 0; e < monitors.size(); e++) {
LinkedBlockingQueue<AltosLine> q = monitors.get(e);
q.put(new AltosLine (line));
@@
-232,12
+233,14
@@
public class AltosSerial implements Runnable {
abort = false;
timeout_started = false;
for (;;) {
abort = false;
timeout_started = false;
for (;;) {
+ System.out.printf("timeout %d\n", timeout);
AltosLine line = reply_queue.poll(timeout, TimeUnit.MILLISECONDS);
if (line != null) {
stop_timeout_dialog();
--in_reply;
return line.line;
}
AltosLine line = reply_queue.poll(timeout, TimeUnit.MILLISECONDS);
if (line != null) {
stop_timeout_dialog();
--in_reply;
return line.line;
}
+ System.out.printf("no line remote %b can_cancel %b\n", remote, can_cancel);
if (!remote || !can_cancel || check_timeout()) {
--in_reply;
return null;
if (!remote || !can_cancel || check_timeout()) {
--in_reply;
return null;
@@
-245,6
+248,14
@@
public class AltosSerial implements Runnable {
}
}
}
}
+ public String get_reply_no_dialog(int timeout) throws InterruptedException, TimeoutException {
+ flush_output();
+ AltosLine line = reply_queue.poll(timeout, TimeUnit.MILLISECONDS);
+ if (line != null)
+ return line.line;
+ return null;
+ }
+
public void add_monitor(LinkedBlockingQueue<AltosLine> q) {
set_monitor(true);
monitors.add(q);
public void add_monitor(LinkedBlockingQueue<AltosLine> q) {
set_monitor(true);
monitors.add(q);
@@
-304,7
+315,7
@@
public class AltosSerial implements Runnable {
throw new AltosSerialInUseException(device);
devices_opened.add(device.getPath());
}
throw new AltosSerialInUseException(device);
devices_opened.add(device.getPath());
}
- altos =
libaltos.altos_open(device
);
+ altos =
device.open(
);
if (altos == null) {
close();
throw new FileNotFoundException(device.toShortString());
if (altos == null) {
close();
throw new FileNotFoundException(device.toShortString());
@@
-325,11
+336,16
@@
public class AltosSerial implements Runnable {
set_callsign(AltosPreferences.callsign());
}
set_callsign(AltosPreferences.callsign());
}
+ private int telemetry_len() {
+ return Altos.telemetry_len(telemetry);
+ }
+
public void set_channel(int in_channel) {
channel = in_channel;
if (altos != null) {
if (monitor_mode)
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();
else
printf("c r %d\n", channel);
flush_output();
@@
-340,7
+356,7
@@
public class AltosSerial implements Runnable {
telemetry = in_telemetry;
if (altos != null) {
if (monitor_mode)
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();
}
}
flush_output();
}
}
@@
-349,7
+365,7
@@
public class AltosSerial implements Runnable {
monitor_mode = monitor;
if (altos != null) {
if (monitor)
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();
else
printf("m 0\n");
flush_output();
@@
-393,7
+409,7
@@
public class AltosSerial implements Runnable {
line = "";
monitor_mode = false;
frame = null;
line = "";
monitor_mode = false;
frame = null;
- telemetry = Altos.ao_telemetry_
full
;
+ telemetry = Altos.ao_telemetry_
standard
;
monitors = new LinkedList<LinkedBlockingQueue<AltosLine>> ();
reply_queue = new LinkedBlockingQueue<AltosLine> ();
open();
monitors = new LinkedList<LinkedBlockingQueue<AltosLine>> ();
reply_queue = new LinkedBlockingQueue<AltosLine> ();
open();