+ }
+
+ static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException {
+ try {
+ AltosIMU imu = new AltosIMU(link);
+
+ if (imu != null)
+ state.set_imu(imu);
+ } catch (TimeoutException te) {
+ }
+ }
+
+ public AltosIMU() {
+ accel_along = AltosLib.MISSING;
+ accel_across = AltosLib.MISSING;
+ accel_through = AltosLib.MISSING;
+
+ gyro_roll = AltosLib.MISSING;
+ gyro_pitch = AltosLib.MISSING;
+ gyro_yaw = AltosLib.MISSING;
+ }
+
+ public AltosIMU(int accel_along, int accel_across, int accel_through,
+ int gyro_roll, int gyro_pitch, int gyro_yaw) {
+
+ this.accel_along = accel_along;
+ this.accel_across = accel_across;
+ this.accel_through = accel_through;
+
+ this.gyro_roll = gyro_roll;
+ this.gyro_pitch = gyro_pitch;
+ this.gyro_yaw = gyro_yaw;
+ }
+
+ public AltosIMU(AltosLink link) throws InterruptedException, TimeoutException {
+ this();
+ link.printf("I\n");
+ for (;;) {
+ String line = link.get_reply_no_dialog(5000);
+ if (line == null) {
+ throw new TimeoutException();
+ }
+ if (parse_string(line))
+ break;
+ }
+ }