altoslib: six-axis support for easy timer
[fw/altos] / altosui / AltosConfigFCUI.java
index 2eb6ae752c73f70ba7eed833ebce4ff1ab95eda2..826559c754193b9b38fbdded3441ba185e2672c5 100644 (file)
@@ -142,11 +142,30 @@ public class AltosConfigFCUI
                "4250",
        };
 
-       static String[]         pad_orientation_values = {
+       static String[]         pad_orientation_values_none = {
+       };
+
+       static String[]         pad_orientation_values_radio = {
                "Antenna Up",
                "Antenna Down",
        };
 
+       static String[]         pad_orientation_values_no_radio = {
+               "Beeper Up",
+               "Beeper Down",
+       };
+
+       static String[]         pad_orientation_values_six_axis = {
+               "Beeper Up",
+               "Beeper Down",
+               "Words Upright",
+               "Words Upsidedown",
+               "Big Parts Up",
+               "Big Parts Down",
+       };
+
+       String[] pad_orientation_values;
+
        static String[]         tracker_motion_values_m = {
                "2",
                "5",
@@ -203,6 +222,25 @@ public class AltosConfigFCUI
                return product != null && product.startsWith("TeleMetrum");
        }
 
+       boolean is_telemega() {
+               String  product = product_value.getText();
+               return product != null && product.startsWith("TeleMega");
+       }
+
+       boolean is_easymega() {
+               String  product = product_value.getText();
+               return product != null && product.startsWith("EasyMega");
+       }
+
+       boolean is_easytimer() {
+               String  product = product_value.getText();
+               return product != null && product.startsWith("EasyTimer");
+       }
+
+       boolean has_radio() {
+               return is_telemega() || is_telemetrum() || is_telemini();
+       }
+
        void set_radio_enable_tool_tip() {
                if (radio_enable_value.isVisible())
                        radio_enable_value.setToolTipText("Enable/Disable telemetry and RDF transmissions");
@@ -277,6 +315,8 @@ public class AltosConfigFCUI
                                pad_orientation_value.setToolTipText("Older TeleMetrum firmware must fly antenna forward");
                        else if (is_telemini() || is_easymini())
                                pad_orientation_value.setToolTipText("TeleMini and EasyMini don't care how they are mounted");
+                       else if (is_easytimer())
+                               pad_orientation_value.setToolTipText("EasyTimer can be mounted in any of six orientations");
                        else
                                pad_orientation_value.setToolTipText("Can't select orientation");
                }
@@ -759,7 +799,8 @@ public class AltosConfigFCUI
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = ir;
                c.ipady = 5;
-               pad_orientation_value = new JComboBox<String>(pad_orientation_values);
+
+               pad_orientation_value = new JComboBox<String>();
                pad_orientation_value.setEditable(false);
                pad_orientation_value.addItemListener(this);
                pane.add(pad_orientation_value, c);
@@ -1061,13 +1102,27 @@ public class AltosConfigFCUI
                listener = l;
        }
 
+       void set_pad_orientation_values()
+       {
+               if (has_radio())
+                       pad_orientation_values = pad_orientation_values_radio;
+               else if (is_easytimer())
+                       pad_orientation_values = pad_orientation_values_six_axis;
+               else
+                       pad_orientation_values = pad_orientation_values_no_radio;
+               pad_orientation_value.removeAllItems();
+               for (String s : pad_orientation_values)
+                       pad_orientation_value.addItem(s);
+               set_pad_orientation_tool_tip();
+       }
+
        /* set and get all of the dialog values */
        public void set_product(String product) {
                radio_frequency_value.set_product(product);
                product_value.setText(product);
-               set_pad_orientation_tool_tip();
                set_accel_tool_tips();
                set_flight_log_max_tool_tip();
+               set_pad_orientation_values();
        }
 
        public void set_version(String version) {
@@ -1271,16 +1326,18 @@ public class AltosConfigFCUI
                return AltosLib.MISSING;
        }
 
-       public void set_flight_log_max_limit(int new_flight_log_max_limit) {
+       public void set_flight_log_max_limit(int new_flight_log_max_limit, int new_storage_erase_unit) {
                flight_log_max_limit = new_flight_log_max_limit;
                if (new_flight_log_max_limit != AltosLib.MISSING) {
                        flight_log_max_value.removeAllItems();
                        for (int i = 8; i >= 1; i--) {
                                int     size = flight_log_max_limit / i;
+                               if (new_storage_erase_unit != 0)
+                                       size &= ~(new_storage_erase_unit - 1);
                                flight_log_max_value.addItem(String.format("%d (%d flights)", size, i));
                        }
                }
-               if (flight_log_max != 0)
+               if (flight_log_max != 0 && flight_log_max != AltosLib.MISSING)
                        set_flight_log_max(flight_log_max);
        }