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