+ public String callsign;
+ public String firmware_version;
+
+ public double accel_plus_g;
+ public double accel_minus_g;
+ public double accel;
+ public double ground_accel;
+ public double ground_accel_avg;
+
+ public int log_format;
+
+ public AltosMs5607 baro;
+
+ public AltosCompanion companion;
+
+ public void set_npad(int npad) {
+ this.npad = npad;
+ gps_waiting = MIN_PAD_SAMPLES - npad;
+ if (this.gps_waiting < 0)
+ gps_waiting = 0;
+ gps_ready = gps_waiting == 0;
+ }
+
+ public void init() {
+ set = 0;
+
+ received_time = System.currentTimeMillis();
+ time = AltosLib.MISSING;
+ time_change = AltosLib.MISSING;
+ prev_time = AltosLib.MISSING;
+ tick = AltosLib.MISSING;
+ prev_tick = AltosLib.MISSING;
+ boost_tick = AltosLib.MISSING;
+ state = AltosLib.ao_flight_invalid;
+ flight = AltosLib.MISSING;
+ landed = false;
+ boost = false;
+ rssi = AltosLib.MISSING;
+ status = 0;
+ device_type = AltosLib.MISSING;
+ config_major = AltosLib.MISSING;
+ config_minor = AltosLib.MISSING;
+ apogee_delay = AltosLib.MISSING;
+ main_deploy = AltosLib.MISSING;
+ flight_log_max = AltosLib.MISSING;
+
+ ground_altitude = new AltosCValue();
+ ground_pressure = new AltosGroundPressure();
+ altitude = new AltosAltitude();
+ pressure = new AltosPressure();
+ speed = new AltosSpeed();
+ acceleration = new AltosAccel();
+
+ temperature = AltosLib.MISSING;
+ battery_voltage = AltosLib.MISSING;
+ pyro_voltage = AltosLib.MISSING;
+ apogee_voltage = AltosLib.MISSING;
+ main_voltage = AltosLib.MISSING;
+ ignitor_voltage = null;
+
+ kalman_height = new AltosValue();
+ kalman_speed = new AltosValue();
+ kalman_acceleration = new AltosValue();
+
+ gps = null;
+ temp_gps = null;
+ temp_gps_sat_tick = 0;
+ gps_sequence = 0;
+ gps_pending = false;
+
+ imu = null;
+ mag = null;
+
+ set_npad(0);
+ ngps = 0;
+
+ from_pad = null;
+ elevation = AltosLib.MISSING;
+ range = AltosLib.MISSING;
+ gps_height = AltosLib.MISSING;
+
+ pad_lat = AltosLib.MISSING;
+ pad_lon = AltosLib.MISSING;
+ pad_alt = AltosLib.MISSING;
+
+ speak_tick = AltosLib.MISSING;
+ speak_altitude = AltosLib.MISSING;
+
+ callsign = null;
+
+ accel_plus_g = AltosLib.MISSING;
+ accel_minus_g = AltosLib.MISSING;
+ accel = AltosLib.MISSING;
+
+ ground_accel = AltosLib.MISSING;
+ ground_accel_avg = AltosLib.MISSING;
+
+ log_format = AltosLib.MISSING;
+ serial = AltosLib.MISSING;
+ receiver_serial = AltosLib.MISSING;
+
+ baro = null;
+ companion = null;
+ }
+
+ void finish_update() {
+ prev_tick = tick;
+
+ ground_altitude.finish_update();
+ altitude.finish_update();
+ pressure.finish_update();
+ speed.finish_update();
+ acceleration.finish_update();
+
+ kalman_height.finish_update();
+ kalman_speed.finish_update();
+ kalman_acceleration.finish_update();
+ }
+
+ void copy(AltosState old) {
+
+ if (old == null) {
+ init();
+ return;
+ }
+
+ received_time = old.received_time;
+ time = old.time;
+ time_change = old.time_change;
+ prev_time = old.time;
+
+ tick = old.tick;
+ prev_tick = old.tick;
+ boost_tick = old.boost_tick;
+
+ state = old.state;
+ flight = old.flight;
+ landed = old.landed;
+ ascent = old.ascent;
+ boost = old.boost;
+ rssi = old.rssi;
+ status = old.status;
+ device_type = old.device_type;
+ config_major = old.config_major;
+ config_minor = old.config_minor;
+ apogee_delay = old.apogee_delay;
+ main_deploy = old.main_deploy;
+ flight_log_max = old.flight_log_max;
+
+ set = 0;
+
+ ground_pressure.copy(old.ground_pressure);
+ ground_altitude.copy(old.ground_altitude);
+ altitude.copy(old.altitude);
+ pressure.copy(old.pressure);
+ speed.copy(old.speed);
+ acceleration.copy(old.acceleration);
+
+ battery_voltage = old.battery_voltage;
+ pyro_voltage = old.pyro_voltage;
+ temperature = old.temperature;
+ apogee_voltage = old.apogee_voltage;
+ main_voltage = old.main_voltage;
+ ignitor_voltage = old.ignitor_voltage;
+
+ kalman_height.copy(old.kalman_height);
+ kalman_speed.copy(old.kalman_speed);
+ kalman_acceleration.copy(old.kalman_acceleration);
+
+ if (old.gps != null)
+ gps = old.gps.clone();
+ else
+ gps = null;
+ if (old.temp_gps != null)
+ temp_gps = old.temp_gps.clone();
+ else
+ temp_gps = null;
+ temp_gps_sat_tick = old.temp_gps_sat_tick;
+ gps_sequence = old.gps_sequence;
+ gps_pending = old.gps_pending;
+
+ if (old.imu != null)
+ imu = old.imu.clone();
+ else
+ imu = null;
+
+ if (old.mag != null)
+ mag = old.mag.clone();