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

Commit 88297407 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Revert "Send all CLCC responses at once"" into tm-dev am: e11eb426...

Merge "Revert "Send all CLCC responses at once"" into tm-dev am: e11eb426 am: 818f2170 am: 747c0ed1

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/18030590



Change-Id: Ib3354974a953a947ba7e32a734ead08f979643db
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3a60d859 747c0ed1
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ public class HeadsetService extends ProfileService {
    private VoiceRecognitionTimeoutEvent mVoiceRecognitionTimeoutEvent;
    // Timeout when voice recognition is started by remote device
    @VisibleForTesting static int sStartVrTimeoutMs = 5000;
    private ArrayList<HeadsetClccResponse> mHeadsetClccResponses = new ArrayList<>();
    private ArrayList<StateMachineTask> mPendingClccResponses = new ArrayList<>();
    private boolean mStarted;
    private boolean mCreated;
    private static HeadsetService sHeadsetService;
@@ -328,6 +328,14 @@ public class HeadsetService extends ProfileService {
        }
    }

    private void doForEachConnectedStateMachine(List<StateMachineTask> tasks) {
        synchronized (mStateMachines) {
            for (StateMachineTask task : tasks) {
                doForEachConnectedStateMachine(task);
            }
        }
    }

    void onDeviceStateChanged(HeadsetDeviceState deviceState) {
        doForEachConnectedStateMachine(
                stateMachine -> stateMachine.sendMessage(HeadsetStateMachine.DEVICE_STATE_CHANGED,
@@ -1854,18 +1862,20 @@ public class HeadsetService extends ProfileService {
                mSystemInterface.getAudioManager().setA2dpSuspended(false);
            }
        });

    }

    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    private void clccResponse(int index, int direction, int status, int mode, boolean mpty,
            String number, int type) {
        enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "Need MODIFY_PHONE_STATE permission");
        mHeadsetClccResponses.add(
                new HeadsetClccResponse(index, direction, status, mode, mpty, number, type));
        mPendingClccResponses.add(
                stateMachine -> stateMachine.sendMessage(HeadsetStateMachine.SEND_CLCC_RESPONSE,
                        new HeadsetClccResponse(index, direction, status, mode, mpty, number,
                                type)));
        if (index == CLCC_END_MARK_INDEX) {
            doForEachConnectedStateMachine(stateMachine -> stateMachine.sendMessage(
                    HeadsetStateMachine.SEND_CLCC_RESPONSE, mHeadsetClccResponses));
            mHeadsetClccResponses.clear();
            doForEachConnectedStateMachine(mPendingClccResponses);
            mPendingClccResponses.clear();
        }
    }

+6 −7
Original line number Diff line number Diff line
@@ -869,7 +869,7 @@ public class HeadsetStateMachine extends StateMachine {
                    mNativeInterface.notifyDeviceStatus(mDevice, (HeadsetDeviceState) message.obj);
                    break;
                case SEND_CLCC_RESPONSE:
                    processSendClccResponse((ArrayList<HeadsetClccResponse>) message.obj);
                    processSendClccResponse((HeadsetClccResponse) message.obj);
                    break;
                case CLCC_RSP_TIMEOUT: {
                    BluetoothDevice device = (BluetoothDevice) message.obj;
@@ -2029,17 +2029,16 @@ public class HeadsetStateMachine extends StateMachine {
        sendIndicatorIntent(device, indId, indValue);
    }

    private void processSendClccResponse(ArrayList<HeadsetClccResponse> clccList) {
    private void processSendClccResponse(HeadsetClccResponse clcc) {
        if (!hasMessages(CLCC_RSP_TIMEOUT)) {
            return;
        }
        if (clcc.mIndex == 0) {
            removeMessages(CLCC_RSP_TIMEOUT);

        for (HeadsetClccResponse clcc : clccList) {
        }
        mNativeInterface.clccResponse(mDevice, clcc.mIndex, clcc.mDirection, clcc.mStatus,
                clcc.mMode, clcc.mMpty, clcc.mNumber, clcc.mType);
    }
    }

    private void processSendVendorSpecificResultCode(HeadsetVendorSpecificResultCode resultCode) {
        String stringToSend = resultCode.mCommand + ": ";