summaryrefslogtreecommitdiffstats
blob: b20a0b2d9ada8b5a54eebf2e0ffb9a4a49516598 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.broadcastradio@2.0;

interface ITunerCallback {
    /**
     * Method called by the HAL when a tuning operation fails asynchronously
     * following a step(), scan() or tune() command.
     *
     * This callback is only called when the step(), scan() or tune() command
     * returned OK at first.
     *
     * @param result TIMEOUT in case of time out.
     * @param selector A ProgramSelector structure passed from tune() call;
     *                 empty for step() and scan().
     */
    oneway onTuneFailed(Result result, ProgramSelector selector);

    /**
     * Method called by the HAL when current program information (including
     * metadata) is updated.
     *
     * This is also called when the radio tuned to the static (not a valid
     * station), see the TUNED flag of ProgramInfoFlags.
     *
     * @param info Current program information.
     */
    oneway onCurrentProgramInfoChanged(ProgramInfo info);

    /**
     * A delta update of the program list, called whenever there's a change in
     * the list.
     *
     * If there are frequent changes, HAL implementation must throttle the rate
     * of the updates.
     *
     * There is a hard limit on binder transaction buffer, and the list must
     * not exceed it. For large lists, HAL implementation must split them to
     * multiple chunks, no larger than 500kiB each.
     *
     * @param chunk A chunk of the program list update.
     */
    oneway onProgramListUpdated(ProgramListChunk chunk);

    /**
     * Method called by the HAL when the antenna gets connected or disconnected.
     *
     * For a new tuner session, client must assume the antenna is connected.
     * If it's not, then antennaStateChange must be called within
     * Constants::ANTENNA_DISCONNECTED_TIMEOUT_MS to indicate that.
     *
     * @param connected True if the antenna is now connected, false otherwise.
     */
    oneway onAntennaStateChange(bool connected);

    /**
     * Generic callback for passing updates to vendor-specific parameter values.
     * The framework does not interpret the parameters, they are passed
     * in an opaque manner between a vendor application and HAL.
     *
     * It's up to the HAL implementation if and how to implement this callback,
     * as long as it obeys the prefix rule. In particular, only selected keys
     * may be notified this way. However, setParameters must not trigger
     * this callback, while an internal event can change parameters
     * asynchronously.
     *
     * @param parameters Vendor-specific key-value pairs,
     *                   opaque to Android framework.
     */
    oneway onParametersUpdated(vec<VendorKeyValue> parameters);
};