RemoteDisplay.cpp revision d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c
1d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber/*
2d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * Copyright 2012, The Android Open Source Project
3d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber *
4d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * you may not use this file except in compliance with the License.
6d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * You may obtain a copy of the License at
7d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber *
8d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber *     http://www.apache.org/licenses/LICENSE-2.0
9d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber *
10d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * Unless required by applicable law or agreed to in writing, software
11d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * See the License for the specific language governing permissions and
14d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber * limitations under the License.
15d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber */
16d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
17d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber#include "RemoteDisplay.h"
18d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
19d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber#include "ANetworkSession.h"
20d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber#include "source/WifiDisplaySource.h"
21d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
22d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Hubernamespace android {
23d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
24d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas HuberRemoteDisplay::RemoteDisplay()
25d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    : mInitCheck(NO_INIT),
26d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber      mLooper(new ALooper),
27d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber      mNetSession(new ANetworkSession),
28d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber      mSource(new WifiDisplaySource(mNetSession)) {
29d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mLooper->registerHandler(mSource);
30d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber}
31d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
32d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas HuberRemoteDisplay::~RemoteDisplay() {
33d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber}
34d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
35d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huberstatus_t RemoteDisplay::start() {
36d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mNetSession->start();
37d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mLooper->start();
38d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
39d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    // XXX replace with 8554 for bcom dongle (it doesn't respect the
40d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    // default port or the one advertised in the wfd IE).
41d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mSource->start(WifiDisplaySource::kWifiDisplayDefaultPort);
42d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
43d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    return OK;
44d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber}
45d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
46d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huberstatus_t RemoteDisplay::stop() {
47d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mSource->stop();
48d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
49d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mLooper->stop();
50d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    mNetSession->stop();
51d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
52d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber    return OK;
53d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber}
54d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
55d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber}  // namespace android
56d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480cAndreas Huber
57