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