altoslib: Retry map connections 10 times on network failure
[fw/altos] / altoslib / AltosFile.java
index 9802f883edbcb9ad8a26962b8f2f05e2bd2bdfbe..e96b19db823c87cd274ded9002bb6ef1f6432f40 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,7 +16,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_2; 
+package org.altusmetrum.altoslib_13;
 
 import java.io.File;
 import java.util.*;
@@ -24,15 +25,48 @@ public class AltosFile extends File {
 
        static String number(int n) {
                if (n == AltosLib.MISSING)
-                       return "unk";
+                       return "unkn";
                else
-                       return String.format("%03d", n);
+                       return String.format("%04d", n);
        }
 
-       public AltosFile(int year, int month, int day, int serial, int flight, String extension) {
+       static String receiver(int receiver) {
+               if (receiver == AltosLib.MISSING)
+                       return "";
+               return String.format("-via-%04d", receiver);
+       }
+
+       static private String label(int flight) {
+               if (flight < 0)
+                       return "corrupt";
+               else
+                       return "flight";
+       }
+
+       static private int flight(int flight) {
+               if (flight < 0)
+                       return -flight;
+               return flight;
+       }
+
+       public AltosFile(int year, int month, int day, int serial, int flight, int receiver, String extension) {
                super (AltosPreferences.logdir(),
-                      String.format("%04d-%02d-%02d-serial-%s-flight-%s.%s",
-                                    year, month, day, number(serial), number(flight), extension));
+                      String.format("%04d-%02d-%02d-serial-%s-%s-%s%s.%s",
+                                    year, month, day, number(serial), label(flight), number(flight(flight)), receiver(receiver), extension));
+       }
+
+       public AltosFile(int year, int month, int day, int serial, int flight, String extension) {
+               this(year, month, day, serial, flight, AltosLib.MISSING, extension);
+       }
+
+       public AltosFile(int serial, int flight, int receiver, String extension) {
+               this(Calendar.getInstance().get(Calendar.YEAR),
+                    Calendar.getInstance().get(Calendar.MONTH) + 1,
+                    Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
+                    serial,
+                    flight,
+                    receiver,
+                    extension);
        }
 
        public AltosFile(int serial, int flight, String extension) {
@@ -41,10 +75,11 @@ public class AltosFile extends File {
                     Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
                     serial,
                     flight,
+                    AltosLib.MISSING,
                     extension);
        }
 
-       public AltosFile(AltosState state) {
-               this(state.serial, state.flight, "telem");
+       public AltosFile(AltosCalData cal_data) {
+               this(cal_data.serial, cal_data.flight, cal_data.receiver_serial, "telem");
        }
 }