projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/test: Add TMv2 test program to .gitignore
[fw/altos]
/
altoslib
/
AltosLink.java
diff --git
a/altoslib/AltosLink.java
b/altoslib/AltosLink.java
index ba557a72581eef9adb5ecf2cd615075f897bec04..62bd82b93c2ae617c4d67a305696e99a32bd3ba7 100644
(file)
--- a/
altoslib/AltosLink.java
+++ b/
altoslib/AltosLink.java
@@
-15,7
+15,7
@@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_
2
;
+package org.altusmetrum.altoslib_
5
;
import java.io.*;
import java.util.concurrent.*;
import java.io.*;
import java.util.concurrent.*;
@@
-26,10
+26,10
@@
public abstract class AltosLink implements Runnable {
public final static int ERROR = -1;
public final static int TIMEOUT = -2;
public final static int ERROR = -1;
public final static int TIMEOUT = -2;
- public abstract int getchar();
- public abstract void print(String data);
+ public abstract int getchar()
throws InterruptedException
;
+ public abstract void print(String data)
throws InterruptedException
;
public abstract void putchar(byte c);
public abstract void putchar(byte c);
- public abstract void close();
+ public abstract void close()
throws InterruptedException
;
public static boolean debug = false;
public static void set_debug(boolean in_debug) { debug = in_debug; }
public static boolean debug = false;
public static void set_debug(boolean in_debug) { debug = in_debug; }
@@
-57,7
+57,11
@@
public abstract class AltosLink implements Runnable {
String line = String.format(format, arguments);
if (debug)
pending_output.add(line);
String line = String.format(format, arguments);
if (debug)
pending_output.add(line);
- print(line);
+ try {
+ print(line);
+ } catch (InterruptedException ie) {
+
+ }
}
public String get_reply_no_dialog(int timeout) throws InterruptedException, TimeoutException {
}
public String get_reply_no_dialog(int timeout) throws InterruptedException, TimeoutException {
@@
-72,7
+76,7
@@
public abstract class AltosLink implements Runnable {
return get_reply(5000);
}
return get_reply(5000);
}
-
+
public abstract boolean can_cancel_reply();
public abstract boolean show_reply_timeout();
public abstract void hide_reply_timeout();
public abstract boolean can_cancel_reply();
public abstract boolean show_reply_timeout();
public abstract void hide_reply_timeout();
@@
-159,8
+163,21
@@
public abstract class AltosLink implements Runnable {
if (!can_cancel && remote)
System.out.printf("Uh-oh, reading remote serial device from swing thread\n");
if (!can_cancel && remote)
System.out.printf("Uh-oh, reading remote serial device from swing thread\n");
- if (remote && can_cancel)
+ if (remote && can_cancel)
{
timeout = 500;
timeout = 500;
+ switch (telemetry_rate) {
+ case AltosLib.ao_telemetry_rate_38400:
+ default:
+ timeout = 500;
+ break;
+ case AltosLib.ao_telemetry_rate_9600:
+ timeout = 2000;
+ break;
+ case AltosLib.ao_telemetry_rate_2400:
+ timeout = 8000;
+ break;
+ }
+ }
try {
++in_reply;
try {
++in_reply;
@@
-211,7
+228,7
@@
public abstract class AltosLink implements Runnable {
break;
}
}
break;
}
}
-
+
} finally {
--in_reply;
}
} finally {
--in_reply;
}
@@
-233,7
+250,7
@@
public abstract class AltosLink implements Runnable {
try {
add_telem (new AltosLine());
add_reply (new AltosLine());
try {
add_telem (new AltosLine());
add_reply (new AltosLine());
- } catch (InterruptedException e) {
+ } catch (InterruptedException
i
e) {
}
}
}
}
@@
-247,13
+264,7
@@
public abstract class AltosLink implements Runnable {
public void add_bytes(byte[] bytes, int len) throws InterruptedException {
String line;
public void add_bytes(byte[] bytes, int len) throws InterruptedException {
String line;
- try {
- line = new String(bytes, 0, len, "UTF-8");
- } catch (UnsupportedEncodingException ue) {
- line = "";
- for (int i = 0; i < len; i++)
- line = line + bytes[i];
- }
+ line = new String(bytes, 0, len, AltosLib.unicode_set);
if (debug)
System.out.printf("\t\t\t\t\t%s\n", line);
add_string(line);
if (debug)
System.out.printf("\t\t\t\t\t%s\n", line);
add_string(line);
@@
-276,6
+287,8
@@
public abstract class AltosLink implements Runnable {
}
public void flush_output() {
}
public void flush_output() {
+ if (pending_output == null)
+ return;
for (String s : pending_output)
System.out.print(s);
pending_output.clear();
for (String s : pending_output)
System.out.print(s);
pending_output.clear();
@@
-307,6
+320,7
@@
public abstract class AltosLink implements Runnable {
*/
public boolean monitor_mode = false;
public int telemetry = AltosLib.ao_telemetry_standard;
*/
public boolean monitor_mode = false;
public int telemetry = AltosLib.ao_telemetry_standard;
+ public int telemetry_rate = -1;
public double frequency;
public String callsign;
AltosConfigData config_data;
public double frequency;
public String callsign;
AltosConfigData config_data;
@@
-358,6
+372,15
@@
public abstract class AltosLink implements Runnable {
flush_output();
}
flush_output();
}
+ public void set_telemetry_rate(int in_telemetry_rate) {
+ telemetry_rate = in_telemetry_rate;
+ if (monitor_mode)
+ printf("m 0\nc T %d\nm %x\n", telemetry_rate, telemetry_len());
+ else
+ printf("c T %d\n", telemetry_rate);
+ flush_output();
+ }
+
public void set_monitor(boolean monitor) {
monitor_mode = monitor;
if (monitor)
public void set_monitor(boolean monitor) {
monitor_mode = monitor;
if (monitor)
@@
-385,10
+408,14
@@
public abstract class AltosLink implements Runnable {
flush_output();
}
flush_output();
}
- public AltosConfigData config_data() throws InterruptedException, TimeoutException {
+ public AltosConfigData config_data() throws InterruptedException, TimeoutException {
synchronized(config_data_lock) {
synchronized(config_data_lock) {
- if (config_data == null)
+ if (config_data == null) {
+ printf("m 0\n");
config_data = new AltosConfigData(this);
config_data = new AltosConfigData(this);
+ if (monitor_mode)
+ set_monitor(true);
+ }
return config_data;
}
}
return config_data;
}
}
@@
-399,33
+426,27
@@
public abstract class AltosLink implements Runnable {
flush_output();
}
flush_output();
}
- public boolean is_loader() {
+ public boolean is_loader()
throws InterruptedException
{
boolean ret = false;
printf("v\n");
boolean ret = false;
printf("v\n");
- try {
- for (;;) {
- String line = get_reply();
-
- if (line == null)
- return false;
- if (line.startsWith("software-version"))
- break;
- if (line.startsWith("altos-loader"))
- ret = true;
- }
- } catch (InterruptedException ie) {
+ for (;;) {
+ String line = get_reply();
+
+ if (line == null)
+ return false;
+ if (line.startsWith("software-version"))
+ break;
+ if (line.startsWith("altos-loader"))
+ ret = true;
}
return ret;
}
}
return ret;
}
- public void to_loader() {
+ public void to_loader()
throws InterruptedException
{
printf("X\n");
flush_output();
close();
printf("X\n");
flush_output();
close();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ie) {
- }
+ Thread.sleep(1000);
}
public boolean remote;
}
public boolean remote;
@@
-438,7
+459,12
@@
public abstract class AltosLink implements Runnable {
if (debug)
System.out.printf("start remote %7.3f\n", frequency);
set_radio_frequency(frequency);
if (debug)
System.out.printf("start remote %7.3f\n", frequency);
set_radio_frequency(frequency);
- set_callsign(AltosPreferences.callsign());
+ if (telemetry_rate < 0)
+ telemetry_rate = AltosPreferences.telemetry_rate(serial);
+ set_telemetry_rate(telemetry_rate);
+ if (callsign.equals(""))
+ callsign = AltosPreferences.callsign();
+ set_callsign(callsign);
printf("p\nE 0\n");
flush_input();
remote = true;
printf("p\nE 0\n");
flush_input();
remote = true;
@@
-490,7
+516,7
@@
public abstract class AltosLink implements Runnable {
return config_data.has_monitor_battery();
}
return config_data.has_monitor_battery();
}
- public double monitor_battery() {
+ public double monitor_battery()
throws InterruptedException
{
int monitor_batt = AltosLib.MISSING;
if (config_data.has_monitor_battery()) {
int monitor_batt = AltosLib.MISSING;
if (config_data.has_monitor_battery()) {
@@
-504,7
+530,6
@@
public abstract class AltosLink implements Runnable {
}
i++;
}
}
i++;
}
- } catch (InterruptedException ie) {
} catch (TimeoutException te) {
}
}
} catch (TimeoutException te) {
}
}