first cut at turnon scripts for EasyTimer v2
[fw/altos] / altoslib / AltosConvert.java
index a252abdf754345ef278ae8f5b606b7d8f8fe7ab4..84f7e23d91a7f03ea44d3c3139fd7a61a78d7aa3 100644 (file)
@@ -19,7 +19,7 @@
 /*
  * Sensor data conversion functions
  */
-package org.altusmetrum.altoslib_11;
+package org.altusmetrum.altoslib_14;
 
 import java.util.*;
 
@@ -184,6 +184,18 @@ public class AltosConvert {
                return altitude;
        }
 
+       public static double degrees_to_radians(double degrees) {
+               if (degrees == AltosLib.MISSING)
+                       return AltosLib.MISSING;
+               return degrees * (Math.PI / 180.0);
+       }
+
+       public static double radians_to_degrees(double radians) {
+               if (radians == AltosLib.MISSING)
+                       return AltosLib.MISSING;
+               return radians * (180.0 / Math.PI);
+       }
+
        public static double
        cc_battery_to_voltage(double battery)
        {
@@ -246,7 +258,19 @@ public class AltosConvert {
                return sensor / 32767.0 * supply * 127/27;
        }
 
-       static double tele_gps_voltage(int sensor) {
+       static double tele_gps_1_voltage(int sensor) {
+               double  supply = 3.3;
+
+               return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0;
+       }
+
+       static double tele_gps_2_voltage(int sensor) {
+               double  supply = 3.3;
+
+               return sensor / 4095.0 * supply * (5.6 + 10.0) / 10.0;
+       }
+
+       static double tele_gps_3_voltage(int sensor) {
                double  supply = 3.3;
 
                return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0;
@@ -258,7 +282,19 @@ public class AltosConvert {
                return 3.3 * mega_adc(raw) * (5.1 + 10.0) / 10.0;
        }
 
-       static double easy_mini_voltage(int sensor, int serial) {
+       static double easy_timer_voltage(int sensor) {
+               return 3.3 * mega_adc(sensor) * (100.0 + 27.0) / 27.0;
+       }
+
+       static double easy_mini_2_adc(double raw) {
+               return raw / 4095.0;
+       }
+
+       static double easy_mini_1_adc(double raw) {
+               return raw / 32767.0;
+       }
+
+       static double easy_mini_1_voltage(int sensor, int serial) {
                double  supply = 3.3;
                double  diode_offset = 0.0;
 
@@ -272,7 +308,55 @@ public class AltosConvert {
                if (serial < 1665)
                        diode_offset = 0.150;
 
-               return sensor / 32767.0 * supply * 127/27 + diode_offset;
+               return easy_mini_1_adc(sensor) * supply * 127/27 + diode_offset;
+       }
+
+       static double easy_mini_2_voltage(int sensor) {
+               double  supply = 3.3;
+
+               return easy_mini_2_adc(sensor) * supply * 127/27;
+       }
+
+       static double easy_mini_3_voltage(int sensor) {
+               return easy_mini_1_voltage(sensor, 10000);
+       }
+
+       static double motor_pressure(double voltage) {
+               double  base = 0.5;
+               double  max = 4.5;
+               double  full_scale_pressure = psi_to_pa(1600);
+
+               if (voltage < base)
+                       voltage = base;
+               if (voltage > max)
+                       voltage = max;
+               return (voltage - base) / (max - base) * full_scale_pressure;
+       }
+
+       static double easy_motor_3_adc(double raw) {
+               return raw / 32767.0;
+       }
+
+       static double easy_motor_3_voltage(int sensor) {
+               double  supply = 3.3;
+
+               return easy_motor_3_adc(sensor) * supply * 15.6 / 10.0;
+       }
+
+       static double easy_motor_2_motor_pressure(int sensor, double ground_sensor) {
+               double  supply = 3.3;
+               double  ground_voltage = easy_mini_2_adc(ground_sensor) * supply * 15.6 / 10.0;
+               double  voltage = easy_mini_2_adc(sensor) * supply * 15.6 / 10.0;
+
+               return motor_pressure(voltage) - motor_pressure(ground_voltage);
+       }
+
+       static double easy_motor_3_motor_pressure(int sensor, double ground_sensor) {
+               double  supply = 3.3;
+               double  ground_voltage = easy_motor_3_adc(ground_sensor) * supply * 15.6 / 10.0;
+               double  voltage = easy_motor_3_adc(sensor) * supply * 15.6 / 10.0;
+
+               return motor_pressure(voltage) - motor_pressure(ground_voltage);
        }
 
        public static double radio_to_frequency(int freq, int setting, int cal, int channel) {
@@ -392,6 +476,7 @@ public class AltosConvert {
        }
 
        public static double acceleration_from_sensor(double sensor, double plus_g, double minus_g, double ground) {
+
                if (sensor == AltosLib.MISSING)
                        return AltosLib.MISSING;
 
@@ -440,7 +525,7 @@ public class AltosConvert {
 
        public static AltosPyroName pyro_name = new AltosPyroName();
 
-       public static AltosUnits magnetic_field = null;
+       public static AltosUnits magnetic_field = new AltosGauss();
 
        public static String show_gs(String format, double a) {
                a = meters_to_g(a);
@@ -474,7 +559,7 @@ public class AltosConvert {
 
        public static int beep_freq_to_value(double freq) {
                if (freq == 0)
-                       return 94;
+                       return 0;
                return (int) Math.floor (1.0/2.0 * (24.0e6/32.0) / freq + 0.5);
        }