From 2c385ecb1c390f7b695842fedfdebf95fd5e842c Mon Sep 17 00:00:00 2001 From: Vinit Deshapnde Date: Mon, 9 Sep 2013 16:28:31 -0700 Subject: Set country code on P2p interfaces as well This change will set country code on P2p interfaces as well, so the drivers are free to use channels that are permitted regionally. This is required for FCC style compliance and Miracast certification. Bug: 10513263 Change-Id: I88c645bd488066d5167e23e2772f2e0e1f40fa8a --- wifi/java/android/net/wifi/WifiNative.java | 3 ++- wifi/java/android/net/wifi/WifiStateMachine.java | 6 +++--- wifi/java/android/net/wifi/p2p/WifiP2pService.java | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) (limited to 'wifi/java') diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index f86a51c9..68a09e7 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -25,6 +25,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.List; +import java.util.Locale; /** * Native calls for bring up/shut down of the supplicant daemon and for @@ -457,7 +458,7 @@ public class WifiNative { } public boolean setCountryCode(String countryCode) { - return doBooleanCommand("DRIVER COUNTRY " + countryCode); + return doBooleanCommand("DRIVER COUNTRY " + countryCode.toUpperCase(Locale.ROOT)); } public void enableBackgroundScan(boolean enable) { diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index d4e98c5..d24b9aa 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -84,7 +84,6 @@ import java.io.PrintWriter; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicBoolean; import java.util.Iterator; @@ -1370,6 +1369,7 @@ public class WifiStateMachine extends StateMachine { countryCode); } sendMessage(CMD_SET_COUNTRY_CODE, countryCode); + mWifiP2pChannel.sendMessage(WifiP2pService.SET_COUNTRY_CODE, countryCode); } /** @@ -2835,7 +2835,7 @@ public class WifiStateMachine extends StateMachine { case CMD_SET_COUNTRY_CODE: String country = (String) message.obj; if (DBG) log("set country code " + country); - if (!mWifiNative.setCountryCode(country.toUpperCase(Locale.ROOT))) { + if (!mWifiNative.setCountryCode(country)) { loge("Failed to set country code " + country); } break; @@ -4139,7 +4139,7 @@ public class WifiStateMachine extends StateMachine { /** * arg2 on the source message has a unique id that needs to be retained in replies * to match the request - * + * see WifiManager for details */ private Message obtainMessageWithArg2(Message srcMsg) { diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 05196b8..625ffb8 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -174,6 +174,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub { // msg.obj = StateMachine to send to when blocked public static final int BLOCK_DISCOVERY = BASE + 15; + // set country code + public static final int SET_COUNTRY_CODE = BASE + 16; + public static final int ENABLED = 1; public static final int DISABLED = 0; @@ -632,6 +635,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { case WifiP2pManager.START_LISTEN: case WifiP2pManager.STOP_LISTEN: case WifiP2pManager.SET_CHANNEL: + case SET_COUNTRY_CODE: break; case WifiStateMachine.CMD_ENABLE_P2P: // Enable is lazy and has no response @@ -1064,6 +1068,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { replyToMessage(message, WifiP2pManager.SET_CHANNEL_FAILED); } break; + case SET_COUNTRY_CODE: + String countryCode = (String) message.obj; + mWifiNative.setCountryCode(countryCode); + break; default: return NOT_HANDLED; } @@ -2537,6 +2545,12 @@ public class WifiP2pService extends IWifiP2pManager.Stub { mServiceTransactionId = 0; mServiceDiscReqId = null; + String countryCode = Settings.Global.getString(mContext.getContentResolver(), + Settings.Global.WIFI_COUNTRY_CODE); + if (countryCode != null && !countryCode.isEmpty()) { + mP2pStateMachine.sendMessage(SET_COUNTRY_CODE, countryCode); + } + updatePersistentNetworks(RELOAD); } -- cgit v1.1