summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiShellCommand.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiShellCommand.java b/service/java/com/android/server/wifi/WifiShellCommand.java
index ed955bab4..a80b14ad6 100644
--- a/service/java/com/android/server/wifi/WifiShellCommand.java
+++ b/service/java/com/android/server/wifi/WifiShellCommand.java
@@ -98,7 +98,9 @@ public class WifiShellCommand extends BasicShellCommandHandler {
"set-verbose-logging",
"set-wifi-enabled",
"start-scan",
+ "start-softap",
"status",
+ "stop-softap",
};
private static final Map<String, Pair<NetworkRequest, ConnectivityManager.NetworkCallback>>
@@ -303,6 +305,23 @@ public class WifiShellCommand extends BasicShellCommandHandler {
return 0;
}
}
+ case "start-softap": {
+ SoftApConfiguration config = buildSoftApConfiguration(pw);
+ if (mWifiService.startTetheredHotspot(config)) {
+ pw.println("Soft AP started successfully");
+ } else {
+ pw.println("Soft AP failed to start. Please check config parameters");
+ }
+ return 0;
+ }
+ case "stop-softap": {
+ if (mWifiService.stopSoftAp()) {
+ pw.println("Soft AP stopped successfully");
+ } else {
+ pw.println("Soft AP failed to stop");
+ }
+ return 0;
+ }
case "force-country-code": {
boolean enabled = getNextArgRequiredTrueOrFalse("enabled", "disabled");
if (enabled) {
@@ -722,6 +741,42 @@ public class WifiShellCommand extends BasicShellCommandHandler {
return configuration;
}
+ private SoftApConfiguration buildSoftApConfiguration(PrintWriter pw) {
+ String ssid = getNextArgRequired();
+ String type = getNextArgRequired();
+ SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder();
+ configBuilder.setSsid("\"" + ssid + "\"");
+ if (TextUtils.equals(type, "wpa2")) {
+ configBuilder.setPassphrase(getNextArgRequired(),
+ SoftApConfiguration.SECURITY_TYPE_WPA2_PSK);
+ } else if (TextUtils.equals(type, "open")) {
+ configBuilder.setPassphrase(null, SoftApConfiguration.SECURITY_TYPE_OPEN);
+ } else {
+ throw new IllegalArgumentException("Unknown network type " + type);
+ }
+ String option = getNextOption();
+ while (option != null) {
+ if (option.equals("-b")) {
+ String preferredBand = getNextArgRequired();
+ if (preferredBand.equals("2")) {
+ configBuilder.setBand(SoftApConfiguration.BAND_2GHZ);
+ } else if (preferredBand.equals("5")) {
+ configBuilder.setBand(SoftApConfiguration.BAND_5GHZ);
+ } else if (preferredBand.equals("6")) {
+ configBuilder.setBand(SoftApConfiguration.BAND_6GHZ);
+ } else if (preferredBand.equals("any")) {
+ configBuilder.setBand(SoftApConfiguration.BAND_ANY);
+ } else {
+ throw new IllegalArgumentException("Invalid band option " + preferredBand);
+ }
+ } else {
+ pw.println("Ignoring unknown option " + option);
+ }
+ option = getNextOption();
+ }
+ return configBuilder.build();
+ }
+
private WifiNetworkSuggestion buildSuggestion(PrintWriter pw) {
String ssid = getNextArgRequired();
String type = getNextArgRequired();
@@ -940,6 +995,25 @@ public class WifiShellCommand extends BasicShellCommandHandler {
pw.println(" reset-connected-score");
pw.println(" Turns on the default connected scorer.");
pw.println(" Note: Will clear any external scorer set.");
+ pw.println(" start-softap <ssid> (open|wpa2) <passphrase> [-b 2|5|6|any]");
+ pw.println(" Start softap with provided params");
+ pw.println(" Note that the shell command doesn't activate internet tethering. In some "
+ + "devices, internet sharing is possible when Wi-Fi STA is also enabled and is"
+ + "associated to another AP with internet access.");
+ pw.println(" <ssid> - SSID of the network");
+ pw.println(" open|wpa2 - Security type of the network.");
+ pw.println(" - Use 'open' for networks with no passphrase");
+ pw.println(" - Use 'wpa2' for networks with passphrase");
+ pw.println(" -b 2|5|6|any - select the preferred band.");
+ pw.println(" - Use '2' to select 2.4GHz band as the preferred band");
+ pw.println(" - Use '5' to select 5GHz band as the preferred band");
+ pw.println(" - Use '6' to select 6GHz band as the preferred band");
+ pw.println(" - Use 'any' to indicate no band preference");
+ pw.println(" Note: If the band option is not provided, 2.4GHz is the preferred band.");
+ pw.println(" The exact channel is auto-selected by FW unless overridden by "
+ + "force-softap-channel command");
+ pw.println(" stop-softap");
+ pw.println(" Stop softap (hotspot)");
}
private void onHelpPrivileged(PrintWriter pw) {