Merge changes from topic "Remove HdmiCecLocalDevice#mAddress"

* changes:
  CEC: Remove HdmiControlManager#mLocalPhysicalAddress variable
  CEC: Update port info on hotplug events.
  CEC: Remove duplicate storage of logical address.
This commit is contained in:
Yan Han
2021-07-26 10:15:49 +00:00
committed by Android (Google) Code Review
23 changed files with 641 additions and 445 deletions

View File

@@ -36,12 +36,10 @@ import android.sysprop.HdmiProperties;
import android.util.ArrayMap;
import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.ConcurrentUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -70,32 +68,6 @@ public final class HdmiControlManager {
private static final int INVALID_PHYSICAL_ADDRESS = 0xFFFF;
/**
* A cache of the current device's physical address. When device's HDMI out port
* is not connected to any device, it is set to {@link #INVALID_PHYSICAL_ADDRESS}.
*
* <p>Otherwise it is updated by the {@link ClientHotplugEventListener} registered
* with {@link com.android.server.hdmi.HdmiControlService} by the
* {@link #addHotplugEventListener(HotplugEventListener)} and the address is from
* {@link com.android.server.hdmi.HdmiControlService#getPortInfo()}
*/
@GuardedBy("mLock")
private int mLocalPhysicalAddress = INVALID_PHYSICAL_ADDRESS;
private void setLocalPhysicalAddress(int physicalAddress) {
synchronized (mLock) {
mLocalPhysicalAddress = physicalAddress;
}
}
private int getLocalPhysicalAddress() {
synchronized (mLock) {
return mLocalPhysicalAddress;
}
}
private final Object mLock = new Object();
/**
* Broadcast Action: Display OSD message.
* <p>Send when the service has a message to display on screen for events
@@ -972,37 +944,6 @@ public final class HdmiControlManager {
mHasAudioSystemDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
mHasSwitchDevice = hasDeviceType(types, HdmiDeviceInfo.DEVICE_PURE_CEC_SWITCH);
mIsSwitchDevice = HdmiProperties.is_switch().orElse(false);
addHotplugEventListener(new ClientHotplugEventListener());
}
private final class ClientHotplugEventListener implements HotplugEventListener {
@Override
public void onReceived(HdmiHotplugEvent event) {
List<HdmiPortInfo> ports = new ArrayList<>();
try {
ports = mService.getPortInfo();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
if (ports.isEmpty()) {
Log.e(TAG, "Can't find port info, not updating connected status. "
+ "Hotplug event:" + event);
return;
}
// If the HDMI OUT port is plugged or unplugged, update the mLocalPhysicalAddress
for (HdmiPortInfo port : ports) {
if (port.getId() == event.getPort()) {
if (port.getType() == HdmiPortInfo.PORT_OUTPUT) {
setLocalPhysicalAddress(
event.isConnected()
? port.getAddress()
: INVALID_PHYSICAL_ADDRESS);
}
break;
}
}
}
}
private static boolean hasDeviceType(int[] types, int type) {
@@ -1404,7 +1345,11 @@ public final class HdmiControlManager {
*/
@SystemApi
public int getPhysicalAddress() {
return getLocalPhysicalAddress();
try {
return mService.getPhysicalAddress();
} catch (RemoteException e) {
return INVALID_PHYSICAL_ADDRESS;
}
}
/**
@@ -1421,7 +1366,7 @@ public final class HdmiControlManager {
@SystemApi
public boolean isDeviceConnected(@NonNull HdmiDeviceInfo targetDevice) {
Objects.requireNonNull(targetDevice);
int physicalAddress = getLocalPhysicalAddress();
int physicalAddress = getPhysicalAddress();
if (physicalAddress == INVALID_PHYSICAL_ADDRESS) {
return false;
}
@@ -1442,7 +1387,7 @@ public final class HdmiControlManager {
@SystemApi
public boolean isRemoteDeviceConnected(@NonNull HdmiDeviceInfo targetDevice) {
Objects.requireNonNull(targetDevice);
int physicalAddress = getLocalPhysicalAddress();
int physicalAddress = getPhysicalAddress();
if (physicalAddress == INVALID_PHYSICAL_ADDRESS) {
return false;
}

View File

@@ -68,7 +68,6 @@ abstract class HdmiCecLocalDevice {
protected final HdmiControlService mService;
protected final int mDeviceType;
protected int mAddress;
protected int mPreferredAddress;
@GuardedBy("mLock")
protected HdmiDeviceInfo mDeviceInfo;
@@ -187,7 +186,6 @@ abstract class HdmiCecLocalDevice {
protected HdmiCecLocalDevice(HdmiControlService service, int deviceType) {
mService = service;
mDeviceType = deviceType;
mAddress = Constants.ADDR_UNREGISTERED;
mLock = service.getServiceLock();
}
@@ -254,7 +252,7 @@ abstract class HdmiCecLocalDevice {
protected int dispatchMessage(HdmiCecMessage message) {
assertRunOnServiceThread();
int dest = message.getDestination();
if (dest != mAddress && dest != Constants.ADDR_BROADCAST) {
if (dest != mDeviceInfo.getLogicalAddress() && dest != Constants.ADDR_BROADCAST) {
return Constants.NOT_HANDLED;
}
// Cache incoming message if it is included in the list of cacheable opcodes.
@@ -388,7 +386,7 @@ abstract class HdmiCecLocalDevice {
} else {
HdmiCecMessage cecMessage =
HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, physicalAddress, mDeviceType);
mDeviceInfo.getLogicalAddress(), physicalAddress, mDeviceType);
mService.sendCecCommand(cecMessage);
}
return Constants.HANDLED;
@@ -403,7 +401,8 @@ abstract class HdmiCecLocalDevice {
mService.maySendFeatureAbortCommand(message, Constants.ABORT_UNABLE_TO_DETERMINE);
} else {
HdmiCecMessage cecMessage =
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(mAddress, vendorId);
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
mDeviceInfo.getLogicalAddress(), vendorId);
mService.sendCecCommand(cecMessage);
}
return Constants.HANDLED;
@@ -476,8 +475,8 @@ abstract class HdmiCecLocalDevice {
protected void buildAndSendSetOsdName(int dest) {
HdmiCecMessage cecMessage =
HdmiCecMessageBuilder.buildSetOsdNameCommand(
mAddress, dest, mDeviceInfo.getDisplayName());
HdmiCecMessageBuilder.buildSetOsdNameCommand(
mDeviceInfo.getLogicalAddress(), dest, mDeviceInfo.getDisplayName());
if (cecMessage != null) {
mService.sendCecCommand(cecMessage, new SendMessageCallback() {
@Override
@@ -525,7 +524,8 @@ abstract class HdmiCecLocalDevice {
if (cecDeviceInfo != null && cecDeviceInfo.getDisplayName().equals(
HdmiUtils.getDefaultDeviceName(address))) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildGiveOsdNameCommand(mAddress, address));
HdmiCecMessageBuilder.buildGiveOsdNameCommand(
mDeviceInfo.getLogicalAddress(), address));
}
return Constants.HANDLED;
@@ -630,8 +630,13 @@ abstract class HdmiCecLocalDevice {
List<Integer> deviceFeatures = getDeviceFeatures();
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportFeatures(mAddress, mService.getCecVersion(),
localDeviceTypes, rcProfile, rcFeatures, deviceFeatures));
HdmiCecMessageBuilder.buildReportFeatures(
mDeviceInfo.getLogicalAddress(),
mService.getCecVersion(),
localDeviceTypes,
rcProfile,
rcFeatures,
deviceFeatures));
}
@ServiceThreadOnly
@@ -793,7 +798,9 @@ abstract class HdmiCecLocalDevice {
protected int handleGiveDevicePowerStatus(HdmiCecMessage message) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPowerStatus(
mAddress, message.getSource(), mService.getPowerStatus()));
mDeviceInfo.getLogicalAddress(),
message.getSource(),
mService.getPowerStatus()));
return Constants.HANDLED;
}
@@ -802,7 +809,9 @@ abstract class HdmiCecLocalDevice {
// Always report menu active to receive Remote Control.
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportMenuStatus(
mAddress, message.getSource(), Constants.MENU_STATE_ACTIVATED));
mDeviceInfo.getLogicalAddress(),
message.getSource(),
Constants.MENU_STATE_ACTIVATED));
return Constants.HANDLED;
}
@@ -884,7 +893,7 @@ abstract class HdmiCecLocalDevice {
@ServiceThreadOnly
final void handleAddressAllocated(int logicalAddress, int reason) {
assertRunOnServiceThread();
mAddress = mPreferredAddress = logicalAddress;
mPreferredAddress = logicalAddress;
if (mService.getCecVersion() >= HdmiControlManager.HDMI_CEC_VERSION_2_0) {
reportFeatures();
}
@@ -914,14 +923,7 @@ abstract class HdmiCecLocalDevice {
@ServiceThreadOnly
boolean isAddressOf(int addr) {
assertRunOnServiceThread();
return addr == mAddress;
}
// Resets the logical address to unregistered(15), meaning the logical device is invalid.
@ServiceThreadOnly
void clearAddress() {
assertRunOnServiceThread();
mAddress = Constants.ADDR_UNREGISTERED;
return addr == mDeviceInfo.getLogicalAddress();
}
@ServiceThreadOnly
@@ -1184,7 +1186,8 @@ abstract class HdmiCecLocalDevice {
}
List<SendKeyAction> action = getActions(SendKeyAction.class);
int logicalAddress = findKeyReceiverAddress();
if (logicalAddress == Constants.ADDR_INVALID || logicalAddress == mAddress) {
if (logicalAddress == Constants.ADDR_INVALID
|| logicalAddress == mDeviceInfo.getLogicalAddress()) {
// Don't send key event to invalid device or itself.
Slog.w(
TAG,
@@ -1222,7 +1225,8 @@ abstract class HdmiCecLocalDevice {
}
List<SendKeyAction> action = getActions(SendKeyAction.class);
int logicalAddress = findAudioReceiverAddress();
if (logicalAddress == Constants.ADDR_INVALID || logicalAddress == mAddress) {
if (logicalAddress == Constants.ADDR_INVALID
|| logicalAddress == mDeviceInfo.getLogicalAddress()) {
// Don't send key event to invalid device or itself.
Slog.w(
TAG,
@@ -1276,9 +1280,11 @@ abstract class HdmiCecLocalDevice {
void sendUserControlPressedAndReleased(int targetAddress, int cecKeycode) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildUserControlPressed(mAddress, targetAddress, cecKeycode));
HdmiCecMessageBuilder.buildUserControlPressed(
mDeviceInfo.getLogicalAddress(), targetAddress, cecKeycode));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildUserControlReleased(mAddress, targetAddress));
HdmiCecMessageBuilder.buildUserControlReleased(
mDeviceInfo.getLogicalAddress(), targetAddress));
}
void addActiveSourceHistoryItem(ActiveSource activeSource, boolean isActiveSource,
@@ -1298,7 +1304,6 @@ abstract class HdmiCecLocalDevice {
/** Dump internal status of HdmiCecLocalDevice object. */
protected void dump(final IndentingPrintWriter pw) {
pw.println("mDeviceType: " + mDeviceType);
pw.println("mAddress: " + mAddress);
pw.println("mPreferredAddress: " + mPreferredAddress);
pw.println("mDeviceInfo: " + mDeviceInfo);
pw.println("mActiveSource: " + getActiveSource());

View File

@@ -254,9 +254,12 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
}
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, mService.getPhysicalAddress(), mDeviceType));
getDeviceInfo().getLogicalAddress(),
mService.getPhysicalAddress(),
mDeviceType));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(mAddress, mService.getVendorId()));
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
getDeviceInfo().getLogicalAddress(), mService.getVendorId()));
mService.registerTvInputCallback(mTvInputCallback);
// Some TVs, for example Mi TV, need ARC on before turning System Audio Mode on
// to request Short Audio Descriptor. Since ARC and SAM are independent,
@@ -406,7 +409,9 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
}
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportSystemAudioMode(
mAddress, message.getSource(), isSystemAudioModeOnOrTurningOn));
getDeviceInfo().getLogicalAddress(),
message.getSource(),
isSystemAudioModeOnOrTurningOn));
return Constants.HANDLED;
}
@@ -488,7 +493,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
} else {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
mAddress, message.getSource(), sadBytes));
getDeviceInfo().getLogicalAddress(), message.getSource(), sadBytes));
return Constants.HANDLED;
}
}
@@ -656,7 +661,9 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildSetSystemAudioMode(
mAddress, Constants.ADDR_BROADCAST, systemAudioStatusOn));
getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
systemAudioStatusOn));
if (systemAudioStatusOn) {
// If TV sends out SAM Request with a path of a non-CEC device, which should not show
@@ -754,7 +761,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportAudioStatus(
mAddress, source, scaledVolume, mute));
getDeviceInfo().getLogicalAddress(), source, scaledVolume, mute));
}
/**
@@ -908,7 +915,8 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
setRoutingPort(portId);
setLocalActivePort(portId);
HdmiCecMessage routingChange =
HdmiCecMessageBuilder.buildRoutingChange(mAddress, oldPath, newPath);
HdmiCecMessageBuilder.buildRoutingChange(
getDeviceInfo().getLogicalAddress(), oldPath, newPath);
mService.sendCecCommand(routingChange);
}
@@ -933,7 +941,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
// send <Set System Audio Mode> [“Off”]
mService.sendCecCommand(
HdmiCecMessageBuilder.buildSetSystemAudioMode(
mAddress, Constants.ADDR_BROADCAST, false));
getDeviceInfo().getLogicalAddress(), Constants.ADDR_BROADCAST, false));
}
}
@@ -981,7 +989,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
setSystemAudioMode(true);
mService.sendCecCommand(
HdmiCecMessageBuilder.buildSetSystemAudioMode(
mAddress, Constants.ADDR_BROADCAST, true));
getDeviceInfo().getLogicalAddress(), Constants.ADDR_BROADCAST, true));
return Constants.HANDLED;
}
// Check if TV supports System Audio Control.
@@ -992,7 +1000,9 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
setSystemAudioMode(true);
mService.sendCecCommand(
HdmiCecMessageBuilder.buildSetSystemAudioMode(
mAddress, Constants.ADDR_BROADCAST, true));
getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
true));
} else {
mService.maySendFeatureAbortCommand(message, Constants.ABORT_REFUSED);
}
@@ -1150,8 +1160,9 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
return;
}
// Otherwise will switch to the current active port and broadcast routing information.
mService.sendCecCommand(HdmiCecMessageBuilder.buildRoutingInformation(
mAddress, routingInformationPath));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildRoutingInformation(
getDeviceInfo().getLogicalAddress(), routingInformationPath));
routeToInputFromPortId(getRoutingPort());
}

View File

@@ -75,10 +75,14 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
getDeviceInfo().getDeviceType(), Constants.ADDR_BROADCAST,
"HdmiCecLocalDevicePlayback#onAddressAllocated()");
}
mService.sendCecCommand(HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, mService.getPhysicalAddress(), mDeviceType));
mService.sendCecCommand(HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
mAddress, mService.getVendorId()));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
getDeviceInfo().getLogicalAddress(),
mService.getPhysicalAddress(),
mDeviceType));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
getDeviceInfo().getLogicalAddress(), mService.getVendorId()));
// Actively send out an OSD name to the TV to update the TV panel in case the TV
// does not query the OSD name on time. This is not a required behavior by the spec.
// It is used for some TVs that need the OSD name update but don't query it themselves.
@@ -87,8 +91,10 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
// If current device is not a functional audio system device,
// send message to potential audio system device in the system to get the system
// audio mode status. If no response, set to false.
mService.sendCecCommand(HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mAddress, Constants.ADDR_AUDIO_SYSTEM), new SendMessageCallback() {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_AUDIO_SYSTEM),
new SendMessageCallback() {
@Override
public void onSendCompleted(int error) {
if (error != SendMessageResult.SUCCESS) {
@@ -144,8 +150,9 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
return;
}
if (initiatedByCec) {
mService.sendCecCommand(HdmiCecMessageBuilder.buildInactiveSource(mAddress,
mService.getPhysicalAddress()));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildInactiveSource(
getDeviceInfo().getLogicalAddress(), mService.getPhysicalAddress()));
return;
}
switch (standbyAction) {
@@ -157,23 +164,28 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
switch (powerControlMode) {
case HdmiControlManager.POWER_CONTROL_MODE_TV:
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_TV));
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_TV));
break;
case HdmiControlManager.POWER_CONTROL_MODE_TV_AND_AUDIO_SYSTEM:
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_TV));
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_TV));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress,
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(),
Constants.ADDR_AUDIO_SYSTEM));
break;
case HdmiControlManager.POWER_CONTROL_MODE_BROADCAST:
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress,
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST));
break;
case HdmiControlManager.POWER_CONTROL_MODE_NONE:
mService.sendCecCommand(
HdmiCecMessageBuilder.buildInactiveSource(mAddress,
HdmiCecMessageBuilder.buildInactiveSource(
getDeviceInfo().getLogicalAddress(),
mService.getPhysicalAddress()));
break;
}
@@ -181,7 +193,8 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
case HdmiControlService.STANDBY_SHUTDOWN:
// ACTION_SHUTDOWN is taken as a signal to power off all the devices.
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_BROADCAST));
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_BROADCAST));
break;
}
}
@@ -330,7 +343,7 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
protected int handleSystemAudioModeStatus(HdmiCecMessage message) {
// Only directly addressed System Audio Mode Status message can change internal
// system audio mode status.
if (message.getDestination() == mAddress
if (message.getDestination() == getDeviceInfo().getLogicalAddress()
&& message.getSource() == Constants.ADDR_AUDIO_SYSTEM) {
boolean setSystemAudioModeOn = HdmiUtils.parseCommandParamSystemAudioStatus(message);
if (mService.isSystemAudioActivated() != setSystemAudioModeOn) {

View File

@@ -111,13 +111,17 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice {
HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE);
if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_BROADCAST)) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_BROADCAST));
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_BROADCAST));
return;
}
mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_TV));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_TV));
if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_TV_AND_AUDIO_SYSTEM)) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(mAddress, Constants.ADDR_AUDIO_SYSTEM));
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_AUDIO_SYSTEM));
}
}

View File

@@ -168,10 +168,14 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
mArcFeatureEnabled.put(port.getId(), port.isArcSupported());
}
mService.registerTvInputCallback(mTvInputCallback);
mService.sendCecCommand(HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
mAddress, mService.getPhysicalAddress(), mDeviceType));
mService.sendCecCommand(HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
mAddress, mService.getVendorId()));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(
getDeviceInfo().getLogicalAddress(),
mService.getPhysicalAddress(),
mDeviceType));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildDeviceVendorIdCommand(
getDeviceInfo().getLogicalAddress(), mService.getVendorId()));
mService.getHdmiCecNetwork().addCecSwitch(
mService.getHdmiCecNetwork().getPhysicalAddress()); // TV is a CEC switch too.
mTvInputs.clear();
@@ -182,7 +186,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
launchDeviceDiscovery();
startQueuedActions();
if (!mDelayedMessageBuffer.isBuffered(Constants.MESSAGE_ACTIVE_SOURCE)) {
mService.sendCecCommand(HdmiCecMessageBuilder.buildRequestActiveSource(mAddress));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildRequestActiveSource(
getDeviceInfo().getLogicalAddress()));
}
}
@@ -265,15 +271,19 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
private void handleSelectInternalSource() {
assertRunOnServiceThread();
// Seq #18
if (mService.isControlEnabled() && getActiveSource().logicalAddress != mAddress) {
updateActiveSource(mAddress, mService.getPhysicalAddress(),
if (mService.isControlEnabled()
&& getActiveSource().logicalAddress != getDeviceInfo().getLogicalAddress()) {
updateActiveSource(
getDeviceInfo().getLogicalAddress(),
mService.getPhysicalAddress(),
"HdmiCecLocalDeviceTv#handleSelectInternalSource()");
if (mSkipRoutingControl) {
mSkipRoutingControl = false;
return;
}
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
mAddress, mService.getPhysicalAddress());
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
getDeviceInfo().getLogicalAddress(), mService.getPhysicalAddress());
mService.sendCecCommand(activeSource);
}
}
@@ -294,7 +304,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
setActiveSource(newActive, caller);
int logicalAddress = newActive.logicalAddress;
if (mService.getHdmiCecNetwork().getCecDeviceInfo(logicalAddress) != null
&& logicalAddress != mAddress) {
&& logicalAddress != getDeviceInfo().getLogicalAddress()) {
if (mService.pathToPortId(newActive.physicalAddress) == getActivePortId()) {
setPrevPortId(getActivePortId());
}
@@ -383,7 +393,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
return;
}
HdmiCecMessage routingChange =
HdmiCecMessageBuilder.buildRoutingChange(mAddress, oldPath, newPath);
HdmiCecMessageBuilder.buildRoutingChange(
getDeviceInfo().getLogicalAddress(), oldPath, newPath);
mService.sendCecCommand(routingChange);
removeAction(RoutingControlAction.class);
addAndStartAction(
@@ -485,9 +496,10 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
protected int handleRequestActiveSource(HdmiCecMessage message) {
assertRunOnServiceThread();
// Seq #19
if (mAddress == getActiveSource().logicalAddress) {
if (getDeviceInfo().getLogicalAddress() == getActiveSource().logicalAddress) {
mService.sendCecCommand(
HdmiCecMessageBuilder.buildActiveSource(mAddress, getActivePath()));
HdmiCecMessageBuilder.buildActiveSource(
getDeviceInfo().getLogicalAddress(), getActivePath()));
}
return Constants.HANDLED;
}
@@ -506,8 +518,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
@ServiceThreadOnly
boolean broadcastMenuLanguage(String language) {
assertRunOnServiceThread();
HdmiCecMessage command = HdmiCecMessageBuilder.buildSetMenuLanguageCommand(
mAddress, language);
HdmiCecMessage command =
HdmiCecMessageBuilder.buildSetMenuLanguageCommand(
getDeviceInfo().getLogicalAddress(), language);
if (command != null) {
mService.sendCecCommand(command);
return true;
@@ -1213,8 +1226,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
setActivePath(activePath);
if (!routingForBootup
&& !mDelayedMessageBuffer.isBuffered(Constants.MESSAGE_ACTIVE_SOURCE)) {
mService.sendCecCommand(HdmiCecMessageBuilder.buildActiveSource(mAddress,
activePath));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildActiveSource(
getDeviceInfo().getLogicalAddress(), activePath));
}
}
}
@@ -1336,8 +1350,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP)
== HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED;
if (!initiatedByCec && sendStandbyOnSleep) {
mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby(
mAddress, Constants.ADDR_BROADCAST));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), Constants.ADDR_BROADCAST));
}
}
@@ -1410,7 +1425,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
// Remove one touch record action so that other one touch record can be started.
removeAction(OneTouchRecordAction.class);
mService.sendCecCommand(HdmiCecMessageBuilder.buildRecordOff(mAddress, recorderAddress));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildRecordOff(
getDeviceInfo().getLogicalAddress(), recorderAddress));
Slog.i(TAG, "Stop [One Touch Record]-Target:" + recorderAddress);
}
@@ -1491,16 +1508,19 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
HdmiCecMessage message = null;
switch (sourceType) {
case TIMER_RECORDING_TYPE_DIGITAL:
message = HdmiCecMessageBuilder.buildClearDigitalTimer(mAddress, recorderAddress,
recordSource);
message =
HdmiCecMessageBuilder.buildClearDigitalTimer(
getDeviceInfo().getLogicalAddress(), recorderAddress, recordSource);
break;
case TIMER_RECORDING_TYPE_ANALOGUE:
message = HdmiCecMessageBuilder.buildClearAnalogueTimer(mAddress, recorderAddress,
recordSource);
message =
HdmiCecMessageBuilder.buildClearAnalogueTimer(
getDeviceInfo().getLogicalAddress(), recorderAddress, recordSource);
break;
case TIMER_RECORDING_TYPE_EXTERNAL:
message = HdmiCecMessageBuilder.buildClearExternalTimer(mAddress, recorderAddress,
recordSource);
message =
HdmiCecMessageBuilder.buildClearExternalTimer(
getDeviceInfo().getLogicalAddress(), recorderAddress, recordSource);
break;
default:
Slog.w(TAG, "Invalid source type:" + recorderAddress);
@@ -1568,7 +1588,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
return;
}
int targetAddress = targetDevice.getLogicalAddress();
mService.sendCecCommand(HdmiCecMessageBuilder.buildStandby(mAddress, targetAddress));
mService.sendCecCommand(
HdmiCecMessageBuilder.buildStandby(
getDeviceInfo().getLogicalAddress(), targetAddress));
}
@ServiceThreadOnly

View File

@@ -166,18 +166,6 @@ public class HdmiCecNetwork {
}
return false;
}
/**
* Clear all logical addresses registered in the device.
*
* <p>Declared as package-private. accessed by {@link HdmiControlService} only.
*/
@ServiceThreadOnly
void clearLogicalAddress() {
assertRunOnServiceThread();
for (int i = 0; i < mLocalDevices.size(); ++i) {
mLocalDevices.valueAt(i).clearAddress();
}
}
@ServiceThreadOnly
void clearLocalDevices() {
@@ -862,7 +850,7 @@ public class HdmiCecNetwork {
private boolean isLocalDeviceAddress(int address) {
for (int i = 0; i < mLocalDevices.size(); i++) {
int key = mLocalDevices.keyAt(i);
if (mLocalDevices.get(key).mAddress == address) {
if (mLocalDevices.get(key).getDeviceInfo().getLogicalAddress() == address) {
return true;
}
}

View File

@@ -77,8 +77,10 @@ class HdmiCecPowerStatusController {
private void sendReportPowerStatus(int powerStatus) {
for (HdmiCecLocalDevice localDevice : mHdmiControlService.getAllLocalDevices()) {
mHdmiControlService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPowerStatus(localDevice.mAddress,
Constants.ADDR_BROADCAST, powerStatus));
HdmiCecMessageBuilder.buildReportPowerStatus(
localDevice.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
powerStatus));
}
}
}

View File

@@ -1239,13 +1239,11 @@ public class HdmiControlService extends SystemService {
@ServiceThreadOnly
void onHotplug(int portId, boolean connected) {
assertRunOnServiceThread();
// initPortInfo at hotplug event.
mHdmiCecNetwork.initPortInfo();
if (connected && !isTvDevice()
&& getPortInfo(portId).getType() == HdmiPortInfo.PORT_OUTPUT) {
if (isSwitchDevice()) {
mHdmiCecNetwork.initPortInfo();
HdmiLogger.debug("initPortInfo for switch device when onHotplug from tx.");
}
ArrayList<HdmiCecLocalDevice> localDevices = new ArrayList<>();
for (int type : mLocalDevices) {
HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type);
@@ -1395,8 +1393,9 @@ public class HdmiControlService extends SystemService {
deviceInfo.getLogicalAddress(), deviceInfo.getPhysicalAddress(),
deviceInfo.getPortId(), deviceInfo.getDeviceType(), deviceInfo.getVendorId(),
newDisplayName, deviceInfo.getDevicePowerStatus(), deviceInfo.getCecVersion()));
sendCecCommand(HdmiCecMessageBuilder.buildSetOsdNameCommand(
device.mAddress, Constants.ADDR_TV, newDisplayName));
sendCecCommand(
HdmiCecMessageBuilder.buildSetOsdNameCommand(
deviceInfo.getLogicalAddress(), Constants.ADDR_TV, newDisplayName));
}
}
@@ -2294,7 +2293,9 @@ public class HdmiControlService extends SystemService {
}
sendCecCommand(
HdmiCecMessageBuilder.buildSetSystemAudioMode(
audioSystem().mAddress, Constants.ADDR_BROADCAST, true));
audioSystem().getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
true));
}
});
}
@@ -3200,7 +3201,6 @@ public class HdmiControlService extends SystemService {
return;
}
mCecController.clearLogicalAddress();
mHdmiCecNetwork.clearLogicalAddress();
mHdmiCecNetwork.clearLocalDevices();
}

View File

@@ -20,6 +20,7 @@ import static com.android.server.hdmi.HdmiConfig.IRT_MS;
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.util.Slog;
import android.view.KeyEvent;
import com.android.server.hdmi.HdmiControlService.SendMessageCallback;
/**
@@ -152,7 +153,7 @@ final class SendKeyAction extends HdmiCecFeatureAction {
// audio system device is still plugged in. Framework checks if the volume key forwarding is
// successful or not every time to make sure the System Audio Mode status is still updated.
if (mTargetAddress == Constants.ADDR_AUDIO_SYSTEM
&& localDevice().mAddress != Constants.ADDR_TV) {
&& localDevice().getDeviceInfo().getLogicalAddress() != Constants.ADDR_TV) {
sendCommand(HdmiCecMessageBuilder.buildUserControlPressed(getSourceAddress(),
mTargetAddress, cecKeycodeAndParams), new SendMessageCallback() {
@Override

View File

@@ -139,10 +139,14 @@ public class ActiveSourceActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage menuStatus = HdmiCecMessageBuilder.buildReportMenuStatus(
playbackDevice.mAddress, ADDR_TV, Constants.MENU_STATE_ACTIVATED);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage menuStatus =
HdmiCecMessageBuilder.buildReportMenuStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
Constants.MENU_STATE_ACTIVATED);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(menuStatus);
@@ -162,8 +166,8 @@ public class ActiveSourceActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
assertThat(playbackDevice.getActiveSource().logicalAddress).isEqualTo(
playbackDevice.mAddress);
assertThat(playbackDevice.getActiveSource().logicalAddress)
.isEqualTo(playbackDevice.getDeviceInfo().getLogicalAddress());
assertThat(playbackDevice.getActiveSource().physicalAddress).isEqualTo(mPhysicalAddress);
assertThat(playbackDevice.isActiveSource()).isTrue();
}
@@ -182,10 +186,14 @@ public class ActiveSourceActionTest {
audioDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(audioDevice.mAddress,
mPhysicalAddress);
HdmiCecMessage menuStatus = HdmiCecMessageBuilder.buildReportMenuStatus(
audioDevice.mAddress, ADDR_TV, Constants.MENU_STATE_ACTIVATED);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
audioDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage menuStatus =
HdmiCecMessageBuilder.buildReportMenuStatus(
audioDevice.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
Constants.MENU_STATE_ACTIVATED);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(menuStatus);

View File

@@ -73,7 +73,9 @@ public class DetectTvSystemAudioModeSupportActionTest {
mHdmiCecLocalDeviceAudioSystem.dispatchMessage(
HdmiCecMessageBuilder.buildFeatureAbortCommand(
Constants.ADDR_TV,
mHdmiCecLocalDeviceAudioSystem.mAddress,
mHdmiCecLocalDeviceAudioSystem
.getDeviceInfo()
.getLogicalAddress(),
Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE,
Constants.ABORT_UNRECOGNIZED_OPCODE));
}
@@ -106,6 +108,7 @@ public class DetectTvSystemAudioModeSupportActionTest {
}
};
mHdmiCecLocalDeviceAudioSystem.init();
mHdmiCecLocalDeviceAudioSystem.setDeviceInfo(mDeviceInfoForTests);
Looper looper = mTestLooper.getLooper();
hdmiControlService.setIoLooper(looper);

View File

@@ -150,12 +150,16 @@ public class DevicePowerStatusActionTest {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
mTestLooper.dispatchAll();
HdmiCecMessage expected = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage expected =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(expected);
HdmiCecMessage response = HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV, mPlaybackDevice.mAddress, HdmiControlManager.POWER_STATUS_STANDBY);
HdmiCecMessage response =
HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV,
mPlaybackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_STANDBY);
mNativeWrapper.onCecMessage(response);
mTestLooper.dispatchAll();
@@ -177,8 +181,9 @@ public class DevicePowerStatusActionTest {
public void queryDisplayStatus_sendsRequest_timeout_retriesSuccessfully() throws Exception {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
HdmiCecMessage expected = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage expected =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
mTestLooper.dispatchAll();
assertThat(mNativeWrapper.getResultMessages()).contains(expected);
@@ -188,8 +193,11 @@ public class DevicePowerStatusActionTest {
assertThat(mNativeWrapper.getResultMessages()).contains(expected);
HdmiCecMessage response = HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV, mPlaybackDevice.mAddress, HdmiControlManager.POWER_STATUS_STANDBY);
HdmiCecMessage response =
HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV,
mPlaybackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_STANDBY);
mNativeWrapper.onCecMessage(response);
mTestLooper.dispatchAll();
@@ -201,8 +209,9 @@ public class DevicePowerStatusActionTest {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
mTestLooper.dispatchAll();
HdmiCecMessage expected = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage expected =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(expected);
mNativeWrapper.clearResultMessages();
mTestLooper.moveTimeForward(TIMEOUT_MS);
@@ -225,12 +234,16 @@ public class DevicePowerStatusActionTest {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
HdmiCecMessage response = HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV, mPlaybackDevice.mAddress, HdmiControlManager.POWER_STATUS_STANDBY);
HdmiCecMessage response =
HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV,
mPlaybackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_STANDBY);
mNativeWrapper.onCecMessage(response);
mTestLooper.dispatchAll();
@@ -254,8 +267,9 @@ public class DevicePowerStatusActionTest {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus);
verify(mCallbackMock).onComplete(HdmiControlManager.POWER_STATUS_STANDBY);
@@ -278,12 +292,16 @@ public class DevicePowerStatusActionTest {
mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction);
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
HdmiCecMessage response = HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV, mPlaybackDevice.mAddress, HdmiControlManager.POWER_STATUS_STANDBY);
HdmiCecMessage response =
HdmiCecMessageBuilder.buildReportPowerStatus(
ADDR_TV,
mPlaybackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_STANDBY);
mNativeWrapper.onCecMessage(response);
mTestLooper.dispatchAll();
@@ -298,8 +316,9 @@ public class DevicePowerStatusActionTest {
mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessage = HdmiCecMessageBuilder.buildStandby(
mPlaybackDevice.mAddress, ADDR_TV);
HdmiCecMessage standbyMessage =
HdmiCecMessageBuilder.buildStandby(
mPlaybackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessage);
}
}

View File

@@ -795,12 +795,13 @@ public class HdmiCecLocalDeviceAudioSystemTest {
@Test
public void setActiveSource_localDevice_playback() {
mHdmiControlService.setActiveSource(mHdmiCecLocalDevicePlayback.mAddress,
mHdmiControlService.setActiveSource(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
SELF_PHYSICAL_ADDRESS,
"HdmiControlServiceTest");
assertThat(mHdmiControlService.getLocalActiveSource().logicalAddress).isEqualTo(
mHdmiCecLocalDevicePlayback.mAddress);
assertThat(mHdmiControlService.getLocalActiveSource().logicalAddress)
.isEqualTo(mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress());
assertThat(mHdmiControlService.getLocalActiveSource().physicalAddress).isEqualTo(
SELF_PHYSICAL_ADDRESS);
assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue();
@@ -809,12 +810,13 @@ public class HdmiCecLocalDeviceAudioSystemTest {
@Test
public void setActiveSource_localDevice_audio() {
mHdmiControlService.setActiveSource(mHdmiCecLocalDeviceAudioSystem.mAddress,
mHdmiControlService.setActiveSource(
mHdmiCecLocalDeviceAudioSystem.getDeviceInfo().getLogicalAddress(),
SELF_PHYSICAL_ADDRESS,
"HdmiControlServiceTest");
assertThat(mHdmiControlService.getLocalActiveSource().logicalAddress).isEqualTo(
mHdmiCecLocalDeviceAudioSystem.mAddress);
assertThat(mHdmiControlService.getLocalActiveSource().logicalAddress)
.isEqualTo(mHdmiCecLocalDeviceAudioSystem.getDeviceInfo().getLogicalAddress());
assertThat(mHdmiControlService.getLocalActiveSource().physicalAddress).isEqualTo(
SELF_PHYSICAL_ADDRESS);
assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isFalse();

View File

@@ -657,7 +657,9 @@ public class HdmiCecLocalDevicePlaybackTest {
// Test should ignore it and still keep the system audio mode on.
HdmiCecMessage message =
HdmiCecMessageBuilder.buildSetSystemAudioMode(
Constants.ADDR_AUDIO_SYSTEM, mHdmiCecLocalDevicePlayback.mAddress, false);
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
false);
assertThat(mHdmiCecLocalDevicePlayback.handleSetSystemAudioMode(message))
.isEqualTo(Constants.HANDLED);
assertThat(mHdmiCecLocalDevicePlayback.mService.isSystemAudioActivated()).isTrue();
@@ -669,7 +671,9 @@ public class HdmiCecLocalDevicePlaybackTest {
assertThat(mHdmiCecLocalDevicePlayback.mService.isSystemAudioActivated()).isFalse();
HdmiCecMessage message =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
Constants.ADDR_AUDIO_SYSTEM, mHdmiCecLocalDevicePlayback.mAddress, true);
Constants.ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
true);
assertThat(mHdmiCecLocalDevicePlayback.handleSystemAudioModeStatus(message))
.isEqualTo(Constants.HANDLED);
assertThat(mHdmiCecLocalDevicePlayback.mService.isSystemAudioActivated()).isTrue();
@@ -699,12 +703,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -724,12 +733,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -749,12 +763,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -774,12 +793,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -799,12 +823,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -824,12 +853,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -849,12 +883,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -874,12 +913,17 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(false, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageToAudioSystem =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -899,10 +943,13 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.onStandby(true, HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageToTv =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
@@ -1119,8 +1166,10 @@ public class HdmiCecLocalDevicePlaybackTest {
HdmiControlManager.POWER_CONTROL_MODE_BROADCAST);
mStandby = false;
// 1. DUT is <AS>.
HdmiCecMessage message1 = HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.mAddress, mPlaybackPhysicalAddress);
HdmiCecMessage message1 =
HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
mPlaybackPhysicalAddress);
assertThat(mHdmiCecLocalDevicePlayback.handleActiveSource(message1))
.isEqualTo(Constants.HANDLED);
assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue();
@@ -1137,16 +1186,20 @@ public class HdmiCecLocalDevicePlaybackTest {
mPlaybackPhysicalAddress);
mHdmiCecLocalDevicePlayback.dispatchMessage(setStreamPath);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.mAddress, mPlaybackPhysicalAddress);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
mPlaybackPhysicalAddress);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mWokenUp).isTrue();
assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue();
// 4. DUT turned off.
mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
HdmiCecMessage standbyMessageBroadcast =
HdmiCecMessageBuilder.buildStandby(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_BROADCAST);
assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessageBroadcast);
}
@@ -1158,11 +1211,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).contains(keyReleased);
@@ -1176,11 +1232,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_DOWN, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_DOWN);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_DOWN);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).contains(keyReleased);
@@ -1194,11 +1253,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_MUTE, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_MUTE);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_MUTE);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).contains(keyReleased);
@@ -1212,11 +1274,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyReleased);
@@ -1230,11 +1295,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_DOWN, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyReleased);
@@ -1248,11 +1316,14 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_MUTE, false);
mTestLooper.dispatchAll();
HdmiCecMessage keyPressed = HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased = HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
HdmiCecMessage keyPressed =
HdmiCecMessageBuilder.buildUserControlPressed(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
ADDR_TV,
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
HdmiCecMessage keyReleased =
HdmiCecMessageBuilder.buildUserControlReleased(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyPressed);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyReleased);
@@ -1347,8 +1418,10 @@ public class HdmiCecLocalDevicePlaybackTest {
mHdmiCecLocalDevicePlayback.dispatchMessage(setStreamPath);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.mAddress, mPlaybackPhysicalAddress);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
mPlaybackPhysicalAddress);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
}
@@ -1606,8 +1679,10 @@ public class HdmiCecLocalDevicePlaybackTest {
@Test
public void getActiveSource_localPlaybackIsActiveSource() {
mHdmiControlService.setActiveSource(mHdmiCecLocalDevicePlayback.mAddress,
mHdmiControlService.getPhysicalAddress(), "HdmiControlServiceTest");
mHdmiControlService.setActiveSource(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
mHdmiControlService.getPhysicalAddress(),
"HdmiControlServiceTest");
assertThat(mHdmiControlService.getActiveSource()).isEqualTo(
mHdmiCecLocalDevicePlayback.getDeviceInfo());

View File

@@ -386,9 +386,13 @@ public class HdmiCecLocalDeviceTest {
@Test
public void handleCecVersion_isHandled() {
@Constants.HandleMessageResult int result = mHdmiLocalDevice.onMessage(
HdmiCecMessageBuilder.buildCecVersion(ADDR_PLAYBACK_1, mHdmiLocalDevice.mAddress,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B));
@Constants.HandleMessageResult
int result =
mHdmiLocalDevice.onMessage(
HdmiCecMessageBuilder.buildCecVersion(
ADDR_PLAYBACK_1,
mHdmiLocalDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.HDMI_CEC_VERSION_1_4_B));
assertEquals(Constants.HANDLED, result);
}

View File

@@ -515,8 +515,11 @@ public class HdmiCecLocalDeviceTvTest {
HdmiCecFeatureAction systemAudioAutoInitiationAction =
new SystemAudioAutoInitiationAction(mHdmiCecLocalDeviceTv, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.addAndStartAction(systemAudioAutoInitiationAction);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, true);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
true);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -548,8 +551,11 @@ public class HdmiCecLocalDeviceTvTest {
new SystemAudioAutoInitiationAction(mHdmiCecLocalDeviceTv, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.addAndStartAction(systemAudioAutoInitiationAction);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, true);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
true);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc(

View File

@@ -184,9 +184,11 @@ public class HdmiCecPowerStatusControllerTest {
mHdmiCecPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_ON);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus);
}
@@ -197,9 +199,11 @@ public class HdmiCecPowerStatusControllerTest {
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus);
}
@@ -210,9 +214,11 @@ public class HdmiCecPowerStatusControllerTest {
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON, false);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus);
}
@@ -222,9 +228,11 @@ public class HdmiCecPowerStatusControllerTest {
mHdmiCecPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_ON);
assertThat(mNativeWrapper.getResultMessages()).contains(reportPowerStatus);
}
@@ -235,9 +243,11 @@ public class HdmiCecPowerStatusControllerTest {
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
assertThat(mNativeWrapper.getResultMessages()).contains(reportPowerStatus);
}
@@ -248,9 +258,11 @@ public class HdmiCecPowerStatusControllerTest {
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON, false);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress(),
Constants.ADDR_BROADCAST,
HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus);
}

View File

@@ -735,9 +735,11 @@ public class HdmiControlServiceTest {
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
mHdmiControlServiceSpy.playback().mAddress, HdmiControlManager.POWER_STATUS_ON);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
mHdmiControlServiceSpy.playback().getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_ON);
mNativeWrapper.onCecMessage(reportPowerStatus);
mTestLooper.dispatchAll();
@@ -756,10 +758,11 @@ public class HdmiControlServiceTest {
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
mHdmiControlServiceSpy.playback().mAddress,
HdmiControlManager.POWER_STATUS_STANDBY);
HdmiCecMessage reportPowerStatus =
HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
mHdmiControlServiceSpy.playback().getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_STANDBY);
mNativeWrapper.onCecMessage(reportPowerStatus);
mTestLooper.dispatchAll();

View File

@@ -175,20 +175,27 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS);
HdmiCecMessage reportPowerStatusOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS, POWER_ON);
HdmiCecMessage reportPowerStatusOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_ON);
action.processCommand(reportPowerStatusOn);
mTestLooper.dispatchAll();
@@ -218,20 +225,27 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS);
HdmiCecMessage reportPowerStatusOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS, POWER_ON);
HdmiCecMessage reportPowerStatusOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_ON);
action.processCommand(reportPowerStatusOn);
mTestLooper.dispatchAll();
@@ -261,21 +275,27 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS);
HdmiCecMessage reportPowerStatusTransientToOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_TRANSIENT_TO_ON);
HdmiCecMessage reportPowerStatusTransientToOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_TRANSIENT_TO_ON);
action.processCommand(reportPowerStatusTransientToOn);
action.handleTimerEvent(STATE_WAITING_FOR_REPORT_POWER_STATUS);
mTestLooper.dispatchAll();
@@ -283,8 +303,12 @@ public class OneTouchPlayActionTest {
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
HdmiCecMessage reportPowerStatusOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS, POWER_ON);
HdmiCecMessage reportPowerStatusOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_ON);
action.processCommand(reportPowerStatusOn);
mTestLooper.dispatchAll();
@@ -314,12 +338,15 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
@@ -360,12 +387,15 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
@@ -395,20 +425,27 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS);
HdmiCecMessage reportPowerStatusOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS, POWER_ON);
HdmiCecMessage reportPowerStatusOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_ON);
action.processCommand(reportPowerStatusOn);
mTestLooper.dispatchAll();
@@ -440,20 +477,27 @@ public class OneTouchPlayActionTest {
playbackDevice.addAndStartAction(action);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder
.buildGiveDevicePowerStatus(playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus);
mNativeWrapper.clearResultMessages();
assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS);
HdmiCecMessage reportPowerStatusOn = new HdmiCecMessage(
ADDR_TV, playbackDevice.mAddress, Constants.MESSAGE_REPORT_POWER_STATUS, POWER_ON);
HdmiCecMessage reportPowerStatusOn =
new HdmiCecMessage(
ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
Constants.MESSAGE_REPORT_POWER_STATUS,
POWER_ON);
action.processCommand(reportPowerStatusOn);
mTestLooper.dispatchAll();
@@ -487,11 +531,11 @@ public class OneTouchPlayActionTest {
mTestLooper.dispatchAll();
HdmiCecMessage reportPowerStatusMessage = HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
playbackDevice.mAddress,
HdmiControlManager.POWER_STATUS_ON
);
HdmiCecMessage reportPowerStatusMessage =
HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_ON);
mNativeWrapper.onCecMessage(reportPowerStatusMessage);
mTestLooper.dispatchAll();
@@ -499,10 +543,12 @@ public class OneTouchPlayActionTest {
assertThat(mHdmiControlService.isAddressAllocated()).isTrue();
assertThat(callback.getResult()).isEqualTo(HdmiControlManager.RESULT_SUCCESS);
assertThat(playbackDevice.isActiveSource()).isTrue();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
}
@@ -523,21 +569,23 @@ public class OneTouchPlayActionTest {
TestCallback callback = new TestCallback();
mHdmiControlService.oneTouchPlay(callback);
HdmiCecMessage reportPowerStatusMessage = HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
playbackDevice.mAddress,
HdmiControlManager.POWER_STATUS_ON
);
HdmiCecMessage reportPowerStatusMessage =
HdmiCecMessageBuilder.buildReportPowerStatus(
Constants.ADDR_TV,
playbackDevice.getDeviceInfo().getLogicalAddress(),
HdmiControlManager.POWER_STATUS_ON);
mNativeWrapper.onCecMessage(reportPowerStatusMessage);
mTestLooper.dispatchAll();
assertThat(callback.getResult()).isEqualTo(HdmiControlManager.RESULT_SUCCESS);
assertThat(playbackDevice.isActiveSource()).isTrue();
HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.mAddress, mPhysicalAddress);
HdmiCecMessage textViewOn = HdmiCecMessageBuilder.buildTextViewOn(playbackDevice.mAddress,
ADDR_TV);
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(
playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(activeSource);
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
}
@@ -574,8 +622,9 @@ public class OneTouchPlayActionTest {
mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF);
mTestLooper.dispatchAll();
HdmiCecMessage standbyMessage = HdmiCecMessageBuilder.buildStandby(
playbackDevice.mAddress, ADDR_TV);
HdmiCecMessage standbyMessage =
HdmiCecMessageBuilder.buildStandby(
playbackDevice.getDeviceInfo().getLogicalAddress(), ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessage);
}

View File

@@ -156,9 +156,9 @@ public class PowerStatusMonitorActionTest {
assertPowerStatus(ADDR_PLAYBACK_1, HdmiControlManager.POWER_STATUS_UNKNOWN);
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_1);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_1);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
reportPowerStatus(ADDR_PLAYBACK_1, false, HdmiControlManager.POWER_STATUS_ON);
@@ -195,9 +195,9 @@ public class PowerStatusMonitorActionTest {
assertPowerStatus(ADDR_PLAYBACK_1, HdmiControlManager.POWER_STATUS_ON);
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_1);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_1);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus);
@@ -224,14 +224,14 @@ public class PowerStatusMonitorActionTest {
action.start();
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_1);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_1);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
HdmiCecMessage giveDevicePowerStatus2 = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_2);
HdmiCecMessage giveDevicePowerStatus2 =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_2);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus2);
}
@@ -249,15 +249,15 @@ public class PowerStatusMonitorActionTest {
action.start();
mTestLooper.dispatchAll();
HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_1);
HdmiCecMessage giveDevicePowerStatus =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_1);
assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus);
HdmiCecMessage giveDevicePowerStatus2 = HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.mAddress,
ADDR_PLAYBACK_2);
HdmiCecMessage giveDevicePowerStatus2 =
HdmiCecMessageBuilder.buildGiveDevicePowerStatus(
mTvDevice.getDeviceInfo().getLogicalAddress(), ADDR_PLAYBACK_2);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus2);
}
@@ -270,7 +270,8 @@ public class PowerStatusMonitorActionTest {
}
private void reportPowerStatus(int logicalAddress, boolean broadcast, int powerStatus) {
int destination = broadcast ? ADDR_BROADCAST : mTvDevice.mAddress;
int destination =
broadcast ? ADDR_BROADCAST : mTvDevice.getDeviceInfo().getLogicalAddress();
HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus(
logicalAddress, destination,
powerStatus);

View File

@@ -167,12 +167,16 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, true);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
true);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -193,12 +197,16 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, true);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
true);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -217,12 +225,16 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, false);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
false);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -244,12 +256,16 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, true);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
true);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -271,12 +287,16 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
HdmiCecMessage reportSystemAudioMode = HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM, mHdmiCecLocalDeviceTv.mAddress, false);
HdmiCecMessage reportSystemAudioMode =
HdmiCecMessageBuilder.buildReportSystemAudioMode(
ADDR_AUDIO_SYSTEM,
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
false);
mHdmiControlService.handleCecCommand(reportSystemAudioMode);
mTestLooper.dispatchAll();
@@ -296,7 +316,8 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
mNativeWrapper.clearResultMessages();
@@ -321,7 +342,8 @@ public class SystemAudioAutoInitiationActionTest {
HdmiCecMessage giveSystemAudioModeStatus =
HdmiCecMessageBuilder.buildGiveSystemAudioModeStatus(
mHdmiCecLocalDeviceTv.mAddress, ADDR_AUDIO_SYSTEM);
mHdmiCecLocalDeviceTv.getDeviceInfo().getLogicalAddress(),
ADDR_AUDIO_SYSTEM);
assertThat(mNativeWrapper.getResultMessages()).contains(giveSystemAudioModeStatus);
for (int i = 0; i < RETRIES_ON_TIMEOUT; i++) {

View File

@@ -197,6 +197,7 @@ public class SystemAudioInitiationActionFromAvrTest {
}
};
mHdmiCecLocalDeviceAudioSystem.init();
mHdmiCecLocalDeviceAudioSystem.setDeviceInfo(mDeviceInfoForTests);
}
@Test