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
19e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenenimport com.android.nfc.DeviceHost;
20e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenenimport com.android.nfc.LlcpPacket;
21e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen
22e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenenimport java.io.IOException;
23f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
24f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/**
25f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * LlcpConnectionlessSocket represents a LLCP Connectionless object to be used
26f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * in a connectionless communication
27f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */
28e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenenpublic class NativeLlcpConnectionlessSocket implements DeviceHost.LlcpConnectionlessSocket {
29f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
30f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mHandle;
31f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mSap;
32f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mLinkMiu;
33f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
34c9342fef947c49e247495b83f94f16d43cd3562cmike wakerly    public NativeLlcpConnectionlessSocket() { }
35f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
36f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public native boolean doSendTo(int sap, byte[] data);
37f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
38f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public native LlcpPacket doReceiveFrom(int linkMiu);
39f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
40f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public native boolean doClose();
41f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
42e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    @Override
43f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getLinkMiu(){
44f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mLinkMiu;
45f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
46f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
47e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    @Override
48f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getSap(){
49f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mSap;
50f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
51f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
52e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    @Override
53e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    public void send(int sap, byte[] data) throws IOException {
54e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        if (!doSendTo(sap, data)) {
55e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen            throw new IOException();
56e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        }
57e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    }
58e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen
59e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    @Override
60e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    public LlcpPacket receive() throws IOException {
61e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        LlcpPacket packet = doReceiveFrom(mLinkMiu);
62e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        if (packet == null) {
63e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen            throw new IOException();
64e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        }
65e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        return packet;
66e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    }
67e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen
68f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    public int getHandle(){
69f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly        return mHandle;
70f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
71f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
72e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    @Override
73e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    public void close() throws IOException {
74e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        if (!doClose()) {
75e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen            throw new IOException();
76e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen        }
77e008eba3b51c5303d52bf3e9e989dfd03b18435aMartijn Coenen    }
78f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly}
79