From d97c4d2f6de2981c2efd7bfbc9f5f9649987b854 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 9 May 2017 00:14:33 -0700 Subject: [PATCH] altoslib: Add AltosForce and AltosPressure units Useful for TeleFireTwo. Signed-off-by: Keith Packard --- altoslib/AltosConvert.java | 25 +++++++++++++++++++ altoslib/AltosForce.java | 49 ++++++++++++++++++++++++++++++++++++ altoslib/AltosPressure.java | 50 +++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 altoslib/AltosForce.java create mode 100644 altoslib/AltosPressure.java diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 8617a12c..3489a609 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -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 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 index 00000000..229d04f3 --- /dev/null +++ b/altoslib/AltosForce.java @@ -0,0 +1,49 @@ +/* + * Copyright © 2017 Keith Packard + * + * 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 index 00000000..2de26820 --- /dev/null +++ b/altoslib/AltosPressure.java @@ -0,0 +1,50 @@ +/* + * Copyright © 2017 Keith Packard + * + * 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; + } +} -- 2.30.2