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

Commit 169fd202 authored by Ricardo Cerqueira's avatar Ricardo Cerqueira
Browse files

SamsungQualcomm: Add support for Samsung's EMS dialing request

At least some samsungs require a specific emergency dial.
JF and D2 have been identified as _not_ requiring it, so it's
not for all Samsung qualcomms.

Change-Id: Id43728942f2d964a84f7486b1269d2da8305fdf6
parent f4697a84
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ public class SamsungQualcommRIL extends RIL implements CommandsInterface {
    private boolean driverCall = needsOldRilFeature("newDriverCall");
    private boolean driverCallU = needsOldRilFeature("newDriverCallU");
    private boolean dialCode = needsOldRilFeature("newDialCode");
    private boolean samsungEmergency = needsOldRilFeature("samsungEMSReq");
    public SamsungQualcommRIL(Context context, int networkMode,
            int cdmaSubscription) {
        super(context, networkMode, cdmaSubscription);
@@ -731,6 +732,10 @@ public class SamsungQualcommRIL extends RIL implements CommandsInterface {
    @Override
    public void
    dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
        if (samsungEmergency && PhoneNumberUtils.isEmergencyNumber(address)) {
            dialEmergencyCall(address, clirMode, result);
            return;
        }
        if(!dialCode){
            super.dial(address, clirMode, uusInfo, result);
            return;
@@ -802,4 +807,21 @@ public class SamsungQualcommRIL extends RIL implements CommandsInterface {
            }
        }
    }

    static final int RIL_REQUEST_DIAL_EMERGENCY = 10016;
    public void
    dialEmergencyCall(String address, int clirMode, Message result) {
        RILRequest rr;
        Rlog.v(RILJ_LOG_TAG, "Emergency dial: " + address);

        rr = RILRequest.obtain(RIL_REQUEST_DIAL_EMERGENCY, result);
        rr.mParcel.writeString(address + "/");
        rr.mParcel.writeInt(clirMode);
        rr.mParcel.writeInt(0);  // UUS information is absent

        if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));

        send(rr);
    }

}