112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang/*
212e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * Copyright (C) 2014 The Android Open Source Project
312e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang *
412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * Licensed under the Apache License, Version 2.0 (the "License");
512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * you may not use this file except in compliance with the License.
612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * You may obtain a copy of the License at
712e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang *
812e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang *      http://www.apache.org/licenses/LICENSE-2.0
912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang *
1012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * Unless required by applicable law or agreed to in writing, software
1112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * distributed under the License is distributed on an "AS IS" BASIS,
1212e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1312e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * See the License for the specific language governing permissions and
1412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * limitations under the License.
1512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang */
1612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
1712e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jangpackage android.hardware.hdmi;
1812e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
1912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jangimport android.annotation.SystemApi;
2012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jangimport android.hardware.hdmi.HdmiRecordSources.RecordSource;
2112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
2212e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang/**
2312e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * Listener for hdmi record feature including one touch record and timer recording.
2412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang * @hide
2512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang */
2612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang@SystemApi
2712e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jangpublic abstract class HdmiRecordListener {
282b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo    public HdmiRecordListener() {}
2912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
3012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang    /**
3112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * Called when TV received one touch record request from record device. The client of this
3212e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * should use {@link HdmiRecordSources} to return it.
3312e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *
3412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * @param recorderAddress
3512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * @return record source to be used for recording. Null if no device is available.
3612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     */
372b0da5c4c84305f1d391dc78b85e244c9fd92456Yuncheol Heo    public abstract RecordSource onOneTouchRecordSourceRequested(int recorderAddress);
3812e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
3912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang    /**
4012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * Called when one touch record is started or failed during initialization.
4112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *
42326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     * @param recorderAddress An address of recorder that reports result of one touch record
43326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     *            request
4412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * @param result result code. For more details, please look at all constants starting with
4512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            "ONE_TOUCH_RECORD_". Only
4612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE},
4712e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE},
4812e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE}, and
4912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            {@link HdmiControlManager#ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT} mean normal
5012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *            start of recording; otherwise, describes failure.
5112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     */
52326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang    public void onOneTouchRecordResult(int recorderAddress, int result) {
5312e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang    }
5412e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang
5512e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang    /**
5612e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     * Called when timer recording is started or failed during initialization.
5712e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     *
58326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     * @param recorderAddress An address of recorder that reports result of timer recording
59326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     *            request
60e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     * @param data timer status data. For more details, look at {@link TimerStatusData}.
6112e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang     */
62326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang    public void onTimerRecordingResult(int recorderAddress, TimerStatusData data) {
63e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    }
64e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
65e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    /**
66e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     * [Timer overlap warning] [Media Info] [Timer Programmed Info]
67e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     * @hide
68e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     */
69e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    @SystemApi
70e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    public static class TimerStatusData {
71e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private boolean mOverlapped;
72e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mMediaInfo;
73e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private boolean mProgrammed;
74e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
75e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mProgrammedInfo;
76e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mNotProgrammedError;
77e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mDurationHour;
78e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mDurationMinute;
79e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
80e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private int mExtraError;
81e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
82e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        static TimerStatusData parseFrom(int result) {
83e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            TimerStatusData data = new TimerStatusData();
84e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            // Timer Overlap Warning - 1 bit
85e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            data.mOverlapped = ((result >> 31) & 0x1) != 0;
86e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            // Media Info - 2 bits;
87e9e0f070e34a612fb3bab5d97bdec1e266da4a20Jungshik Jang            data.mMediaInfo = (result >> 29) & 0x3;
88e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            // Programmed Indicator - 1 bit;
89e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            data.mProgrammed = ((result >> 28) & 0x1) != 0;
90e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            if (data.mProgrammed) {
91e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mProgrammedInfo = (result >> 24) & 0xF;
92e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mDurationHour = bcdByteToInt((byte) ((result >> 16) & 0xFF));
93e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mDurationMinute = bcdByteToInt((byte) ((result >> 8) & 0xFF));
94e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            } else {
95e9e0f070e34a612fb3bab5d97bdec1e266da4a20Jungshik Jang                // Programmed Info - 4 bits
96e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mNotProgrammedError = (result >> 24) & 0xF;
97e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mDurationHour = bcdByteToInt((byte) ((result >> 16) & 0xFF));
98e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                data.mDurationMinute = bcdByteToInt((byte) ((result >> 8) & 0xFF));
99e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            }
100e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
101e9e0f070e34a612fb3bab5d97bdec1e266da4a20Jungshik Jang            // The last byte is used for extra error.
102e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            data.mExtraError = result & 0xFF;
103e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return data;
104e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
105e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
106e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        // Most significant 4 bits is used for 10 digits and
107e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        // Least significant 4 bits is used for 1 digits.
108e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private static int bcdByteToInt(byte value) {
109e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return ((value >> 4) & 0xF) * 10 + value & 0xF;
110e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
111e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
112e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        private TimerStatusData() {}
113e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
114e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
115e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Indicates if there is another timer block already set which overlaps with this new
116e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * recording request.
117e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
118e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public boolean isOverlapped() {
119e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mOverlapped;
120e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
121e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
122e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
123e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Indicates if removable media is present and its write protect state.
124e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * It should be one of the following values.
125e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <ul>
126e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED}
127e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED}
128e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_MEDIA_INFO_NOT_PRESENT}
129e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * </ul>
130e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
131e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getMediaInfo() {
132e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mMediaInfo;
133e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
134e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
135e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
136e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Selector for [Timer Programmed Info].
137e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * If it is {@code true}, {@link #getProgrammedInfo()} would have meaningful value and
138e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * ignore result of {@link #getNotProgammedError()}.
139e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
140e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public boolean isProgrammed() {
141e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mProgrammed;
142e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
143e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
144e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
145e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Information indicating any non-fatal issues with the programming request.
146e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * It's set only if {@link #isProgrammed()} returns true.
147e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * It should be one of the following values.
148e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <ul>
149e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE}
150e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE}
151e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE}
152e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO}
153e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * </ul>
154e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *
155f406cc3442b100e516298318a09af4a42f6bb33aJungshik Jang         * @throws IllegalStateException if it's called when {@link #isProgrammed()}
156f406cc3442b100e516298318a09af4a42f6bb33aJungshik Jang         *                               returns false
157e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
158e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getProgrammedInfo() {
159e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            if (!isProgrammed()) {
160e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                throw new IllegalStateException(
161e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                        "No programmed info. Call getNotProgammedError() instead.");
162e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            }
163e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mProgrammedInfo;
164e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
165e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
166e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
167e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Information indicating any fatal issues with the programming request.
168e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * It's set only if {@link #isProgrammed()} returns false.
169e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * it should be one of the following values.
170e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <ul>
171e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME}
172e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE}
173e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE}
174e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER}
175e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED}
176e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS}
177e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION}
178e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON}
179e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE}
180e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *   <li>{@link HdmiControlManager#TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED}
181e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * </ul>
182e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *
183f406cc3442b100e516298318a09af4a42f6bb33aJungshik Jang         * @throws IllegalStateException if it's called when {@link #isProgrammed()}
184f406cc3442b100e516298318a09af4a42f6bb33aJungshik Jang         *                               returns true
185e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
186e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getNotProgammedError() {
187e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            if (isProgrammed()) {
188e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                throw new IllegalStateException(
189e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang                        "Has no not-programmed error. Call getProgrammedInfo() instead.");
190e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            }
191e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mNotProgrammedError;
192e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
193e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
194e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
195e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Duration hours.
196e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Optional parameter: Contains an estimate of the space left on the media, expressed as a
197e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * time. This parameter may be returned when:
198e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *  - [Programmed Info] is “Not enough space available”; or
199e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *  - [Not Programmed Info] is “Duplicate: already programmed”
200e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
201e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getDurationHour() {
202e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mDurationHour;
203e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
204e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
205e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
206e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Duration minutes.
207e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Optional parameter: Contains an estimate of the space left on the media, expressed as a
208e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * time. This parameter may be returned when:
209e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *  - [Programmed Info] is “Not enough space available”; or
210e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *  - [Not Programmed Info] is “Duplicate: already programmed”
211e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
212e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getDurationMinute() {
213e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mDurationMinute;
214e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
215e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
216e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        /**
217e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * Extra error code.
218e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <ul>
219e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <li>{@link HdmiControlManager#TIMER_RECORDING_RESULT_EXTRA_NO_ERROR}
220e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *     No extra errors. Other values of this class might be available.
221e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <li>{@link HdmiControlManager#TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION}
222e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *     Check record connection. Other values of this class should be ignored.
223e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <li>{@link HdmiControlManager#TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE}
224e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *     Fail to record selected source. Other values of this class should be ignored.
225e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * <li>{@link HdmiControlManager#TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED}
226e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         *     Cec disabled. Other values of this class should be ignored.
227e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         * </ul>
228e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang         */
229e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        public int getExtraError() {
230e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang            return mExtraError;
231e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang        }
232e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    }
233e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang
234e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang    /**
235e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     * Called when receiving result for clear timer recording request.
236e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *
237326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     * @param recorderAddress An address of recorder that reports result of clear timer recording
238326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang     *            request
239e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     * @param result result of clear timer. It should be one of
240e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING}
241e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING},
242e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE},
243e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_TIMER_CLEARED},
244e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION},
245e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE},
246e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     *            {@link HdmiControlManager#CLEAR_TIMER_STATUS_CEC_DISABLE}.
247e5a9337ebe738633cf7b66141cdf76efcdc5754cJungshik Jang     */
248326aef0c9402742e29c4503c857f93e75cf9a6ecJungshik Jang    public void onClearTimerRecordingResult(int recorderAddress, int result) {
24912e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang    }
25012e5dcefe136b58562f39604e6a8460ac92cb895Jungshik Jang}
251