Loading core/java/android/net/ConnectivityManager.java +11 −2 Original line number Diff line number Diff line Loading @@ -260,11 +260,18 @@ public class ConnectivityManager { */ public static final int TYPE_MOBILE_CBS = 12; /** * A Wi-Fi p2p connection. Only requesting processes will have access to * the peers connected. * {@hide} */ public static final int TYPE_WIFI_P2P = 13; /** {@hide} */ public static final int MAX_RADIO_TYPE = TYPE_MOBILE_CBS; public static final int MAX_RADIO_TYPE = TYPE_WIFI_P2P; /** {@hide} */ public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_CBS; public static final int MAX_NETWORK_TYPE = TYPE_WIFI_P2P; public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI; Loading Loading @@ -303,6 +310,8 @@ public class ConnectivityManager { return "MOBILE_IMS"; case TYPE_MOBILE_CBS: return "MOBILE_CBS"; case TYPE_WIFI_P2P: return "WIFI_P2P"; default: return Integer.toString(type); } Loading core/java/android/net/DhcpInfoInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,8 @@ public class DhcpInfoInternal { if (TextUtils.isEmpty(dns1) == false) { p.addDns(NetworkUtils.numericToInetAddress(dns1)); } else { Log.d(TAG, "makeLinkProperties with empty dns1!"); p.addDns(NetworkUtils.numericToInetAddress(serverAddress)); Log.d(TAG, "empty dns1, use dhcp server as dns1!"); } if (TextUtils.isEmpty(dns2) == false) { p.addDns(NetworkUtils.numericToInetAddress(dns2)); Loading core/res/res/values/config.xml +1 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ <item>"mobile_fota,10,0,2,60000,true"</item> <item>"mobile_ims,11,0,2,60000,true"</item> <item>"mobile_cbs,12,0,2,60000,true"</item> <item>"wifi_p2p,13,1,0,-1,true"</item> </string-array> <!-- Array of ConnectivityManager.TYPE_xxxx constants for networks that may only Loading services/java/com/android/server/ConnectivityService.java +41 −45 Original line number Diff line number Diff line Loading @@ -468,13 +468,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { for (int netType : mPriorityList) { switch (mNetConfigs[netType].radio) { case ConnectivityManager.TYPE_WIFI: if (DBG) log("Starting Wifi Service."); WifiStateTracker wst = new WifiStateTracker(); WifiService wifiService = new WifiService(context); ServiceManager.addService(Context.WIFI_SERVICE, wifiService); wifiService.checkAndStartWifi(); mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst; wst.startMonitoring(context, mHandler); mNetTrackers[netType] = new WifiStateTracker(netType, mNetConfigs[netType].name); mNetTrackers[netType].startMonitoring(context, mHandler); break; case ConnectivityManager.TYPE_MOBILE: mNetTrackers[netType] = new MobileDataStateTracker(netType, Loading Loading @@ -882,15 +878,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { FeatureUser f = new FeatureUser(networkType, feature, binder); // TODO - move this into the MobileDataStateTracker int usedNetworkType = networkType; if(networkType == ConnectivityManager.TYPE_MOBILE) { usedNetworkType = convertFeatureToNetworkType(feature); if (usedNetworkType < 0) { loge("Can't match any netTracker!"); usedNetworkType = networkType; } } // TODO - move this into individual networktrackers int usedNetworkType = convertFeatureToNetworkType(networkType, feature); if (mProtectedNetworks.contains(usedNetworkType)) { enforceConnectivityInternalPermission(); Loading @@ -900,7 +889,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (network != null) { Integer currentPid = new Integer(getCallingPid()); if (usedNetworkType != networkType) { NetworkStateTracker radio = mNetTrackers[networkType]; NetworkInfo ni = network.getNetworkInfo(); if (ni.isAvailable() == false) { Loading Loading @@ -1046,14 +1034,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // TODO - move to MobileDataStateTracker int usedNetworkType = networkType; if (networkType == ConnectivityManager.TYPE_MOBILE) { usedNetworkType = convertFeatureToNetworkType(feature); if (usedNetworkType < 0) { usedNetworkType = networkType; } } // TODO - move to individual network trackers int usedNetworkType = convertFeatureToNetworkType(networkType, feature); tracker = mNetTrackers[usedNetworkType]; if (tracker == null) { if (DBG) log("ignoring - no known tracker for net type " + usedNetworkType); Loading Loading @@ -2672,25 +2655,38 @@ public class ConnectivityService extends IConnectivityManager.Stub { Slog.e(TAG, s); } int convertFeatureToNetworkType(String feature){ int networkType = -1; int convertFeatureToNetworkType(int networkType, String feature) { int usedNetworkType = networkType; if(networkType == ConnectivityManager.TYPE_MOBILE) { if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_MMS)) { networkType = ConnectivityManager.TYPE_MOBILE_MMS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_MMS; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) { networkType = ConnectivityManager.TYPE_MOBILE_SUPL; usedNetworkType = ConnectivityManager.TYPE_MOBILE_SUPL; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) || TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) { networkType = ConnectivityManager.TYPE_MOBILE_DUN; usedNetworkType = ConnectivityManager.TYPE_MOBILE_DUN; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) { networkType = ConnectivityManager.TYPE_MOBILE_HIPRI; usedNetworkType = ConnectivityManager.TYPE_MOBILE_HIPRI; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_FOTA)) { networkType = ConnectivityManager.TYPE_MOBILE_FOTA; usedNetworkType = ConnectivityManager.TYPE_MOBILE_FOTA; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_IMS)) { networkType = ConnectivityManager.TYPE_MOBILE_IMS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_IMS; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_CBS)) { networkType = ConnectivityManager.TYPE_MOBILE_CBS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_CBS; } else { Slog.e(TAG, "Can't match any mobile netTracker!"); } } else if (networkType == ConnectivityManager.TYPE_WIFI) { if (TextUtils.equals(feature, "p2p")) { usedNetworkType = ConnectivityManager.TYPE_WIFI_P2P; } else { Slog.e(TAG, "Can't match any wifi netTracker!"); } } else { Slog.e(TAG, "Unexpected network type"); } return networkType; return usedNetworkType; } private static <T> T checkNotNull(T value, String message) { Loading services/java/com/android/server/SystemServer.java +10 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ class ServerThread extends Thread { NetworkPolicyManagerService networkPolicy = null; ConnectivityService connectivity = null; WifiP2pService wifiP2p = null; WifiService wifi = null; IPackageManager pm = null; Context context = null; WindowManagerService wm = null; Loading Loading @@ -309,6 +310,15 @@ class ServerThread extends Thread { Slog.e(TAG, "Failure starting Wi-Fi P2pService", e); } try { Slog.i(TAG, "Wi-Fi Service"); wifi = new WifiService(context); ServiceManager.addService(Context.WIFI_SERVICE, wifi); wifi.checkAndStartWifi(); } catch (Throwable e) { Slog.e(TAG, "Failure starting Wi-Fi Service", e); } try { Slog.i(TAG, "Connectivity Service"); connectivity = new ConnectivityService(context, networkManagement, networkPolicy); Loading Loading
core/java/android/net/ConnectivityManager.java +11 −2 Original line number Diff line number Diff line Loading @@ -260,11 +260,18 @@ public class ConnectivityManager { */ public static final int TYPE_MOBILE_CBS = 12; /** * A Wi-Fi p2p connection. Only requesting processes will have access to * the peers connected. * {@hide} */ public static final int TYPE_WIFI_P2P = 13; /** {@hide} */ public static final int MAX_RADIO_TYPE = TYPE_MOBILE_CBS; public static final int MAX_RADIO_TYPE = TYPE_WIFI_P2P; /** {@hide} */ public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_CBS; public static final int MAX_NETWORK_TYPE = TYPE_WIFI_P2P; public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI; Loading Loading @@ -303,6 +310,8 @@ public class ConnectivityManager { return "MOBILE_IMS"; case TYPE_MOBILE_CBS: return "MOBILE_CBS"; case TYPE_WIFI_P2P: return "WIFI_P2P"; default: return Integer.toString(type); } Loading
core/java/android/net/DhcpInfoInternal.java +2 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,8 @@ public class DhcpInfoInternal { if (TextUtils.isEmpty(dns1) == false) { p.addDns(NetworkUtils.numericToInetAddress(dns1)); } else { Log.d(TAG, "makeLinkProperties with empty dns1!"); p.addDns(NetworkUtils.numericToInetAddress(serverAddress)); Log.d(TAG, "empty dns1, use dhcp server as dns1!"); } if (TextUtils.isEmpty(dns2) == false) { p.addDns(NetworkUtils.numericToInetAddress(dns2)); Loading
core/res/res/values/config.xml +1 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ <item>"mobile_fota,10,0,2,60000,true"</item> <item>"mobile_ims,11,0,2,60000,true"</item> <item>"mobile_cbs,12,0,2,60000,true"</item> <item>"wifi_p2p,13,1,0,-1,true"</item> </string-array> <!-- Array of ConnectivityManager.TYPE_xxxx constants for networks that may only Loading
services/java/com/android/server/ConnectivityService.java +41 −45 Original line number Diff line number Diff line Loading @@ -468,13 +468,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { for (int netType : mPriorityList) { switch (mNetConfigs[netType].radio) { case ConnectivityManager.TYPE_WIFI: if (DBG) log("Starting Wifi Service."); WifiStateTracker wst = new WifiStateTracker(); WifiService wifiService = new WifiService(context); ServiceManager.addService(Context.WIFI_SERVICE, wifiService); wifiService.checkAndStartWifi(); mNetTrackers[ConnectivityManager.TYPE_WIFI] = wst; wst.startMonitoring(context, mHandler); mNetTrackers[netType] = new WifiStateTracker(netType, mNetConfigs[netType].name); mNetTrackers[netType].startMonitoring(context, mHandler); break; case ConnectivityManager.TYPE_MOBILE: mNetTrackers[netType] = new MobileDataStateTracker(netType, Loading Loading @@ -882,15 +878,8 @@ public class ConnectivityService extends IConnectivityManager.Stub { FeatureUser f = new FeatureUser(networkType, feature, binder); // TODO - move this into the MobileDataStateTracker int usedNetworkType = networkType; if(networkType == ConnectivityManager.TYPE_MOBILE) { usedNetworkType = convertFeatureToNetworkType(feature); if (usedNetworkType < 0) { loge("Can't match any netTracker!"); usedNetworkType = networkType; } } // TODO - move this into individual networktrackers int usedNetworkType = convertFeatureToNetworkType(networkType, feature); if (mProtectedNetworks.contains(usedNetworkType)) { enforceConnectivityInternalPermission(); Loading @@ -900,7 +889,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (network != null) { Integer currentPid = new Integer(getCallingPid()); if (usedNetworkType != networkType) { NetworkStateTracker radio = mNetTrackers[networkType]; NetworkInfo ni = network.getNetworkInfo(); if (ni.isAvailable() == false) { Loading Loading @@ -1046,14 +1034,9 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } // TODO - move to MobileDataStateTracker int usedNetworkType = networkType; if (networkType == ConnectivityManager.TYPE_MOBILE) { usedNetworkType = convertFeatureToNetworkType(feature); if (usedNetworkType < 0) { usedNetworkType = networkType; } } // TODO - move to individual network trackers int usedNetworkType = convertFeatureToNetworkType(networkType, feature); tracker = mNetTrackers[usedNetworkType]; if (tracker == null) { if (DBG) log("ignoring - no known tracker for net type " + usedNetworkType); Loading Loading @@ -2672,25 +2655,38 @@ public class ConnectivityService extends IConnectivityManager.Stub { Slog.e(TAG, s); } int convertFeatureToNetworkType(String feature){ int networkType = -1; int convertFeatureToNetworkType(int networkType, String feature) { int usedNetworkType = networkType; if(networkType == ConnectivityManager.TYPE_MOBILE) { if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_MMS)) { networkType = ConnectivityManager.TYPE_MOBILE_MMS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_MMS; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_SUPL)) { networkType = ConnectivityManager.TYPE_MOBILE_SUPL; usedNetworkType = ConnectivityManager.TYPE_MOBILE_SUPL; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN) || TextUtils.equals(feature, Phone.FEATURE_ENABLE_DUN_ALWAYS)) { networkType = ConnectivityManager.TYPE_MOBILE_DUN; usedNetworkType = ConnectivityManager.TYPE_MOBILE_DUN; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_HIPRI)) { networkType = ConnectivityManager.TYPE_MOBILE_HIPRI; usedNetworkType = ConnectivityManager.TYPE_MOBILE_HIPRI; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_FOTA)) { networkType = ConnectivityManager.TYPE_MOBILE_FOTA; usedNetworkType = ConnectivityManager.TYPE_MOBILE_FOTA; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_IMS)) { networkType = ConnectivityManager.TYPE_MOBILE_IMS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_IMS; } else if (TextUtils.equals(feature, Phone.FEATURE_ENABLE_CBS)) { networkType = ConnectivityManager.TYPE_MOBILE_CBS; usedNetworkType = ConnectivityManager.TYPE_MOBILE_CBS; } else { Slog.e(TAG, "Can't match any mobile netTracker!"); } } else if (networkType == ConnectivityManager.TYPE_WIFI) { if (TextUtils.equals(feature, "p2p")) { usedNetworkType = ConnectivityManager.TYPE_WIFI_P2P; } else { Slog.e(TAG, "Can't match any wifi netTracker!"); } } else { Slog.e(TAG, "Unexpected network type"); } return networkType; return usedNetworkType; } private static <T> T checkNotNull(T value, String message) { Loading
services/java/com/android/server/SystemServer.java +10 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ class ServerThread extends Thread { NetworkPolicyManagerService networkPolicy = null; ConnectivityService connectivity = null; WifiP2pService wifiP2p = null; WifiService wifi = null; IPackageManager pm = null; Context context = null; WindowManagerService wm = null; Loading Loading @@ -309,6 +310,15 @@ class ServerThread extends Thread { Slog.e(TAG, "Failure starting Wi-Fi P2pService", e); } try { Slog.i(TAG, "Wi-Fi Service"); wifi = new WifiService(context); ServiceManager.addService(Context.WIFI_SERVICE, wifi); wifi.checkAndStartWifi(); } catch (Throwable e) { Slog.e(TAG, "Failure starting Wi-Fi Service", e); } try { Slog.i(TAG, "Connectivity Service"); connectivity = new ConnectivityService(context, networkManagement, networkPolicy); Loading