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
2121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff/**
228bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * A class for creating a Upnp service discovery request for use with
238bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@link WifiP2pManager#addServiceRequest} and {@link WifiP2pManager#removeServiceRequest}
248bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff *
258bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pManager}
268bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pServiceRequest}
278bf825f48fde77cb2feb8720aac17093581bb085Irfan Sheriff * {@see WifiP2pDnsSdServiceRequest}
2821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff */
2921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriffpublic class WifiP2pUpnpServiceRequest extends WifiP2pServiceRequest {
3021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff
3121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    /**
3221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * This constructor is only used in newInstance().
3321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     *
3421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @param query The part of service specific query.
3521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @hide
3621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     */
3721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    protected WifiP2pUpnpServiceRequest(String query) {
3821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        super(WifiP2pServiceInfo.SERVICE_TYPE_UPNP, query);
3921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    }
4021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff
4121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    /**
4221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * This constructor is only used in newInstance().
4321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @hide
4421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     */
4521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    protected WifiP2pUpnpServiceRequest() {
4621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        super(WifiP2pServiceInfo.SERVICE_TYPE_UPNP, null);
4721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    }
4821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff
4921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    /**
5021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * Create a service discovery request to search all UPnP services.
5121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     *
5221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @return service request for UPnP.
5321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     */
5421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    public static WifiP2pUpnpServiceRequest newInstance() {
5521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        return new WifiP2pUpnpServiceRequest();
5621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    }
5721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    /**
5821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * Create a service discovery request to search specified UPnP services.
5921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     *
6021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @param st ssdp search target.  Cannot be null.<br>
6121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * e.g ) <br>
6221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <ul>
6321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <li>"ssdp:all"
6421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <li>"upnp:rootdevice"
6521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <li>"urn:schemas-upnp-org:device:MediaServer:2"
6621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <li>"urn:schemas-upnp-org:service:ContentDirectory:2"
6721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * <li>"uuid:6859dede-8574-59ab-9332-123456789012"
6821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * </ul>
6921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     * @return service request for UPnP.
7021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff     */
7121ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    public static WifiP2pUpnpServiceRequest newInstance(String st) {
7221ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        if (st == null) {
7321ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff            throw new IllegalArgumentException("search target cannot be null");
7421ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        }
7521ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        StringBuffer sb = new StringBuffer();
7621ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        sb.append(String.format("%02x", WifiP2pUpnpServiceInfo.VERSION_1_0));
7721ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        sb.append(WifiP2pServiceInfo.bin2HexStr(st.getBytes()));
7821ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff        return new WifiP2pUpnpServiceRequest(sb.toString());
7921ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff    }
8021ba8153325e010224c6bc75a0acdc98b6ca82e8Irfan Sheriff}
81