History log of /frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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/HdmiCecMessageBuilder.java
3e1564ee397ef833cba351153029317786f3d6bb 12-Aug-2014 Terry Heo <terryheo@google.com> CEC: Handle Remote Control command

Generate an Android key event when a UserControl message is received.
And report menu state active when a MenuRequest message is received to
notify sender can send a UserControl message.

Bug: 16938007
Change-Id: Id8f393dc254508b9e7a6fa203f8e817fbe807e38
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.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/HdmiCecMessageBuilder.java
cd97baf4d08f9a23797eb6a8eb0d57bba1086bec 02-May-2014 Jinsuk Kim <jinsukkim@google.com> Define SendKeyAction for HdmiControlService

SendKeyAction is one of FeatureAction classes that handles HDMI-CEC UCP/UCP
(User Control Pressed/Release) command transmission flow mechanism.

Change-Id: Iede8479103330c1f9db516218c6a94d09ef6b7f4
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
63a2e0696ce2a04fbe0f1f00cfe9c93189f944da 27-May-2014 Yuncheol Heo <ycheo@google.com> Add SystemAudioAction(FromAvr|FromTv).

The system audio can be initiated by Tv itself or by AVR through
<Set System Audio Mode> CEC message.

This CL also includes:
- Add HdmiConstants, HdmiUtil class to handle various constants and
utility functions.
- Add default message dispatcher to all queued actions.
- Add an argument on HdmiControlService.removeAction(class) to prevent
from removing the caller itself.

Change-Id: I9fd9089bed876f04b58c483879b64edfae94a298
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
cc5ef8c918e96516a5c51cc40735a1b8a24d8497 27-May-2014 Jungshik Jang <jayjang@google.com> Implement device discovery sequence.

When device discover is launched it goes through the following step

1. clear all existing devices
2. send <Polling Message> of all logical addresses
excecpt one of local device
3. Once got all allocated logical addresses, gather physical address of
them
4. Once got physical address of them, gather display name of them
5. Once got display names, gather vendor id of them
5. Once got vendor id of them, register all gathered info to
internal device info list.

Change-Id: Ic9aca3b15d88ac7650f10b6d0bfa9c97923975e8
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
4085d0ef62554c7e139b82bca0f97161bb159f8c 27-May-2014 Jungshik Jang <jayjang@google.com> Add cec message handler to hdmi cec jni implementation

Notification for incoming cec message can be issued
from any thread but jni can call java method
in the thread that jni knows like service thread.
So this change delegates incoming message to
jni-friendly thread, service thread by exploit
looper of service thread.

Change-Id: If3b141d917df3e209912af1778eb509777199969
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
78d695d8ba532214b02e7f18e0ccf89cf099163d 13-May-2014 Jinsuk Kim <jinsukkim@google.com> Add feature actions for HDMI-CEC playback device

- OneTouchPlayAction
- DevicePowerStatusAction
- addHotplugEventListener
- removeHotplugEventListener

Change-Id: Ia7f31507ca62127efbacbbfe07ab43ba1f9bd4cf
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
67ea521d14f366fe5aac09e512865d31bfa0ee53 15-May-2014 Jungshik Jang <jayjang@google.com> Add several actions for ARC (Audio Return Channel)

ARC channel is established by both TV and AV Reciever.
From TV, it sends <Request ARC Initiation> and AVR
responds with <Initiate ARC>.
From AVR, it can be initiated by sending <Initiate ARC> directly
to TV.
Once TV receives <Initiate ARC> it sets up ARC internally
and replies <Report ARC Initiated> to AVR.
Termination steps are almost same except for message name
(use Terminate instread of Initiation).

In order to implement the above steps, this change introduces
following classes.

RequestArcInitiation(Termination)Action:
handles <Request ARC Initiation> (<Request ARC Termination>)
RequestArcAction handles common logic of them.

SetArcTransmissionStateAction:
handles ARC set up, enabling/disabling ARC and
reports results to AVR.

<Initiate ARC> and <Terminate ARC> handles directly in
HdmiControlService

Along with this, this change has implmentation for
add&removeAction. To avoid synchronization issue
they are isolated to main thread.

Change-Id: I3c5cf7c777e6c1de50d63ce4643b191dfe15fe1f
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
be9cd8eb3fe64a572f9c7dfc41f04defd46a752d 15-May-2014 Jungshik Jang <jayjang@google.com> Add ARC commands

ARC, Audio Return Channel is newly introduced in HDMI CEC 1.4.
Here is a list of new command
<Initiate ARC>
<Report ARC Initiated>
<Report ARC Terminated>
<Request ARC Initiation>
<Request ARC Termination>
<Terminate ARC>

Along with it replaced <Get OSD Name> with <Give OSD Name>
which is renamed in CEC 1.4.

Change-Id: If4a7aedef839c8413a8e3b5f66f3df0c7234104b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java
a1fa91fe263c483cf13066e2847a440de2cd52a5 08-May-2014 Jungshik Jang <jayjang@google.com> Implement handlers for system information query command.

System information query commands are stateless command and
it should be replied immediately when it receives query command.
Here is a list of command handler (and it's reply) implemented
in this change.
1. <Get Menu Language> -> <Set Menu Language>
2. <Give(Get) OSD Name> -> <Set OSD Name>
3. <Give Physical Address> -> <Report Physical Address>
4. <Give Device Vendor ID> -> <Device Vendor Id>
5. <Give CEC Version> -> <CEC Version>

In order to centralize all cec message building, added new
builder class, HdmiCecMessageBuilder for HdmiCecMessage.
Accordingly, all helper methods for building of HdmiCecMessage
are moved to HdmiCecMessageBuilder class.

Change-Id: Ib7c5d2b0cb3d69d51159af8bc277ffb49a60909b
/frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java