1525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*
2525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Copyright (C) 2010 The Android Open Source Project
3525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
4525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * you may not use this file except in compliance with the License.
6525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * You may obtain a copy of the License at
7525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
8525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
10525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * See the License for the specific language governing permissions and
14525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * limitations under the License.
15525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
16525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
17525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpackage com.android.nfc.dhimpl;
18525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
19525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectimport com.android.nfc.DeviceHost.NfcDepEndpoint;
20525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
21525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/**
22525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Native interface to the P2P Initiator functions
23525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
24525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic class NativeP2pDevice implements NfcDepEndpoint {
25525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
26525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private int mHandle;
27525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
28525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private int mMode;
29525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
30525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private byte[] mGeneralBytes;
31525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
322daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    private byte mLlcpVersion;
332daeeee63456a515693980372908234e1fa14ba5Martijn Coenen
34525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private native byte[] doReceive();
35525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
36525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public byte[] receive() {
37525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return doReceive();
38525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
39525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
40525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private native boolean doSend(byte[] data);
41525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
42525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public boolean send(byte[] data) {
43525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return doSend(data);
44525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
45525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
46525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private native boolean doConnect();
47525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
48525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public boolean connect() {
49525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return doConnect();
50525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
51525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
52525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    private native boolean doDisconnect();
53525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
54525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public boolean disconnect() {
55525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return doDisconnect();
56525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
57525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
58525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public native byte[] doTransceive(byte[] data);
59525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
60525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public byte[] transceive(byte[] data) {
61525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return doTransceive(data);
62525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
63525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
64525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
65525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public int getHandle() {
66525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return mHandle;
67525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
68525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
69525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
70525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public int getMode() {
71525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return mMode;
72525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
73525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
74525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    @Override
75525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    public byte[] getGeneralBytes() {
76525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return mGeneralBytes;
77525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
78525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
792daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    @Override
802daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    public byte getLlcpVersion() {
812daeeee63456a515693980372908234e1fa14ba5Martijn Coenen        return mLlcpVersion;
822daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    }
83525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
84