16e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk/* Copyright (C) 2017 The Android Open Source Project
26e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk *
36e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Licensed under the Apache License, Version 2.0 (the "License");
46e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * you may not use this file except in compliance with the License.
56e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * You may obtain a copy of the License at
66e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk *
76e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk *      http://www.apache.org/licenses/LICENSE-2.0
86e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk *
96e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * Unless required by applicable law or agreed to in writing, software
106e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * distributed under the License is distributed on an "AS IS" BASIS,
116e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * See the License for the specific language governing permissions and
136e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk * limitations under the License.
146e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk */
156e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
166e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczykpackage android.hardware.broadcastradio@2.0;
176e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
186e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczykinterface ITunerCallback {
196e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
20674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     * Method called by the HAL when a tuning operation fails asynchronously
21b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * following ITunerSession::tune(), ITunerSession::scan() or
22b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * ITunerSession::step().
236e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
24674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     * This callback is only called when the step(), scan() or tune() command
25674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     * returned OK at first.
26674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     *
27674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     * @param result TIMEOUT in case of time out.
28674696f92a4faeb80b6f3044817f08453acbf151Tomasz Wasilczyk     * @param selector A ProgramSelector structure passed from tune() call;
296e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                 empty for step() and scan().
306e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
316e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    oneway onTuneFailed(Result result, ProgramSelector selector);
326e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
336e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
346e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Method called by the HAL when current program information (including
356e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * metadata) is updated.
366e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
376e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * This is also called when the radio tuned to the static (not a valid
386e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * station), see the TUNED flag of ProgramInfoFlags.
396e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
406e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param info Current program information.
416e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
426e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    oneway onCurrentProgramInfoChanged(ProgramInfo info);
436e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
446e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
45bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * A delta update of the program list, called whenever there's a change in
46bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * the list.
47bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
48bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * If there are frequent changes, HAL implementation must throttle the rate
49bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * of the updates.
50bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
51bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * There is a hard limit on binder transaction buffer, and the list must
52bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * not exceed it. For large lists, HAL implementation must split them to
53bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * multiple chunks, no larger than 500kiB each.
54bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
55bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * @param chunk A chunk of the program list update.
56bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     */
57bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    oneway onProgramListUpdated(ProgramListChunk chunk);
58bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk
59bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    /**
606e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Method called by the HAL when the antenna gets connected or disconnected.
616e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
626e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * For a new tuner session, client must assume the antenna is connected.
636e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * If it's not, then antennaStateChange must be called within
646e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Constants::ANTENNA_DISCONNECTED_TIMEOUT_MS to indicate that.
656e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
666e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param connected True if the antenna is now connected, false otherwise.
676e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
686e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    oneway onAntennaStateChange(bool connected);
696e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
706e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
716e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Generic callback for passing updates to vendor-specific parameter values.
726e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The framework does not interpret the parameters, they are passed
736e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * in an opaque manner between a vendor application and HAL.
746e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
756e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * It's up to the HAL implementation if and how to implement this callback,
766e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * as long as it obeys the prefix rule. In particular, only selected keys
776e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * may be notified this way. However, setParameters must not trigger
786e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * this callback, while an internal event can change parameters
796e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * asynchronously.
806e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
816e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param parameters Vendor-specific key-value pairs,
826e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                   opaque to Android framework.
836e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
846e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    oneway onParametersUpdated(vec<VendorKeyValue> parameters);
856e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk};
86