1/*
2* Copyright (C) 2014 Samsung System LSI
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7*      http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15
16package com.android.bluetooth;
17
18import android.bluetooth.BluetoothSocket;
19
20import java.io.DataInputStream;
21import java.io.DataOutputStream;
22import java.io.IOException;
23import java.io.InputStream;
24import java.io.OutputStream;
25
26import javax.obex.ObexTransport;
27
28/**
29 * Generic Obex Transport class, to be used in OBEX based Bluetooth
30 * Profiles.
31 */
32public class BluetoothObexTransport implements ObexTransport {
33    private BluetoothSocket mSocket = null;
34
35    public BluetoothObexTransport(BluetoothSocket socket) {
36        this.mSocket = socket;
37    }
38
39    public void close() throws IOException {
40        mSocket.close();
41    }
42
43    public DataInputStream openDataInputStream() throws IOException {
44        return new DataInputStream(openInputStream());
45    }
46
47    public DataOutputStream openDataOutputStream() throws IOException {
48        return new DataOutputStream(openOutputStream());
49    }
50
51    public InputStream openInputStream() throws IOException {
52        return mSocket.getInputStream();
53    }
54
55    public OutputStream openOutputStream() throws IOException {
56        return mSocket.getOutputStream();
57    }
58
59    public void connect() throws IOException {
60    }
61
62    public void create() throws IOException {
63    }
64
65    public void disconnect() throws IOException {
66    }
67
68    public void listen() throws IOException {
69    }
70
71    public boolean isConnected() throws IOException {
72        return true;
73    }
74
75    public int getMaxTransmitPacketSize() {
76        if (mSocket.getConnectionType() != BluetoothSocket.TYPE_L2CAP) {
77           return -1;
78        }
79        return mSocket.getMaxTransmitPacketSize();
80    }
81
82    public int getMaxReceivePacketSize() {
83        if (mSocket.getConnectionType() != BluetoothSocket.TYPE_L2CAP) {
84            return -1;
85        }
86        return mSocket.getMaxReceivePacketSize();
87    }
88
89    public String getRemoteAddress() {
90        if (mSocket == null)
91            return null;
92        return mSocket.getRemoteDevice().getAddress();
93    }
94
95    @Override
96    public boolean isSrmSupported() {
97        if(mSocket.getConnectionType() == BluetoothSocket.TYPE_L2CAP) {
98            return true;
99        }
100        return false;
101    }
102}
103