From ed682ca39496849b6c0d6bdf81bee6263864895f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:55:43 -0700 Subject: [PATCH] altosdroid: Add other igniter status, various other layout changes Show the first four igniters (A-D) in the pad tab. Make pad and flight layouts look a bit better Signed-off-by: Keith Packard --- altosdroid/Notebook | 18 +- altosdroid/res/layout/tab_flight.xml | 751 ++++++++-------- altosdroid/res/layout/tab_pad.xml | 803 ++++++++++-------- altosdroid/res/values/strings.xml | 16 +- .../org/altusmetrum/AltosDroid/TabPad.java | 86 +- 5 files changed, 940 insertions(+), 734 deletions(-) diff --git a/altosdroid/Notebook b/altosdroid/Notebook index 22271e7c..73b5ed27 100644 --- a/altosdroid/Notebook +++ b/altosdroid/Notebook @@ -15,7 +15,9 @@ Desired AltosDroid feature list *) Monitor-idle mode - *) Monitor TeleMega igniters + *) Online maps comes up tracking object at 0,0 + + *) Have names for each serial number, default to callsign Completed features @@ -90,3 +92,17 @@ Completed features *) Make voice responses depend on selected tab Done. + + *) Monitor TeleMega igniters + + Done. Visible only in Pad tab + + *) Make it harder to switch trackers in map view. Too easy to touch + the screen and switch on accident. + + Done. A menu pops up with trackers within a small radius of + the touch point, letting you cancel if that wasn't your intent. + + *) Make sure it keeps talking with the screen blanked + + Done. Don't shut down voice when stopping UI. diff --git a/altosdroid/res/layout/tab_flight.xml b/altosdroid/res/layout/tab_flight.xml index 4fa026ca..27c903d0 100644 --- a/altosdroid/res/layout/tab_flight.xml +++ b/altosdroid/res/layout/tab_flight.xml @@ -15,377 +15,386 @@ with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. --> - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_weight="1" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/altosdroid/res/layout/tab_pad.xml b/altosdroid/res/layout/tab_pad.xml index 380eab91..f7a69f21 100644 --- a/altosdroid/res/layout/tab_pad.xml +++ b/altosdroid/res/layout/tab_pad.xml @@ -15,343 +15,466 @@ with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml index 36b07bc2..e7014fc9 100644 --- a/altosdroid/res/values/strings.xml +++ b/altosdroid/res/values/strings.xml @@ -77,11 +77,15 @@ Max Height Max Speed Max Accel - Battery Voltage + Battery Receiver Battery - Apogee Igniter Voltage - Main Igniter Voltage - On-board Data Logging + Apogee Igniter + Main Igniter + Igniter A + Igniter B + Igniter C + Igniter D + Data Logging GPS Locked GPS Ready Latitude @@ -90,9 +94,7 @@ Tar Lon My Lat My Lon - Pad Lat - Pad Lon - Pad Alt + My Alt Known Launch Sites diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index cfc55261..f6204547 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -54,9 +54,14 @@ public class TabPad extends AltosDroidTab { private TextView gps_ready_view; private GoNoGoLights gps_ready_lights; - private TextView pad_latitude_view; - private TextView pad_longitude_view; - private TextView pad_altitude_view; + private TextView receiver_latitude_view; + private TextView receiver_longitude_view; + private TextView receiver_altitude_view; + + private TextView[] ignite_voltage_view = new TextView[4]; + private TextView[] ignite_voltage_label = new TextView[4]; + private GoNoGoLights[] ignite_lights = new GoNoGoLights[4]; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -99,9 +104,46 @@ public class TabPad extends AltosDroidTab { (ImageView) v.findViewById(R.id.gps_ready_greenled), getResources()); - pad_latitude_view = (TextView) v.findViewById(R.id.pad_lat_value); - pad_longitude_view = (TextView) v.findViewById(R.id.pad_lon_value); - pad_altitude_view = (TextView) v.findViewById(R.id.pad_alt_value); + for (int i = 0; i < 4; i++) { + int view_id, label_id, lights_id; + int red_id, green_id; + switch (i) { + case 0: + default: + view_id = R.id.ignite_a_voltage_value; + label_id = R.id.ignite_a_voltage_label; + red_id = R.id.ignite_a_redled; + green_id = R.id.ignite_a_greenled; + break; + case 1: + view_id = R.id.ignite_b_voltage_value; + label_id = R.id.ignite_b_voltage_label; + red_id = R.id.ignite_b_redled; + green_id = R.id.ignite_b_greenled; + break; + case 2: + view_id = R.id.ignite_c_voltage_value; + label_id = R.id.ignite_c_voltage_label; + red_id = R.id.ignite_c_redled; + green_id = R.id.ignite_c_greenled; + break; + case 3: + view_id = R.id.ignite_d_voltage_value; + label_id = R.id.ignite_d_voltage_label; + red_id = R.id.ignite_d_redled; + green_id = R.id.ignite_d_greenled; + break; + } + ignite_voltage_view[i] = (TextView) v.findViewById(view_id); + ignite_voltage_label[i] = (TextView) v.findViewById(label_id); + ignite_lights[i] = new GoNoGoLights((ImageView) v.findViewById(red_id), + (ImageView) v.findViewById(green_id), + getResources()); + } + + receiver_latitude_view = (TextView) v.findViewById(R.id.receiver_lat_value); + receiver_longitude_view = (TextView) v.findViewById(R.id.receiver_lon_value); + receiver_altitude_view = (TextView) v.findViewById(R.id.receiver_alt_value); return v; } @@ -109,13 +151,13 @@ public class TabPad extends AltosDroidTab { public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { if (state != null) { - battery_voltage_view.setText(AltosDroid.number("%4.2f V", state.battery_voltage)); + battery_voltage_view.setText(AltosDroid.number(" %4.2f V", state.battery_voltage)); battery_lights.set(state.battery_voltage >= AltosLib.ao_battery_good, state.battery_voltage == AltosLib.MISSING); if (state.apogee_voltage == AltosLib.MISSING) { apogee_voltage_view.setVisibility(View.GONE); apogee_voltage_label.setVisibility(View.GONE); } else { - apogee_voltage_view.setText(AltosDroid.number("%4.2f V", state.apogee_voltage)); + apogee_voltage_view.setText(AltosDroid.number(" %4.2f V", state.apogee_voltage)); apogee_voltage_view.setVisibility(View.VISIBLE); apogee_voltage_label.setVisibility(View.VISIBLE); } @@ -124,12 +166,27 @@ public class TabPad extends AltosDroidTab { main_voltage_view.setVisibility(View.GONE); main_voltage_label.setVisibility(View.GONE); } else { - main_voltage_view.setText(AltosDroid.number("%4.2f V", state.main_voltage)); + main_voltage_view.setText(AltosDroid.number(" %4.2f V", state.main_voltage)); main_voltage_view.setVisibility(View.VISIBLE); main_voltage_label.setVisibility(View.VISIBLE); } main_lights.set(state.main_voltage >= AltosLib.ao_igniter_good, state.main_voltage == AltosLib.MISSING); + int num_igniter = state.ignitor_voltage == null ? 0 : state.ignitor_voltage.length; + + for (int i = 0; i < 4; i++) { + double voltage = i >= num_igniter ? AltosLib.MISSING : state.ignitor_voltage[i]; + if (voltage == AltosLib.MISSING) { + ignite_voltage_view[i].setVisibility(View.GONE); + ignite_voltage_label[i].setVisibility(View.GONE); + } else { + ignite_voltage_view[i].setText(AltosDroid.number(" %4.2f V", voltage)); + ignite_voltage_view[i].setVisibility(View.VISIBLE); + ignite_voltage_label[i].setVisibility(View.VISIBLE); + } + ignite_lights[i].set(voltage >= AltosLib.ao_igniter_good, voltage == AltosLib.MISSING); + } + if (state.flight != 0) { if (state.state <= AltosLib.ao_flight_pad) data_logging_view.setText("Ready to record"); @@ -145,7 +202,7 @@ public class TabPad extends AltosDroidTab { if (state.gps != null) { int soln = state.gps.nsat; int nsat = state.gps.cc_gps_sat != null ? state.gps.cc_gps_sat.length : 0; - gps_locked_view.setText(String.format("%4d in soln, %4d in view", soln, nsat)); + gps_locked_view.setText(String.format("%d in soln, %d in view", soln, nsat)); gps_locked_lights.set(state.gps.locked && state.gps.nsat >= 4, false); if (state.gps_ready) gps_ready_view.setText("Ready"); @@ -161,7 +218,7 @@ public class TabPad extends AltosDroidTab { receiver_voltage_view.setVisibility(View.GONE); receiver_voltage_label.setVisibility(View.GONE); } else { - receiver_voltage_view.setText(AltosDroid.number("%4.2f V", telem_state.receiver_battery)); + receiver_voltage_view.setText(AltosDroid.number(" %4.2f V", telem_state.receiver_battery)); receiver_voltage_view.setVisibility(View.VISIBLE); receiver_voltage_label.setVisibility(View.VISIBLE); } @@ -172,10 +229,9 @@ public class TabPad extends AltosDroidTab { double altitude = AltosLib.MISSING; if (receiver.hasAltitude()) altitude = receiver.getAltitude(); - pad_latitude_view.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); - pad_longitude_view.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); - set_value(pad_altitude_view, AltosConvert.height, 6, altitude); + receiver_latitude_view.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); + receiver_longitude_view.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); + set_value(receiver_altitude_view, AltosConvert.height, 1, altitude); } } - } -- 2.30.2