WifiP2pGroup.java revision 6f7d385d964949e507dcc9c88012372f48d0bce7
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 306f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff * 316f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff * {@see WifiP2pManager} 3255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 3355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo syncpublic class WifiP2pGroup implements Parcelable { 3455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 3555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** The network name */ 3655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mNetworkName; 3755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 3855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Group owner */ 3955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private WifiP2pDevice mOwner; 4055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 4155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Device is group owner */ 4255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private boolean mIsGroupOwner; 4355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 4455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Group clients */ 4555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private List<WifiP2pDevice> mClients = new ArrayList<WifiP2pDevice>(); 4655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 474be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** The passphrase used for WPA2-PSK */ 4855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mPassphrase; 4955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 5055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync private String mInterface; 5155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 524be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff WifiP2pGroup() { 5355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 5455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 5555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** 569cc2718abc0152d79e3e8bf23be94ddd3cc9db87Irfan Sheriff * @param supplicantEvent formats supported include 5755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 5855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-GROUP-STARTED p2p-wlan0-0 [client|GO] ssid="DIRECT-W8" freq=2437 5955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * [psk=2182b2e50e53f260d04f3c7b25ef33c965a3291b9b36b455a82d77fd82ca15bc| 6055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * passphrase="fKG4jMe3"] go_dev_addr=fa:7b:7a:42:02:13 6155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-GROUP-REMOVED p2p-wlan0-0 [client|GO] reason=REQUESTED 6355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * P2P-INVITATION-RECEIVED sa=fa:7b:7a:42:02:13 go_dev_addr=f8:7b:7a:42:02:13 6555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * bssid=fa:7b:7a:42:82:13 unknown-network 6655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * 6755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync * Note: The events formats can be looked up in the wpa_supplicant code 684be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * @hide 6955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync */ 7055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup(String supplicantEvent) throws IllegalArgumentException { 7155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] tokens = supplicantEvent.split(" "); 7355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (tokens.length < 3) { 7555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync throw new IllegalArgumentException("Malformed supplicant event"); 7655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 7755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 7855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (tokens[0].startsWith("P2P-GROUP")) { 7955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mInterface = tokens[1]; 8055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mIsGroupOwner = tokens[2].equals("GO"); 8155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 8255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (String token : tokens) { 8355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] nameValue = token.split("="); 8455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue.length != 2) continue; 8555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 8655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("ssid")) { 8755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mNetworkName = nameValue[1]; 8855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 8955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 9155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("passphrase")) { 9255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mPassphrase = nameValue[1]; 9355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 9455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 9655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("go_dev_addr")) { 9755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mOwner = new WifiP2pDevice(nameValue[1]); 9855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 9955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 10055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } else if (tokens[0].equals("P2P-INVITATION-RECEIVED")) { 10155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (String token : tokens) { 10255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync String[] nameValue = token.split("="); 10355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue.length != 2) continue; 10455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 10555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (nameValue[0].equals("go_dev_addr")) { 10655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mOwner = new WifiP2pDevice(nameValue[1]); 10755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync continue; 10855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 10955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 11055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } else { 11155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync throw new IllegalArgumentException("Malformed supplicant event"); 11255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 11355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 11455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1154be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1164be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setNetworkName(String networkName) { 1174be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mNetworkName = networkName; 1184be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1194be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1204be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** 1214be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * Get the network name (SSID) of the group. Legacy Wi-Fi clients will discover 1224be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * the p2p group using the network name. 1234be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff */ 1244be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public String getNetworkName() { 1254be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff return mNetworkName; 1264be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1274be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1284be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1294be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setIsGroupOwner(boolean isGo) { 1304be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mIsGroupOwner = isGo; 1314be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1324be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1334be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Check whether this device is the group owner of the created p2p group */ 13455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean isGroupOwner() { 13555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mIsGroupOwner; 13655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 13755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1384be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1394be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setOwner(WifiP2pDevice device) { 1404be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mOwner = device; 1414be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1424be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1434be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the details of the group owner as a {@link WifiP2pDevice} object */ 14455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pDevice getOwner() { 14555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mOwner; 14655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 14755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1484be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 14955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void addClient(String address) { 15055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync addClient(new WifiP2pDevice(address)); 15155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 15255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1534be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 15455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void addClient(WifiP2pDevice device) { 15555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync for (WifiP2pDevice client : mClients) { 15655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (client.equals(device)) return; 15755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 15855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync mClients.add(device); 15955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 16055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1614be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 16255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean removeClient(String address) { 16355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.remove(new WifiP2pDevice(address)); 16455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 16555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1664be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 16755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean removeClient(WifiP2pDevice device) { 16855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.remove(device); 16955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 17055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1714be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 17255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public boolean isClientListEmpty() { 17355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mClients.size() == 0; 17455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 17555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1764be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the list of clients currently part of the p2p group */ 17755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public Collection<WifiP2pDevice> getClientList() { 17855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return Collections.unmodifiableCollection(mClients); 17955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 18055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 1814be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1824be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setPassphrase(String passphrase) { 1834be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mPassphrase = passphrase; 1844be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1854be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1864be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** 1874be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * Get the passphrase of the group. This function will return a valid passphrase only 1884be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * at the group owner. Legacy Wi-Fi clients will need this passphrase alongside 1894be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff * network name obtained from {@link #getNetworkName()} to join the group 1904be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff */ 1914be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public String getPassphrase() { 1924be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff return mPassphrase; 1934be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1944be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 1954be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 1964be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff public void setInterface(String intf) { 1974be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff mInterface = intf; 1984be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 1994be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff 2004be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** Get the interface name on which the group is created */ 20155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public String getInterface() { 20255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return mInterface; 20355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 20455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 2054be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff /** @hide */ 20655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public String toString() { 20755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync StringBuffer sbuf = new StringBuffer(); 2084be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("network: ").append(mNetworkName); 2094be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n isGO: ").append(mIsGroupOwner); 2104be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n GO: ").append(mOwner); 2114be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (WifiP2pDevice client : mClients) { 2124be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n Client: ").append(client); 2134be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2144be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff sbuf.append("\n interface: ").append(mInterface); 21555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return sbuf.toString(); 21655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 21755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 21855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 21955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public int describeContents() { 22055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return 0; 22155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 22355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** copy constructor {@hide} */ 22455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync // TODO: implement 22555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup(WifiP2pGroup source) { 22655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync if (source != null) { 22755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 22955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 23055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 23155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public void writeToParcel(Parcel dest, int flags) { 2324be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mNetworkName); 2334be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeParcelable(mOwner, flags); 2344be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeByte(mIsGroupOwner ? (byte) 1: (byte) 0); 2354be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeInt(mClients.size()); 2364be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (WifiP2pDevice client : mClients) { 2374be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeParcelable(client, flags); 2384be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2394be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mPassphrase); 2404be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff dest.writeString(mInterface); 24155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 24255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 24355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync /** Implement the Parcelable interface {@hide} */ 24455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public static final Creator<WifiP2pGroup> CREATOR = 24555bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync new Creator<WifiP2pGroup>() { 24655bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup createFromParcel(Parcel in) { 24755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync WifiP2pGroup group = new WifiP2pGroup(); 2484be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setNetworkName(in.readString()); 2494be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setOwner((WifiP2pDevice)in.readParcelable(null)); 2504be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setIsGroupOwner(in.readByte() == (byte)1); 2514be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff int clientCount = in.readInt(); 2524be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff for (int i=0; i<clientCount; i++) { 2534be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.addClient((WifiP2pDevice) in.readParcelable(null)); 2544be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff } 2554be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setPassphrase(in.readString()); 2564be4d31f34a0fd0e23de1cbda311c07412f8d0b8Irfan Sheriff group.setInterface(in.readString()); 25755bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return group; 25855bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 25955bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync 26055bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync public WifiP2pGroup[] newArray(int size) { 26155bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync return new WifiP2pGroup[size]; 26255bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync } 26355bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync }; 26455bc5f3e0408bcb5a39a6732de0b2d1aa99a55berepo sync} 265