public int device_type = AltosLib.MISSING;
public void set_device_type(int device_type) {
- if (device_type != AltosLib.MISSING)
+ if (device_type != AltosLib.MISSING) {
this.device_type = device_type;
+ if (product == null)
+ set_product(AltosLib.product_name(device_type));
+ }
}
public int config_major = AltosLib.MISSING;
}
public int tick = AltosLib.MISSING;
+ private int first_tick = AltosLib.MISSING;
private int prev_tick = AltosLib.MISSING;
public void set_tick(int tick) {
tick += 65536;
}
}
+ if (first_tick == AltosLib.MISSING)
+ first_tick = tick;
prev_tick = tick;
this.tick = tick;
}
}
+ /* Reset all values which change during flight
+ */
+ public void reset() {
+ state = AltosLib.MISSING;
+ tick = AltosLib.MISSING;
+ prev_tick = AltosLib.MISSING;
+ temp_gps = null;
+ prev_gps = null;
+ temp_gps_sat_tick = AltosLib.MISSING;
+ accel = AltosLib.MISSING;
+ }
+
public int boost_tick = AltosLib.MISSING;
public void set_boost_tick() {
public double time() {
if (tick == AltosLib.MISSING)
return AltosLib.MISSING;
- if (boost_tick == AltosLib.MISSING)
- return AltosLib.MISSING;
- return (tick - boost_tick) / ticks_per_sec;
+ if (boost_tick != AltosLib.MISSING)
+ return (tick - boost_tick) / ticks_per_sec;
+ if (first_tick != AltosLib.MISSING)
+ return (tick - first_tick) / ticks_per_sec;
+ return tick / ticks_per_sec;
}
public double boost_time() {