ControlTower android - corrected setting of yaw and rotation speed parameters.

Esse commit está contido em:
Denis Shmyga
2012-12-27 20:17:39 +02:00
commit df5e0b59b0
4 arquivos alterados com 17 adições e 21 exclusões
@@ -4,6 +4,7 @@ package com.codeminders.ardrone;
import java.io.IOException;
import java.net.InetAddress;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Iterator;
@@ -255,15 +256,6 @@ public class MainActivity extends Activity implements DroneVideoListener, OnShar
btnTakeOffOrLand.setEnabled(true);
btnTakeOffOrLand.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try
{
drone.clearEmergencySignal();
drone.trim();
} catch(Throwable e)
{
Log.e(TAG, "Faliled init drone" , e);
}
if (btnTakeOffOrLand.getText().equals(getString(R.string.btn_land))) {
try
{
@@ -277,6 +269,8 @@ public class MainActivity extends Activity implements DroneVideoListener, OnShar
} else {
try
{
drone.clearEmergencySignal();
drone.trim();
drone.takeOff();
} catch(Throwable e)
{
@@ -411,6 +405,7 @@ private class DroneStarter extends AsyncTask<ARDrone, Integer, Boolean> {
MainActivity.drone = drone;
drone.connect();
drone.clearEmergencySignal();
drone.trim();
drone.waitForReady(CONNECTION_TIMEOUT);
drone.playLED(1, 10, 4);
drone.selectVideoChannel(ARDrone.VideoChannel.HORIZONTAL_ONLY);
@@ -468,6 +463,7 @@ private class DroneStarter extends AsyncTask<ARDrone, Integer, Boolean> {
public static String DRONE_MAX_VERT_SPEED_PARAM_NAME = "control:control_vz_max";
public static String DRONE_MAX_EULA_ANGLE = "control:euler_angle_max";
public static String DRONE_MAX_ALTITUDE = "control:altitude_max";
DecimalFormat twoDForm = new DecimalFormat("#.##");
private void loadDroneSettingsFromPref() {
droneLoadMaxAltitude();
@@ -479,7 +475,7 @@ private class DroneStarter extends AsyncTask<ARDrone, Integer, Boolean> {
private void drobeLoadMaxRotationSpeed() {
if (null != drone && prefs.contains(PREF_MAX_ROTATION_SPEED)) {
setDroneParam(DRONE_MAX_YAW_PARAM_NAME, String.valueOf(prefs.getFloat(PREF_MAX_ROTATION_SPEED, 50f) * Math.PI / 180f));
setDroneParam(DRONE_MAX_YAW_PARAM_NAME, twoDForm.format(prefs.getFloat(PREF_MAX_ROTATION_SPEED, 50f) * Math.PI / 180f).replace(',', '.'));
}
}
@@ -498,7 +494,7 @@ private class DroneStarter extends AsyncTask<ARDrone, Integer, Boolean> {
private void droneLoadMaxAngle() {
if (null != drone && prefs.contains(PREF_MAX_ANGLE)) {
setDroneParam(DRONE_MAX_EULA_ANGLE, String.valueOf(prefs.getFloat(PREF_MAX_ANGLE, 6f) * Math.PI / 180f));
setDroneParam(DRONE_MAX_EULA_ANGLE, twoDForm.format(prefs.getFloat(PREF_MAX_ANGLE, 6f) * Math.PI / 180f).replace(',', '.'));
}
}
@@ -514,6 +510,7 @@ private class DroneStarter extends AsyncTask<ARDrone, Integer, Boolean> {
public void run() {
try {
drone.setConfigOption(name, value);
Log.d(TAG, "Drone parameter (" + name + ") is SET to value: " + value);
} catch (IOException ex) {
Log.e(TAG, "Failed to set drone parameter (" + name + ") to value: " + value , ex);
}
@@ -127,13 +127,12 @@ public class ARDrone
private List<DroneVideoListener> image_listeners = new LinkedList<DroneVideoListener>();
private List<NavDataListener> navdata_listeners = new LinkedList<NavDataListener>();
private static int navDataReconnectTimeout = 1000; // 1 second
private static int videoReconnectTimeout = 1000; // 1 second
private int navDataReconnectTimeout = 1000; // 1 second
private int videoReconnectTimeout = 1000; // 1 second
public ARDrone() throws UnknownHostException
{
this(InetAddress.getByAddress(DEFAULT_DRONE_IP), navDataReconnectTimeout, videoReconnectTimeout);
this(InetAddress.getByAddress(DEFAULT_DRONE_IP), 1000, 1000);
}
public ARDrone(InetAddress drone_addr, int navDataReconnectTimeout, int videoReconnectTimeout)
@@ -70,10 +70,10 @@ public abstract class DataProcessor extends Thread {
nextBuffer.put(infBuffer);
nextBuffer.flip();
nextDataBufferLength = len;
nextEmpty = false;
}
synchronized (lock) {
nextEmpty = false;
lock.notify();
}
}
@@ -66,7 +66,7 @@ public abstract class DataReader implements Runnable {
selector.close();
} catch (IOException iox)
{
iox.printStackTrace();
// ignore
}
if (!channel.socket().isClosed()) {
@@ -78,13 +78,13 @@ public abstract class DataReader implements Runnable {
channel.disconnect();
} catch (IOException iox)
{
iox.printStackTrace();
// ignore
}
try {
channel.close();
} catch (IOException iox) {
iox.printStackTrace();
// ignore
}
}
@@ -114,8 +114,8 @@ public abstract class DataReader implements Runnable {
disconnect();
break;
}
Set readyKeys = selector.selectedKeys();
Iterator iterator = readyKeys.iterator();
Set<SelectionKey> readyKeys = selector.selectedKeys();
Iterator<SelectionKey> iterator = readyKeys.iterator();
if (!iterator.hasNext()) {
if (timeOfLastMessage > 0 && System.currentTimeMillis() - timeOfLastMessage > reconnect_timeout ) {