am 09035486: Merge "Add recorder address to all recording listerner apis." into lmp-mr1-dev

* commit '090354861a92c1cf0c8c2baa438d1b770d67dd9f':
  Add recorder address to all recording listerner apis.
This commit is contained in:
Jungshik Jang
2014-11-05 06:18:44 +00:00
committed by Android Git Automerger
7 changed files with 74 additions and 47 deletions

View File

@@ -39,6 +39,8 @@ public abstract class HdmiRecordListener {
/** /**
* Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization.
* *
* @param recorderAddress An address of recorder that reports result of one touch record
* request
* @param result result code. For more details, please look at all constants starting with * @param result result code. For more details, please look at all constants starting with
* "ONE_TOUCH_RECORD_". Only * "ONE_TOUCH_RECORD_". Only
* {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE}, * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE},
@@ -47,15 +49,17 @@ public abstract class HdmiRecordListener {
* {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal * {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal
* start of recording; otherwise, describes failure. * start of recording; otherwise, describes failure.
*/ */
public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) {
} }
/** /**
* Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization.
* *
* @param recorderAddress An address of recorder that reports result of timer recording
* request
* @param data timer status data. For more details, look at {@link TimerStatusData}. * @param data timer status data. For more details, look at {@link TimerStatusData}.
*/ */
public void onTimerRecordingResult(TimerStatusData data) { public void onTimerRecordingResult(int recorderAddress, TimerStatusData data) {
} }
/** /**
@@ -230,6 +234,8 @@ public abstract class HdmiRecordListener {
/** /**
* Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request.
* *
* @param recorderAddress An address of recorder that reports result of clear timer recording
* request
* @param result result of clear timer. It should be one of * @param result result of clear timer. It should be one of
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING} * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING}
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING},
@@ -239,6 +245,6 @@ public abstract class HdmiRecordListener {
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE}, * {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE},
* {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}. * {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}.
*/ */
public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) {
} }
} }

View File

@@ -226,19 +226,19 @@ public final class HdmiTvClient extends HdmiClient {
} }
@Override @Override
public void onOneTouchRecordResult(int result) { public void onOneTouchRecordResult(int recorderAddress, int result) {
callback.onOneTouchRecordResult(result); callback.onOneTouchRecordResult(recorderAddress, result);
} }
@Override @Override
public void onTimerRecordingResult(int result) { public void onTimerRecordingResult(int recorderAddress, int result) {
callback.onTimerRecordingResult( callback.onTimerRecordingResult(recorderAddress,
HdmiRecordListener.TimerStatusData.parseFrom(result)); HdmiRecordListener.TimerStatusData.parseFrom(result));
} }
@Override @Override
public void onClearTimerRecordingResult(int result) { public void onClearTimerRecordingResult(int recorderAddress, int result) {
callback.onClearTimerRecordingResult(result); callback.onClearTimerRecordingResult(recorderAddress, result);
} }
}; };
} }

View File

@@ -31,19 +31,25 @@ package android.hardware.hdmi;
/** /**
* Called when one touch record is started or failed during initialization. * Called when one touch record is started or failed during initialization.
* *
* @param recorderAddress An address of recorder that reports result of one touch record
* request
* @param result result code for one touch record * @param result result code for one touch record
*/ */
void onOneTouchRecordResult(int result); void onOneTouchRecordResult(int recorderAddress, int result);
/** /**
* Called when timer recording is started or failed during initialization. * Called when timer recording is started or failed during initialization.
*
* @param recorderAddress An address of recorder that reports result of timer recording
* request
* @param result result code for timer recording * @param result result code for timer recording
*/ */
void onTimerRecordingResult(int result); void onTimerRecordingResult(int recorderAddress, int result);
/** /**
* Called when receiving result for clear timer recording request. * Called when receiving result for clear timer recording request.
* *
* @param result result of clear timer. * @param recorderAddress An address of recorder that reports result of clear timer recording
* request
* @param result result of clear timer
*/ */
void onClearTimerRecordingResult(int result); void onClearTimerRecordingResult(int recorderAddress, int result);
} }

View File

@@ -1029,6 +1029,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
OneTouchRecordAction action = actions.get(0); OneTouchRecordAction action = actions.get(0);
if (action.getRecorderAddress() != message.getSource()) { if (action.getRecorderAddress() != message.getSource()) {
announceOneTouchRecordResult( announceOneTouchRecordResult(
message.getSource(),
HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS); HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS);
} }
return super.handleRecordTvScreen(message); return super.handleRecordTvScreen(message);
@@ -1047,20 +1048,20 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
protected boolean handleTimerClearedStatus(HdmiCecMessage message) { protected boolean handleTimerClearedStatus(HdmiCecMessage message) {
byte[] params = message.getParams(); byte[] params = message.getParams();
int timerClearedStatusData = params[0] & 0xFF; int timerClearedStatusData = params[0] & 0xFF;
announceTimerRecordingResult(timerClearedStatusData); announceTimerRecordingResult(message.getSource(), timerClearedStatusData);
return true; return true;
} }
void announceOneTouchRecordResult(int result) { void announceOneTouchRecordResult(int recorderAddress, int result) {
mService.invokeOneTouchRecordResult(result); mService.invokeOneTouchRecordResult(recorderAddress, result);
} }
void announceTimerRecordingResult(int result) { void announceTimerRecordingResult(int recorderAddress, int result) {
mService.invokeTimerRecordingResult(result); mService.invokeTimerRecordingResult(recorderAddress, result);
} }
void announceClearTimerRecordingResult(int result) { void announceClearTimerRecordingResult(int recorderAddress, int result) {
mService.invokeClearTimerRecordingResult(result); mService.invokeClearTimerRecordingResult(recorderAddress, result);
} }
private boolean isMessageForSystemAudio(HdmiCecMessage message) { private boolean isMessageForSystemAudio(HdmiCecMessage message) {
@@ -1528,19 +1529,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED);
return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE;
} }
if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) {
Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress,
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
return Constants.ABORT_NOT_IN_CORRECT_MODE; return Constants.ABORT_NOT_IN_CORRECT_MODE;
} }
if (!checkRecordSource(recordSource)) { if (!checkRecordSource(recordSource)) {
Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource));
announceOneTouchRecordResult(ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN); announceOneTouchRecordResult(recorderAddress,
ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN);
return Constants.ABORT_UNABLE_TO_DETERMINE; return Constants.ABORT_UNABLE_TO_DETERMINE;
} }
@@ -1555,13 +1558,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) {
Slog.w(TAG, "Can not stop one touch record. CEC control is disabled."); Slog.w(TAG, "Can not stop one touch record. CEC control is disabled.");
announceOneTouchRecordResult(ONE_TOUCH_RECORD_CEC_DISABLED); announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED);
return; return;
} }
if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) {
Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); announceOneTouchRecordResult(recorderAddress,
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
return; return;
} }
@@ -1587,13 +1591,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED); announceTimerRecordingResult(recorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED);
return; return;
} }
if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) {
Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
announceTimerRecordingResult( announceTimerRecordingResult(recorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
return; return;
} }
@@ -1601,6 +1606,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) {
Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource));
announceTimerRecordingResult( announceTimerRecordingResult(
recorderAddress,
TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE);
return; return;
} }
@@ -1621,26 +1627,29 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (!mService.isControlEnabled()) { if (!mService.isControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled."); Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CEC_DISABLE); announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CEC_DISABLE);
return; return;
} }
if (!checkRecorder(recorderAddress)) { if (!checkRecorder(recorderAddress)) {
Slog.w(TAG, "Invalid recorder address:" + recorderAddress); Slog.w(TAG, "Invalid recorder address:" + recorderAddress);
announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION); announceClearTimerRecordingResult(recorderAddress,
CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION);
return; return;
} }
if (!checkTimerRecordingSource(sourceType, recordSource)) { if (!checkTimerRecordingSource(sourceType, recordSource)) {
Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource)); Slog.w(TAG, "Invalid record source." + Arrays.toString(recordSource));
announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress,
CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
return; return;
} }
sendClearTimerMessage(recorderAddress, sourceType, recordSource); sendClearTimerMessage(recorderAddress, sourceType, recordSource);
} }
private void sendClearTimerMessage(int recorderAddress, int sourceType, byte[] recordSource) { private void sendClearTimerMessage(final int recorderAddress, int sourceType,
byte[] recordSource) {
HdmiCecMessage message = null; HdmiCecMessage message = null;
switch (sourceType) { switch (sourceType) {
case TIMER_RECORDING_TYPE_DIGITAL: case TIMER_RECORDING_TYPE_DIGITAL:
@@ -1657,7 +1666,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
break; break;
default: default:
Slog.w(TAG, "Invalid source type:" + recorderAddress); Slog.w(TAG, "Invalid source type:" + recorderAddress);
announceClearTimerRecordingResult(CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); announceClearTimerRecordingResult(recorderAddress,
CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
return; return;
} }
@@ -1665,7 +1675,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
@Override @Override
public void onSendCompleted(int error) { public void onSendCompleted(int error) {
if (error != Constants.SEND_RESULT_SUCCESS) { if (error != Constants.SEND_RESULT_SUCCESS) {
announceClearTimerRecordingResult( announceClearTimerRecordingResult(recorderAddress,
CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE); CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE);
} }
} }

View File

@@ -1661,11 +1661,11 @@ public final class HdmiControlService extends SystemService {
} }
} }
void invokeOneTouchRecordResult(int result) { void invokeOneTouchRecordResult(int recorderAddress, int result) {
synchronized (mLock) { synchronized (mLock) {
if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) {
try { try {
mRecordListenerRecord.mListener.onOneTouchRecordResult(result); mRecordListenerRecord.mListener.onOneTouchRecordResult(recorderAddress, result);
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e); Slog.w(TAG, "Failed to call onOneTouchRecordResult.", e);
} }
@@ -1673,11 +1673,11 @@ public final class HdmiControlService extends SystemService {
} }
} }
void invokeTimerRecordingResult(int result) { void invokeTimerRecordingResult(int recorderAddress, int result) {
synchronized (mLock) { synchronized (mLock) {
if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) {
try { try {
mRecordListenerRecord.mListener.onTimerRecordingResult(result); mRecordListenerRecord.mListener.onTimerRecordingResult(recorderAddress, result);
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.w(TAG, "Failed to call onTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onTimerRecordingResult.", e);
} }
@@ -1685,11 +1685,12 @@ public final class HdmiControlService extends SystemService {
} }
} }
void invokeClearTimerRecordingResult(int result) { void invokeClearTimerRecordingResult(int recorderAddress, int result) {
synchronized (mLock) { synchronized (mLock) {
if (mRecordListenerRecord != null) { if (mRecordListenerRecord != null) {
try { try {
mRecordListenerRecord.mListener.onClearTimerRecordingResult(result); mRecordListenerRecord.mListener.onClearTimerRecordingResult(recorderAddress,
result);
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e); Slog.w(TAG, "Failed to call onClearTimerRecordingResult.", e);
} }

View File

@@ -64,6 +64,7 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
// if failed to send <Record On>, display error message and finish action. // if failed to send <Record On>, display error message and finish action.
if (error != Constants.SEND_RESULT_SUCCESS) { if (error != Constants.SEND_RESULT_SUCCESS) {
tv().announceOneTouchRecordResult( tv().announceOneTouchRecordResult(
mRecorderAddress,
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
finish(); finish();
return; return;
@@ -94,7 +95,7 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
} }
int recordStatus = cmd.getParams()[0]; int recordStatus = cmd.getParams()[0];
tv().announceOneTouchRecordResult(recordStatus); tv().announceOneTouchRecordResult(mRecorderAddress, recordStatus);
Slog.i(TAG, "Got record status:" + recordStatus + " from " + cmd.getSource()); Slog.i(TAG, "Got record status:" + recordStatus + " from " + cmd.getSource());
// If recording started successfully, change state and keep this action until <Record Off> // If recording started successfully, change state and keep this action until <Record Off>
@@ -121,7 +122,8 @@ public class OneTouchRecordAction extends HdmiCecFeatureAction {
return; return;
} }
tv().announceOneTouchRecordResult(ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION); tv().announceOneTouchRecordResult(mRecorderAddress,
ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION);
finish(); finish();
} }

View File

@@ -74,7 +74,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
mRecorderAddress, mRecordSource); mRecorderAddress, mRecordSource);
break; break;
default: default:
tv().announceTimerRecordingResult( tv().announceTimerRecordingResult(mRecorderAddress,
TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE); TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE);
finish(); finish();
return; return;
@@ -83,7 +83,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
@Override @Override
public void onSendCompleted(int error) { public void onSendCompleted(int error) {
if (error != Constants.SEND_RESULT_SUCCESS) { if (error != Constants.SEND_RESULT_SUCCESS) {
tv().announceTimerRecordingResult( tv().announceTimerRecordingResult(mRecorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
finish(); finish();
return; return;
@@ -114,7 +114,7 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
byte[] timerStatusData = cmd.getParams(); byte[] timerStatusData = cmd.getParams();
// [Timer Status Data] should be one or three bytes. // [Timer Status Data] should be one or three bytes.
if (timerStatusData.length == 1 || timerStatusData.length == 3) { if (timerStatusData.length == 1 || timerStatusData.length == 3) {
tv().announceTimerRecordingResult(bytesToInt(timerStatusData)); tv().announceTimerRecordingResult(mRecorderAddress, bytesToInt(timerStatusData));
Slog.i(TAG, "Received [Timer Status Data]:" + Arrays.toString(timerStatusData)); Slog.i(TAG, "Received [Timer Status Data]:" + Arrays.toString(timerStatusData));
} else { } else {
Slog.w(TAG, "Invalid [Timer Status Data]:" + Arrays.toString(timerStatusData)); Slog.w(TAG, "Invalid [Timer Status Data]:" + Arrays.toString(timerStatusData));
@@ -138,7 +138,8 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
} }
int reason = params[1] & 0xFF; int reason = params[1] & 0xFF;
Slog.i(TAG, "[Feature Abort] for " + messageType + " reason:" + reason); Slog.i(TAG, "[Feature Abort] for " + messageType + " reason:" + reason);
tv().announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); tv().announceTimerRecordingResult(mRecorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
finish(); finish();
return true; return true;
} }
@@ -163,7 +164,8 @@ public class TimerRecordingAction extends HdmiCecFeatureAction {
return; return;
} }
tv().announceTimerRecordingResult(TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION); tv().announceTimerRecordingResult(mRecorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION);
finish(); finish();
} }
} }