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 Sheriff/** 20618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * A class representing a Wi-Fi p2p provisional discovery request/response 21618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * See {@link #WifiP2pProvDiscEvent} for supported types 22618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * 23618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * @hide 24618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff */ 25618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriffpublic class WifiP2pProvDiscEvent { 26618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 27618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff private static final String TAG = "WifiP2pProvDiscEvent"; 28618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 29618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public static final int PBC_REQ = 1; 30618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public static final int PBC_RSP = 2; 31618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public static final int ENTER_PIN = 3; 32618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public static final int SHOW_PIN = 4; 33618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 34618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff /* One of PBC_REQ, PBC_RSP, ENTER_PIN or SHOW_PIN */ 35618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public int event; 36618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 37618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public WifiP2pDevice device; 38618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 39618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff /* Valid when event = SHOW_PIN */ 40618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public String pin; 41618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 42618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public WifiP2pProvDiscEvent() { 43618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff device = new WifiP2pDevice(); 44618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff } 45618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 46618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff /** 47618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * @param string formats supported include 48618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * 49de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff * P2P-PROV-DISC-PBC-REQ 42:fc:89:e1:e2:27 50618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * P2P-PROV-DISC-PBC-RESP 02:12:47:f2:5a:36 51de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff * P2P-PROV-DISC-ENTER-PIN 42:fc:89:e1:e2:27 52de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff * P2P-PROV-DISC-SHOW-PIN 42:fc:89:e1:e2:27 44490607 53618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * 54618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * Note: The events formats can be looked up in the wpa_supplicant code 55618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff * @hide 56618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff */ 57618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public WifiP2pProvDiscEvent(String string) throws IllegalArgumentException { 58618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff String[] tokens = string.split(" "); 59618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 60618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff if (tokens.length < 2) { 61618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff throw new IllegalArgumentException("Malformed event " + string); 62618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff } 63618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 64618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff if (tokens[0].endsWith("PBC-REQ")) event = PBC_REQ; 65618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff else if (tokens[0].endsWith("PBC-RESP")) event = PBC_RSP; 66618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff else if (tokens[0].endsWith("ENTER-PIN")) event = ENTER_PIN; 67618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff else if (tokens[0].endsWith("SHOW-PIN")) event = SHOW_PIN; 68618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff else throw new IllegalArgumentException("Malformed event " + string); 69618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 70de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff 71618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff device = new WifiP2pDevice(); 72de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff device.deviceAddress = tokens[1]; 73618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 74de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff if (event == SHOW_PIN) { 75de1e9fa9fbc4b7f4b08415d805a6e5212e655d95Irfan Sheriff pin = tokens[2]; 76618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff } 77618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff } 78618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff 79618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff public String toString() { 80618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff StringBuffer sbuf = new StringBuffer(); 81618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff sbuf.append(device); 82618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff sbuf.append("\n event: ").append(event); 83618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff sbuf.append("\n pin: ").append(pin); 84618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff return sbuf.toString(); 85618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff } 86618455f7e7255019c8cc08a734ba7c52b67a7dc8Irfan Sheriff} 87