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

Commit 5f843807 authored by Sungsoo Lim's avatar Sungsoo Lim Committed by Gerrit Code Review
Browse files

Merge "Send all CLCC responses at once"

parents 64f59bab a628c41b
Loading
Loading
Loading
Loading
+6 −16
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<StateMachineTask> mPendingClccResponses = new ArrayList<>();
    private ArrayList<HeadsetClccResponse> mHeadsetClccResponses = new ArrayList<>();
    private boolean mStarted;
    private boolean mCreated;
    private static HeadsetService sHeadsetService;
@@ -328,14 +328,6 @@ 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,
@@ -1862,20 +1854,18 @@ 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");
        mPendingClccResponses.add(
                stateMachine -> stateMachine.sendMessage(HeadsetStateMachine.SEND_CLCC_RESPONSE,
                        new HeadsetClccResponse(index, direction, status, mode, mpty, number,
                                type)));
        mHeadsetClccResponses.add(
                new HeadsetClccResponse(index, direction, status, mode, mpty, number, type));
        if (index == CLCC_END_MARK_INDEX) {
            doForEachConnectedStateMachine(mPendingClccResponses);
            mPendingClccResponses.clear();
            doForEachConnectedStateMachine(stateMachine -> stateMachine.sendMessage(
                    HeadsetStateMachine.SEND_CLCC_RESPONSE, mHeadsetClccResponses));
            mHeadsetClccResponses.clear();
        }
    }

+7 −6
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((HeadsetClccResponse) message.obj);
                    processSendClccResponse((ArrayList<HeadsetClccResponse>) message.obj);
                    break;
                case CLCC_RSP_TIMEOUT: {
                    BluetoothDevice device = (BluetoothDevice) message.obj;
@@ -2029,16 +2029,17 @@ public class HeadsetStateMachine extends StateMachine {
        sendIndicatorIntent(device, indId, indValue);
    }

    private void processSendClccResponse(HeadsetClccResponse clcc) {
    private void processSendClccResponse(ArrayList<HeadsetClccResponse> clccList) {
        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 + ": ";