AltosSerial serial;
AltosLog log;
AltosRecord previous;
+ double frequency;
+ int telemetry;
LinkedBlockingQueue<AltosLine> telem;
serial.close();
}
- void set_channel(int channel) {
- serial.set_channel(channel);
- AltosPreferences.set_channel(device.getSerial(), channel);
+ public void set_frequency(double in_frequency) throws InterruptedException, TimeoutException {
+ frequency = in_frequency;
+ serial.set_radio_frequency(frequency);
}
- void set_telemetry(int telemetry) {
+ public boolean supports_telemetry(int telemetry) {
+
+ try {
+ /* Version 1.0 or later firmware supports all telemetry formats */
+ if (serial.config_data().compare_version("1.0") >= 0)
+ return true;
+
+ /* Version 0.9 firmware only supports 0.9 telemetry */
+ if (serial.config_data().compare_version("0.9") >= 0) {
+ if (telemetry == Altos.ao_telemetry_0_9)
+ return true;
+ else
+ return false;
+ }
+
+ /* Version 0.8 firmware only supports 0.8 telemetry */
+ if (telemetry == Altos.ao_telemetry_0_8)
+ return true;
+ else
+ return false;
+ } catch (InterruptedException ie) {
+ return true;
+ } catch (TimeoutException te) {
+ return true;
+ }
+ }
+
+ void save_frequency() {
+ AltosPreferences.set_frequency(device.getSerial(), frequency);
+ }
+
+ void set_telemetry(int in_telemetry) {
+ telemetry = in_telemetry;
serial.set_telemetry(telemetry);
+ }
+
+ void save_telemetry() {
AltosPreferences.set_telemetry(device.getSerial(), telemetry);
}
+ File backing_file() {
+ return log.file();
+ }
+
public AltosTelemetryReader (AltosDevice in_device)
- throws FileNotFoundException, AltosSerialInUseException, IOException {
+ throws FileNotFoundException, AltosSerialInUseException, IOException, InterruptedException, TimeoutException {
device = in_device;
serial = new AltosSerial(device);
log = new AltosLog(serial);
previous = null;
telem = new LinkedBlockingQueue<AltosLine>();
- serial.set_radio();
+ frequency = AltosPreferences.frequency(device.getSerial());
+ set_frequency(frequency);
+ telemetry = AltosPreferences.telemetry(device.getSerial());
+ set_telemetry(telemetry);
+ serial.set_callsign(AltosPreferences.callsign());
serial.add_monitor(telem);
}
}