167ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang/* 267ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * Copyright (C) 2014 The Android Open Source Project 367ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * 467ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * Licensed under the Apache License, Version 2.0 (the "License"); 567ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * you may not use this file except in compliance with the License. 667ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * You may obtain a copy of the License at 767ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * 867ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * http://www.apache.org/licenses/LICENSE-2.0 967ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * 1067ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * Unless required by applicable law or agreed to in writing, software 1167ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * distributed under the License is distributed on an "AS IS" BASIS, 1267ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1367ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * See the License for the specific language governing permissions and 1467ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * limitations under the License. 1567ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang */ 1667ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang 1767ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jangpackage com.android.server.hdmi; 1867ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang 1967ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang/** 2067ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * Feature action to handle <Request ARC Termination>. 2167ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * 2267ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * <p>It's initiated by user's manual termination or ARC channel close from TV. 2367ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang */ 2467ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jangfinal class RequestArcTerminationAction extends RequestArcAction { 2567ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang private static final String TAG = "RequestArcTerminationAction"; 2667ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang 2767ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang /** 2867ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * @Constructor 2967ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * 3067ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang * @see RequestArcAction#RequestArcAction 3167ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang */ 3279c58a4b97f27ede6a1b680d2fece9c2a0edf7b7Jungshik Jang RequestArcTerminationAction(HdmiCecLocalDevice source, int avrAddress) { 3379c58a4b97f27ede6a1b680d2fece9c2a0edf7b7Jungshik Jang super(source, avrAddress); 3467ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang } 3567ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang 3667ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang @Override 3767ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang boolean start() { 382e8f1b6399089626b4f0249427626ba6e63a62efJungshik Jang mState = STATE_WATING_FOR_REQUEST_ARC_REQUEST_RESPONSE; 392e8f1b6399089626b4f0249427626ba6e63a62efJungshik Jang addTimer(mState, HdmiConfig.TIMEOUT_MS); 402e8f1b6399089626b4f0249427626ba6e63a62efJungshik Jang 41d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang HdmiCecMessage command = 4279c58a4b97f27ede6a1b680d2fece9c2a0edf7b7Jungshik Jang HdmiCecMessageBuilder.buildRequestArcTermination(getSourceAddress(), mAvrAddress); 43d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang sendCommand(command, new HdmiControlService.SendMessageCallback() { 44d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang @Override 45d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang public void onSendCompleted(int error) { 462e8f1b6399089626b4f0249427626ba6e63a62efJungshik Jang if (error != Constants.SEND_RESULT_SUCCESS) { 47d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang // If failed to send <Request ARC Termination>, start "Disabled" ARC 48d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang // transmission action. 49d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang disableArcTransmission(); 50d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang finish(); 51d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang } 52d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang } 53d643f764f72efc1e7aa67392bf9ac40720ae14c3Jungshik Jang }); 5467ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang return true; 5567ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang } 5667ea521d14f366fe5aac09e512865d31bfa0ee53Jungshik Jang} 57