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

Commit faa49bc8 authored by Jungshik Jang's avatar Jungshik Jang
Browse files

Fix bugs on timer recording action.

1. Apply masking to feature abort of SetXXXTimer
2. Announce error when failed to send SetXXXTimer.
3. Remove TimerRecordingAction when deivce is disabled.
4. Report clear timer record error thru onClearTimerRecordingResult.

Change-Id: Id243aa25481dad57509b4229ca214fa9b6b00fdc
parent 307a8ba9
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -900,6 +900,10 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        mService.invokeTimerRecordingResult(result);
    }

    void announceClearTimerRecordingResult(int result) {
        mService.invokeClearTimerRecordingResult(result);
    }

    private boolean isMessageForSystemAudio(HdmiCecMessage message) {
        if (message.getSource() != Constants.ADDR_AUDIO_SYSTEM
                || message.getDestination() != Constants.ADDR_TV
@@ -1227,8 +1231,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        //     LocalDeviceTv.onAddressAllocated() -> launchDeviceDiscovery().
        removeAction(DeviceDiscoveryAction.class);
        removeAction(HotplugDetectionAction.class);
        // Remove one touch record action.
        // Remove recording actions.
        removeAction(OneTouchRecordAction.class);
        removeAction(TimerRecordingAction.class);

        disableSystemAudioIfExist();
        disableArcIfExist();
@@ -1397,19 +1402,19 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        assertRunOnServiceThread();
        if (!mService.isControlEnabled()) {
            Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
            announceTimerRecordingResult(CLEAR_TIMER_STATUS_CEC_DISABLE);
            announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CEC_DISABLE);
            return;
        }

        if (!checkRecorder(recorderAddress)) {
            Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
            announceTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION);
            announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION);
            return;
        }

        if (!checkTimerRecordingSource(sourceType, recordSource)) {
            Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource));
            announceTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
            announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
            return;
        }

@@ -1433,7 +1438,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
                break;
            default:
                Slog.w(TAG, "Invalid source type:" + recorderAddress);
                announceTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
                announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
                return;

        }
@@ -1441,7 +1446,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
            @Override
            public void onSendCompleted(int error) {
                if (error != Constants.SEND_RESULT_SUCCESS) {
                    announceTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
                    announceClearTimerRecordingResult(
                            CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
                }
            }
        });
+6 −4
Original line number Diff line number Diff line
@@ -83,11 +83,13 @@ public class TimerRecordingAction extends FeatureAction {
            @Override
            public void onSendCompleted(int error) {
                if (error != Constants.SEND_RESULT_SUCCESS) {
                    mState = STATE_WAITING_FOR_TIMER_STATUS;
                    addTimer(mState, TIMER_STATUS_TIMEOUT_MS);
                    tv().announceTimerRecordingResult(
                            TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
                    finish();
                    return;
                }
                mState = STATE_WAITING_FOR_TIMER_STATUS;
                addTimer(mState, TIMER_STATUS_TIMEOUT_MS);
            }
        });
    }
@@ -128,7 +130,7 @@ public class TimerRecordingAction extends FeatureAction {

    private boolean handleFeatureAbort(HdmiCecMessage cmd) {
        byte[] params = cmd.getParams();
        int messageType = params[0];
        int messageType = params[0] & 0xFF;
        switch (messageType) {
            case Constants.MESSAGE_SET_DIGITAL_TIMER: // fall through
            case Constants.MESSAGE_SET_ANALOG_TIMER: // fall through
@@ -137,7 +139,7 @@ public class TimerRecordingAction extends FeatureAction {
            default:
                return false;
        }
        int reason = params[1];
        int reason = params[1] & 0xFF;
        Slog.i(TAG, "[Feature Abort] for " + messageType + " reason:" + reason);
        tv().announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
        finish();