121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff/* 221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * Copyright (C) 2012 The Android Open Source Project 321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License"); 521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * you may not use this file except in compliance with the License. 621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * You may obtain a copy of the License at 721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * http://www.apache.org/licenses/LICENSE-2.0 921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 1021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * Unless required by applicable law or agreed to in writing, software 1121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS, 1221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * See the License for the specific language governing permissions and 1421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * limitations under the License. 1521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 1621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff 1721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriffpackage android.net.wifi.p2p.nsd; 1821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff 198bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriffimport android.net.wifi.p2p.WifiP2pManager; 208bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff 21fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkeyimport java.util.Locale; 22fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkey 2321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff/** 248bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * A class for creating a Upnp service discovery request for use with 258bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@link WifiP2pManager#addServiceRequest} and {@link WifiP2pManager#removeServiceRequest} 268bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * 278bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pManager} 288bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pServiceRequest} 298bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pDnsSdServiceRequest} 3021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 3121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriffpublic class WifiP2pUpnpServiceRequest extends WifiP2pServiceRequest { 3221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff 3321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff /** 3421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * This constructor is only used in newInstance(). 3521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 3621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @param query The part of service specific query. 3721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @hide 3821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 3921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff protected WifiP2pUpnpServiceRequest(String query) { 4021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff super(WifiP2pServiceInfo.SERVICE_TYPE_UPNP, query); 4121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff } 4221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff 4321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff /** 4421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * This constructor is only used in newInstance(). 4521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @hide 4621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 4721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff protected WifiP2pUpnpServiceRequest() { 4821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff super(WifiP2pServiceInfo.SERVICE_TYPE_UPNP, null); 4921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff } 5021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff 5121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff /** 5221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * Create a service discovery request to search all UPnP services. 5321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 5421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @return service request for UPnP. 5521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 5621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff public static WifiP2pUpnpServiceRequest newInstance() { 5721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff return new WifiP2pUpnpServiceRequest(); 5821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff } 5921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff /** 6021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * Create a service discovery request to search specified UPnP services. 6121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * 6221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @param st ssdp search target. Cannot be null.<br> 6321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * e.g ) <br> 6421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <ul> 6521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <li>"ssdp:all" 6621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <li>"upnp:rootdevice" 6721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <li>"urn:schemas-upnp-org:device:MediaServer:2" 6821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <li>"urn:schemas-upnp-org:service:ContentDirectory:2" 6921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * <li>"uuid:6859dede-8574-59ab-9332-123456789012" 7021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * </ul> 7121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff * @return service request for UPnP. 7221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */ 7321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff public static WifiP2pUpnpServiceRequest newInstance(String st) { 7421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff if (st == null) { 7521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff throw new IllegalArgumentException("search target cannot be null"); 7621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff } 7721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff StringBuffer sb = new StringBuffer(); 78fea17de7aaa5729d3111102b2734b158403d2780Jeff Sharkey sb.append(String.format(Locale.US, "%02x", WifiP2pUpnpServiceInfo.VERSION_1_0)); 7921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff sb.append(WifiP2pServiceInfo.bin2HexStr(st.getBytes())); 8021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff return new WifiP2pUpnpServiceRequest(sb.toString()); 8121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff } 8221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff} 83