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
This commit is contained in:
Vinit Deshapnde
2013-09-09 16:28:31 -07:00
parent 2def614854
commit 2c385ecb1c
3 changed files with 19 additions and 4 deletions

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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);
}