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

Commit f8a101fc authored by Beena More's avatar Beena More Committed by Linux Build Service Account
Browse files

Telephony: SIM De-personalization

1. Support for all ME De-Personalizations as per specs
   3GPP2 C.S0068-0 and 3GPP TS 22.022
2. Changes to listen to and notify registrants for
   EVENT_NETWORK_LOCKED
3. Sim DePerso sent as OEMHOOK request on rild socket

Change-Id: I7f3e1ac9a0c64f3069727bfcc066ec0f58ecdab5
parent c2324d61
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -773,7 +773,7 @@ public interface CommandsInterface {


    void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result);
    void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result);


    void supplyNetworkDepersonalization(String netpin, Message result);
    void supplyNetworkDepersonalization(String netpin, String type, Message result);


    /**
    /**
     *  returned message
     *  returned message
+1 −1
Original line number Original line Diff line number Diff line
@@ -117,7 +117,7 @@ public interface IccCard {
    /**
    /**
     * Supply Network depersonalization code to the RIL
     * Supply Network depersonalization code to the RIL
     */
     */
    public void supplyNetworkDepersonalization (String pin, Message onComplete);
    public void supplyNetworkDepersonalization (String pin, String type, Message onComplete);


    /**
    /**
     * Check whether ICC pin lock is enabled
     * Check whether ICC pin lock is enabled
+36 −9
Original line number Original line Diff line number Diff line
@@ -16,6 +16,9 @@


package com.android.internal.telephony;
package com.android.internal.telephony;


import java.nio.ByteBuffer;
import java.nio.ByteOrder;

import static com.android.internal.telephony.RILConstants.*;
import static com.android.internal.telephony.RILConstants.*;
import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
import static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE;
import static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE;
@@ -304,6 +307,13 @@ public final class RIL extends BaseCommands implements CommandsInterface {


    private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31;
    private static final int CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES = 31;


    private static final char NULL_TERMINATOR = '\0';

    private static final int NULL_TERMINATOR_LENGTH = BYTE_SIZE;

    /** Sim DePersonalization code */
    private static final int OEMHOOK_EVT_HOOK_ENTER_DEPERSONALIZATION_CODE = OEMHOOK_BASE + 51;

    private final DisplayManager.DisplayListener mDisplayListener =
    private final DisplayManager.DisplayListener mDisplayListener =
            new DisplayManager.DisplayListener() {
            new DisplayManager.DisplayListener() {
        @Override
        @Override
@@ -910,15 +920,32 @@ public final class RIL extends BaseCommands implements CommandsInterface {


    @Override
    @Override
    public void
    public void
    supplyNetworkDepersonalization(String netpin, Message result) {
    supplyNetworkDepersonalization(String netpin, String type, Message response) {
        RILRequest rr = RILRequest.obtain(RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, result);
        Rlog.d(RILJ_LOG_TAG, "supplyDepersonalization: netpin = " + netpin + " type = " + type);


        if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
        byte[] payload = null;

        // type + null character +
        rr.mParcel.writeInt(1);
        // netpin + null character
        rr.mParcel.writeString(netpin);
        int payloadLength  = type.length() + NULL_TERMINATOR_LENGTH +

                                (netpin == null ? NULL_TERMINATOR_LENGTH
        send(rr);
                                        : netpin.length() + NULL_TERMINATOR_LENGTH);

        payload = new byte[payloadLength];
        ByteBuffer buf = createBufferWithNativeByteOrder(payload);
        // type
        buf.put(type.getBytes());
        buf.put((byte)NULL_TERMINATOR); // null character
        // pin
        if (netpin != null) buf.put(netpin.getBytes());
        buf.put((byte)NULL_TERMINATOR); // null character
        sendOemRilRequestRaw(OEMHOOK_EVT_HOOK_ENTER_DEPERSONALIZATION_CODE,
                payload.length, payload, response);
    }

    private ByteBuffer createBufferWithNativeByteOrder(byte[] bytes) {
        ByteBuffer buf = ByteBuffer.wrap(bytes);
        buf.order(ByteOrder.nativeOrder());
        return buf;
    }
    }


    @Override
    @Override
+1 −1
Original line number Original line Diff line number Diff line
@@ -74,7 +74,7 @@ class ImsPhoneCommandInterface extends BaseCommands implements CommandsInterface
    }
    }


    @Override
    @Override
    public void supplyNetworkDepersonalization(String netpin, Message result) {
    public void supplyNetworkDepersonalization(String netpin, String type, Message result) {
    }
    }


    @Override
    @Override
+1 −1
Original line number Original line Diff line number Diff line
@@ -73,7 +73,7 @@ class SipCommandInterface extends BaseCommands implements CommandsInterface {
    }
    }


    @Override
    @Override
    public void supplyNetworkDepersonalization(String netpin, Message result) {
    public void supplyNetworkDepersonalization(String netpin, String type, Message result) {
    }
    }


    @Override
    @Override
Loading