IWifiChip.hal revision 7b77747bb565f50ced457ad931e8d0206385d3a1
15443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills/* 25443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Copyright 2016 The Android Open Source Project 35443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 45443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Licensed under the Apache License, Version 2.0 (the "License"); 55443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * you may not use this file except in compliance with the License. 65443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * You may obtain a copy of the License at 75443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 85443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * http://www.apache.org/licenses/LICENSE-2.0 95443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 105443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Unless required by applicable law or agreed to in writing, software 115443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * distributed under the License is distributed on an "AS IS" BASIS, 125443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * See the License for the specific language governing permissions and 145443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * limitations under the License. 155443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 165443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 175443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Willspackage android.hardware.wifi@1.0; 185443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 195443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Willsimport IWifiChipEventCallback; 20fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Piusimport IWifiIface; 21adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Piusimport IWifiApIface; 22adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Piusimport IWifiNanIface; 23adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Piusimport IWifiP2pIface; 24adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Piusimport IWifiStaIface; 25fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Piusimport IWifiRttController; 265443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 275443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills/** 285443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Interface that represents a chip that must be configured as a single unit. 295443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * The HAL/driver/firmware will be responsible for determining which phy is used 305443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * to perform operations like NAN, RTT, etc. 315443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 325443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Willsinterface IWifiChip { 335443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 345443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Set of interface types with the maximum number of interfaces that can have 35271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius * one of the specified type for a given ChipIfaceCombination. See 36271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius * ChipIfaceCombination for examples. 375443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 38271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius struct ChipIfaceCombinationLimit { 397b77747bb565f50ced457ad931e8d0206385d3a1Roshan Pius vec<IfaceType> types; // Each IfaceType must occur at most once. 405443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills uint32_t maxIfaces; 415443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills }; 425443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 435443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 445443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Set of interfaces that can operate concurrently when in a given mode. See 455443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * ChipMode below. 465443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 475443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * For example: 485443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <= 2] 495443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * At most two STA interfaces are supported 505443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [], [STA], [STA+STA] 515443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 525443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <= 1, {NAN} <= 1, {AP} <= 1] 535443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Any combination of STA, NAN, AP 545443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [], [STA], [NAN], [AP], [STA+NAN], [STA+AP], [NAN+AP], [STA+NAN+AP] 555443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 565443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <= 1, {NAN,P2P} <= 1] 575443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Optionally a STA and either NAN or P2P 585443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [], [STA], [STA+NAN], [STA+P2P], [NAN], [P2P] 595443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Not included [NAN+P2P], [STA+NAN+P2P] 605443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 615443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <= 1, {STA,NAN} <= 1] 625443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Optionally a STA and either a second STA or a NAN 635443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [], [STA], [STA+NAN], [STA+STA], [NAN] 645443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Not included [STA+STA+NAN] 655443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 66271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius struct ChipIfaceCombination { 67271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius vec<ChipIfaceCombinationLimit> limits; 685443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills }; 695443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 705443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 715443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * A mode that the chip can be put in. A mode defines a set of constraints on 725443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * the interfaces that can exist while in that mode. Modes define a unit of 735443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * configuration where all interfaces must be torn down to switch to a 745443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * different mode. Some HALs may only have a single mode, but an example where 755443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * multiple modes would be required is if a chip has different firmwares with 765443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * different capabilities. 775443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 785443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * When in a mode, it must be possible to perform any combination of creating 795443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * and removing interfaces as long as at least one of the 80271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius * ChipIfaceCombinations is satisfied. This means that if a chip has two 815443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * available combinations, [{STA} <= 1] and [{AP} <= 1] then it is expected 825443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * that exactly one STA interface or one AP interface can be created, but it 835443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * is not expected that both a STA and AP interface could be created. If it 845443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * was then there would be a single available combination 855443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <=1, {AP} <= 1]. 865443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 875443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * When switching between two available combinations it is expected that 885443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * interfaces only supported by the initial combination will be removed until 895443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * the target combination is also satisfied. At that point new interfaces 905443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * satisfying only the target combination can be added (meaning the initial 915443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * combination limits will no longer satisfied). The addition of these new 927b77747bb565f50ced457ad931e8d0206385d3a1Roshan Pius * interfaces must not impact the existence of interfaces that satisfy both 935443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * combinations. 945443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 955443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * For example, a chip with available combinations: 965443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * [{STA} <= 2, {NAN} <=1] and [{STA} <=1, {NAN} <= 1, {AP} <= 1}] 975443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * If the chip currently has 3 interfaces STA, STA and NAN and wants to add an 985443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * AP interface in place of one of the STAs then first one of the STA 995443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * interfaces must be removed and then the AP interface can be created after 1005443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * the STA had been torn down. During this process the remaining STA and NAN 1017b77747bb565f50ced457ad931e8d0206385d3a1Roshan Pius * interfaces must not be removed/recreated. 1025443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 1035443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * If a chip does not support this kind of reconfiguration in this mode then 1047b77747bb565f50ced457ad931e8d0206385d3a1Roshan Pius * the combinations must be separated into two separate modes. Before 1055443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * switching modes all interfaces will be torn down, the mode switch will be 1065443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * enacted and when it completes the new interfaces will be brought up. 1075443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1085443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills struct ChipMode { 1095443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1105443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Id that can be used to put the chip in this mode. 1115443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1125443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills ChipModeId id; 1135443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1145443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1155443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * A list of the possible interface combinations that the chip can have 1165443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * while in this mode. 1175443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 118271f2c2d9ca5760a1cdd591bf426127077f6c683Roshan Pius vec<ChipIfaceCombination> availableCombinations; 1195443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills }; 1205443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1215443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 122adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Get the id assigned to this chip. 123adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 124adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return id Assigned chip Id. 125adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 126adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getId() generates (ChipId id); 127adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 128adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 1295443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Requests notifications of significant events on this chip. Multiple calls 1305443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * to this will register multiple callbacks each of which will receive all 1315443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * events. 1326f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * 1336f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * @param callback An instance of the |IWifiChipEventCallback| HIDL interface 1346f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * object. 1355443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1365443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills oneway registerEventCallback(IWifiChipEventCallback callback); 1375443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1385443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1395443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Get the set of operation modes that the chip supports. 1406f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * 1416f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * @return modes List of modes supported by the device. 1425443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1435443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills getAvailableModes() generates (vec<ChipMode> modes); 1445443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1455443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1466f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Reconfigure the Chip. 1476f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Must trigger |IWifiChipEventCallback.onChipReconfigured| on sucess, 1486f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * or |IWifiChipEventCallback.onChipReconfigureFailure| on failure. 1495443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * 1505443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * @param modeId The mode that the chip should switch to, corresponding to the 1516f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * id property of the target ChipMode. 1525443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1535443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills oneway configureChip(ChipModeId modeId); 1545443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1555443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1565443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills * Get the current mode that the chip is in. 1576f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * 1586f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * @return modeId The mode that the chip is currently configured to, 1596f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * corresponding to the id property of the target ChipMode. 1605443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1615443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills getMode() generates (ChipModeId modeId); 1625443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1635443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1646f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Request information about the chip. 1656f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Must trigger |IWifiChipEventCallback.onChipDebugInfoAvailable| on sucess, 1666f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * or |IWifiChipEventCallback.onChipDebugInfoFailure| on failure. 1675443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1685443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills oneway requestChipDebugInfo(); 1695443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1705443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1716f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Request vendor debug info from the driver. 1726f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Must trigger |IWifiChipEventCallback.onDriverDebugDumpAvailable| on success, 1736f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * or |IWifiChipEventCallback.onDriverDebugDumpFailure| on failure. 1745443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1755443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills oneway requestDriverDebugDump(); 1765443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills 1775443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills /** 1786f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Request vendor debug info from the firmware. 1796f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * Must trigger |IWifiChipEventCallback.onFirmwareDebugDumpAvailable| on 1806f31d92e59d25130ae67a29022f9255bd19029aeRoshan Pius * success, or |IWifiChipEventCallback.onFirmwareDebugDumpFailure| on failure. 1815443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills */ 1825443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills oneway requestFirmwareDebugDump(); 183adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 184adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 185adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Create an AP iface on the chip. 186adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 187adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Depending on the mode the chip is configured in, the interface creation 188adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * may fail if we've already reached the maximum allowed 189adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * (specified in |ChipIfaceCombination|) number of ifaces of the AP type. 190adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 191adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 192adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * successful, null otherwise. 193adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 194adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius createApIface() generates (IWifiApIface iface); 195adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 196adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 197adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * List all the AP iface names configured on the chip. 198adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * The corresponding |IWifiApIface| object for any iface are 199adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * retrieved using |getApIface| method. 200adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 201adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return ifnames List of all AP iface names on the chip. 202adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 203adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getApIfaceNames() generates (vec<string> ifnames); 204adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 205adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 206adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Gets a HIDL interface object for the AP Iface corresponding 207adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * to the provided ifname. 208adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 209adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @param ifname Name of the iface. 210adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 211adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * it exists, null otherwise. 212adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 213adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getApIface(string ifname) generates (IWifiApIface iface); 214adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 215adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 216adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Create a NAN iface on the chip. 217adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 218adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Depending on the mode the chip is configured in, the interface creation 219adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * may fail if we've already reached the maximum allowed 220adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * (specified in |ChipIfaceCombination|) number of ifaces of the NAN type. 221adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 222adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 223adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * successful, null otherwise. 224adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 225adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius createNanIface() generates (IWifiNanIface iface); 226adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 227adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 228adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * List all the NAN iface names configured on the chip. 229adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * The corresponding |IWifiNanIface| object for any iface are 230adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * retrieved using |getNanIface| method. 231adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 232adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return ifnames List of all NAN iface names on the chip. 233adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 234adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getNanIfaceNames() generates (vec<string> ifnames); 235adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 236adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 237adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Gets a HIDL interface object for the NAN Iface corresponding 238adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * to the provided ifname. 239adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 240adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @param ifname Name of the iface. 241adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 242adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * it exists, null otherwise. 243adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 244adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getNanIface(string ifname) generates (IWifiNanIface iface); 245adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 246adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 247adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Create a P2P iface on the chip. 248adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 249adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Depending on the mode the chip is configured in, the interface creation 250adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * may fail if we've already reached the maximum allowed 251adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * (specified in |ChipIfaceCombination|) number of ifaces of the P2P type. 252adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 253adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 254adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * successful, null otherwise. 255adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 256adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius createP2pIface() generates (IWifiP2pIface iface); 257adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 258adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 259adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * List all the P2P iface names configured on the chip. 260adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * The corresponding |IWifiP2pIface| object for any iface are 261adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * retrieved using |getP2pIface| method. 262adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 263adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return ifnames List of all P2P iface names on the chip. 264adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 265adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getP2pIfaceNames() generates (vec<string> ifnames); 266adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 267adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 268adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Gets a HIDL interface object for the P2P Iface corresponding 269adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * to the provided ifname. 270adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 271adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @param ifname Name of the iface. 272adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 273adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * it exists, null otherwise. 274adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 275adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getP2pIface(string ifname) generates (IWifiP2pIface iface); 276adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 277adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 278adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Create an STA iface on the chip. 279adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 280adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Depending on the mode the chip is configured in, the interface creation 281adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * may fail if we've already reached the maximum allowed 282adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * (specified in |ChipIfaceCombination|) number of ifaces of the STA type. 283adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 284adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 285adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * successful, null otherwise. 286adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 287adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius createStaIface() generates (IWifiStaIface iface); 288adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 289adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 290adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * List all the STA iface names configured on the chip. 291adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * The corresponding |IWifiStaIface| object for any iface are 292adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * retrieved using |getStaIface| method. 293adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 294adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return ifnames List of all STA iface names on the chip. 295adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 296adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getStaIfaceNames() generates (vec<string> ifnames); 297adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius 298adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius /** 299adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * Gets a HIDL interface object for the STA Iface corresponding 300adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * to the provided ifname. 301adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * 302adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @param ifname Name of the iface. 303adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * @return iface HIDL interface object representing the iface if 304adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius * it exists, null otherwise. 305adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius */ 306adcfba4b09b6d708cafe8d8e0cc35ed8888cde9cRoshan Pius getStaIface(string ifname) generates (IWifiStaIface iface); 307fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius 308fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius /** 309fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * Create a RTTController instance. 310fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * 311fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * RTT controller can be either: 312fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * a) Bound to a specific iface by passing in the corresponding |IWifiIface| 313fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * object in |iface| param, OR 314fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * b) Let the implementation decide the iface to use for RTT operations by 315fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * passing null in |iface| param. 316fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * 317fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * @param boundIface HIDL interface object representing the iface if 318fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius * the responder must be bound to a specific iface, null otherwise. 319fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius */ 320fcbf923d3ae52c0d5f585dc2bd8e45e4814ce1dbRoshan Pius createRttController(IWifiIface boundIface) generates (IWifiRttController rtt); 3215443a9fc9b7e7f334cd298aea19741290ad55555Mitchell Wills}; 322