Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 939d5faf authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android (Google) Code Review
Browse files

Merge "Add USB RNDIS enable/disable control"

parents 165c62d3 ce1200d4
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -148,4 +148,18 @@ interface INetworkManagementService
     */
    void detachPppd(String tty);

    /**
     * Turn on USB RNDIS support - this will turn off thinks like adb/mass-storage
     */
    void startUsbRNDIS();

    /**
     * Turn off USB RNDIS support
     */
    void stopUsbRNDIS();

    /**
     * Check the status of USB RNDIS support
     */
    boolean isUsbRNDISStarted();
}
+31 −0
Original line number Diff line number Diff line
@@ -425,4 +425,35 @@ class NetworkManagementService extends INetworkManagementService.Stub {
                android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService");
        mConnector.doCommand(String.format("pppd detach %s", tty));
    }

    public void startUsbRNDIS() throws IllegalStateException {
        mContext.enforceCallingOrSelfPermission(
                android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService");
        mConnector.doCommand("usb startrndis");
    }

    public void stopUsbRNDIS() throws IllegalStateException {
        mContext.enforceCallingOrSelfPermission(
                android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService");
        mConnector.doCommand("usb stoprndis");
    }

    public boolean isUsbRNDISStarted() throws IllegalStateException {
        mContext.enforceCallingOrSelfPermission(
                android.Manifest.permission.ACCESS_NETWORK_STATE, "NetworkManagementService");
        ArrayList<String> rsp = mConnector.doCommand("usb rndisstatus");

        for (String line : rsp) {
            String []tok = line.split(" ");
            int code = Integer.parseInt(tok[0]);
            if (code == NetdResponseCode.UsbRNDISStatusResult) {
                if (tok[2].equals("started"))
                    return true;
                return false;
            } else {
                throw new IllegalStateException(String.format("Unexpected response code %d", code));
            }
        }
        throw new IllegalStateException("Got an empty response");
    }
}