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

Commit e850de30 authored by Sungsoo Lim's avatar Sungsoo Lim
Browse files

Revert "Send all CLCC responses at once"

This reverts commit a628c41b.

Reason for revert: b/230062048

Bug: 230062048
Tag: #refactor
Test: atest CtsBluetoothTestCases bluetooth_test_gd_unit
Change-Id: Ic804e3531904e0a84a1588264ad2e69e48d24e75
(cherry picked from commit 0e096d79)
parent 94fc5991
Loading
Loading
Loading
Loading
+16 −6
Original line number Original line Diff line number Diff line
@@ -136,7 +136,7 @@ public class HeadsetService extends ProfileService {
    private VoiceRecognitionTimeoutEvent mVoiceRecognitionTimeoutEvent;
    private VoiceRecognitionTimeoutEvent mVoiceRecognitionTimeoutEvent;
    // Timeout when voice recognition is started by remote device
    // Timeout when voice recognition is started by remote device
    @VisibleForTesting static int sStartVrTimeoutMs = 5000;
    @VisibleForTesting static int sStartVrTimeoutMs = 5000;
    private ArrayList<HeadsetClccResponse> mHeadsetClccResponses = new ArrayList<>();
    private ArrayList<StateMachineTask> mPendingClccResponses = new ArrayList<>();
    private boolean mStarted;
    private boolean mStarted;
    private boolean mCreated;
    private boolean mCreated;
    private static HeadsetService sHeadsetService;
    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) {
    void onDeviceStateChanged(HeadsetDeviceState deviceState) {
        doForEachConnectedStateMachine(
        doForEachConnectedStateMachine(
                stateMachine -> stateMachine.sendMessage(HeadsetStateMachine.DEVICE_STATE_CHANGED,
                stateMachine -> stateMachine.sendMessage(HeadsetStateMachine.DEVICE_STATE_CHANGED,
@@ -1854,18 +1862,20 @@ public class HeadsetService extends ProfileService {
                mSystemInterface.getAudioManager().setA2dpSuspended(false);
                mSystemInterface.getAudioManager().setA2dpSuspended(false);
            }
            }
        });
        });

    }
    }


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


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


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

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


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