altoslib: Add AltosForce and AltosPressure units
authorKeith Packard <keithp@keithp.com>
Tue, 9 May 2017 07:14:33 +0000 (00:14 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 9 May 2017 07:14:33 +0000 (00:14 -0700)
Useful for TeleFireTwo.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosConvert.java
altoslib/AltosForce.java [new file with mode: 0644]
altoslib/AltosPressure.java [new file with mode: 0644]

index 8617a12cea7a5def8d7062cde0f3aea11e4561d6..3489a609fc9eac2156b9c586ee23af0660a09512 100644 (file)
@@ -21,6 +21,8 @@
  */
 package org.altusmetrum.altoslib_11;
 
+import java.util.*;
+
 public class AltosConvert {
        /*
         * Pressure Sensor Model, version 1.1
@@ -370,12 +372,28 @@ public class AltosConvert {
                return psi * 6894.76;
        }
 
+       public static double pa_to_psi(double pa) {
+               return pa / 6894.76;
+       }
+
+       public static double n_to_lb(double n) {
+               return n * 0.22480894;
+       }
+
+       public static double lb_to_n(double lb) {
+               return lb / 0.22480894;
+       }
+
        public static boolean imperial_units = false;
 
        public static AltosDistance distance = new AltosDistance();
 
        public static AltosHeight height = new AltosHeight();
 
+       public static AltosPressure pressure = new AltosPressure();
+
+       public static AltosForce force = new AltosForce();
+
        public static AltosSpeed speed = new AltosSpeed();
 
        public static AltosAccel accel = new AltosAccel();
@@ -407,6 +425,13 @@ public class AltosConvert {
                return csum & 0xff;
        }
 
+       public static int checksum(List<Byte> data, int start, int length) {
+               int     csum = 0x5a;
+               for (int i = 0; i < length; i++)
+                       csum += data.get(i+start);
+               return csum & 0xff;
+       }
+
        public static double beep_value_to_freq(int value) {
                if (value == 0)
                        return 4000;
diff --git a/altoslib/AltosForce.java b/altoslib/AltosForce.java
new file mode 100644 (file)
index 0000000..229d04f
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright © 2017 Keith Packard <keithp@keithp.com>
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+package org.altusmetrum.altoslib_11;
+
+public class AltosForce extends AltosUnits {
+
+       public double value(double v, boolean imperial_units) {
+               if (imperial_units)
+                       return AltosConvert.n_to_lb(v);
+               return v;
+       }
+
+       public double inverse(double v, boolean imperial_units) {
+               if (imperial_units)
+                       return AltosConvert.lb_to_n(v);
+               return v;
+       }
+
+       public String show_units(boolean imperial_units) {
+               if (imperial_units)
+                       return "lbs";
+               return "N";
+       }
+
+       public String say_units(boolean imperial_units) {
+               if (imperial_units)
+                       return "pounds";
+               return "newtons";
+       }
+
+       public int show_fraction(int width, boolean imperial_units) {
+               return width / 9;
+       }
+}
diff --git a/altoslib/AltosPressure.java b/altoslib/AltosPressure.java
new file mode 100644 (file)
index 0000000..2de2682
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2017 Keith Packard <keithp@keithp.com>
+ *
+ * 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; 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
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+package org.altusmetrum.altoslib_11;
+
+public class AltosPressure extends AltosUnits {
+
+       public double value(double v, boolean imperial_units) {
+               if (imperial_units)
+                       return AltosConvert.pa_to_psi(v);
+               return v;
+       }
+
+       public double inverse(double v, boolean imperial_units) {
+               if (imperial_units)
+                       return AltosConvert.psi_to_pa(v);
+               return v;
+       }
+
+       public String show_units(boolean imperial_units) {
+               if (imperial_units)
+                       return "psi";
+               return "Pa";
+       }
+
+       public String say_units(boolean imperial_units) {
+               if (imperial_units)
+                       return "p s i";
+               return "pascals";
+       }
+
+       public int show_fraction(int width, boolean imperial_units) {
+               return width / 9;
+       }
+}