summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jungshik Jang <jayjang@google.com> 2014-08-05 16:10:21 +0900
committer Jungshik Jang <jayjang@google.com> 2014-08-05 17:24:39 +0900
commitfaa49bc896be859d5bcf2da3bddd4507b5e6494c (patch)
treee7fd447b7ac4b18743d0878b7ee7775463cff4b1
parent307a8ba9f028dc476558bc443aabe4f70705a159 (diff)
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
-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();