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 ITunerSession {
196e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
206e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Tune to a specified program.
216e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
22b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * Automatically cancels pending tune(), scan() or step().
236e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * If the method returns OK, tuneFailed or currentProgramInfoChanged
246e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * callback must be called.
256e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
266e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param program Program to tune to.
276e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @return result OK if successfully started tuning.
286e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                NOT_SUPPORTED if the program selector doesn't contain any
296e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                supported identifier.
306e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                INVALID_ARGUMENTS if the program selector contains
316e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                identifiers in invalid format (i.e. out of range).
326e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
336e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    tune(ProgramSelector program) generates (Result result);
346e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
356e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
36b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * Tune (seek) to the next valid program on the "air".
376e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
38b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * This might more naturally be called "seek" but for legacy reasons, the
39b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * entry point remains "scan". This should not be confused with the actual
40b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * scan operation (where the radio seeks through programs in a loop until
41b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * user chooses to stay on one of them) nor background scan operation (that
42b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * a tuner may do in order to locate all available programs.  This function
43b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * is meant to advance to the next detected program and stay there.
44b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     *
45b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * Automatically cancels pending tune(), scan() or step().
466e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * If the method returns OK, tuneFailed or currentProgramInfoChanged
476e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * callback must be called.
486e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
496e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The skipSubChannel parameter is used to skip digital radio subchannels:
506e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *  - HD Radio SPS;
516e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *  - DAB secondary service.
526e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
536e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * As an implementation detail, the HAL has the option to perform an actual
54b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * seek or select the next program from the list retrieved in the
556e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * background, if one is not stale.
566e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
576e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param directionUp True to change towards higher numeric values
586e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                    (frequency, channel number), false towards lower.
596e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param skipSubChannel Don't tune to subchannels.
60b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * @return result OK if the operation has successfully started.
616e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
626e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    scan(bool directionUp, bool skipSubChannel) generates (Result result);
636e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
646e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
656e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Tune to the adjacent channel, which may not be occupied by any program.
666e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
67b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * Automatically cancels pending tune(), scan() or step().
686e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * If the method returns OK, tuneFailed or currentProgramInfoChanged
696e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * callback must be called.
706e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
716e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param directionUp True to change towards higher numeric values
726e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                    (frequency, channel number), false towards lower.
736e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @return result OK successfully started tuning.
746e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                NOT_SUPPORTED if tuning to an unoccupied channel is not
756e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *                supported (i.e. for satellite radio).
766e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
776e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    step(bool directionUp) generates (Result result);
786e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
796e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
80b557e0b748f874a5abe4282d244cb696fa626811Tomasz Wasilczyk     * Cancel a pending tune(), scan() or step().
816e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
826e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * If there is no such operation running, the call must be ignored.
836e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
846e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    cancel();
856e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
866e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
87bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * Applies a filter to the program list and starts sending program list
88bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * updates over onProgramListUpdated callback.
89bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
90bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * There may be only one updates stream active at the moment. Calling this
91bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * method again must result in cancelling the previous update request.
92bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
93bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * This call clears the program list on the client side, the HAL must send
94bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * the whole list again.
95bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
96bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * If the program list scanning hardware (i.e. background tuner) is
97bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * unavailable at the moment, the call must succeed and start updates
98bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * when it becomes available.
99bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *
100bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * @param filter Filter to apply on the fetched program list.
101bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * @return result OK successfully started fetching list updates.
102bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *                NOT_SUPPORTED program list scanning is not supported
103bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     *                by the hardware.
104bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     */
105bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    startProgramListUpdates(ProgramFilter filter) generates (Result result);
106bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk
107bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    /**
108bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     * Stops sending program list updates.
109bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk     */
110bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    stopProgramListUpdates();
111bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk
112bceb88585dc6c89c6689956b8354b630c8425ae5Tomasz Wasilczyk    /**
11343fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * Fetches the current setting of a given config flag.
11443fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *
11543fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * The success/failure result must be consistent with setConfigFlag.
11643fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *
11743fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @param flag Flag to fetch.
11843fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @return result OK successfully fetched the flag.
11943fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *                INVALID_STATE if the flag is not applicable right now.
12043fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *                NOT_SUPPORTED if the flag is not supported at all.
12143fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @return value The current value of the flag, if result is OK.
12243fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     */
1233dd452a979181d9fd1523f8e096c593ad85ded39Tomasz Wasilczyk    isConfigFlagSet(ConfigFlag flag) generates (Result result, bool value);
12443fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk
12543fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk    /**
12643fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * Sets the config flag.
12743fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *
1283dd452a979181d9fd1523f8e096c593ad85ded39Tomasz Wasilczyk     * The success/failure result must be consistent with isConfigFlagSet.
12943fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *
13043fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @param flag Flag to set.
13143fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @param value The new value of a given flag.
13243fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     * @return result OK successfully set the flag.
13343fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *                INVALID_STATE if the flag is not applicable right now.
13443fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     *                NOT_SUPPORTED if the flag is not supported at all.
13543fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk     */
13643fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk    setConfigFlag(ConfigFlag flag, bool value) generates (Result result);
13743fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk
13843fe894562b2fd89a5a01ee8f2cb232b25818decTomasz Wasilczyk    /**
1396e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Generic method for setting vendor-specific parameter values.
1406e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The framework does not interpret the parameters, they are passed
1416e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * in an opaque manner between a vendor application and HAL.
1426e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1436e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Framework does not make any assumptions on the keys or values, other than
1446e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * ones stated in VendorKeyValue documentation (a requirement of key
1456e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * prefixes).
1466e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1476e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * For each pair in the result vector, the key must be one of the keys
1486e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * contained in the input (possibly with wildcards expanded), and the value
1496e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * must be a vendor-specific result status (i.e. the string "OK" or an error
1506e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * code). The implementation may choose to return an empty vector, or only
1516e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * return a status for a subset of the provided inputs, at its discretion.
1526e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1536e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Application and HAL must not use keys with unknown prefix. In particular,
1546e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * it must not place a key-value pair in results vector for unknown key from
1556e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * parameters vector - instead, an unknown key should simply be ignored.
1566e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * In other words, results vector may contain a subset of parameter keys
1576e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * (however, the framework doesn't enforce a strict subset - the only
1586e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * formal requirement is vendor domain prefix for keys).
1596e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1606e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param parameters Vendor-specific key-value pairs.
1616e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @return results Operation completion status for parameters being set.
1626e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
1636e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    setParameters(vec<VendorKeyValue> parameters)
1646a9f856e24936d9696407ab2857afc1c47151874Tomasz Wasilczyk        generates (vec<VendorKeyValue> results);
1656e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
1666e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
1676e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Generic method for retrieving vendor-specific parameter values.
1686e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The framework does not interpret the parameters, they are passed
1696e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * in an opaque manner between a vendor application and HAL.
1706e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1716e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Framework does not cache set/get requests, so it's allowed for
1726e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * getParameter to return a different value than previous setParameter call.
1736e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1746e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The syntax and semantics of keys are up to the vendor (as long as prefix
1756e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * rules are obeyed). For instance, vendors may include some form of
1766e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * wildcard support. In such case, result vector may be of different size
1776e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * than requested keys vector. However, wildcards are not recognized by
1786e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * framework and they are passed as-is to the HAL implementation.
1796e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1806e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Unknown keys must be ignored and not placed into results vector.
1816e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1826e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @param keys Parameter keys to fetch.
1836e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * @return parameters Vendor-specific key-value pairs.
1846e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
1856e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    getParameters(vec<string> keys) generates (vec<VendorKeyValue> parameters);
1866e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk
1876e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    /**
1886e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * Closes the session.
1896e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1906e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * The call must not fail and must only be issued once.
1916e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     *
1926e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * After the close call is executed, no other calls to this interface
1936e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     * are allowed.
1946e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk     */
1956e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk    close();
1966e0e1ae2a95140f0d0921c5a9bb5e9d3dba1846bTomasz Wasilczyk};
197