public static final double counts_per_g_mpu = 2048.0;
public static final double counts_per_g_bmx = 2048.0;
+ int pad_orientation;
+
private static double counts_per_g(int imu_type) {
switch (imu_type) {
case imu_type_telemega_v1_v2:
return counts / counts_per_gauss(imu_type, imu_axis);
}
- public boolean parse_string(String line) {
+ public boolean parse_string(String line, AltosLink link) {
if (!line.startsWith("Accel:"))
return false;
+ try {
+ pad_orientation = link.config_data().pad_orientation;
+ } catch (Exception e) {
+ return false;
+ }
+
String[] items = line.split("\\s+");
if (items.length >= 8) {
if (line == null) {
throw new TimeoutException();
}
- if (parse_string(line))
+ if (parse_string(line, link))
break;
}
}
double z,
int pad_orientation) {
AltosQuaternion orient = AltosQuaternion.vector(x, y, z).normalize();
- double sky = (pad_orientation & 1) == 0 ? 1 : -1;
- AltosQuaternion up = new AltosQuaternion(0, 0, 0, sky);
+ double sky_x = 0;
+ double sky_y = 0;
+ double sky_z = 0;
+ double sky_sign = (pad_orientation & 1) == 0 ? 1 : -1;
+ switch (pad_orientation & ~1) {
+ case AltosLib.AO_PAD_ORIENTATION_ANTENNA_UP:
+ sky_z = sky_sign;
+ break;
+ case AltosLib.AO_PAD_ORIENTATION_WORDS_UPRIGHT:
+ sky_y = sky_sign;
+ break;
+ case AltosLib.AO_PAD_ORIENTATION_BIG_PARTS_UP:
+ sky_x = sky_sign;
+ break;
+ }
+ AltosQuaternion up = new AltosQuaternion(0, sky_x, sky_y, sky_z);
rotation = up.vectors_to_rotation(orient);
}
"4250",
};
+ static String[] pad_orientation_values_none = {
+ };
+
static String[] pad_orientation_values_radio = {
"Antenna Up",
"Antenna Down",
c.anchor = GridBagConstraints.LINE_START;
c.insets = ir;
c.ipady = 5;
- if (has_radio())
- pad_orientation_values = pad_orientation_values_radio;
- else if (is_easytimer())
- pad_orientation_values = pad_orientation_values_six_axis;
- else
- pad_orientation_values = pad_orientation_values_no_radio;
- pad_orientation_value = new JComboBox<String>(pad_orientation_values);
+ pad_orientation_value = new JComboBox<String>();
pad_orientation_value.setEditable(false);
pad_orientation_value.addItemListener(this);
pane.add(pad_orientation_value, c);
listener = l;
}
+ void set_pad_orientation_values()
+ {
+ if (has_radio())
+ pad_orientation_values = pad_orientation_values_radio;
+ else if (is_easytimer())
+ pad_orientation_values = pad_orientation_values_six_axis;
+ else
+ pad_orientation_values = pad_orientation_values_no_radio;
+ pad_orientation_value.removeAllItems();
+ for (String s : pad_orientation_values)
+ pad_orientation_value.addItem(s);
+ set_pad_orientation_tool_tip();
+ }
+
/* set and get all of the dialog values */
public void set_product(String product) {
radio_frequency_value.set_product(product);
product_value.setText(product);
- set_pad_orientation_tool_tip();
set_accel_tool_tips();
set_flight_log_max_tool_tip();
+ set_pad_orientation_values();
}
public void set_version(String version) {