Search in sources :

Example 1 with AllocateAddressCallback

use of com.android.server.hdmi.HdmiCecController.AllocateAddressCallback in project android_frameworks_base by crdroidandroid.

the class HdmiControlService method allocateLogicalAddress.

@ServiceThreadOnly
private void allocateLogicalAddress(final ArrayList<HdmiCecLocalDevice> allocatingDevices, final int initiatedBy) {
    assertRunOnServiceThread();
    mCecController.clearLogicalAddress();
    final ArrayList<HdmiCecLocalDevice> allocatedDevices = new ArrayList<>();
    final int[] finished = new int[1];
    mAddressAllocated = allocatingDevices.isEmpty();
    // For TV device, select request can be invoked while address allocation or device
    // discovery is in progress. Initialize the request here at the start of allocation,
    // and process the collected requests later when the allocation and device discovery
    // is all completed.
    mSelectRequestBuffer.clear();
    for (final HdmiCecLocalDevice localDevice : allocatingDevices) {
        mCecController.allocateLogicalAddress(localDevice.getType(), localDevice.getPreferredAddress(), new AllocateAddressCallback() {

            @Override
            public void onAllocated(int deviceType, int logicalAddress) {
                if (logicalAddress == Constants.ADDR_UNREGISTERED) {
                    Slog.e(TAG, "Failed to allocate address:[device_type:" + deviceType + "]");
                } else {
                    // Set POWER_STATUS_ON to all local devices because they share lifetime
                    // with system.
                    HdmiDeviceInfo deviceInfo = createDeviceInfo(logicalAddress, deviceType, HdmiControlManager.POWER_STATUS_ON);
                    localDevice.setDeviceInfo(deviceInfo);
                    mCecController.addLocalDevice(deviceType, localDevice);
                    mCecController.addLogicalAddress(logicalAddress);
                    allocatedDevices.add(localDevice);
                }
                // Address allocation completed for all devices. Notify each device.
                if (allocatingDevices.size() == ++finished[0]) {
                    mAddressAllocated = true;
                    if (initiatedBy != INITIATED_BY_HOTPLUG) {
                        // In case of the hotplug we don't call onInitializeCecComplete()
                        // since we reallocate the logical address only.
                        onInitializeCecComplete(initiatedBy);
                    }
                    notifyAddressAllocated(allocatedDevices, initiatedBy);
                    mCecMessageBuffer.processMessages();
                }
            }
        });
    }
}
Also used : HdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo) ArrayList(java.util.ArrayList) AllocateAddressCallback(com.android.server.hdmi.HdmiCecController.AllocateAddressCallback) ServiceThreadOnly(com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)

Example 2 with AllocateAddressCallback

use of com.android.server.hdmi.HdmiCecController.AllocateAddressCallback in project platform_frameworks_base by android.

the class HdmiControlService method allocateLogicalAddress.

@ServiceThreadOnly
private void allocateLogicalAddress(final ArrayList<HdmiCecLocalDevice> allocatingDevices, final int initiatedBy) {
    assertRunOnServiceThread();
    mCecController.clearLogicalAddress();
    final ArrayList<HdmiCecLocalDevice> allocatedDevices = new ArrayList<>();
    final int[] finished = new int[1];
    mAddressAllocated = allocatingDevices.isEmpty();
    // For TV device, select request can be invoked while address allocation or device
    // discovery is in progress. Initialize the request here at the start of allocation,
    // and process the collected requests later when the allocation and device discovery
    // is all completed.
    mSelectRequestBuffer.clear();
    for (final HdmiCecLocalDevice localDevice : allocatingDevices) {
        mCecController.allocateLogicalAddress(localDevice.getType(), localDevice.getPreferredAddress(), new AllocateAddressCallback() {

            @Override
            public void onAllocated(int deviceType, int logicalAddress) {
                if (logicalAddress == Constants.ADDR_UNREGISTERED) {
                    Slog.e(TAG, "Failed to allocate address:[device_type:" + deviceType + "]");
                } else {
                    // Set POWER_STATUS_ON to all local devices because they share lifetime
                    // with system.
                    HdmiDeviceInfo deviceInfo = createDeviceInfo(logicalAddress, deviceType, HdmiControlManager.POWER_STATUS_ON);
                    localDevice.setDeviceInfo(deviceInfo);
                    mCecController.addLocalDevice(deviceType, localDevice);
                    mCecController.addLogicalAddress(logicalAddress);
                    allocatedDevices.add(localDevice);
                }
                // Address allocation completed for all devices. Notify each device.
                if (allocatingDevices.size() == ++finished[0]) {
                    mAddressAllocated = true;
                    if (initiatedBy != INITIATED_BY_HOTPLUG) {
                        // In case of the hotplug we don't call onInitializeCecComplete()
                        // since we reallocate the logical address only.
                        onInitializeCecComplete(initiatedBy);
                    }
                    notifyAddressAllocated(allocatedDevices, initiatedBy);
                    mCecMessageBuffer.processMessages();
                }
            }
        });
    }
}
Also used : HdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo) ArrayList(java.util.ArrayList) AllocateAddressCallback(com.android.server.hdmi.HdmiCecController.AllocateAddressCallback) ServiceThreadOnly(com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)

Example 3 with AllocateAddressCallback

use of com.android.server.hdmi.HdmiCecController.AllocateAddressCallback in project android_frameworks_base by DirtyUnicorns.

the class HdmiControlService method allocateLogicalAddress.

@ServiceThreadOnly
private void allocateLogicalAddress(final ArrayList<HdmiCecLocalDevice> allocatingDevices, final int initiatedBy) {
    assertRunOnServiceThread();
    mCecController.clearLogicalAddress();
    final ArrayList<HdmiCecLocalDevice> allocatedDevices = new ArrayList<>();
    final int[] finished = new int[1];
    mAddressAllocated = allocatingDevices.isEmpty();
    // For TV device, select request can be invoked while address allocation or device
    // discovery is in progress. Initialize the request here at the start of allocation,
    // and process the collected requests later when the allocation and device discovery
    // is all completed.
    mSelectRequestBuffer.clear();
    for (final HdmiCecLocalDevice localDevice : allocatingDevices) {
        mCecController.allocateLogicalAddress(localDevice.getType(), localDevice.getPreferredAddress(), new AllocateAddressCallback() {

            @Override
            public void onAllocated(int deviceType, int logicalAddress) {
                if (logicalAddress == Constants.ADDR_UNREGISTERED) {
                    Slog.e(TAG, "Failed to allocate address:[device_type:" + deviceType + "]");
                } else {
                    // Set POWER_STATUS_ON to all local devices because they share lifetime
                    // with system.
                    HdmiDeviceInfo deviceInfo = createDeviceInfo(logicalAddress, deviceType, HdmiControlManager.POWER_STATUS_ON);
                    localDevice.setDeviceInfo(deviceInfo);
                    mCecController.addLocalDevice(deviceType, localDevice);
                    mCecController.addLogicalAddress(logicalAddress);
                    allocatedDevices.add(localDevice);
                }
                // Address allocation completed for all devices. Notify each device.
                if (allocatingDevices.size() == ++finished[0]) {
                    mAddressAllocated = true;
                    if (initiatedBy != INITIATED_BY_HOTPLUG) {
                        // In case of the hotplug we don't call onInitializeCecComplete()
                        // since we reallocate the logical address only.
                        onInitializeCecComplete(initiatedBy);
                    }
                    notifyAddressAllocated(allocatedDevices, initiatedBy);
                    mCecMessageBuffer.processMessages();
                }
            }
        });
    }
}
Also used : HdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo) ArrayList(java.util.ArrayList) AllocateAddressCallback(com.android.server.hdmi.HdmiCecController.AllocateAddressCallback) ServiceThreadOnly(com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)

Example 4 with AllocateAddressCallback

use of com.android.server.hdmi.HdmiCecController.AllocateAddressCallback in project android_frameworks_base by AOSPA.

the class HdmiControlService method allocateLogicalAddress.

@ServiceThreadOnly
private void allocateLogicalAddress(final ArrayList<HdmiCecLocalDevice> allocatingDevices, final int initiatedBy) {
    assertRunOnServiceThread();
    mCecController.clearLogicalAddress();
    final ArrayList<HdmiCecLocalDevice> allocatedDevices = new ArrayList<>();
    final int[] finished = new int[1];
    mAddressAllocated = allocatingDevices.isEmpty();
    // For TV device, select request can be invoked while address allocation or device
    // discovery is in progress. Initialize the request here at the start of allocation,
    // and process the collected requests later when the allocation and device discovery
    // is all completed.
    mSelectRequestBuffer.clear();
    for (final HdmiCecLocalDevice localDevice : allocatingDevices) {
        mCecController.allocateLogicalAddress(localDevice.getType(), localDevice.getPreferredAddress(), new AllocateAddressCallback() {

            @Override
            public void onAllocated(int deviceType, int logicalAddress) {
                if (logicalAddress == Constants.ADDR_UNREGISTERED) {
                    Slog.e(TAG, "Failed to allocate address:[device_type:" + deviceType + "]");
                } else {
                    // Set POWER_STATUS_ON to all local devices because they share lifetime
                    // with system.
                    HdmiDeviceInfo deviceInfo = createDeviceInfo(logicalAddress, deviceType, HdmiControlManager.POWER_STATUS_ON);
                    localDevice.setDeviceInfo(deviceInfo);
                    mCecController.addLocalDevice(deviceType, localDevice);
                    mCecController.addLogicalAddress(logicalAddress);
                    allocatedDevices.add(localDevice);
                }
                // Address allocation completed for all devices. Notify each device.
                if (allocatingDevices.size() == ++finished[0]) {
                    mAddressAllocated = true;
                    if (initiatedBy != INITIATED_BY_HOTPLUG) {
                        // In case of the hotplug we don't call onInitializeCecComplete()
                        // since we reallocate the logical address only.
                        onInitializeCecComplete(initiatedBy);
                    }
                    notifyAddressAllocated(allocatedDevices, initiatedBy);
                    mCecMessageBuffer.processMessages();
                }
            }
        });
    }
}
Also used : HdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo) ArrayList(java.util.ArrayList) AllocateAddressCallback(com.android.server.hdmi.HdmiCecController.AllocateAddressCallback) ServiceThreadOnly(com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)

Example 5 with AllocateAddressCallback

use of com.android.server.hdmi.HdmiCecController.AllocateAddressCallback in project android_frameworks_base by ResurrectionRemix.

the class HdmiControlService method allocateLogicalAddress.

@ServiceThreadOnly
private void allocateLogicalAddress(final ArrayList<HdmiCecLocalDevice> allocatingDevices, final int initiatedBy) {
    assertRunOnServiceThread();
    mCecController.clearLogicalAddress();
    final ArrayList<HdmiCecLocalDevice> allocatedDevices = new ArrayList<>();
    final int[] finished = new int[1];
    mAddressAllocated = allocatingDevices.isEmpty();
    // For TV device, select request can be invoked while address allocation or device
    // discovery is in progress. Initialize the request here at the start of allocation,
    // and process the collected requests later when the allocation and device discovery
    // is all completed.
    mSelectRequestBuffer.clear();
    for (final HdmiCecLocalDevice localDevice : allocatingDevices) {
        mCecController.allocateLogicalAddress(localDevice.getType(), localDevice.getPreferredAddress(), new AllocateAddressCallback() {

            @Override
            public void onAllocated(int deviceType, int logicalAddress) {
                if (logicalAddress == Constants.ADDR_UNREGISTERED) {
                    Slog.e(TAG, "Failed to allocate address:[device_type:" + deviceType + "]");
                } else {
                    // Set POWER_STATUS_ON to all local devices because they share lifetime
                    // with system.
                    HdmiDeviceInfo deviceInfo = createDeviceInfo(logicalAddress, deviceType, HdmiControlManager.POWER_STATUS_ON);
                    localDevice.setDeviceInfo(deviceInfo);
                    mCecController.addLocalDevice(deviceType, localDevice);
                    mCecController.addLogicalAddress(logicalAddress);
                    allocatedDevices.add(localDevice);
                }
                // Address allocation completed for all devices. Notify each device.
                if (allocatingDevices.size() == ++finished[0]) {
                    mAddressAllocated = true;
                    if (initiatedBy != INITIATED_BY_HOTPLUG) {
                        // In case of the hotplug we don't call onInitializeCecComplete()
                        // since we reallocate the logical address only.
                        onInitializeCecComplete(initiatedBy);
                    }
                    notifyAddressAllocated(allocatedDevices, initiatedBy);
                    mCecMessageBuffer.processMessages();
                }
            }
        });
    }
}
Also used : HdmiDeviceInfo(android.hardware.hdmi.HdmiDeviceInfo) ArrayList(java.util.ArrayList) AllocateAddressCallback(com.android.server.hdmi.HdmiCecController.AllocateAddressCallback) ServiceThreadOnly(com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)

Aggregations

HdmiDeviceInfo (android.hardware.hdmi.HdmiDeviceInfo)5 ServiceThreadOnly (com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly)5 AllocateAddressCallback (com.android.server.hdmi.HdmiCecController.AllocateAddressCallback)5 ArrayList (java.util.ArrayList)5