From 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 19:31:44 -0800 Subject: auto import from //depot/cupcake/@135843 --- .../src/com/android/commands/svc/DataCommand.java | 81 ++++++++++++++++++ .../src/com/android/commands/svc/PowerCommand.java | 74 ++++++++++++++++ cmds/svc/src/com/android/commands/svc/Svc.java | 99 ++++++++++++++++++++++ .../src/com/android/commands/svc/WifiCommand.java | 78 +++++++++++++++++ 4 files changed, 332 insertions(+) create mode 100644 cmds/svc/src/com/android/commands/svc/DataCommand.java create mode 100644 cmds/svc/src/com/android/commands/svc/PowerCommand.java create mode 100644 cmds/svc/src/com/android/commands/svc/Svc.java create mode 100644 cmds/svc/src/com/android/commands/svc/WifiCommand.java (limited to 'cmds/svc/src') diff --git a/cmds/svc/src/com/android/commands/svc/DataCommand.java b/cmds/svc/src/com/android/commands/svc/DataCommand.java new file mode 100644 index 0000000..72cb86d --- /dev/null +++ b/cmds/svc/src/com/android/commands/svc/DataCommand.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.commands.svc; + +import android.os.ServiceManager; +import android.os.RemoteException; +import android.net.IConnectivityManager; +import android.net.ConnectivityManager; +import android.content.Context; +import com.android.internal.telephony.ITelephony; + +public class DataCommand extends Svc.Command { + public DataCommand() { + super("data"); + } + + public String shortHelp() { + return "Control mobile data connectivity"; + } + + public String longHelp() { + return shortHelp() + "\n" + + "\n" + + "usage: svc data [enable|disable]\n" + + " Turn mobile data on or off.\n\n" + + " svc data prefer\n" + + " Set mobile as the preferred data network\n"; + } + + public void run(String[] args) { + boolean validCommand = false; + if (args.length >= 2) { + boolean flag = false; + if ("enable".equals(args[1])) { + flag = true; + validCommand = true; + } else if ("disable".equals(args[1])) { + flag = false; + validCommand = true; + } else if ("prefer".equals(args[1])) { + IConnectivityManager connMgr = + IConnectivityManager.Stub.asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); + try { + connMgr.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); + } catch (RemoteException e) { + System.err.println("Failed to set preferred network: " + e); + } + return; + } + if (validCommand) { + ITelephony phoneMgr + = ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE)); + try { + if (flag) { + phoneMgr.enableDataConnectivity(); + } else + phoneMgr.disableDataConnectivity(); + } + catch (RemoteException e) { + System.err.println("Mobile data operation failed: " + e); + } + return; + } + } + System.err.println(longHelp()); + } +} \ No newline at end of file diff --git a/cmds/svc/src/com/android/commands/svc/PowerCommand.java b/cmds/svc/src/com/android/commands/svc/PowerCommand.java new file mode 100644 index 0000000..2b54f54 --- /dev/null +++ b/cmds/svc/src/com/android/commands/svc/PowerCommand.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.commands.svc; + +import android.os.IPowerManager; +import android.os.ServiceManager; +import android.os.RemoteException; +import android.os.BatteryManager; +import android.content.Context; + +public class PowerCommand extends Svc.Command { + public PowerCommand() { + super("power"); + } + + public String shortHelp() { + return "Control the power manager"; + } + + public String longHelp() { + return shortHelp() + "\n" + + "\n" + + "usage: svc power stayon [true|false|usb|ac]\n" + + " Set the 'keep awake while plugged in' setting.\n"; + } + + public void run(String[] args) { + fail: { + if (args.length >= 2) { + if ("stayon".equals(args[1]) && args.length == 3) { + int val; + if ("true".equals(args[2])) { + val = BatteryManager.BATTERY_PLUGGED_AC | + BatteryManager.BATTERY_PLUGGED_USB; + } + else if ("false".equals(args[2])) { + val = 0; + } else if ("usb".equals(args[2])) { + val = BatteryManager.BATTERY_PLUGGED_USB; + } else if ("ac".equals(args[2])) { + val = BatteryManager.BATTERY_PLUGGED_AC; + } + else { + break fail; + } + IPowerManager pm + = IPowerManager.Stub.asInterface(ServiceManager.getService(Context.POWER_SERVICE)); + try { + pm.setStayOnSetting(val); + } + catch (RemoteException e) { + System.err.println("Faild to set setting: " + e); + } + return; + } + } + } + System.err.println(longHelp()); + } +} diff --git a/cmds/svc/src/com/android/commands/svc/Svc.java b/cmds/svc/src/com/android/commands/svc/Svc.java new file mode 100644 index 0000000..1cd4c0d --- /dev/null +++ b/cmds/svc/src/com/android/commands/svc/Svc.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.commands.svc; + +public class Svc { + + public static abstract class Command { + private String mName; + + public Command(String name) { + mName = name; + } + + public String name() { + return mName; + } + + public abstract String shortHelp(); // should fit on one short line + public abstract String longHelp(); // take as much space as you need, 75 col max + public abstract void run(String[] args); // run the command + } + + public static void main(String[] args) { + if (args.length >= 1) { + Command c = lookupCommand(args[0]); + if (c != null) { + c.run(args); + return; + } + } + COMMAND_HELP.run(args); + } + + private static Command lookupCommand(String name) { + final int N = COMMANDS.length; + for (int i=0; i= 2) { + boolean flag = false; + if ("enable".equals(args[1])) { + flag = true; + validCommand = true; + } else if ("disable".equals(args[1])) { + flag = false; + validCommand = true; + } else if ("prefer".equals(args[1])) { + IConnectivityManager connMgr = + IConnectivityManager.Stub.asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); + try { + connMgr.setNetworkPreference(ConnectivityManager.TYPE_WIFI); + } catch (RemoteException e) { + System.err.println("Failed to set preferred network: " + e); + } + return; + } + if (validCommand) { + IWifiManager wifiMgr + = IWifiManager.Stub.asInterface(ServiceManager.getService(Context.WIFI_SERVICE)); + try { + wifiMgr.setWifiEnabled(flag); + } + catch (RemoteException e) { + System.err.println("Wi-Fi operation failed: " + e); + } + return; + } + } + System.err.println(longHelp()); + } +} \ No newline at end of file -- cgit v1.1