History log of /frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c1fa9afbcd1cafd205d46b2fd0bdaadccb7d29ea 27-Dec-2016 Donghyun Cho <donghyun@google.com> CEC: Revisit the behavior of HDMI_SYSTEM_AUDIO_ENABLED

Currently the system setting, HDMI_SYSTEM_AUDIO_ENABLED, is used to
store the latest system audio mode status so that TV can keep this
status over reboot. But because the name is a little confusing and the
behavior isn't intuitive, it is likely to use this in a wrong way.
This change renames this setting to HDMI_SYSTEM_AUDIO_CONTROL_ENABLED
and tweak the purpose of it. Now, it will act more like a switch for
System Audio Control feature, so user can disable or enable this feature
entirely. With this way, implementation of audio output option will
also become easier.

Bug: 31449672
Test: Tested on archer
Change-Id: Ice8717135272d4b86665a3452bfe7527c0d6c08b
(cherry picked from commit 7b7aa8fb31ccf0cd3f36162a52f080263dd89e77)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
88909ce50188f4800b11ba390ba0edab1df56be5 23-Dec-2016 Donghyun Cho <donghyun@google.com> CEC: Use isConnected() to check ARC transmission feasibility

Whenever every hotplug event occurs, ARC feature has been
disabled/enabled if needed in order not to establish ARC connection if
+5V status is false. The check, whether feature should be
disabled/enabled or not, is based on the device info of AVR. But it may
malfunction if the device info is stale because of rapid and repeated
plug in/out. This change simplifies this check by using isConnected()
instead of disabling/enabling full ARC feature.

Bug: 33567002
Test: Applied this change and plug in/out rapidly on archer.
Change-Id: I420270193d2f60f61f3c39a151c7e06d326651d2
(cherry picked from commit b0fd6a1bed5d522673233fbd51d1d7508c790c0c)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
afd26a250777521f692cbc2553349210f69a1bc1 23-Dec-2016 Donghyun Cho <donghyun@google.com> CEC: Revive a standby handler

When a device is going into standby state, every CEC message is supposed
to be handled by HdmiCecStandbyModeHandler. But the messages were
blocked by address allocation check and just buffered. This change
revives the standby handler so that the device can handle messages
properly during standby mode.

Bug: 30184027, Bug: 31873357, Bug: 33095971
Test: One touch play with chromecast works well during standby mode
Change-Id: I3315fdaee346838c6a2c68bad0ac64b94ab9723c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7609bc324d89ebf99ac04f21e992fdd7315d2be0 02-Dec-2016 Donghyun Cho <donghyun@google.com> Enable sendKeyEvent() for all types of devices

Previously there was only sendKeyEvent() implementation for TV and the
method was no-op for other devices. This change moves the event handling
logic into HdmiCecLocalDevice so as to make this method work on the
playback device.

Bug: 33285033
Test: Sent key event from playback device, and it worked.
Change-Id: I937502ab87ce823630b0f9a933355d5a4cc5e96a
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
bc6e372b25d7d62efecefba09304c5a66218c91a 03-Nov-2016 Donghyun Cho <donghyun@google.com> tv.cec: Update framework code to call Treble HAL

Bug: 32073236
Test: Checked CEC features works on fugu after applying Treble HAL
Change-Id: I26df037594e2505bd8f2d2bb6222cba5ddca2906
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c21f63aa9514fb5f34e195fade88f8545d935992 10-May-2016 Donghyun Cho <donghyun@google.com> CEC: Update system audio mode based on the current status of AVR

When AVR is newly discovered, make TV get the current status of AVR
first. Based on the response, TV will update and initiate system audio
mode if necessary.

Bug: 27858658, Bug: 27168826
Change-Id: I3084471db970d271693f10dae802d8abaccddf39
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
455f09d818d23d918d0146c91f977774cbfb0657 10-May-2016 Donghyun Cho <donghyun@google.com> CEC: Handle <Active Source> from AVR properly

To avoid timing issues, handling of <Active Source> was delayed until
corresponding tv input becomes ready. However, AVR is not considered as
a tv input, so delayed <Active Source> will not be processed. This
change makes <Active Source> from AVR handled immediately rather than
buffered.

Bug: 25630805
Change-Id: Iae8e86a84b5a9e5a2e62e457aaf93da67f145fac
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
0ab377917c4b2d4f754a03311f9b438a3ad37b82 16-Oct-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Replace determistic mute commands

Compatibility issues on deterministic mute control commands
<MUTE_FUNCTION>/<RESTORE_AUDIO_VOLUME> are hard to get around.
This CL falls back to going with a non-deterministic one <MUTE>.

Bug: 24986703
Change-Id: Ia4cc0cf5ce6846a8d3bfbe638487b76a9986de89
(cherry picked from commit bae1d89e5734c9a4341681712deb63213b0b8452)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c854c95b1b90d90c5906da2a21c0129a8098d3bf 12-Oct-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Comment for clarification of <Text View On>

Added a comment to clarify how the service is designed to handle
CEC commands <Text View On>/<Image View On>.

Bug: 24690166
Change-Id: Iaa1813b3ded76e8525141555d2aaff6dfb67888d
(cherry picked from commit 6667797016a28551202b40067fe90512185a7a61)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a22d77e24737b785a33987647758cd3c1db85527 05-Nov-2015 Terry Heo <terryheo@google.com> CEC: Check validity of tvinput id

Bug: 25006096
Change-Id: I1eec8c5ec863b85d66d9c9722101af7f7d3d2f40
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
f98b9e87f9258d4ffb53859de2a138e72174cc23 05-Oct-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Process missing port/device select request

The timing issue cause some port/device select request
to return error if made while the service is being initialized
waking up from sleep.

This CL buffers the request so that it can be handled as
expected once the service initialization and device discovery
is completed.

Bug: 23084229
Change-Id: I8bcdaf3b708c6b9bf75ea15304c08bd35bd0f6d0
(cherry picked from commit d0b01dfe0aaebd054165dfe2f5f4bd7d68703970)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
e6e8f3d589f42393cf02a2bd766d678d80dad874 11-May-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Let playback device send <Standby> upon power off

Let playback device send a command <Standby> based on the setting.
ACTION_SHUTDOWN leads to broadcast command to put all the devices
to sleep, and ACTION_SCREEN_OFF optionally turns off TV only.

Change-Id: Id458b23ce86b0c3179efa21cce85b721a47001be
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
1c86159142aa8b5d582cd53e1d16b874c99d3bc4 11-May-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Update ARC feature flag on hotplug" into mnc-dev
37f5bc281c40965f8604400d700e68c0d17e77b0 11-May-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Update ARC feature flag on hotplug

ARC feature flag should have been updated whenever hotplug[on]
was detected, so that the ARC can be established upon device
discovery. This CL rectifies the bug.

Bug: 20817208
Change-Id: I5053ad3f576d0e405b6d8fc0c4e6584e66ed0a86
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7cc51c631d6e7e5680ce661089524b7335d88756 30-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Reset active source/path before going into standby

Bug: 20681302
Change-Id: I2e6d460f9ec06d1ef988b7a7ff73a03586958484
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
b3492138913260f9f7f26f50bb1122f8e99f8e4e 24-Apr-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Check port id for ARC status update on hotplug"
a6d5dad9bf1f43e2b4cdf18728a4b7a0d4d76bb5 24-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Check port id for ARC status update on hotplug

Fixes a bug that was updating ARC status on hotplug event
regardless of the port for which the event occurred.

Bug: 20520664
Change-Id: I17c4f391af4dd221215412ed9e3ff3d730bbf152
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7e4b480a0bf9f93a428f7c46bfea77ebfdb92d40 20-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Prevent premature standby process completion

Handles the situation where standby is prematurely completed
by handleTerminateArc initiated in HdmiCecLocalDeviceTv.disableDevice().
Power status is now checked to stop the flow before removing
RequestArcTerminateAction which can call mPendingActionClearedCallback.

Also Make sure mPendingActionClearedCallback is set to null at the beginning
so that disable callback is not invoked unintentionally in
HdmiCecLocalDevice.checkIfPendingActionsCleared() which is supposed to work
at standby process only. It is now invoked by handleDisableDeviceTimeout
to make sure standby process is completed with PendingActionClearedCallback
at HdmiControlService.onStandby().

Bug: 20159835, Bug: 19930352
Change-Id: Iac29dfb6acff76182ff4e9563edc611406c23f3c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7b0cf6413218e5b5c549eea31733222fcffafabc 14-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Remove system audio on hotplug

System audio was not being immediately removed by polling mechanism
mechanism but was being checked three times in order to avoid accidental
polling failure. This came with a side effect of the system audio
not removed instantly even when the device is physically removed.

This CL relies on hotplug event to tell whether the device removal
should be done right away or has to wait for 3 polling intervals.

Bug: 20133405
Change-Id: I9dbd7a8b9e424d523d0c22e4cac19b341461b71e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
951e3e42f5943d90b74d9feb9fbc224afa59ed31 04-Apr-2015 Wally Yau <wyau@google.com> Reset system audio mode on startup rather than on stop.

Bug fixed - When TV was turned off and AVR was on, audio was routed back
to TV momentarily before the TV turned off.

b/19791264

Change-Id: Iad639b6ba151b6615a7f4ce49fddfa4fc485e16c
(cherry picked from commit b0efbf3898e80181210103f6ac535af69d3abb2d)
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
d35dfb6515c72ddf7b58f50f373097ea6fc4167e 06-Apr-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Let arc termination start before standby"
1139559fc23fc3991e87454e2088413c37b95334 06-Apr-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Support arc feature flag for multiple ports"
04f813c9b3d1d15bd9462a728ab983f21d937281 02-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Back up active input correctly against repeated active source commands

The repeated <Active Source> commands were incorrectly backing up
active input to use for <Inactive Source>. The input should
not be handled if the command comes from the current active source.

Bug: 20017736
Change-Id: I30e92dab2dce7c1b6835af553efae66c0934188e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5bcf5bf6b4203629e153dcb0646596e9b3f7c7c2 02-Apr-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Support arc feature flag for multiple ports

mArcFeatureEnabled is extended to a flag array to correctly
indicate the state of each port that supports ARC.

Bug: 19957954
Change-Id: I63e4dc2ebd4d71c5ebf59118a3076b52b489c2f2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a5445ce992a4e8ac5252975acedf3e5aec53867a 30-Mar-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Let arc termination start before standby

Bug: 19930352
Change-Id: Ie344f06a66beafecf64eccadc1881c4d2ec170b3
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6b2a6177aad44466794a9262a4f2f2c209a3f2e5 25-Mar-2015 Yu.Ishihara <Yu.Ishihara@jp.sony.com> Enable selecting device whose power status is not on

DeviceSelect() returns immediately if the active routing path
is selected even if the device is turned off and not displaying
anything.

This fix allows device to be selected again if target device's
power status is not on in order to wake it up, hence improve
the user experience.

Bug: 19724238
Change-Id: I3b62b9aa0aecaf2957a445d82e966d52b9be6879
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2da02a2021b5a9788e6163bcebab094decf6da42 05-Mar-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Do not start queued actions for TV device"
08c7116ab9cd04ad6dd3c04aa1017237e7f409ac 28-Feb-2015 John Spurlock <jspurlock@google.com> Remove unused imports in frameworks/base.

Change-Id: I031443de83f93eb57a98863001826671b18f3b17
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
736c3071d65d309693480bd0bece2e58e2b9c56d 28-Feb-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Do not start queued actions for TV device

Handling the queued actions is useful for playback device only.
It is not useful and does nothing for TV device which has its
own delayed message buffer to process the messages to be handled
later in time.

Change-Id: Ic4d507177cfdbc3b8a474e45dfd3862f4b1bd4a7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
757c097753a166a6f3ecbbcbf42075ce3ba1a7ed 23-Feb-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Switch ARC hardware circuit before device update

Audio Return Channel hardware circuit was being switched after
the device update initiated by hotplug event. The device instance
was already removed by the time ARC update was attempted, hence
caused an exception.

This CL ensure the config change is done in advance, when
the AVR device instance is still present.

Bug: 19250400
Change-Id: I31cf682f5c8d1a279a0703d10fe182f3da23d3db
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
10804eb2818ab59b763a37b4f6151693c2ebba7b 28-Jan-2015 Paul McLean <pmclean@google.com> Add additional info to AudioPort for enum/selection API.

Add "device name" member to AudioPort.
Moved unique device ID from DevicePort to AudioPort.
Straighten out confusion between "name" and "address"
Created string constants for Intent "extra" data keys.
Combine card/address data into "address" at sender.Add additional info to AudioPort for enum/selection API.
Parse out USB Device name in UsbCardsParser.

Change-Id: Ifd76b0298312090a8f39e638339f993b86d47080
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
9c5ccc3684e55e0ce7f2940bd13dfd7acdf85895 29-Jan-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Discard key event to itself" into lmp-mr1-dev
454fab52195f86d08d0b7626ed170af113e44695 29-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Discard key event to itself

Should discard keyevents if the target address is the device itself.

Bug: 19188660
Change-Id: Id47d79c996f60c9d90540f28c4b2509976d2f378
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
3f923474248e24706e7977a7512b0a35cff835a7 29-Jan-2015 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Add CEC device upon receiving <Report Physical Address>" into lmp-mr1-dev
2ee0d6f44d7274bb1846cc6ff7a60451539a2b51 28-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Stop ARC if hotplug event is asserted low

Updated to stop ARC as specified in HEAC 2.4 transmission condition.

Bug: 19170947
Change-Id: Ibf797ce3b49f32561ef0c36b6874e7ebe19ed65a
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7640d9895cf8fae7a99a7db5bba0079ba6022621 28-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Fix a regression bug

The HdmiControlService.getActiveSource() has a regression (exception)
when calling getDeviceInfoByPath since method should be called on
a service thread. Introduced a method that can be invoked safely
from the main thread.

Bug: 19170884
Change-Id: I393161e08c916270faf46147a97076bc573b808f
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7cd4a589af7cc6e6880799e86ef6febca5add46d 29-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Add CEC device upon receiving <Report Physical Address>

Help devices be processed sooner when new device detection operation
takes longer than usual.

Bug: 19181472
Change-Id: I96c29081a9c7c9f73ebcd027ed9d18056dc89bf9
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
cb8661c08f4a7b00eaa2ede06a30c32dd3cbc53b 18-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Add logic to return to internal source

This CL introduces a logic that, upon receiving <Inactive Source>
from the active source or a corresponding MHL subcommand, lets
the service return to one of internal inputs.

Introduced to handle it is a new type for HdmiDevice (INACTIVE)
that will be passed to input change listeners. The callback
is expected to transform to other mechanism such as intent,
to let TV app to decide which input to switch to, which will
be one of non-HDMI input that was viewed previously.

Bug: 19008579

Change-Id: I1922f4cd20e9220411061bb9d9fbe5fbc5676d48
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
d47abefc8269dae7fdfa2bb102bcb89cbea7c7b0 16-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Make TV try to allocate logical address 0 first

HDMI Spec says TV shall try to allocate TV() logical address, unlike
other kinds of devices that are recommended to use the previously
allocated one.

Also included are small changes:

- reply with 'can not provide source' if TV has no source to provide
- return the present device info if we have one at the given path

Bug: 19045081
Change-Id: Icf17cb581f0ef2274e252ec5665f80bb1c08b494
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2ab6d9fff36836c71bc0ee4afa25c11b48a9bd99 16-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Do not send <Active Source> when TV wakes up by one touch play

TV should respect the device that wakes up TV by one touch play
to keep its active source status by not sending <Active Source>.

Bug: 19039773

Change-Id: I0b27e95dcf986df90b25cc2a1891acd82940f13e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6e26f7f7b09dfd8495ec5478a7a4713dab346bc1 07-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Handle <Active Source> arriving before TvInputCallback.onAddInput

Resolves a timing-related bug that fails to process the command
<Active Source> at TV boot up. Checks if TV input required for
the command is ready to accept the request. If not, makes sure
the command is buffered, and processed later when the input is
ready.

Bug: 18896770

Change-Id: Id17e5e8468519b17daf61c962dd718ccc56fb0ea
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6ad7cbde22fe9752082ce01c9b9be213b07afefc 06-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Make deviceSelect work for MHL device

MHL device works on hotplug but not when API deviceSelect is invoked
to select it due to a bug not finding the right MHL device instance.
This CL rectifies it by searching for not only CEC but MHL devices
attached to TV.

Bug: 18909552
Change-Id: I4df1ead836090eb3a7476b7738be47a6970edb7d
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
ad1e3d7df42376cd2a257b6c3b2fed540658a6e3 02-Jan-2015 Jinsuk Kim <jinsukkim@google.com> CEC: Buffer <Set System Audio Mode>

<Set System Audio Mode> is another command that needs to be buffered
in case the command arrives before the system is ready to process it.
When processed, system audio mode will be enabled based on the
global setting.

Bug: 18809965

Change-Id: Ia6ebc4e2919e1b94498ca28f652c6db95f907f9c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
98d760e1c3123e6db8459f605d59a5689d56268c 22-Dec-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Let the caller check CEC device type

Device event listener mechanism invoke the callback on all kinds
of devices in order to deal with a caller who wants to get notified
for all types. TIF was changed to check the device type to make
sure it handles source type only.

Bug: 18832462
Change-Id: I5123fe79c09f623849b93b64d0c28e6a930dd437
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
1481a4282818939436f590d8c88aea2d19166b8e 17-Dec-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Pass port ID for set_audio_return_channel

This CL passes a port ID when enabling/disabling ARC in case
there are multiple HDMI ports that support the feature.

Bug: 18781204

Change-Id: I632518132bf07c8ae6f0ff5135429ca719b596b2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4fcbf0b93e15e60eeb8b08a32d895de07c73cb1b 08-Dec-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Explictly remove and add device when updating

Sending UPDATE_DEVICE doesn't translate remove/add devices
when its address (physical) has changed. Send expclit removal
addition event.

Bug: 18513567
Change-Id: Ibea6accf0358994b64289c1a785de21b598453f1
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6102bac706d351ce52ce385745f30aecaf835a2a 08-Dec-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Update CEC device info properly

CEC device information cannot be updated/notified properly if
the device was plugged to other port. This change makes
sure the updated information is reflected by device event
callback listeners.

Bug: 18513567
Change-Id: I62bbb741d3f89e225a50f86e315da014832d8118
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
1c72ba8ac3036e16a58cd1fd50c7cb01804e993e 26-Nov-2014 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Do not compare active input when updating" into lmp-mr1-dev
449c019f22de469feac4b46de633156b7963bf15 25-Nov-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Do not compare active input when updating

A recent change sets the active path ahead of calling
updateActiveInput. Removes the check between new and active
path as it is always successful thus stops the flow.

Bug: 18506537
Change-Id: I29471ffc6194baa1fad62063f1d192caa9000afd
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
546d867cb89099ed9036d54d1d49e11748c9a27e 23-Nov-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Do not issue non-effective <Routing Change>

CEC command <Routing Change> should not be issued if old and new path
are identical since it not only have no effect but also can lead certain
devices to taking unexpected action.

Bug: 18283251
Change-Id: I7a210b7aa20ce4b96ef0d260c4abfc10d4393e63
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
9899b663f4c512e4a9acaa5508f0fd86bed6e476 19-Nov-2014 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Use thread-safe version for avr info" into lmp-mr1-dev
86a1e5a16ed6d49ecbdfe78c3ca7a9afc7814264 18-Nov-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Use thread-safe version for avr info

getSystemAudioMode() should have used the thread-safe method
to get the information of the connected AVR.

Bug: 18426137

Change-Id: Ib3edff97337b5960160dd39d551fbfbbfdfce93b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7fa3a66470d2133796defd14a0600578758882ac 07-Nov-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Buffer messages coming from unknown device

Introduced a buffer for messages to be kept for later processing
when they arrive before the service is ready to handle them.
<Active Source>/<Initiate ARC> are handled in this CL to address
the reported bug.

Bug: 18277839

Change-Id: I1e73dd83dc9dd4a822fbcf4fda4c6221f09631cb
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7fb8e7f4ff524f9131a387efc2649aa78e4ae376 06-Nov-2014 Jungshik Jang <jayjang@google.com> CEC: Send <Give System Audio Mode> regardless of TV's setting.

When TV is brought back out of standby, it should send <Give System Audio Mode>
to audio receiver so that TV recovers system audio mode.
Current implementation sends <Give System Audio Mode> only when setting is "ON".
In order to fix this, this change sends <Give System Audio Mode>
regardless of TV's setting and update system audio mode according to
response of <Give System Audio Mode>.

Bug: 18267467
Change-Id: I2c3c05347c6f2a7a3a5e3772e4e26c77156eb740
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
326aef0c9402742e29c4503c857f93e75cf9a6ec 04-Nov-2014 Jungshik Jang <jayjang@google.com> Add recorder address to all recording listerner apis.

It enables to recognize which recorder reports record status.

Bug: 18248734
Change-Id: I248ad77212ce584dc16863cbe00639e7ac3c184a
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
bdf27fbf746bee11430c4db2ea6dfd026bae77fe 20-Oct-2014 Jinsuk Kim <jinsukkim@google.com> CEC: add getDeviceList()

Returns the list of all the connected CEC device information. This is
different from getInputDevices() which returns devices of source type only.

For this, turned the local device address list to unmodifiable so that it can
be used by any threads.

Now respects the device type info passed through <Report Physical Address>
rather than always defaulting to the one from HdmiUtil.getTypeFromAddress().
This ensures future compatibility when a device of reserved logical address
comes with a specific type.

Bug: 18046603
Change-Id: I5f7d5e31706efba1ad5dcf4bcfd4ffc918d1d940
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6f87b4e6b6db76cb32d449ad1fdf1946ff4e96f7 10-Oct-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Queue actions for starting later when not ready

Requests coming in while the service is still being brought up
were discarded. Changed to queue them so that they can be started
after the initialization is completed.

Bug: 17933899
Change-Id: Ic9d9cd2094b830c80dec54dd5ef6a18159a74dc7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7543497f8a8a8ba15edd622061f5d30dfbf6655a 25-Sep-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Send keys to active routing path

Previously keys were sent out only when active source was set. They should
be sent when only the active routing path is set in order to be able to
turn the device on using the remote.

Bug: 17647133
Change-Id: I6dc3eaf3a2115430d40c3dd73cb2ba226ba8164b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
720407ad06dbf4486ef6d724280640990d2fcd2a 15-Sep-2014 Jungshik Jang <jayjang@google.com> Fix cyclic mute

Bug: 17502271
Change-Id: I837315afce8193ac1948fffed66cbb8c755968e2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
6b096d349b8ea879ee152a50df66427c919adaba 12-Sep-2014 Jungshik Jang <jayjang@google.com> Remove unnecessary warning.

Bug: 17501260

Change-Id: I5e7edd6d1fc179c00306d745adc99bebdcb65316
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
d4a94db1cd44a536d535de890a0a14919a39a0dc 12-Sep-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Bug fixes for vendor-specific command handling

- Add sendStandby()
- Respond with <Feature Abort>[INCORRECT_MODE] when the listener
is not ready

Bug: 17379243
Bug: 17358887
Change-Id: I26a4157a70f11206978763fbbe69e4190e3e1d5c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
184b124ec22a796327642e3546d366179e693f07 12-Sep-2014 Yuncheol Heo <ycheo@google.com> Handle <Menu Status> message.

- Just accept the message, not to response <Feature Abort>.
- Added the CEC message validation info.

Bug: 17382771
Change-Id: I0c1ba870b0acfcd0414f0a3e7bb6c41483879116
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4480efa05aa5dd44f1432c3260be263546daf838 04-Sep-2014 Jungshik Jang <jayjang@google.com> Prevent sending <Feature Abort> for some messages.

This change fixes the following cases.
- <Report Power Status>(0x90)
- When TV receives <Report Power Status> as a reply of <Give Device Power Status>, TV does not send <Feature Abort>. But if a device sends <Report Power Status> actively, TV sends <Feature Abort>.
- <Set System Audio Mode>(0x72)
- <System Audio Mode Status>(0x7E) Directly address message is also defined.
- <Record Status>(0x0A) (We will support One-touch record function at least in Japan)
- <Timer Status>(0x35) (We will support Timer programming function at least in Japan)
- No response for <Record TV Screen>(0x0F)

Bug: 17382769
Change-Id: I8ae355337757710d54b788edfdf37293f96cfa97
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2e8f1b6399089626b4f0249427626ba6e63a62ef 03-Sep-2014 Jungshik Jang <jayjang@google.com> CEC: Revamp volume control action.

Here is a list of changes
1. Change volume control into event base not level base
2. Hide volume ui if volume change is triggered by CEC
3. Report volume change triggered by CEC in OSD message
4. Revamp HdmiLogger so that normal class uses static method only.
5. Apply format message to HdmiLogger's helper methods.

Bug: 17367215

Change-Id: I9f3cd41f7c66f76919059b463df956ed5176b054
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4b4b940c69d22304eb0734ed2432fc70ebadd462 02-Sep-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Fixes bugs in routing control

1) HdmiControlService#inInDeviceList was passed the parameters in
a wrong order. Fixed here. Turned the method to private as well.
2) Passed path not port to Routing control when handling active
path removal to update the active path correctly.
3) adb dumpsys hdmi_control outputs the status of the connected
CEC devices for debugging.

Bug: 17344892
Bug: 17346869
Change-Id: I289d980a2534a6159b12286dd43f159e1b4134d4
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
959d2db12c7c6a06465af1251bc4cece580a72a3 28-Aug-2014 Terry Heo <terryheo@google.com> CEC: Implement dump() of HdmiControlService

In addition, use hexadecimal address representation in HdmiPortInfo.toString()

Bug: 17310007
Change-Id: Iaba8f718f86a18a23b50f983053c7589dcdcfaf8
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
473119fdc36340f833e4b755ae7f50a6914e0a24 27-Aug-2014 Jungshik Jang <jayjang@google.com> Allow broadcast for <Set System Audio Mode>.

AVR may broadcst <Set System Audio Mode> to start system audio mode.
But we do handle direct message case.

Bug: 17292360
Change-Id: I9111f8122d58b31f3801e4e78f283db65e79330b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
f34e6075cb9cc559da776ba7360505a76f0c404d 27-Aug-2014 Jinsuk Kim <jinsukkim@google.com> Merge "Fix a bug that the HdmiCecLocalDeviceTv sends <User Control Released> message for unsupported keys" into lmp-dev
b64c2ba05bf64bb8015444fdcd706fa3238cb96c 26-Aug-2014 Dongil Seo <seo@google.com> Fix a bug that the HdmiCecLocalDeviceTv sends <User Control Released> message for unsupported keys

Bug: 17170954

Change-Id: I0ad624eb3a1301b24865228164d8dd5a97452329
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
339227da7cf025ce4ae0c85ddc52643d63972321 25-Aug-2014 Jungshik Jang <jayjang@google.com> Fix several bugs in HdmiControlService.

1. Fix HdmniLogger null pointer exception
2. Should check arc enabled port for arc requests
3. Disallow ARC action coming from indirect AVR device.
4. Check original opcode of feature action
5. Add bitmasking to all parameters of cec message.

Bug: 17243701, Bug: 17238394, Bug: 17241401
Change-Id: Iff0da78b0de9a29fb00e683c261528e0baea66af
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
f67113f7abd536cc3eb888344bf925762aa5278e 22-Aug-2014 Jungshik Jang <jayjang@google.com> Use common language code in hdmi service.

Bug: 15844859
Change-Id: I12945f743730ee234b25a40543ea44345abf43fa
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
1bfc75fc047d69968f0f5ec217270bf751293d7f 22-Aug-2014 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Skip routing control/internal source selection conditionally" into lmp-dev
d530719b169c8a10dccaefc413261e1b127cee63 22-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Skip routing control/internal source selection conditionally

This is necessary for TV woken up by <Text/Image View On> to override
initial TV source selection/routing control, since the input change
will immediately come from external device.

Bug: 17189114
Change-Id: I4aa1ac31bc7f6ab554e29a9e6065e534e15abd58
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2626958c4b5a284abb0a342933d79135e0b9d8d0 21-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Fix a bug not sending <Set Stream Path>

Passes the right flag to manual routing switching method for TV
to send out <Set Stream Path> to the newly selected device(path).

Bug: 17169555
Change-Id: I4a14925e366a433f36b28170e37d041053c0060d
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5e85359a36c14c0c568b73f138f6c8f4baad9b8e 20-Aug-2014 Terry Heo <terryheo@google.com> Merge "CEC: Broadcast language setting whenever it changes" into lmp-dev
1ca0a43251a31bb1b4253dc404316cc4b840f497 18-Aug-2014 Terry Heo <terryheo@google.com> CEC: Broadcast language setting whenever it changes

Bug: 16995278
Change-Id: Id695d4d2f213cd8039c9915f3d4e451e829e715c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
87f22a2870ac363a5849a7252c1bd44ce2b809c2 20-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Hook up device select API to MHL device RAP

This lets the input selection on UI perform MHL RAP signalling, and
CEC routing control.

Bug: 17141884
Change-Id: Ic1605175c5779a9a3c43df954baf9fdb6f154d36
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
ed0864557b3340ab7db00e2dc95b29c4b8bb485d 18-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Invoke events listener upon MHL device state change

With this change, mobile devices state changes are propagated through
TIF to UI, hence the input pickers shows the mobile devices as
expected.

Bug: 16986744
Change-Id: Id633207acf4f814f57d43cc1de5f8cb88ac23ad6
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8960d1b1552729e3dfd33deee951ac75933ad8e5 13-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Replace the usage of logical address with id for HdmiDeviceInfo

Introduced 'id' of HdmiDeviceInfo to replace the direct use of logical address
as id. This accomodates the identification of MHL device with ease. Also updated
TIF to use id instead of logical address.

Bug: 16986744
Change-Id: Ifa827fb5e5fcf1d2f612f0845accbfe5c03734aa
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
bcfa0677d4b015457b73b1147c96e4ad2946b2be 11-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Make sure CEC switch info is always updated

The CEC switch information was not updated as expected if
Device Discovery action is in progress. Refactored to have the
update routine gets called regardless of the presence of action.

Conflicts:
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java

Bug: 16931883
Change-Id: I629e8b646bef54599c1a706bf1c797ecebf8616b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
302938e9b54132d8e81a1b2646e58bb97dfd4656 12-Aug-2014 Jinsuk Kim <jinsukkim@google.com> Merge "CEC: Fix two bugs" into lmp-dev
1f8d1c576f06ed63c21d175fb0c86db596f59353 12-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Fix two bugs

- <Routing Change> goes out with invalid parameter (F.F.F.F) for
old path if the active source/path is not set. Should have been
set to internal path (0.0.0.0)
- <User Control Pressed> was still sent when active source was not
set. Fixed to discard it.

Bug: 16966486
Bug: 16965446
Change-Id: I5abb062be42c17514b3ed7ac930d7a3535fc9132
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
61daf6b38e7a7ada2a6ca5a60539a54b9c6810bd 08-Aug-2014 Jungshik Jang <jayjang@google.com> Hook up device power status change to TIF

Instead of introducing new api update existing
IDeviceEventListener

Bug: 16445063
Change-Id: I93bfc736a06a78e83c95877a53f4f241b51ed9c0
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5008486b09c588bf3409b70d9ee29225e8593c64 07-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Content observer to handle TV Setting update

Replaced the API setOption with content observer to read/get informed of
the CEC settings.

Bug: 16855247

Change-Id: Ieff2399bbfe83f05af4448e7337f91ef40d1e24d
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
410ca9c7a4a2d69af5c81e76320433bfda05cafe 07-Aug-2014 Jungshik Jang <jayjang@google.com> Implement PowerStatusMonitorAction.

After this change, need to add an api which reports
power status change to other component like TIF.

Bug: 16445063
Change-Id: I5a347057af6140ece82acb5d15e3a8b3779b18be
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
61f4fbd2e8436a1ecd478c2a1f516d064a24d43b 06-Aug-2014 Jungshik Jang <jayjang@google.com> Rename HdmiCecDeviceInfo into HdmiDeviceInfo.

In order to include mhl device info to device info,
rename HdmiCecDeviceInfo into HdmiDeviceInfo.

BUG: 16215362

Change-Id: I30fb0216061fbbdd6fdc1b82c63af83f1b678597
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4fdd0f47bc10bdbc429c6316c2cc98a747570b12 06-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Hide CEC devices behind non-CEC switch

CEC devices connected to a non-CEC switch are not under full control
of TV. Will be filtered out from the list of devices provided to TIF.

Bug: 16797838
Change-Id: I8f8ff3a33ddeeb0a2877ca0e596a24096e648879
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8e93c84739902f5adaa499b474f39e3c4807bc1c 06-Aug-2014 Jungshik Jang <jayjang@google.com> Prevent hot plug detection action from multiple device polling

Along with this removed unused code and wrong references in
java doc.

Change-Id: I8b2fd8065f582f60cde5ada0e1669515b6a60f3f
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
d57ba99a5a50346f6d16208780bb87e1f09a9a35 06-Aug-2014 Jungshik Jang <jayjang@google.com> Merge "More tweaks for recording" into lmp-dev
e9e0f070e34a612fb3bab5d97bdec1e266da4a20 05-Aug-2014 Jungshik Jang <jayjang@google.com> More tweaks for recording

1. Mask TimerClearedStatus message result.
2. Use proper mask for media info.

Change-Id: I7ed6f6839c333460a7bef5e5a84af2a9a34c6d97
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
faa49bc896be859d5bcf2da3bddd4507b5e6494c 05-Aug-2014 Jungshik Jang <jayjang@google.com> Fix bugs on timer recording action.

1. Apply masking to feature abort of SetXXXTimer
2. Announce error when failed to send SetXXXTimer.
3. Remove TimerRecordingAction when deivce is disabled.
4. Report clear timer record error thru onClearTimerRecordingResult.

Change-Id: Id243aa25481dad57509b4229ca214fa9b6b00fdc
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
fc44e4e03c5f6486efb7457965dcf7eaf36bc971 04-Aug-2014 Yuncheol Heo <ycheo@google.com> Let STB oneTouchPlay on SCREEN_ON event.

- Eleborate the reason code to initiate the initialization.

Bug: 16668375
Change-Id: I4ce657a9438e4f7baa7df2eaa102eb1ce1a7bccb
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
e5a9337ebe738633cf7b66141cdf76efcdc5754c 25-Jul-2014 Jungshik Jang <jayjang@google.com> Implement clear timer.

This change implements clear timer, which sends
<Clear xxx Timer> to recorder, and reponse of it,
<Timer Cleared Status>.
Along with it, add result parser for [Timer Status Data].

Bug: 16160962

Change-Id: I1f48ec055aa93dc836156525de8b7ef921aad8b5
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
58500f43ecbed3f92d7c077fb6ce396252cd00ea 04-Aug-2014 Jinsuk Kim <jinsukkim@google.com> CEC: Make deviceSelect to active device a no-op

Changing input to already the active source should return
immediately without initiating routing control. This is also required
for processing the incoming <Active Source>

Also set the flag in intent for input change to start a new
activity from a service. The service fails to launch an activity
without it.

Bug: 15570939
Change-Id: I9b20b31137dfa4dc847bc43cc7fd35e669d0dec7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
25c20298ad04e0e591e0cfdc0bb9d01a985433ab 31-Jul-2014 Yuncheol Heo <ycheo@google.com> Add the CEC message handler for the standby mode.

- Associate the state of AutoWakeUp with the pref value.

Bug: 16661406
Change-Id: I1299c6ca287aac4127e397a08b5af00190aa5b0b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7c3a95633d307c4be30c9dbbf1071063aa7a3c64 01-Aug-2014 Jinsuk Kim <jinsukkim@google.com> Fix bugs in active source command handling in HdmiControl

- Make sure input change listener is invoked
- The command from new device at the active path should
start routing control

Change-Id: Ic0ca52d42cc1738f9effced322b00f3bd1957f60
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7e74206693f4ee93afb902d5b3446e2384f2a13d 30-Jul-2014 Jinsuk Kim <jinsukkim@google.com> System API HdmiControlService.getActiveSource

Added getActiveSource to provide Tv Input Service with the information
on HDMI active source/routing path. TIS side will be handled separately.

Change-Id: I3d7c12a6c9da9f96a7f22ba1f66ac2559928858d
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
43c23e273e1b78caf26899eca5a4f51df9d52400 29-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Invoke input change listener at path change

Previously input change listener is not invoked if the routing change
does not cause the TV port change, but this failed to trigger the change
from an active source connected to port 1 to a non-cec device also
connected to port 1. Do this by comparing paths not ports.

Also did some cleanup:
- Avoid allocating empty lists too often for getActions
- ActiveSource.invalidate()

Change-Id: Id79531e2552ef7fa38bd604796108b8650db69a1
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
26ba7fddcaeb052710ca8672889830dabcbfd3ac 29-Jul-2014 Yuncheol Heo <ycheo@google.com> Make it pass CECT 11.1.3 System standby

- Accept the broadcast <Standby> message.
- Fix the bug that onStandyCompleted() is called mutliple times.
- Fix the issue that <Standby> message is not sent when going to
the standby state, since the local device was cleared already.

Bug: 16497304
Change-Id: Ib04ad2386621929814a801edd6b6c0e1a3902a7c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
72b7d738d5b9254594726304cdb1777b54d95631 24-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Give clear distinction between active source/active routing path

Previously in HdmiControlSerivce, active routing path was mixed with
the physical address of the active source, but these two concepts needs
clearer distinction.

Defined a new variable for active source that contains both logical/physical
address to keep active routing path separate. This change makes it possible
to write the flow more closely to the guideline.

Also added to this CL is flag notifyInputChange, which allows the device/
routing change triggered by external event to trigger InputChangeListener
to get TIF notified. For routing control, the device info passed to TIF
has the path information in the field mPhysicalAddress (other fields are
invalid).

Bug: 16519939
Change-Id: I8b400bc48e874b0866500655773aea38ab945fe4
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
68bed6c5d7a000ccea469dc67fa9b4b9bfff7ac4 25-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Merge "Add portID information in HdmiCecDeviceInfo" into lmp-dev
2b152015ff94f20b9ec3ef284fb83105f8b3c831 25-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Add portID information in HdmiCecDeviceInfo

This change makes it convenient to get the HDMI port ID from the device
info without having to look it up through a separate HdmiPortInfo, which
happens in many places.

Also removed port information lookup loop by introducing two maps variable
in Control Service: port path ->port ID, and port ID -> port info.

Bug: 16547583
Change-Id: Ibfff722a16b626230766058efcc819e9c8ca0663
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
12e5dcefe136b58562f39604e6a8460ac92cb895 24-Jul-2014 Jungshik Jang <jayjang@google.com> Replace osd message for record status with IHdmiRecordCallback.

Add new interface, IHdmiRecordCallback, in order to handle
result of all recording features, One Touch Record and
Timer Recording.
HdmiRecordCallback is clientside interface which uses
RecordSource as return of getOneTouchRecordSource,
instead of raw byte array.

Along with it, add TimerRecordingAction.

Bug: 16160962

Change-Id: If0ed7abc5f45b020b39555cac585becbe8ee7da4
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
b6591b8e5399099dc6b7693e0fc719b613aba89c 23-Jul-2014 Jungshik Jang <jayjang@google.com> Implement OneTouchRecordAction and stop one touch record.

In addition to it, add api for clearTimerRecording as well.
Separately, I will replace logic for notifying message with callback
interface.

Bug: 16160962

Change-Id: I2368f7c697eb44ed4542c0ec4412c63a6ae41a5c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
49b47bbef8a8d27e9707d5d24848040519586a7a 22-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Invoke device event listeners when clearing CEC devices

This updates the client of HdmiControlService so that CEC devices
will disappear when thd CEC control is disabled.

Bug: 16467361

Change-Id: If6fad3be0aa3335aa7f955c0586040250e9c0e06
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5ad57168da6456e8e4935aaa8512a7f77b74b0a1 21-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Invoke callback for HdmiControlService.deviceSelect() for internal source

The call should be always successful if device to switch to is internal
TV source as setting it as the active source doesn't require communication
with other devices. Added the missing callback invocation.

Change-Id: I9968098316a955509f4de0e7af6f4407087ad4a2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
377dcbd53af4529c352d453424539b069909fce4 15-Jul-2014 Jungshik Jang <jayjang@google.com> Hook up system audio mode

Whenever system audio mode is changed, it should notify to AudioManager
so that AudioManager changes internal output or mute status accordingly.
To have more clear cut between last setting and current system audio mode,
renamed mSystemAudioMode into mSystemAudioActivated and added
getLastSystemAudioMode() which returns last system audio mode value stored
in global settings (NVM).

Bug: 16002150
Change-Id: I5d01d879c1c5a9a3f4b0cf2d25e9e74c26c52fa0
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
544b62bb863788727587ee292596451e461fc0a7 14-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Apply hdmi control options to operation

Use the flag mAudioDeviceOff/mAutoWakeup to conditionally perform
the operation

Change-Id: I1595d8a64170d5047e621491a09279e04e3b4302
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
97affee67b6d88da40af41b36f02ecb2b823daff 11-Jul-2014 Jungshik Jang <jayjang@google.com> Start system audio initialization mode on new device discovery.

If a new device is avr and current tv setting is system audio mode,
we should launch SystemAudioAutoInitiationAction.

Bug: 15843140

Change-Id: I8db89e9be21572e304e6eebb5948a7981df14e90
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
09ffc846af78f949d2847003db9f793bfb5eefaa 11-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Store active source/active port in HdmiControlService when disabled

This lets the service keep track of the latest change made by TV app
or TIF regarding active source/port.

Bug: 16222083
Change-Id: I0f1a4520eb3e52ca5024567b0f1fbe4fd59e8cbf
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
af2acf0447aff34450cde2bcfb35dff9cf631729 11-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Keep preferred address for HdmiControlService

Uses SystemProperties to store/retrieve preferred logical address

Bug: 15843075
Bug: 15844858
Change-Id: Ie1304805cbec4e11ef4b44a5cceb108121c60581
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2c1d7b3b9f7afeddca69a90e395624907e2b63bf 12-Jul-2014 Yuncheol Heo <ycheo@google.com> Merge "Handle TODO in SystemAudioActionFromTv."
c516d65fd96cdc39f9935ddb80d26ee6499a77bf 11-Jul-2014 Yuncheol Heo <ycheo@google.com> Handle TODO in SystemAudioActionFromTv.

- Added onFinishedCallback to handle the deferred starting of FeatureAction.

Bug: 15843078, Bug: 15841546
Change-Id: I6cb5fba91d6115e8bb02c38601a72ed315c22e2f
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
d05f67f9721e1f9194a1f57cf7481b4be65366b3 11-Jul-2014 Yuncheol Heo <ycheo@google.com> Handle <Feature Abort> after <System Audio Mode Request>.

- Fix some wrong return values.

Bug: 15841647
Change-Id: Ia4596e87204196b48429d55da4945f84de51a07b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a9f10629f4bc1a82761917645ff4d2b6d42e47b3 11-Jul-2014 Jungshik Jang <jayjang@google.com> Start address allocation when hdmi cec is re-enabled.

When a user turns hdmi cec on from system settings or other possible way,
hdmi control service should start over from logical address allocation.
As device discovery action from bootup is slightly different from
one from enabling hdmi cec, added additional params to all notification
method which is called when logical address allocation is done.

Bug: 16222082

Change-Id: Ib73be5f642646918b470d769dc563753c4ff48d3
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7ecfbaed6e902aea151bc1919cf7771bbd868fc4 11-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Read/Write flags from/to system settings

Use Settings for storing several flags/values to keep the data persistent
across power cycle, and also to make them configurable via system Settings UI.

Bug: 16185931

Change-Id: I98650863e4237fd91c1b35717f14a570e049427c
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7468f1db0a6b8d386c015ad466a204994a9e8420 11-Jul-2014 Jungshik Jang <jayjang@google.com> Merge "Revamp HDMI-CEC system audio mode integration with audio service."
6f34f5ab8ab1b1db7887e5405d8b0031e105ab05 08-Jul-2014 Jungshik Jang <jayjang@google.com> Revamp HDMI-CEC system audio mode integration with audio service.

In previous change we use setForceUse(FORCE_MEDIA, XXX) method
in order to set specific audio output type, such as LINE, HDMI_ARC,
and SPDIF. But it turns out that it conflicts with bluetooth
a2dp which uses the same setForceUse(FORCE_MEDIA, yyy).

This change is based on several conditions.

1. When other non-speaker devices are on, prevent system audio
from turing on.
2. In order to keep track of other devices' connectivity and to
turn off system audio if other device like bluetooth or
headphone preempts current output, register OnAudioPortChangeListner
to audio manager.
3. All possible system audio outputs can be merged with other
outputs without priority.

Change-Id: Id4e47d99db64b9f77a17c2c28c47787ab8980bf7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c068bb5a0468bf605b0398e6f0ea5721917de4ee 07-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Support HdmiControlService.sendKeyEvent for both TV/playback device

Added another parameter deviceType for HdmiControlService to
run the specified local device for sendKeyEvent.

Bug: 15844076
Change-Id: I598ef320ae94bba0ace38701ae0ca12fd0625559
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4fc1d105fc279bf7df6c876e160672866bdad8e7 09-Jul-2014 Jungshik Jang <jayjang@google.com> Revamp disabling device in local device.

When a cec deivce turns into disabled mode such as power off, standby,
and cec feature disabled, cec service should execute cleanup tasks.
Including cleaning up all feature actions, each device should run
their own cleanup.
It should stop system audio mode and arc for tv, while it should
send inactive source for for playback device.
Along with this, to prevent stale feature action, added timeout
to local device so that if there is stale action, it enforce to
finish it.

Bug: 16118520

Change-Id: I5ce30ab0f4459b6e2834f8d31b6a7ff789b35d07
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
b69aafbfaddd8a6ac84b366b5db640cdd7e95354 11-Jul-2014 Jungshik Jang <jayjang@google.com> Hook up missing volume-change with AudioManager.

Whenever new volume change is notified from system audio,
hdmi control service should delegate it to AudioManager.
Note that, it should set FLAG_HDMI_SYSTEM_AUDIO_VOLUME,
which prevents audio manager from notifying volume-
change event back to hdmi control service.

Change-Id: I6621f517a4d20226aea9159bbae6b699e2c2ffd0
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
75a77e7d6cbfc287c6126efd28b338b48b7ea70c 09-Jul-2014 Yuncheol Heo <ycheo@google.com> Add HdmiCecMessageValidator to verify the incoming messages.

- Remove all param's length-check-logics in the package.

Bug: 16051295, Bug: 16117332, Bug: 15841545
Change-Id: If48ad9731f4f4613fd22aa3d9ada7ba3142bc999
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
255edb556e289a53d1c62a700028c25dab90010e 08-Jul-2014 Jungshik Jang <jayjang@google.com> Merge "Fix broken build."
8866c810b6778714da69ebc023ed432491caad92 08-Jul-2014 Jungshik Jang <jayjang@google.com> Fix broken build.

Change-Id: I9b0fe05a090238f27f226111e344f68c119ef4f7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8f2ed357a23fac4a55da43d20138b438b4ac79a7 07-Jul-2014 Jungshik Jang <jayjang@google.com> Handle <Set Osd Name> in TV.

When TV receives <Set Osd Name> it should update the name of
device and should notify them who are listening device changes.

Bug: 16115666
Change-Id: Ic3b60def8858ca5b7041202135d5dcaf47fa06e7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c4ae64d541e72b9d4d5b0e101e432223c9ffcc15 08-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Merge "Intent definition for HdmiControlService for OSD display"
24c23c1dd82870be4c09f3c5b6ae354de722de94 07-Jul-2014 Jungshik Jang <jayjang@google.com> Remove a TODO checking device power.

Since we enforce to run poll devices when hot plug event is fired,
we don't need to have arc management triggered by separate +5 power change.

Bug: 15841645
Change-Id: I619f8975688f63cb09cb7a296de52b558b494901
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c7eba0f1db8928ca779933a564a06989e22a8532 07-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Intent definition for HdmiControlService for OSD display

Intent action/extra for TV app to show a message on screen about events
HdmiControlService need to report for user's attention. The app
needs system permission HDMI_CEC to receive the intent.

Change-Id: I4fbe4621efa20a17ca64a3ca8f2df64bee03c51b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
119160a68195bcb2f5bdf4a269807e01228eca97 07-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Add vendor-specific command API for HdmiControl

Vendor-specific commands are not handled by the service. This CL
opens an API for vendors to implement customized handling of
CEC commands specific to their needs.

Change-Id: I8bfa3b891bd7994a903b3b41d7c2b27464167afa
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
b38cd68b240d99e8c8ae6ff1802a574696b420cd 07-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Update HdmiControlService.deviceSelect()

The device selection action should have stopped if
TV's own power goes to standby in the middle. This CL
implements the right behavior.

Some TODO's about OSD banner were removed as they
can be handled in caller (TV app) when invoking the API
or upon receiving the callback based on the result. One
more callback result constant was added accordingly.

Bug: 15843137
Bug: 15844312
Bug: 15845651

Change-Id: Ib118fd6e80e9abdfb531e3f321d8db1c9cec45bd
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
c0c20d0522d7756d80f011e7a54bf3b51c78df41 04-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Removed class HdmiCec

Most of the constants in HdmiCec are internal use only. Moved them
to service, and dispersed the rest to other relevant classes.

Also moved HdmiCecMessage class to service as it doesn't need to be
open ouside the service.

Change-Id: I7b2ce3bf465330aa4d7fcd05f9aefa1e6c8b056a
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
cae6627702a3bae3121f0ebbb9c8069e77f81cc7 04-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Obtain TV power status correctly in HdmiControlService

Bug: 15845654

Change-Id: I28b97e7ecb462b4fbaf6ac573e4d0fc9fcf724da
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5344cd98e69f92e70d52969b1851c9d8f9e81853 03-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Launch routing control in HdmiControlService at boot up

Change-Id: I918c2a0da26a7cda20ee703dfeeacae276ec8373
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
0f94217e9043e9dee329fa7167ee5be75eef0c23 04-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Merge "Add API setProhibitMode in HdmiControlService"
4d43d93743222311c6377d4904c19ccb93699d3b 03-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Add API setProhibitMode in HdmiControlService

setProhibitMode sets a flag inside the service that indicates if
input switch request will be processed or not. Sets to true when
TV is doing something for which TV display should be fixed, like
channel scan, software update - collectively called 'prohibit mode'.

Change-Id: I8ac623023210b58b684b9af3ac475a5fe0d09435
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
04fd28046acc2ac74339ed94cec76a0bfda846f7 03-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Update routing control action for HdmiControlService

Added an argument queryDevicePowerStatus on which routing control action flow
should be based.

Bug: 15845652

Change-Id: Ib8a2d31792aad67289308167d07f660c3438be78
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
ea1e84b8ca6cdfa971b9e868c3ecd0569863e218 04-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Merge "Implement some apis for TV Input Framework and HdmiControlService"
9c37e1f53ea4734bfe5ae156dc5399ce5f2c7ccc 02-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Implement some apis for TV Input Framework and HdmiControlService

- setInputChangeListener()
- getInputDevices()

Change-Id: I6f7d6d9c7094018e2b6b5ba37f63c8ee5df00e37
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
517cc7f99effa4ab174db560548b8495adfdd4e0 04-Jul-2014 Jungshik Jang <jayjang@google.com> Merge "Remove two TODOs from HotpulgDetectionAction."
26dc71e7feefb2417fd5f007af68614c1c197cf8 04-Jul-2014 Jungshik Jang <jayjang@google.com> Remove two TODOs from HotpulgDetectionAction.

Bug: 15844023
Bug: 15841646

Change-Id: I4022c48a9fdb1963f755895ec5ff0370157050c7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
38db629d897e9d7c8e31ce0a7e985981e3e12996 01-Jul-2014 Yuncheol Heo <ycheo@google.com> Handle the power state change.

- Add BrocastIntent listener to catch SCREEN_ON/OFF intents.
- Add callbacks onTransitionToStandBy(), onStandBy() in HdmiCecLocalDevice.java.
- When it gets the SCREEN_OFF intent, the state will be TRANSITION_TO_STANDBY,
then when there is no outstanding actions, the state will be STANDBY.
- When the state is STANDBY, the TV device will broadcast <StandBy>.
- When it gets the SCREEN_ON intent, the state will be TRANSITION_TO_ON,
then when the initialization is done, the state will be ON.
- When the state is ON and it receives <StandBy> CEC message, it will force
the system to go to sleep.
- When the state is STANDBY and it receives the cec messages to wake-up the
system, it will force the system to wake up from sleep.
- Manage the active source state for the playback device.

Change-Id: Ib473219a0b0deb5224df89386db5a83720000411
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
160a6e5b99de15ce755e2e5521dce32d81ab180a 01-Jul-2014 Jinsuk Kim <jinsukkim@google.com> Add setOption for HdmiControlService

Bug: 15845304
Change-Id: I96b285ae3938aeecdd44b2c08a178def33bd2bf2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
ca5be9a8fbc91daece39c851ca3f09d60b24b870 01-Jul-2014 Jungshik Jang <jayjang@google.com> Remove SystemAudioAutoInitiationAction when SystemAudioActionFromAvr started.

Bug: 15845309
Change-Id: I1eefeca3aab117f2def08fe9fbbea81987ef11a8
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a13da0d5913757e2456020c69481f98d0e44c090 30-Jun-2014 Jungshik Jang <jayjang@google.com> Add api, setArcMode, used to turn on/off ARC.

Usual TV can switch on and off of ARC feature in its settings page.
Along with it, removed locking block from the code,
because arc flags are accessed by actions and internal services.

Change-Id: I737ac0c2671b537551eaac202d2065cc99c6d0a0
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
92b77cf9cbf512e7141cad6fef5a38d0682dde43 27-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Refactor handling sequences in HdmiControlService

- Rewrote some methods to match more closely to the handling
sequences in guideline
- Added setControlEnabled() API in the aidl
- Handled <Routing Control> command
- Handled some scenarios invoking RoutingControlAction

Change-Id: I5db0c6fc775cef709c2e0f338b85937deebf2a54
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
5e3916a6f14545e033ca1dc56d33ba2983c7ee03 30-Jun-2014 Jungshik Jang <jayjang@google.com> Start ARC initiation action when if avr is connected to ARC enabled port.

Change-Id: Ia9efbd1e86a1ed560500034925ccc31c61372fee
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8fa36b110be29d92a9aba070fa4666eefb14b584 25-Jun-2014 Jungshik Jang <jayjang@google.com> Implement volume control action in cec service.

Hdmi CEC's volume control is based on key event handling
but in android we can only get delta of volume change.
VolumeControlAction simulates key event action from
delta of volume change. However, it's highly dependent
on <Report Audio Status> message coming from AVR.
This implementation waits 900ms for <Report Audio Status>
message and if no message arrives it finishes action.
Instead, HdmiCecLocalDeviceTv consumes it after action
termination so that Tv can reflect system audio's
volume all the time.

Change-Id: I0442d31721365acdc009c8fa1c1e0a4361e4a1cc
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8333571bd5e0a08773a1679964f8d96227af3356 24-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Handle incoming active source-related commands for HdmiControlService

Handles incoming commands <Active Source>, <Inactive Source>, <Request
Active Source> that concern the active source update/report.

Defined mPrevPortId which is used to allow switching back to the input
set previously by <Active Source> or deviceSelect() when receiving
<Inactive Source>.

Also fixed a bug sending <Active Source> with wrong parameters.

Change-Id: I47fd804755c5c6beca38ddb21bb388a455d74f63
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a858d221ff86c497e745222ea15bab141e337636 23-Jun-2014 Jungshik Jang <jayjang@google.com> Notify ARC status update to AudioService.

Whenever ARC status is updated it should be notified to
AudioService so that it reroutes audio output to others.

Bug: 15841544, Bug: 15844022, Bug: 15844112

Change-Id: I06674ee4dd22c0f9be08e33fbacdd785578ba55f
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
e9cf1583c74fd03977c1ecb14520663710f14439 23-Jun-2014 Jungshik Jang <jayjang@google.com> Rename canChangeSystemAudioMode on HdmiCecLocalDeviceTv with hasSystemAudioDevice.

Change-Id: Id9ddcf377b30ef86ceb7c3933f2a89f1d95ab842
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a5b7414970c85217e88015e78ecbc5ba093dead3 23-Jun-2014 Jungshik Jang <jayjang@google.com> Introduce @ServiceThreadOnly and @IothreadOnly to HdmiControlService

Many of hdmi service modules assumes that it runs on
service thread without any lock. But it's a bit
hard to distinguish whether a method runs on
service thread or not even though there is run-time
assertion (runOnServiceThread()) is top of method.
@ServiceThreadOnly interface documents that a method should
run on service thread while @IoThreadOnly documents
that a method should run on io thread.

Change-Id: Ia4a6a48675d2302fb2cb7a8a807fcf112da5d4e7
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
fa8e90db6a84ce1b19af86d46b547664d8a7ac37 23-Jun-2014 Jungshik Jang <jayjang@google.com> Add thread safe cec device info list.

This change keeps separate data container for thread safe access to
infos of all cec devices.

Change-Id: Ia1ad5deef2258e53ade73da784beb0372fd94282
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
7f0a1c54a837da7ebbb6f7eb56f44894e0df22c2 23-Jun-2014 Jungshik Jang <jayjang@google.com> Fix missing param to system audio mode action.

Change-Id: I3a4aa3dcdcf8378b51e86367f9bca1fc87a28603
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
ea67c183fe5511ad99aeaae1a32b5245bd020e36 19-Jun-2014 Jungshik Jang <jayjang@google.com> Add for System Audio Mode

Note that this is skeleton change and do not merge
till get full review from outside of CEC team.

This change introduce four apis for System Audio Mode

1. boolean canChangeSystemAudioMode()
- Whether to change system audio mode or not.

2. setSystemAudioMode(boolean enabled, IHdmiControlCallback callback);
- Change system audio mode.

3. add/removeSystemAudioModeChangeLister.
- Register/deregister listner for AudioModeChange.

4. getSystemAudioMode()
- Whether to system audio is enabled or not.

Change-Id: I1e82365155a9f7f6c3ac5d9db4871cf6bad46865
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
13c030e828a90fcfc57b52024b72326757cec583 20-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Do not have HdmiControlService report deviceEvent for TV itself

DeviceEvent should be used only for the other logical device,
not the TV device itself.

Also fixed a but not updating the logical address after the allocation.

Change-Id: I80cec9d5bb4b95d003c9d1c7ea13f02d7e76b322
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
4893c7efde52411ad051ef5c20251439f4098eac 19-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Report device status event in HdmiControlService

This change allows the event listener (TIF) to get notified
of the CEC logical device status change (addition/removal),
and update the available tv inputs accordingly.

Change-Id: I7f2798ad47212120ecac8093ad281f683a3d125e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a062a9339add79a84862a34e363e3e454a6ec435 18-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Implement portSelect/sendKeyEvent for HdmiControlService

TIF (TV Input Framework) uses these API to switch inputs, send
keys for selected device on CEC bus. Also renamed getActiveInput
to getActivePortId to use a unified term for port/input.

Change-Id: I8196825c0d960988cc1c0bb58a628ccd8ab1957e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
187d01765b935d07936f74343b4f4af590c239a1 17-Jun-2014 Jungshik Jang <jayjang@google.com> Add SystemAudioAutoInitiationAction and SystemAudioStatusAction

Once all device discovery action is done if there is audio amplifier
on device list, it should trigger system audio initiation action.
On or off of system audio is decided by Tv's last audio setting
(speaker). If system audio was the last audio setting, it will
try to turn on system audio; otherwise will turn it off.

In other hands, SystemAudioStatusAction is added to update
system audio status (mute or volume) after
SystemAudioAutoInitiationAction. In fact, RequestArcAction has
almost same code as it has and will refactore RequesArcAction
in the following changes.

Change-Id: I3d591242e79549cb73e14546f0d057ba08f878ef
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
79c58a4b97f27ede6a1b680d2fece9c2a0edf7b7 16-Jun-2014 Jungshik Jang <jayjang@google.com> Rearrange ownership between Hdmi control modules.

Here is a list of changes on this. (R: rationale)
1. HdmiCecLocalDeviceTv takes over responsibilty of device info
management.
R: All devices infos are added or removed by only Tv's
device discovery and hot plug detection mecanism

2. Each HdmiCecLocalDevice manages FeatureAction and Cec
message cache.
R: There is no direct connection between actions that
are created in different device action. If there is
an same actions created from different local device,
they should be managed independently.

3. Active path and logical address is managed by
HdmiCecLocalDevice.
R: All device should know active path of current source.

4. All system audio & ARC features are handled by
HdmiCecLocalDeviceTv
R: In terms of ARC, theoretically, any device can be transmiter of
ARC but TV is the de facto device
On other hands, for system audio Tv is the recipeint
of request.

Change-Id: Iac9ff43fb41798ed4f94c61d23345fe5fe777fbb
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
60cffce420db4c3395f86d3b9bb36003adf26f5d 12-Jun-2014 Jungshik Jang <jayjang@google.com> Refine new device action.

There are many ways to initiate new device action
1. When receives <Report Physcial Address>
2. When receives <Active Source> from unregistered device.

If new device is audio system, it should start
ARC and system audio initiation action.

Along with this consolidate device remove actions.

Change-Id: I189afd8bec7270d6a1734a28632593b71932d9e8
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
0a3316bcfdac9f5f40d1349d97d10329c70f7e30 14-Jun-2014 Jinsuk Kim <jinsukkim@google.com> Boilerplate class for vendor-specific commands for HdmiControlService

Vendor-specific commands in HDMI-CEC protocol needs to be handled
by OEM. This CL introduces a boilerplate class that should be filled
in to handle it for TV device.

Change-Id: I56b9aac973f1cff27ea8654850334d2d5f6838fe
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
a6ce7708d6124224399241503fadcafe0c4684d4 10-May-2014 Jinsuk Kim <jinsukkim@google.com> DeviceSelectAction for HdmiControlService

DeviceSelectAction is the main handler for the API deviceSelect() which is
used to choose a new active source among logical devices on the bus.

Change-Id: I77582a1f873423fc316d89f67a89a867461a76b2
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
092b445ef898e3c1e5b2918b554480940f0f5a28 11-Jun-2014 Jungshik Jang <jayjang@google.com> Move message handling logic to local device instead of service.

Local device is in charge of handling incoming messages
and for some messages such as <set menum language> or
<report physical address> each device has slightly different
behavior. Instread of checking destination address and
local device status from service, this change leaves it
to each local device.
Note that some messages are still left on service
and will be refactored in the following changes.

Along with this, following changes are included.
1. add missing jin interfaces
set_option
set_audio_return_channel
is_connected
Note that get_port_info is under review of jinsuk's change
2. if tv device receives <Report Physical Address>,
starts NewDeviceAction.
3. add constants variables related to new interfaces.
4. add two helper methods for physical address and vendor
id handling

Change-Id: I9c9d04744bc09fbf38431ecfa6e77097b0618a37
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
3ee65720e91c7f92ad5a034d7052122a606aa8d5 03-Jun-2014 Jungshik Jang <jayjang@google.com> Refactor HdmiCecLocalDevice and logical address allocation logic.

1. Factor out logical allocation logic to HdmiControlService.
2. Contains a reference to HdmiControlService rather than
HdmiCecController so that it enables to access service's logic
directly.
3. Move launch device discovery logic to HdmiCecLocalDeviceTv.

Change-Id: Ic97b4d51311a3c18f6d586c2245cac410cbd370e
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
8b308d93c8fdcc7304b33d9b445ae3807eae97c8 29-May-2014 Jungshik Jang <jayjang@google.com> Start Device Discovery after logical address allocation.

Usually TV initiates Device Discovery sequence after logical address
allocation of local devices. For that added new callback interface
to AddressAllocationCallback to HdmiCecDevice.
Along with this, add onAddressAllocated to HdmiLocalDevice so that
start sending local device information once logical allocation is done.

Change-Id: I4cdc5dd7770674a17a0f23c383a6c1ca221e3104
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
2918e9e133de8066ab497a5f8dac1c310c792767 20-May-2014 Jinsuk Kim <jinsukkim@google.com> CEC Initialization per device type

CEC initialization may vary from device type to type. Changed logical address
map to HdmiCecLocalDevice map to handle it. These per-type classes for local
device will be extended also to take care of incoming CEC commands that should
require different action based on device type.

Change-Id: Ia59a464607b14e942fcf83e63aa1d6310ca6a575
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java