From fa83a254da32ed1e2be2adad9da274b6fd215e94 Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Wed, 9 Feb 2022 08:30:51 +0900 Subject: [PATCH] Add logging for Ethernet callbacks. Test: manual Change-Id: I2fc92895ec59f616715673d3141fc0fb19f7585b --- .../com/android/development/Connectivity.java | 56 ++++++++++++------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/apps/Development/src/com/android/development/Connectivity.java b/apps/Development/src/com/android/development/Connectivity.java index 886cb1d4d..1d8a98b76 100644 --- a/apps/Development/src/com/android/development/Connectivity.java +++ b/apps/Development/src/com/android/development/Connectivity.java @@ -24,68 +24,54 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; -import android.net.LinkAddress; +import android.net.EthernetManager; +import android.net.IpConfiguration; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; -import android.net.RouteInfo; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; -import android.os.RemoteException; import android.os.Handler; import android.os.Message; import android.os.IBinder; import android.os.INetworkManagementService; -import android.os.Parcel; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.os.ServiceManager; import android.os.SystemClock; -import android.provider.Settings; import android.os.Bundle; -import android.os.connectivity.WifiActivityEnergyInfo; import android.text.TextUtils; import android.util.Log; -import android.view.IWindowManager; +import android.util.SparseArray; import android.view.View; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.EditText; -import android.widget.Spinner; import android.widget.TextView; -import android.widget.Toast; -import android.widget.AdapterView.OnItemSelectedListener; -import com.android.internal.telephony.Phone; import libcore.io.IoUtils; import java.io.BufferedReader; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStreamWriter; -import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.Proxy; import java.net.Socket; import java.net.URL; import java.util.ArrayList; -import java.util.Enumeration; import java.util.List; import java.util.Random; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.NetworkCapabilities.*; +import com.android.internal.util.MessageUtils; + public class Connectivity extends Activity { private static final String TAG = "DevToolsConnectivity"; private static final String GET_SCAN_RES = "Get Results"; @@ -134,6 +120,7 @@ public class Connectivity extends Activity { private PowerManager mPm; private ConnectivityManager mCm; private INetworkManagementService mNetd; + private EthernetManager mEm; private WifiScanReceiver mScanRecv; IntentFilter mIntentFilter; @@ -386,6 +373,33 @@ public class Connectivity extends Activity { progressBar)); } + private static class DevToolsEthListener implements EthernetManager.InterfaceStateListener { + private static final String TAG = DevToolsEthListener.class.getSimpleName(); + + private static final SparseArray STATE_NAMES = MessageUtils.findMessageNames( + new Class[]{EthernetManager.class}, new String[]{"STATE_"}); + + private static final SparseArray ROLE_NAMES = MessageUtils.findMessageNames( + new Class[]{EthernetManager.class}, new String[]{"ROLE_"}); + + private String stateName(int state) { + return STATE_NAMES.get(state, Integer.toString(state)); + } + + private String roleName(int role) { + return ROLE_NAMES.get(role, Integer.toString(role)); + } + + @Override + public void onInterfaceStateChanged(String iface, int state, int role, + IpConfiguration configuration) { + Log.d(TAG, iface + " " + stateName(state) + " " + roleName(role) + + " " + configuration); + } + } + + private final DevToolsEthListener mEthListener = new DevToolsEthListener(); + public Connectivity() { super(); addRequestableNetwork(NET_CAPABILITY_MMS, R.id.request_mms, R.id.release_mms, @@ -420,6 +434,7 @@ public class Connectivity extends Activity { mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE); mNetd = INetworkManagementService.Stub.asInterface(b); + mEm = getSystemService(EthernetManager.class); findViewById(R.id.enableWifi).setOnClickListener(mClickListener); findViewById(R.id.disableWifi).setOnClickListener(mClickListener); @@ -490,6 +505,8 @@ public class Connectivity extends Activity { mCallback = new DevToolsNetworkCallback(); mCm.registerNetworkCallback(mEmptyRequest, mCallback); + + mEm.addInterfaceStateListener(this::runOnUiThread, mEthListener); } @Override @@ -500,6 +517,7 @@ public class Connectivity extends Activity { } mCm.unregisterNetworkCallback(mCallback); mCallback = null; + mEm.removeInterfaceStateListener(mEthListener); unregisterReceiver(mReceiver); mWml.release(); }