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; 20525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectimport com.android.nfc.LlcpPacket; 21525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 22525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectimport java.io.IOException; 23525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 24525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/** 25525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * LlcpConnectionlessSocket represents a LLCP Connectionless object to be used 26525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * in a connectionless communication 27525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */ 28525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectpublic class NativeLlcpConnectionlessSocket implements DeviceHost.LlcpConnectionlessSocket { 29525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 30525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project private int mHandle; 31525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project private int mSap; 32525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project private int mLinkMiu; 33525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 34525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public NativeLlcpConnectionlessSocket() { } 35525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 36525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public native boolean doSendTo(int sap, byte[] data); 37525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 38525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public native LlcpPacket doReceiveFrom(int linkMiu); 39525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 40525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public native boolean doClose(); 41525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 42525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project @Override 43525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public int getLinkMiu(){ 44525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project return mLinkMiu; 45525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 46525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 47525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project @Override 48525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public int getSap(){ 49525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project return mSap; 50525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 51525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 52525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project @Override 53525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public void send(int sap, byte[] data) throws IOException { 54525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project if (!doSendTo(sap, data)) { 55525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project throw new IOException(); 56525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 57525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 58525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 59525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project @Override 60525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public LlcpPacket receive() throws IOException { 61525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project LlcpPacket packet = doReceiveFrom(mLinkMiu); 62525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project if (packet == null) { 63525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project throw new IOException(); 64525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 65525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project return packet; 66525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 67525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 68525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public int getHandle(){ 69525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project return mHandle; 70525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 71525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project 72525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project @Override 73525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project public void close() throws IOException { 74525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project if (!doClose()) { 75525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project throw new IOException(); 76525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 77525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project } 78525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project} 79