WifiP2pGroup.java revision 4be4d31f34a0fd0e23de1cbda311c07412f8d0b8
155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync/* 255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Copyright (C) 2011 The Android Open Source Project 355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Licensed under the Apache License, Version 2.0 (the "License"); 555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * you may not use this file except in compliance with the License. 655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * You may obtain a copy of the License at 755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * http://www.apache.org/licenses/LICENSE-2.0 955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 1055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Unless required by applicable law or agreed to in writing, software 1155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * distributed under the License is distributed on an "AS IS" BASIS, 1255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * See the License for the specific language governing permissions and 1455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * limitations under the License. 1555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 1655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncpackage android.net.wifi.p2p; 1855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport android.os.Parcelable; 2055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport android.os.Parcel; 2155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 2255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport java.util.ArrayList; 2355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport java.util.List; 2455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport java.util.Collection; 2555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncimport java.util.Collections; 2655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 2755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync/** 2855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * A class representing a Wi-Fi P2p group 2955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * @hide 3055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 3155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncpublic class WifiP2pGroup implements Parcelable { 3255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 3355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** The network name */ 3455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mNetworkName; 3555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 3655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Group owner */ 3755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private WifiP2pDevice mOwner; 3855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 3955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Device is group owner */ 4055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private boolean mIsGroupOwner; 4155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 4255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Group clients */ 4355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private List<WifiP2pDevice> mClients = new ArrayList<WifiP2pDevice>(); 4455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 454be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** The passphrase used for WPA2-PSK */ 4655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mPassphrase; 4755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 4855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mInterface; 4955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 504be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff WifiP2pGroup() { 5155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 5255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 5355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** 549cc2718abc0152d79e3e8bf23be94ddd3cc9db87Irfan Sheriff * @param supplicantEvent formats supported include 5555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 5655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-GROUP-STARTED p2p-wlan0-0 [client|GO] ssid="DIRECT-W8" freq=2437 5755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * [psk=2182b2e50e53f260d04f3c7b25ef33c965a3291b9b36b455a82d77fd82ca15bc| 5855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * passphrase="fKG4jMe3"] go_dev_addr=fa:7b:7a:42:02:13 5955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-GROUP-REMOVED p2p-wlan0-0 [client|GO] reason=REQUESTED 6155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-INVITATION-RECEIVED sa=fa:7b:7a:42:02:13 go_dev_addr=f8:7b:7a:42:02:13 6355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * bssid=fa:7b:7a:42:82:13 unknown-network 6455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Note: The events formats can be looked up in the wpa_supplicant code 664be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * @hide 6755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 6855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup(String supplicantEvent) throws IllegalArgumentException { 6955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] tokens = supplicantEvent.split(" "); 7155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (tokens.length < 3) { 7355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync throw new IllegalArgumentException("Malformed supplicant event"); 7455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 7555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (tokens[0].startsWith("P2P-GROUP")) { 7755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mInterface = tokens[1]; 7855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mIsGroupOwner = tokens[2].equals("GO"); 7955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 8055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (String token : tokens) { 8155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] nameValue = token.split("="); 8255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue.length != 2) continue; 8355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 8455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("ssid")) { 8555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mNetworkName = nameValue[1]; 8655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 8755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 8855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 8955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("passphrase")) { 9055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mPassphrase = nameValue[1]; 9155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 9255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 9455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("go_dev_addr")) { 9555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mOwner = new WifiP2pDevice(nameValue[1]); 9655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } else if (tokens[0].equals("P2P-INVITATION-RECEIVED")) { 9955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (String token : tokens) { 10055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] nameValue = token.split("="); 10155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue.length != 2) continue; 10255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 10355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("go_dev_addr")) { 10455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mOwner = new WifiP2pDevice(nameValue[1]); 10555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 10655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 10755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 10855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } else { 10955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync throw new IllegalArgumentException("Malformed supplicant event"); 11055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 11155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 11255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1134be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1144be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setNetworkName(String networkName) { 1154be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mNetworkName = networkName; 1164be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1174be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1184be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** 1194be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * Get the network name (SSID) of the group. Legacy Wi-Fi clients will discover 1204be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * the p2p group using the network name. 1214be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff */ 1224be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public String getNetworkName() { 1234be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff return mNetworkName; 1244be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1254be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1264be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1274be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setIsGroupOwner(boolean isGo) { 1284be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mIsGroupOwner = isGo; 1294be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1304be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1314be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Check whether this device is the group owner of the created p2p group */ 13255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean isGroupOwner() { 13355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mIsGroupOwner; 13455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 13555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1364be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1374be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setOwner(WifiP2pDevice device) { 1384be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mOwner = device; 1394be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1404be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1414be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the details of the group owner as a {@link WifiP2pDevice} object */ 14255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pDevice getOwner() { 14355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mOwner; 14455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 14555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1464be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 14755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void addClient(String address) { 14855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync addClient(new WifiP2pDevice(address)); 14955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 15055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1514be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 15255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void addClient(WifiP2pDevice device) { 15355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (WifiP2pDevice client : mClients) { 15455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (client.equals(device)) return; 15555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 15655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mClients.add(device); 15755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 15855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1594be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 16055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean removeClient(String address) { 16155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.remove(new WifiP2pDevice(address)); 16255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 16355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1644be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 16555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean removeClient(WifiP2pDevice device) { 16655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.remove(device); 16755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 16855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1694be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 17055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean isClientListEmpty() { 17155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.size() == 0; 17255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 17355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1744be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the list of clients currently part of the p2p group */ 17555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public Collection<WifiP2pDevice> getClientList() { 17655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return Collections.unmodifiableCollection(mClients); 17755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 17855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1794be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1804be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setPassphrase(String passphrase) { 1814be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mPassphrase = passphrase; 1824be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1834be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1844be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** 1854be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * Get the passphrase of the group. This function will return a valid passphrase only 1864be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * at the group owner. Legacy Wi-Fi clients will need this passphrase alongside 1874be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * network name obtained from {@link #getNetworkName()} to join the group 1884be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff */ 1894be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public String getPassphrase() { 1904be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff return mPassphrase; 1914be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1924be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1934be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1944be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setInterface(String intf) { 1954be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mInterface = intf; 1964be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1974be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1984be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the interface name on which the group is created */ 19955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public String getInterface() { 20055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mInterface; 20155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 20255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 2034be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 20455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public String toString() { 20555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync StringBuffer sbuf = new StringBuffer(); 2064be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("network: ").append(mNetworkName); 2074be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n isGO: ").append(mIsGroupOwner); 2084be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n GO: ").append(mOwner); 2094be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (WifiP2pDevice client : mClients) { 2104be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n Client: ").append(client); 2114be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2124be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n interface: ").append(mInterface); 21355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return sbuf.toString(); 21455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 21555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 21655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 21755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public int describeContents() { 21855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return 0; 21955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 22155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** copy constructor {@hide} */ 22255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync // TODO: implement 22355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup(WifiP2pGroup source) { 22455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (source != null) { 22555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 22855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 22955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void writeToParcel(Parcel dest, int flags) { 2304be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mNetworkName); 2314be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeParcelable(mOwner, flags); 2324be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeByte(mIsGroupOwner ? (byte) 1: (byte) 0); 2334be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeInt(mClients.size()); 2344be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (WifiP2pDevice client : mClients) { 2354be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeParcelable(client, flags); 2364be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2374be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mPassphrase); 2384be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mInterface); 23955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 24055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 24155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 24255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public static final Creator<WifiP2pGroup> CREATOR = 24355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync new Creator<WifiP2pGroup>() { 24455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup createFromParcel(Parcel in) { 24555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync WifiP2pGroup group = new WifiP2pGroup(); 2464be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setNetworkName(in.readString()); 2474be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setOwner((WifiP2pDevice)in.readParcelable(null)); 2484be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setIsGroupOwner(in.readByte() == (byte)1); 2494be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff int clientCount = in.readInt(); 2504be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (int i=0; i<clientCount; i++) { 2514be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.addClient((WifiP2pDevice) in.readParcelable(null)); 2524be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2534be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setPassphrase(in.readString()); 2544be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setInterface(in.readString()); 25555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return group; 25655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 25755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 25855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup[] newArray(int size) { 25955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return new WifiP2pGroup[size]; 26055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 26155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync }; 26255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync} 263