1ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff/*
2ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * Copyright (C) 2011 The Android Open Source Project
3ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff *
4ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License");
5ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * you may not use this file except in compliance with the License.
6ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * You may obtain a copy of the License at
7ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff *
8ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff *      http://www.apache.org/licenses/LICENSE-2.0
9ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff *
10ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * Unless required by applicable law or agreed to in writing, software
11ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS,
12ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * See the License for the specific language governing permissions and
14ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff * limitations under the License.
15ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff */
16ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
17ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffpackage android.net.wifi.p2p;
18ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
19ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffimport android.os.Parcelable;
20ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffimport android.os.Parcel;
21ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
22ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffimport java.net.InetAddress;
23ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffimport java.net.UnknownHostException;
24ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
25ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff/**
266f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff * A class representing connection information about a Wi-Fi p2p group
276f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff *
286f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff * {@see WifiP2pManager}
29ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff */
30ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriffpublic class WifiP2pInfo implements Parcelable {
31ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
326f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff    /** Indicates if a p2p group has been successfully formed */
33ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public boolean groupFormed;
34ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
356f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff    /** Indicates if the current device is the group owner */
36ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public boolean isGroupOwner;
37ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
386f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff    /** Group owner address */
39ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public InetAddress groupOwnerAddress;
40ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
41651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    public WifiP2pInfo() {
42ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    }
43ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
44ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public String toString() {
45ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        StringBuffer sbuf = new StringBuffer();
46ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        sbuf.append("groupFormed: ").append(groupFormed)
47ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            .append(" isGroupOwner: ").append(isGroupOwner)
48ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            .append(" groupOwnerAddress: ").append(groupOwnerAddress);
49ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        return sbuf.toString();
50ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    }
51ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
52651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    /** Implement the Parcelable interface */
53ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public int describeContents() {
54ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        return 0;
55ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    }
56ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
57651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    /** copy constructor */
58ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public WifiP2pInfo(WifiP2pInfo source) {
59ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        if (source != null) {
60ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            groupFormed = source.groupFormed;
61ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            isGroupOwner = source.isGroupOwner;
62ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            groupOwnerAddress = source.groupOwnerAddress;
63ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff       }
64ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    }
65ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
66651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    /** Implement the Parcelable interface */
67ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public void writeToParcel(Parcel dest, int flags) {
68ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        dest.writeByte(groupFormed ? (byte)1 : (byte)0);
69ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        dest.writeByte(isGroupOwner ? (byte)1 : (byte)0);
70ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
71ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        if (groupOwnerAddress != null) {
72ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            dest.writeByte((byte)1);
73ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            dest.writeByteArray(groupOwnerAddress.getAddress());
74ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        } else {
75ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            dest.writeByte((byte)0);
76ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        }
77ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    }
78ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
79651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    /** Implement the Parcelable interface */
80ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff    public static final Creator<WifiP2pInfo> CREATOR =
81ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        new Creator<WifiP2pInfo>() {
82ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            public WifiP2pInfo createFromParcel(Parcel in) {
83ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                WifiP2pInfo info = new WifiP2pInfo();
84ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                info.groupFormed = (in.readByte() == 1);
85ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                info.isGroupOwner = (in.readByte() == 1);
86ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                if (in.readByte() == 1) {
87ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                    try {
88ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                        info.groupOwnerAddress = InetAddress.getByAddress(in.createByteArray());
89ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                    } catch (UnknownHostException e) {}
90ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                }
91ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                return info;
92ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            }
93ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff
94ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            public WifiP2pInfo[] newArray(int size) {
95ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff                return new WifiP2pInfo[size];
96ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff            }
97ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff        };
98ea5b16ac5751022de73e8f1225407eb01e7f1824Irfan Sheriff}
99