163a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo/*
263a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * Copyright (C) 2014 The Android Open Source Project
363a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo *
463a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * Licensed under the Apache License, Version 2.0 (the "License");
563a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * you may not use this file except in compliance with the License.
663a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * You may obtain a copy of the License at
763a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo *
863a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo *      http://www.apache.org/licenses/LICENSE-2.0
963a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo *
1063a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * Unless required by applicable law or agreed to in writing, software
1163a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * distributed under the License is distributed on an "AS IS" BASIS,
1263a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1363a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * See the License for the specific language governing permissions and
1463a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * limitations under the License.
1563a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo */
1663a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo
1763a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heopackage com.android.server.hdmi;
1863a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo
1961f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jangimport android.hardware.hdmi.HdmiDeviceInfo;
20ea67c183fe5511ad99aeaae1a32b5245bd020e36Jungshik Jangimport android.hardware.hdmi.IHdmiControlCallback;
2163a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo
2263a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo
2363a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo/**
2463a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo * Feature action that handles System Audio initiated by TV devices.
2563a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo */
2663a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heofinal class SystemAudioActionFromTv extends SystemAudioAction {
27c516d65fd96cdc39f9935ddb80d26ee6499a77bfYuncheol Heo
2863a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo    /**
2963a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     * Constructor
3063a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     *
3179c58a4b97f27ede6a1b680d2fece9c2a0edf7b7Jungshik Jang     * @param sourceAddress {@link HdmiCecLocalDevice} instance
3263a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     * @param avrAddress logical address of AVR device
3363a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     * @param targetStatus Whether to enable the system audio mode or not
34ea67c183fe5511ad99aeaae1a32b5245bd020e36Jungshik Jang     * @param callback callback interface to be notified when it's done
3563a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     * @throw IllegalArugmentException if device type of tvAddress is invalid
3663a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo     */
3779c58a4b97f27ede6a1b680d2fece9c2a0edf7b7Jungshik Jang    SystemAudioActionFromTv(HdmiCecLocalDevice sourceAddress, int avrAddress,
38ea67c183fe5511ad99aeaae1a32b5245bd020e36Jungshik Jang            boolean targetStatus, IHdmiControlCallback callback) {
39ea67c183fe5511ad99aeaae1a32b5245bd020e36Jungshik Jang        super(sourceAddress, avrAddress, targetStatus, callback);
4061f4fbd2e8436a1ecd478c2a1f516d064a24d43bJungshik Jang        HdmiUtils.verifyAddressType(getSourceAddress(), HdmiDeviceInfo.DEVICE_TV);
4163a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo    }
4263a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo
4363a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo    @Override
4463a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo    boolean start() {
4563a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo        removeSystemAudioActionInProgress();
4663a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo        sendSystemAudioModeRequest();
4763a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo        return true;
4863a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo    }
4963a2e0696ce2a04fbe0f1f00cfe9c93189f944daYuncheol Heo}
50