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

Commit e11eb426 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Send all CLCC responses at once"" into tm-dev

parents edc8f4bd e850de30
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 + ": ";