1ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber/*
2ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * Copyright (C) 2012 The Android Open Source Project
3ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber *
4ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * you may not use this file except in compliance with the License.
6ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * You may obtain a copy of the License at
7ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber *
8ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber *
10ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * Unless required by applicable law or agreed to in writing, software
11ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * See the License for the specific language governing permissions and
14ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * limitations under the License.
15ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber */
16ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
17ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huberpackage android.net.wifi.p2p;
18ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
19ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huberimport android.os.Parcelable;
20ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huberimport android.os.Parcel;
21ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
22fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkeyimport java.util.Locale;
23fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkey
24ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber/**
25ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * A class representing Wifi Display information for a device
26ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber * @hide
27ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber */
28ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huberpublic class WifiP2pWfdInfo implements Parcelable {
29ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
30ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final String TAG = "WifiP2pWfdInfo";
31ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
32ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private boolean mWfdEnabled;
33ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
34ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private int mDeviceInfo;
35ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
36ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public static final int WFD_SOURCE              = 0;
37ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public static final int PRIMARY_SINK            = 1;
38ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public static final int SECONDARY_SINK          = 2;
39ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public static final int SOURCE_OR_PRIMARY_SINK  = 3;
40ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
41ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /* Device information bitmap */
42ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /** One of {@link #WFD_SOURCE}, {@link #PRIMARY_SINK}, {@link #SECONDARY_SINK}
43ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber     * or {@link #SOURCE_OR_PRIMARY_SINK}
44ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber     */
45ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int DEVICE_TYPE                            = 0x3;
46ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int COUPLED_SINK_SUPPORT_AT_SOURCE         = 0x4;
47ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int COUPLED_SINK_SUPPORT_AT_SINK           = 0x8;
48ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int SESSION_AVAILABLE                      = 0x30;
49ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int SESSION_AVAILABLE_BIT1                 = 0x10;
50ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private static final int SESSION_AVAILABLE_BIT2                 = 0x20;
51ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
52ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private int mCtrlPort;
53ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
54ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    private int mMaxThroughput;
55ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
56ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public WifiP2pWfdInfo() {
57ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
58ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
591f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff    public WifiP2pWfdInfo(int devInfo, int ctrlPort, int maxTput) {
601f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff        mWfdEnabled = true;
611f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff        mDeviceInfo = devInfo;
621f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff        mCtrlPort = ctrlPort;
631f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff        mMaxThroughput = maxTput;
641f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff    }
651f6d8706918ddb277cad5fc8a006cc56ea7dbf69Irfan Sheriff
66ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public boolean isWfdEnabled() {
67ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return mWfdEnabled;
68ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
69ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
70ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setWfdEnabled(boolean enabled) {
71ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mWfdEnabled = enabled;
72ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
73ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
74ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public int getDeviceType() {
75ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return (mDeviceInfo & DEVICE_TYPE);
76ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
77ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
78ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public boolean setDeviceType(int deviceType) {
79ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        if (deviceType >= WFD_SOURCE && deviceType <= SOURCE_OR_PRIMARY_SINK) {
808b3b81000c6fe7e6e5bab0f3e2d24022d3eaaea8Grigoriy Kraynov            mDeviceInfo &= ~DEVICE_TYPE;
81ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo |= deviceType;
82ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            return true;
83ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        }
84ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return false;
85ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
86ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
87ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public boolean isCoupledSinkSupportedAtSource() {
88ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return (mDeviceInfo & COUPLED_SINK_SUPPORT_AT_SINK) != 0;
89ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
90ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
91ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setCoupledSinkSupportAtSource(boolean enabled) {
92ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        if (enabled ) {
93ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo |= COUPLED_SINK_SUPPORT_AT_SINK;
94ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        } else {
95ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo &= ~COUPLED_SINK_SUPPORT_AT_SINK;
96ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        }
97ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
98ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
99ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public boolean isCoupledSinkSupportedAtSink() {
100ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return (mDeviceInfo & COUPLED_SINK_SUPPORT_AT_SINK) != 0;
101ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
102ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
103ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setCoupledSinkSupportAtSink(boolean enabled) {
104ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        if (enabled ) {
105ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo |= COUPLED_SINK_SUPPORT_AT_SINK;
106ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        } else {
107ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo &= ~COUPLED_SINK_SUPPORT_AT_SINK;
108ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        }
109ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
110ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
111ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public boolean isSessionAvailable() {
112ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return (mDeviceInfo & SESSION_AVAILABLE) != 0;
113ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
114ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
115ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setSessionAvailable(boolean enabled) {
116ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        if (enabled) {
117ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo |= SESSION_AVAILABLE_BIT1;
118ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo &= ~SESSION_AVAILABLE_BIT2;
119ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        } else {
120ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo &= ~SESSION_AVAILABLE;
121ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        }
122ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
123ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
124ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public int getControlPort() {
125ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return mCtrlPort;
126ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
127ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
128ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setControlPort(int port) {
129ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mCtrlPort = port;
130ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
131ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
132ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void setMaxThroughput(int maxThroughput) {
133ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mMaxThroughput = maxThroughput;
134ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
135ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
136ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public int getMaxThroughput() {
137ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return mMaxThroughput;
138ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
139ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
140ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public String getDeviceInfoHex() {
141fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkey        return String.format(
142fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkey                Locale.US, "%04x%04x%04x%04x", 6, mDeviceInfo, mCtrlPort, mMaxThroughput);
143ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
144ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
145ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public String toString() {
146ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        StringBuffer sbuf = new StringBuffer();
147ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        sbuf.append("WFD enabled: ").append(mWfdEnabled);
148ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        sbuf.append("WFD DeviceInfo: ").append(mDeviceInfo);
149ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        sbuf.append("\n WFD CtrlPort: ").append(mCtrlPort);
150ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        sbuf.append("\n WFD MaxThroughput: ").append(mMaxThroughput);
151ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return sbuf.toString();
152ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
153ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
154ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /** Implement the Parcelable interface */
155ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public int describeContents() {
156ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        return 0;
157ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
158ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
159ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /** copy constructor */
160ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public WifiP2pWfdInfo(WifiP2pWfdInfo source) {
161ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        if (source != null) {
16290082124aaf66916da0a9f9bfb695caa74734b0fIrfan Sheriff            mWfdEnabled = source.mWfdEnabled;
163ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mDeviceInfo = source.mDeviceInfo;
164ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mCtrlPort = source.mCtrlPort;
165ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            mMaxThroughput = source.mMaxThroughput;
166ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        }
167ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
168ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
169ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /** Implement the Parcelable interface */
170ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void writeToParcel(Parcel dest, int flags) {
171ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        dest.writeInt(mWfdEnabled ? 1 : 0);
172ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        dest.writeInt(mDeviceInfo);
173ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        dest.writeInt(mCtrlPort);
174ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        dest.writeInt(mMaxThroughput);
175ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
176ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
177ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public void readFromParcel(Parcel in) {
178ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mWfdEnabled = (in.readInt() == 1);
179ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mDeviceInfo = in.readInt();
180ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mCtrlPort = in.readInt();
181ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        mMaxThroughput = in.readInt();
182ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    }
183ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
184ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    /** Implement the Parcelable interface */
185ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber    public static final Creator<WifiP2pWfdInfo> CREATOR =
186ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        new Creator<WifiP2pWfdInfo>() {
187ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            public WifiP2pWfdInfo createFromParcel(Parcel in) {
188ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber                WifiP2pWfdInfo device = new WifiP2pWfdInfo();
189ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber                device.readFromParcel(in);
190ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber                return device;
191ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            }
192ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber
193ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            public WifiP2pWfdInfo[] newArray(int size) {
194ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber                return new WifiP2pWfdInfo[size];
195ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber            }
196ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber        };
197ab4cd45133ccea6a66fb081f9b2a8d14eb3e4f1dAndreas Huber}
198