1f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/*
2f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Copyright (C) 2010 The Android Open Source Project
3f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
4f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Licensed under the Apache License, Version 2.0 (the "License");
5f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * you may not use this file except in compliance with the License.
6f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * You may obtain a copy of the License at
7f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
8f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *      http://www.apache.org/licenses/LICENSE-2.0
9f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
10f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Unless required by applicable law or agreed to in writing, software
11f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * distributed under the License is distributed on an "AS IS" BASIS,
12f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * See the License for the specific language governing permissions and
14f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * limitations under the License.
15f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */
16f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
174bbd47e5507d4c47a4d722216606307e45195a0aMartijn Coenenpackage com.android.nfc.dhimpl;
18f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
19f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamiltonimport com.android.nfc.DeviceHost.NfcDepEndpoint;
20f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton
21f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/**
22f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Native interface to the P2P Initiator functions
23f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */
24f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamiltonpublic class NativeP2pDevice implements NfcDepEndpoint {
25f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
26f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mHandle;
27f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
28f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mMode;
29f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
302daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    private byte mLlcpVersion;
312daeeee63456a515693980372908234e1fa14ba5Martijn Coenen
32f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private byte[] mGeneralBytes;
33f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
34f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native byte[] doReceive();
35f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
36f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public byte[] receive() {
37f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doReceive();
38f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
39f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
40f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doSend(byte[] data);
41f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
42f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean send(byte[] data) {
43f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doSend(data);
44f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
45f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
46f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doConnect();
47f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
48f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean connect() {
49f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doConnect();
50f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
51f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
52f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doDisconnect();
53f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
54f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean disconnect() {
55f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doDisconnect();
56f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
57f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
58f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public native byte[] doTransceive(byte[] data);
59f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
60f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public byte[] transceive(byte[] data) {
61f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doTransceive(data);
62f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
63f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
64c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
65f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getHandle() {
66f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mHandle;
67f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
68f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
69c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
70f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getMode() {
71f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mMode;
72f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
73f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
74c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
75f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public byte[] getGeneralBytes() {
76f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mGeneralBytes;
77f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
78f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
792daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    @Override
802daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    public byte getLlcpVersion() {
812daeeee63456a515693980372908234e1fa14ba5Martijn Coenen        return mLlcpVersion;
822daeeee63456a515693980372908234e1fa14ba5Martijn Coenen    }
83f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly}
84