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

Commit fac49785 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Add System API to enable / disable a logical modem.

The enableModem HAL interface is already defined. Now we need to
surface it through PhoneConfigurationManager to TelephonyManager
as a SystemApi that ONS can use.

Bug: 122926141
Test: unittest
Change-Id: If83231dc12d2d3e4b6cde6dce69c5d747805f331
parent bc5ebc6f
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2257,6 +2257,14 @@ public interface CommandsInterface {
     */
    void stopNattKeepalive(int sessionHandle, Message result);

    /**
     * Enable or disable the logical modem.
     *
     * @param enable whether to enable or disable the modem
     * @param result a Message to return to the requester
     */
    default void enableModem(boolean enable, Message result) {};

    default List<ClientRequestStats> getClientRequestStats() {
        return null;
    }
+9 −15
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.internal.telephony;

import android.content.Context;
import android.os.Message;
import android.telephony.PhoneCapability;
import android.telephony.Rlog;
import android.telephony.TelephonyManager;
@@ -82,23 +83,16 @@ public class PhoneConfigurationManager {
    /**
     * Enable or disable phone
     *
     * @param phoneId which phone to operate on
     * @param phone which phone to operate on
     * @param enable true or false
     *
     * @param result the message to sent back when it's done.
     */
    public void enablePhone(int phoneId, boolean enable) {
        // TODO: send command to modem once interface is ready.
    public void enablePhone(Phone phone, boolean enable, Message result) {
        if (phone == null) {
            log("enablePhone failed phone is null");
            return;
        }

    /**
     * Enable or disable phone
     *
     * @param phoneId which phone to operate on
     * @param enable true or false
     *
     */
    public void enablePhone(int[] phoneId, boolean[] enable) {
        // TODO: send command to modem once interface is ready.
        phone.mCi.enableModem(enable, result);
    }

    /**
+34 −0
Original line number Diff line number Diff line
@@ -863,6 +863,38 @@ public class RIL extends BaseCommands implements CommandsInterface {
        dial(address, isEmergencyCall, emergencyNumberInfo, clirMode, null, result);
    }

    @Override
    public void enableModem(boolean enable, Message result) {
        IRadio radioProxy = getRadioProxy(result);
        if (mRadioVersion.less(RADIO_HAL_VERSION_1_3)) {
            if (RILJ_LOGV) riljLog("enableModem: not supported.");
            if (result != null) {
                AsyncResult.forMessage(result, null,
                        CommandException.fromRilErrno(REQUEST_NOT_SUPPORTED));
                result.sendToTarget();
            }
            return;
        }

        android.hardware.radio.V1_3.IRadio radioProxy13 =
                (android.hardware.radio.V1_3.IRadio) radioProxy;
        if (radioProxy13 != null) {
            RILRequest rr = obtainRequest(RIL_REQUEST_ENABLE_MODEM, result,
                    mRILDefaultWorkSource);

            if (RILJ_LOGD) {
                riljLog(rr.serialString() + "> " + requestToString(rr.mRequest) + " enable = "
                        + enable);
            }

            try {
                radioProxy13.enableModem(rr.mSerial, enable);
            } catch (RemoteException | RuntimeException e) {
                handleRadioProxyExceptionForRR(rr, "enableModem", e);
            }
        }
    }

    @Override
    public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo,
                     int clirMode, UUSInfo uusInfo, Message result) {
@@ -5163,6 +5195,8 @@ public class RIL extends BaseCommands implements CommandsInterface {
                return "RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA";
            case RIL_REQUEST_SET_LINK_CAPACITY_REPORTING_CRITERIA:
                return "RIL_REQUEST_SET_LINK_CAPACITY_REPORTING_CRITERIA";
            case RIL_REQUEST_ENABLE_MODEM:
                return "RIL_REQUEST_ENABLE_MODEM";
            default: return "<unknown request>";
        }
    }
+7 −0
Original line number Diff line number Diff line
@@ -2157,4 +2157,11 @@ public class RadioResponse extends IRadioResponse.Stub {
            mRil.processResponseDone(rr, responseInfo, ret);
        }
    }

    /**
     * @param responseInfo Response info struct containing response type, serial no. and error
     */
    public void enableModemResponse(RadioResponseInfo responseInfo) {
        responseVoid(responseInfo);
    }
}