Merge "Add error reporting for Tethering."

This commit is contained in:
Robert Greenwalt
2010-03-03 16:35:23 -08:00
committed by Android (Google) Code Review
6 changed files with 256 additions and 202 deletions

View File

@@ -364,7 +364,7 @@ public class ConnectivityManager
/**
* Sets the persisted value for enabling/disabling Mobile data.
*
* @param allowMobileData Whether the mobile data connection should be
* @param enabled Whether the mobile data connection should be
* used or not.
* @hide
*/
@@ -418,22 +418,35 @@ public class ConnectivityManager
/**
* {@hide}
*/
public boolean tether(String iface) {
public String[] getTetheringErroredIfaces() {
try {
return mService.tether(iface);
return mService.getTetheringErroredIfaces();
} catch (RemoteException e) {
return false;
return new String[0];
}
}
/**
* @return error A TETHER_ERROR value indicating success or failure type
* {@hide}
*/
public boolean untether(String iface) {
public int tether(String iface) {
try {
return mService.tether(iface);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
}
/**
* @return error A TETHER_ERROR value indicating success or failure type
* {@hide}
*/
public int untether(String iface) {
try {
return mService.untether(iface);
} catch (RemoteException e) {
return false;
return TETHER_ERROR_SERVICE_UNAVAIL;
}
}
@@ -469,4 +482,41 @@ public class ConnectivityManager
return new String[0];
}
}
/** {@hide} */
public static final int TETHER_ERROR_NO_ERROR = 0;
/** {@hide} */
public static final int TETHER_ERROR_UNKNOWN_IFACE = 1;
/** {@hide} */
public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2;
/** {@hide} */
public static final int TETHER_ERROR_UNSUPPORTED = 3;
/** {@hide} */
public static final int TETHER_ERROR_UNAVAIL_IFACE = 4;
/** {@hide} */
public static final int TETHER_ERROR_MASTER_ERROR = 5;
/** {@hide} */
public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6;
/** {@hide} */
public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7;
/** {@hide} */
public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8;
/** {@hide} */
public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9;
/** {@hide} */
public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10;
/**
* @param iface The name of the interface we're interested in
* @return error The error code of the last error tethering or untethering the named
* interface
* {@hide}
*/
public int getLastTetherError(String iface) {
try {
return mService.getLastTetherError(iface);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
}
}

View File

@@ -55,9 +55,11 @@ interface IConnectivityManager
void setMobileDataEnabled(boolean enabled);
boolean tether(String iface);
int tether(String iface);
boolean untether(String iface);
int untether(String iface);
int getLastTetherError(String iface);
boolean isTetheringSupported();
@@ -65,6 +67,8 @@ interface IConnectivityManager
String[] getTetheredIfaces();
String[] getTetheringErroredIfaces();
String[] getTetherableUsbRegexs();
String[] getTetherableWifiRegexs();

View File

@@ -62,6 +62,7 @@ public class TetherActivity extends AlertActivity implements
// determine if we advertise tethering or untethering
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
mTethered = cm.getTetheredIfaces().length;
int tetherable = cm.getTetherableIfaces().length;
if ((mTethered == 0) && (tetherable == 0)) {
@@ -116,7 +117,7 @@ public class TetherActivity extends AlertActivity implements
* {@inheritDoc}
*/
public void onClick(DialogInterface dialog, int which) {
boolean error = false;
int error = ConnectivityManager.TETHER_ERROR_NO_ERROR;
if (which == POSITIVE_BUTTON) {
ConnectivityManager cm =
@@ -130,24 +131,17 @@ public class TetherActivity extends AlertActivity implements
for (String t : tetherable) {
for (String r : usbRegexs) {
if (t.matches(r)) {
if (!cm.tether(t))
error = true;
error = cm.tether(t);
break;
}
}
}
if (error) {
showTetheringError();
}
showTetheringError(error);
} else {
for (String t : tethered) {
if (!cm.untether(t)) {
error = true;
}
}
if (error) {
showUnTetheringError();
error = cm.untether(t);
}
showUnTetheringError(error);
}
}
// No matter what, finish the activity
@@ -163,14 +157,23 @@ public class TetherActivity extends AlertActivity implements
}
}
private void showTetheringError() {
Toast.makeText(this, com.android.internal.R.string.tether_error_message,
Toast.LENGTH_LONG).show();
private void showTetheringError(int error) {
switch(error) {
case ConnectivityManager.TETHER_ERROR_NO_ERROR:
return;
default:
Toast.makeText(this, com.android.internal.R.string.tether_error_message,
Toast.LENGTH_LONG).show();
}
}
private void showUnTetheringError() {
Toast.makeText(this, com.android.internal.R.string.tether_stop_error_message,
Toast.LENGTH_LONG).show();
private void showUnTetheringError(int error) {
switch(error) {
case ConnectivityManager.TETHER_ERROR_NO_ERROR:
return;
default:
Toast.makeText(this, com.android.internal.R.string.tether_stop_error_message,
Toast.LENGTH_LONG).show();
}
}
}