@Override public void untimestampedDataReceived(long curr_system_timestamp, Object kind) { if (!timestamped && (kind.getClass() == AHRS.DeviceDataType.class)) { double process_value; switch (untimestamped_src) { case RAW_GYRO_X: process_value = navx_device.getRawGyroX(); break; case RAW_GYRO_Y: process_value = navx_device.getRawGyroY(); break; case RAW_GYRO_Z: process_value = navx_device.getRawGyroZ(); break; case RAW_ACCEL_X: process_value = navx_device.getRawAccelX(); break; case RAW_ACCEL_Y: process_value = navx_device.getRawAccelY(); break; case RAW_MAG_X: process_value = navx_device.getRawMagX(); break; case RAW_MAG_Y: process_value = navx_device.getRawMagY(); break; case RAW_MAG_Z: process_value = navx_device.getRawMagZ(); break; default: process_value = 0.0; break; } int num_missed_samples = 0; /* TODO */ last_system_timestamp = curr_system_timestamp; double output = this.stepController(process_value, num_missed_samples); synchronized (sync_event) { sync_event.notify(); } } }