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:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user