159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt/*
259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * Copyright (C) 2008 The Android Open Source Project
359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt *
459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * Licensed under the Apache License, Version 2.0 (the "License");
559d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * you may not use this file except in compliance with the License.
659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * You may obtain a copy of the License at
759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt *
859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt *      http://www.apache.org/licenses/LICENSE-2.0
959d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt *
1059d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * Unless required by applicable law or agreed to in writing, software
1159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * distributed under the License is distributed on an "AS IS" BASIS,
1259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * See the License for the specific language governing permissions and
1459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt * limitations under the License.
1559d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt */
1659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
1759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltpackage com.android.commands.svc;
1859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
19f0e3edc0709dc190190e0ca386478f4a0da92e7aGuang Zhuimport android.content.Context;
2059d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltimport android.hardware.usb.IUsbManager;
2159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltimport android.os.RemoteException;
2259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltimport android.os.ServiceManager;
2359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltimport android.os.SystemProperties;
2459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
2559d3d868112f8bbd14f466d0096789548b176d34Robert Greenwaltpublic class UsbCommand extends Svc.Command {
2659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    public UsbCommand() {
2759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        super("usb");
2859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    }
2959d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
30f0e3edc0709dc190190e0ca386478f4a0da92e7aGuang Zhu    @Override
3159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    public String shortHelp() {
3259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        return "Control Usb state";
3359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    }
3459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
35f0e3edc0709dc190190e0ca386478f4a0da92e7aGuang Zhu    @Override
3659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    public String longHelp() {
3759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        return shortHelp() + "\n"
3859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                + "\n"
3959d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                + "usage: svc usb setFunction [function]\n"
4059d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                + "         Set the current usb function.\n\n"
4159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                + "       svc usb getFunction\n"
4259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                + "          Gets the list of currently enabled functions\n";
4359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    }
4459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt
45f0e3edc0709dc190190e0ca386478f4a0da92e7aGuang Zhu    @Override
4659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    public void run(String[] args) {
4759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        boolean validCommand = false;
4859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        if (args.length >= 2) {
4959d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt            if ("setFunction".equals(args[1])) {
5059d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                IUsbManager usbMgr = IUsbManager.Stub.asInterface(ServiceManager.getService(
5159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                        Context.USB_SERVICE));
5259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                try {
53fcf10f7c12cb3107bdfedce6f76a8c866d154f3cNick Kralevich                    usbMgr.setCurrentFunction((args.length >=3 ? args[2] : null));
5459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                } catch (RemoteException e) {
5559d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                    System.err.println("Error communicating with UsbManager: " + e);
5659d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                }
5759d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                return;
5859d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt            } else if ("getFunction".equals(args[1])) {
5959d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                System.err.println(SystemProperties.get("sys.usb.config"));
6059d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt                return;
6159d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt            }
6259d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        }
6359d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt        System.err.println(longHelp());
6459d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt    }
6559d3d868112f8bbd14f466d0096789548b176d34Robert Greenwalt}
66