altosdroid: Add tilt angle to pad and flight tabs
[fw/altos] / altosdroid / app / src / main / java / org / altusmetrum / AltosDroid / TabFlight.java
index 8997d967dccee52c435225a9036daa3dbee1417b..0346f71c42ad99b073a1af457ba5269fe60ff574 100644 (file)
 
 package org.altusmetrum.AltosDroid;
 
-import org.altusmetrum.altoslib_13.*;
+import org.altusmetrum.altoslib_14.*;
 
-import android.app.Activity;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
 import android.view.*;
 import android.widget.*;
 import android.location.Location;
@@ -30,8 +28,12 @@ import android.location.Location;
 public class TabFlight extends AltosDroidTab {
        private TextView speed_view;
        private TextView height_view;
+       private TextView altitude_view;
+       private View tilt_view;
+       private TextView tilt_value;
        private TextView max_speed_view;
        private TextView max_height_view;
+       private TextView max_altitude_view;
        private TextView elevation_view;
        private TextView range_view;
        private TextView bearing_view;
@@ -52,10 +54,14 @@ public class TabFlight extends AltosDroidTab {
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View v = inflater.inflate(R.layout.tab_flight, container, false);
 
-               speed_view     = (TextView) v.findViewById(R.id.speed_value);
-               height_view    = (TextView) v.findViewById(R.id.height_value);
-               max_speed_view = (TextView) v.findViewById(R.id.max_speed_value);
-               max_height_view= (TextView) v.findViewById(R.id.max_height_value);
+               speed_view      = (TextView) v.findViewById(R.id.speed_value);
+               height_view     = (TextView) v.findViewById(R.id.height_value);
+               altitude_view   = (TextView) v.findViewById(R.id.altitude_value);
+               tilt_view       = (View) v.findViewById(R.id.tilt_view);
+               tilt_value      = (TextView) v.findViewById(R.id.tilt_value);
+               max_speed_view  = (TextView) v.findViewById(R.id.max_speed_value);
+               max_height_view = (TextView) v.findViewById(R.id.max_height_value);
+               max_altitude_view= (TextView) v.findViewById(R.id.max_altitude_value);
                elevation_view = (TextView) v.findViewById(R.id.elevation_value);
                range_view     = (TextView) v.findViewById(R.id.range_value);
                bearing_view   = (TextView) v.findViewById(R.id.bearing_value);
@@ -85,16 +91,25 @@ public class TabFlight extends AltosDroidTab {
 
        public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) {
                if (state != null) {
-                       set_value(speed_view, AltosConvert.speed, 6, state.speed());
-                       set_value(height_view, AltosConvert.height, 6, state.height());
-                       set_value(max_speed_view, AltosConvert.speed, 6, state.max_speed());
-                       set_value(max_height_view, AltosConvert.height, 6, state.max_height());
+                       set_value(speed_view, AltosConvert.speed, 1, state.speed());
+                       set_value(height_view, AltosConvert.height, 1, state.height());
+                       set_value(altitude_view, AltosConvert.height, 1, state.altitude());
+                       double orient = state.orient();
+                       if (orient == AltosLib.MISSING) {
+                               tilt_view.setVisibility(View.GONE);
+                       } else {
+                               tilt_value.setText(AltosDroid.number("%1.0f°", orient));
+                               tilt_view.setVisibility(View.VISIBLE);
+                       }
+                       set_value(max_speed_view, AltosConvert.speed, 1, state.max_speed());
+                       set_value(max_height_view, AltosConvert.height, 1, state.max_height());
+                       set_value(max_altitude_view, AltosConvert.height, 1, state.max_altitude());
                        if (from_receiver != null) {
-                               elevation_view.setText(AltosDroid.number("%3.0f°", from_receiver.elevation));
-                               set_value(range_view, AltosConvert.distance, 6, from_receiver.range);
-                               bearing_view.setText(AltosDroid.number("%3.0f°", from_receiver.bearing));
+                               elevation_view.setText(AltosDroid.number("%1.0f°", from_receiver.elevation));
+                               set_value(range_view, AltosConvert.distance, 1, from_receiver.range);
+                               bearing_view.setText(AltosDroid.number("%1.0f°", from_receiver.bearing));
                                compass_view.setText(from_receiver.bearing_words(AltosGreatCircle.BEARING_LONG));
-                               set_value(distance_view, AltosConvert.distance, 6, from_receiver.distance);
+                               set_value(distance_view, AltosConvert.distance, 1, from_receiver.distance);
                        } else { 
                                elevation_view.setText("<unknown>");
                                range_view.setText("<unknown>");
@@ -110,7 +125,7 @@ public class TabFlight extends AltosDroidTab {
                        if (state.apogee_voltage == AltosLib.MISSING) {
                                apogee_view.setVisibility(View.GONE);
                        } else {
-                               apogee_voltage_view.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+                               apogee_voltage_view.setText(AltosDroid.number("%1.2f V", state.apogee_voltage));
                                apogee_lights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING);
                                apogee_view.setVisibility(View.VISIBLE);
                        }
@@ -118,7 +133,7 @@ public class TabFlight extends AltosDroidTab {
                        if (state.main_voltage == AltosLib.MISSING) {
                                main_view.setVisibility(View.GONE);
                        } else {
-                               main_voltage_view.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+                               main_voltage_view.setText(AltosDroid.number("%1.2f V", state.main_voltage));
                                main_lights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING);
                                main_view.setVisibility(View.VISIBLE);
                        }