Merge branch 'master' into altosdroid
[fw/altos] / altoslib / AltosConfigData.java
index 758953e24d588c938d50ea4d40dee379505df608..12659d88100322bffdca273180047356951551fa 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.AltosLib;
+package org.altusmetrum.altoslib_1;
 
 import java.util.*;
 import java.text.*;
@@ -67,6 +67,9 @@ public class AltosConfigData implements Iterable<String> {
        public int              npyro;
        public int              pyro;
 
+       /* HAS_APRS */
+       public int              aprs_interval;
+
        /* Storage info replies */
        public int      storage_size;
        public int      storage_erase_unit;
@@ -113,12 +116,22 @@ public class AltosConfigData implements Iterable<String> {
                default:
                        if (flight_log_max <= 0)
                                return 1;
+                       int     log_max = flight_log_max * 1024;
                        int     log_space = storage_size - storage_erase_unit;
-                       int     log_used = stored_flight * flight_log_max;
+                       int     log_used;
+
+                       if (stored_flight <= 0)
+                               log_used = 0;
+                       else
+                               log_used = stored_flight * log_max;
+                       int     log_avail;
 
                        if (log_used >= log_space)
-                               return 0;
-                       return (log_space - log_used) / flight_log_max;
+                               log_avail = 0;
+                       else
+                               log_avail = (log_space - log_used) / log_max;
+
+                       return log_avail;
                }
        }
 
@@ -189,9 +202,11 @@ public class AltosConfigData implements Iterable<String> {
                npyro = 0;
                pyros = null;
 
+               aprs_interval = -1;
+
                storage_size = -1;
                storage_erase_unit = -1;
-               stored_flight = -1;
+               stored_flight = 0;
        }
 
        public void parse_line(String line) {
@@ -262,9 +277,12 @@ public class AltosConfigData implements Iterable<String> {
                        } catch (Exception e) {}
                }
 
+               /* HAS_APRS */
+               try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {}
+
                /* Storage info replies */
                try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}
-               try { storage_erase_unit = get_int(line, "Storage erase unit"); } catch (Exception e) {}
+               try { storage_erase_unit = get_int(line, "Storage erase unit:"); } catch (Exception e) {}
 
                /* Log listing replies */
                try { get_int(line, "flight"); stored_flight++; }  catch (Exception e) {}
@@ -367,6 +385,9 @@ public class AltosConfigData implements Iterable<String> {
                /* AO_PYRO_NUM */
                if (npyro > 0)
                        pyros = source.pyros();
+
+               if (aprs_interval >= 0)
+                       aprs_interval = source.aprs_interval();
        }
 
        public void set_values(AltosConfigValues dest) {
@@ -399,6 +420,7 @@ public class AltosConfigData implements Iterable<String> {
                        dest.set_pyros(pyros);
                else
                        dest.set_pyros(null);
+               dest.set_aprs_interval(aprs_interval);
        }
 
        public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException {
@@ -461,6 +483,10 @@ public class AltosConfigData implements Iterable<String> {
                        }
                }
 
+               /* HAS_APRS */
+               if (aprs_interval >= 0)
+                       link.printf("c A %d\n", aprs_interval);
+
                link.printf("c w\n");
                link.flush_output();
        }
@@ -469,7 +495,6 @@ public class AltosConfigData implements Iterable<String> {
                reset();
                link.printf("c s\nf\nv\n");
                read_link(link, "software-version");
-               System.out.printf("Log format %d\n", log_format);
                switch (log_format) {
                case AltosLib.AO_LOG_FORMAT_FULL:
                case AltosLib.AO_LOG_FORMAT_TINY:
@@ -481,4 +506,4 @@ public class AltosConfigData implements Iterable<String> {
                }
        }
 
-}
\ No newline at end of file
+}