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
30f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private byte[] mGeneralBytes;
31f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
32f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native byte[] doReceive();
33f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
34f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public byte[] receive() {
35f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doReceive();
36f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
37f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
38f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doSend(byte[] data);
39f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
40f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean send(byte[] data) {
41f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doSend(data);
42f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
43f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
44f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doConnect();
45f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
46f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean connect() {
47f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doConnect();
48f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
49f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
50f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    private native boolean doDisconnect();
51f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
52f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public boolean disconnect() {
53f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doDisconnect();
54f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
55f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
56f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public native byte[] doTransceive(byte[] data);
57f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    @Override
58f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    public byte[] transceive(byte[] data) {
59f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton        return doTransceive(data);
60f6c56a2191d58e3f9f68e3e7d94908b04b9b66ffJeff Hamilton    }
61f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
62c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
63f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getHandle() {
64f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mHandle;
65f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
66f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
67c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
68f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getMode() {
69f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mMode;
70f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
71f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
72c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    @Override
73f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public byte[] getGeneralBytes() {
74f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mGeneralBytes;
75f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
76f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
77f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly}
78