1618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff/*
2618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * Copyright (C) 2011 The Android Open Source Project
3618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff *
4618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License");
5618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * you may not use this file except in compliance with the License.
6618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * You may obtain a copy of the License at
7618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff *
8618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff *      http://www.apache.org/licenses/LICENSE-2.0
9618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff *
10618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * Unless required by applicable law or agreed to in writing, software
11618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS,
12618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * See the License for the specific language governing permissions and
14618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * limitations under the License.
15618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff */
16618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
17618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffpackage android.net.wifi.p2p;
18618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
19618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffimport android.os.Parcelable;
20618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffimport android.os.Parcel;
21618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffimport android.util.Log;
22618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
23618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff/**
24618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * A class representing a Wi-Fi p2p provisional discovery request/response
25618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * See {@link #WifiP2pProvDiscEvent} for supported types
26618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff *
27618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * @hide
28618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff */
29618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffpublic class WifiP2pProvDiscEvent {
30618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
31618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    private static final String TAG = "WifiP2pProvDiscEvent";
32618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
33618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public static final int PBC_REQ     = 1;
34618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public static final int PBC_RSP     = 2;
35618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public static final int ENTER_PIN   = 3;
36618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public static final int SHOW_PIN    = 4;
37618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
38618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    /* One of PBC_REQ, PBC_RSP, ENTER_PIN or SHOW_PIN */
39618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public int event;
40618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
41618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public WifiP2pDevice device;
42618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
43618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    /* Valid when event = SHOW_PIN */
44618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public String pin;
45618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
46618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public WifiP2pProvDiscEvent() {
47618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        device = new WifiP2pDevice();
48618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    }
49618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
50618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    /**
51618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     * @param string formats supported include
52618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     *
53de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff     *  P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27
54618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     *  P2P-PROV-DISC-PBC-RESP 02:12:47:f2:5a:36
55de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff     *  P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27
56de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff     *  P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607
57618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     *
58618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     *  Note: The events formats can be looked up in the wpa_supplicant code
59618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     * @hide
60618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff     */
61618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public WifiP2pProvDiscEvent(String string) throws IllegalArgumentException {
62618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        String[] tokens = string.split(" ");
63618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
64618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        if (tokens.length < 2) {
65618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff            throw new IllegalArgumentException("Malformed event " + string);
66618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        }
67618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
68618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        if (tokens[0].endsWith("PBC-REQ")) event = PBC_REQ;
69618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        else if (tokens[0].endsWith("PBC-RESP")) event = PBC_RSP;
70618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        else if (tokens[0].endsWith("ENTER-PIN")) event = ENTER_PIN;
71618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        else if (tokens[0].endsWith("SHOW-PIN")) event = SHOW_PIN;
72618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        else throw new IllegalArgumentException("Malformed event " + string);
73618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
74de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff
75618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        device = new WifiP2pDevice();
76de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff        device.deviceAddress = tokens[1];
77618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
78de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff        if (event == SHOW_PIN) {
79de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff            pin = tokens[2];
80618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        }
81618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    }
82618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff
83618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    public String toString() {
84618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        StringBuffer sbuf = new StringBuffer();
85618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        sbuf.append(device);
86618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        sbuf.append("\n event: ").append(event);
87618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        sbuf.append("\n pin: ").append(pin);
88618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff        return sbuf.toString();
89618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff    }
90618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff}
91