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

Commit d13db38a authored by Ravindra's avatar Ravindra Committed by Linux Build Service Account
Browse files

MSIM: set phone account handle changes for ECall

Add interface API between Telephony to Telecomm for
updating phoneAcount.
Currently on multisim, Telephony(PhoneApp) picks the best
possible sub for placing emergency call, after selecting the
best possible sub, Telephony uses this new interface API to update
the phoneAcount handle to Telecomm which inturn helps to display
the proper subId on which ECall placed.
Add cause codes for EMERGENCY_TEMP_FAILURE and  EMERGENCY_TEMP_FAILURE

Change-Id: Ic0fdc01810ccc35479a1a9447c40e38122a155a9
CRs-Fixed: 722205,778800, 780893
parent c96a60e2
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -455,6 +455,7 @@ public abstract class Connection extends Conferenceable {
        public void onConferenceStarted() {}
        public void onConferenceMergeFailed(Connection c) {}
        public void onExtrasChanged(Connection c, Bundle extras) {}
        public void onPhoneAccountChanged(Connection c, PhoneAccountHandle pHandle) {}
    }

    /**
@@ -1117,6 +1118,7 @@ public abstract class Connection extends Conferenceable {
    private Conference mConference;
    private ConnectionService mConnectionService;
    private Bundle mExtras;
    private PhoneAccountHandle mPhoneAccountHandle = null;

    /**
     * Create a new Connection.
@@ -1625,6 +1627,23 @@ public abstract class Connection extends Conferenceable {
        return mUnmodifiableConferenceables;
    }

    /**
     * @hide.
     */
    public final void setPhoneAccountHandle(PhoneAccountHandle pHandle) {
        mPhoneAccountHandle = pHandle;
        for (Listener l : mListeners) {
            l.onPhoneAccountChanged(this, pHandle);
        }
    }

    /**
     * @hide.
     */
    public final PhoneAccountHandle getPhoneAccountHandle() {
        return mPhoneAccountHandle;
    }

    /**
     * @hide
     */
+20 −1
Original line number Diff line number Diff line
@@ -625,6 +625,13 @@ public abstract class ConnectionService extends Service {
                mAdapter.setExtras(id, extras);
            }
        }

        @Override
        public void onPhoneAccountChanged(Connection c, PhoneAccountHandle pHandle) {
            String id = mIdByConnection.get(c);
            Log.i(this, "Adapter onPhoneAccountChanged %s, %s", c, pHandle);
            mAdapter.setPhoneAccountHandle(id, pHandle);
        }
    };

    /** {@inheritDoc} */
@@ -680,7 +687,7 @@ public abstract class ConnectionService extends Service {
                callId,
                request,
                new ParcelableConnection(
                        request.getAccountHandle(),
                        getAccountHandle(request, connection),
                        connection.getState(),
                        connection.getConnectionCapabilities(),
                        connection.getAddress(),
@@ -702,6 +709,18 @@ public abstract class ConnectionService extends Service {
        }
    }

    /** @hide */
    public PhoneAccountHandle getAccountHandle(
            final ConnectionRequest request, Connection connection) {
        PhoneAccountHandle pHandle = connection.getPhoneAccountHandle();
        if (pHandle != null) {
            Log.i(this, "getAccountHandle, return account handle from local, %s", pHandle);
            return pHandle;
        } else {
            return request.getAccountHandle();
        }
    }

    private void abort(String callId) {
        Log.d(this, "abort %s", callId);
        findConnectionForAction(callId, "abort").onAbort();
+10 −0
Original line number Diff line number Diff line
@@ -412,4 +412,14 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            }
        }
    }

    void setPhoneAccountHandle(String callId, PhoneAccountHandle pHandle) {
        Log.v(this, "setPhoneAccountHandle: %s, %s", callId, pHandle);
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
                adapter.setPhoneAccountHandle(callId, pHandle);
            } catch (RemoteException ignored) {
            }
        }
    }
}
+18 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ final class ConnectionServiceAdapterServant {
    private static final int MSG_ON_POST_DIAL_CHAR = 22;
    private static final int MSG_SET_CONFERENCE_MERGE_FAILED = 23;
    private static final int MSG_SET_EXTRAS = 24;
    private static final int MSG_SET_PHONE_ACCOUNT = 25;

    private final IConnectionServiceAdapter mDelegate;

@@ -223,6 +224,16 @@ final class ConnectionServiceAdapterServant {
                    }
                    break;
                }
                case MSG_SET_PHONE_ACCOUNT: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
                        mDelegate.setPhoneAccountHandle(
                                (String) args.arg1, (PhoneAccountHandle) args.arg2);
                    } finally {
                        args.recycle();
                    }
                    break;
                }
                case MSG_SET_CONFERENCE_MERGE_FAILED: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
@@ -419,6 +430,13 @@ final class ConnectionServiceAdapterServant {
            args.arg2 = extras;
            mHandler.obtainMessage(MSG_SET_EXTRAS, args).sendToTarget();
        }

        public final void setPhoneAccountHandle(String connectionId, PhoneAccountHandle pHandle) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = connectionId;
            args.arg2 = pHandle;
            mHandler.obtainMessage(MSG_SET_PHONE_ACCOUNT, args).sendToTarget();
        }
    };

    public ConnectionServiceAdapterServant(IConnectionServiceAdapter delegate) {
+19 −0
Original line number Diff line number Diff line
@@ -209,6 +209,11 @@ public final class RemoteConnection {
         * @param extras The extras containing other information associated with the connection.
         */
        public void onExtrasChanged(RemoteConnection connection, @Nullable Bundle extras) {}

        /** @hide */
        public void setPhoneAccountHandle(
                RemoteConnection connection,
                PhoneAccountHandle pHandle) {}
    }

    /**
@@ -1291,6 +1296,20 @@ public final class RemoteConnection {
        }
    }

    /** @hide */
    void setPhoneAccountHandle(final PhoneAccountHandle pHandle) {
        for (CallbackRecord record : mCallbackRecords) {
            final RemoteConnection connection = this;
            final Callback callback = record.getCallback();
            record.getHandler().post(new Runnable() {
                @Override
                public void run() {
                    callback.setPhoneAccountHandle(connection, pHandle);
                }
            });
        }
    }

    /**
     * Create a RemoteConnection represents a failure, and which will be in
     * {@link Connection#STATE_DISCONNECTED}. Attempting to use it for anything will almost
Loading