The HMC5883 sensor data is ordered x, z, y. Relabel everything to
match that to preserve compatibility with existing firmware. With the
data correctly ordered, fix the labling of the axes along, across and
through.
Signed-off-by: Keith Packard <keithp@keithp.com>
private int gyro_y() { return data16(16); }
private int gyro_z() { return data16(18); }
private int mag_x() { return data16(20); }
private int gyro_y() { return data16(16); }
private int gyro_z() { return data16(18); }
private int mag_x() { return data16(20); }
- private int mag_y() { return data16(22); }
- private int mag_z() { return data16(24); }
+ private int mag_z() { return data16(22); }
+ private int mag_y() { return data16(24); }
private int accel() { return data16(26); }
/* AO_LOG_TEMP_VOLT elements */
private int accel() { return data16(26); }
/* AO_LOG_TEMP_VOLT elements */
int gyro_pitch = gyro_x();
int gyro_yaw = gyro_z();
int gyro_pitch = gyro_x();
int gyro_yaw = gyro_z();
- int mag_along = mag_x();
- int mag_across = mag_y();
+ int mag_along = mag_y();
+ int mag_across = mag_x();
int mag_through = mag_z();
if (log_format == AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD)
int mag_through = mag_z();
if (log_format == AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD)
import java.io.*;
public class AltosMag implements Cloneable {
import java.io.*;
public class AltosMag implements Cloneable {
- public int along;
- public int across;
- public int through;
+ public int x;
+ public int z;
+ public int y;
public static final double counts_per_gauss = 1090;
public static final double counts_per_gauss = 1090;
}
public boolean parse_string(String line) {
}
public boolean parse_string(String line) {
-// if (line.startsWith("Syntax error")) {
-// along = across = through = 0;
-// return true;
-// }
if (!line.startsWith("X:"))
return false;
if (!line.startsWith("X:"))
return false;
String[] items = line.split("\\s+");
if (items.length >= 6) {
String[] items = line.split("\\s+");
if (items.length >= 6) {
- along = Integer.parseInt(items[1]);
- across = Integer.parseInt(items[3]);
- through = Integer.parseInt(items[5]);
+ x = Integer.parseInt(items[1]);
+ z = Integer.parseInt(items[3]);
+ y = Integer.parseInt(items[5]);
public AltosMag clone() {
AltosMag n = new AltosMag();
public AltosMag clone() {
AltosMag n = new AltosMag();
- n.along = along;
- n.across = across;
- n.through = through;
+ n.x = x;
+ n.z = z;
+ n.y = y;
return n;
}
public AltosMag() {
return n;
}
public AltosMag() {
- along = AltosLib.MISSING;
- across = AltosLib.MISSING;
- through = AltosLib.MISSING;
- }
-
- public AltosMag(int along, int across, int through) {
- this.along = along;
- this.across = across;
- this.through = through;
+ x = AltosLib.MISSING;
+ z = AltosLib.MISSING;
+ y = AltosLib.MISSING;
}
static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
}
static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
AltosMag mag = new AltosMag(link);
if (mag != null)
AltosMag mag = new AltosMag(link);
if (mag != null)
- listener.set_mag(cal_data.mag_along(mag.along),
- cal_data.mag_across(mag.across),
- cal_data.mag_through(mag.through));
+ listener.set_mag(cal_data.mag_along(mag.y),
+ cal_data.mag_across(mag.x),
+ cal_data.mag_through(mag.z));
} catch (TimeoutException te) {
}
}
} catch (TimeoutException te) {
}
}
int gyro_z() { return int16(24); }
int mag_x() { return int16(26); }
int gyro_z() { return int16(24); }
int mag_x() { return int16(26); }
- int mag_y() { return int16(28); }
- int mag_z() { return int16(30); }
+ int mag_z() { return int16(28); }
+ int mag_y() { return int16(30); }
public AltosTelemetryMegaSensor(int[] bytes) throws AltosCRCException {
super(bytes);
public AltosTelemetryMegaSensor(int[] bytes) throws AltosCRCException {
super(bytes);
int gyro_pitch = gyro_x();
int gyro_yaw = gyro_z();
int gyro_pitch = gyro_x();
int gyro_yaw = gyro_z();
- int mag_along = mag_x();
- int mag_across = mag_y();
+ int mag_along = mag_y();
+ int mag_across = mag_x();
int mag_through = mag_z();
listener.set_accel(cal_data.accel_along(accel_along),
int mag_through = mag_z();
listener.set_accel(cal_data.accel_along(accel_along),