summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java18
-rw-r--r--services/core/java/com/android/server/hdmi/TimerRecordingAction.java10
2 files changed, 18 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 8e64bfa9911d..70d108aeaab8 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -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);
}
}
});
diff --git a/services/core/java/com/android/server/hdmi/TimerRecordingAction.java b/services/core/java/com/android/server/hdmi/TimerRecordingAction.java
index 0275853d0098..1a179e67272a 100644
--- a/services/core/java/com/android/server/hdmi/TimerRecordingAction.java
+++ b/services/core/java/com/android/server/hdmi/TimerRecordingAction.java
@@ -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();