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

Commit 818f2170 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

parents 20a9e958 e11eb426
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 + ": ";