All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.bluetooth.L2CAPConnection Maven / Gradle / Ivy

/**
 *  BlueCove - Java library for Bluetooth
 *  Copyright (C) 2004 Intel Corporation
 * 
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *
 *  Java docs licensed under the Apache License, Version 2.0
 *  http://www.apache.org/licenses/LICENSE-2.0 
 *   (c) Copyright 2001, 2002 Motorola, Inc.  ALL RIGHTS RESERVED.
 *
 *   
 *  @version $Id: L2CAPConnection.java 568 2007-06-27 16:15:26Z skarzhevskyy $
 */
package javax.bluetooth;

import java.io.IOException;

import javax.microedition.io.Connection;

/**
 * The L2CAPConnection interface represents a
 * connection-oriented L2CAP channel.  This  interface is to be
 * used as part of the CLDC Generic Connection Framework.
 * 

* To create a client connection, the protocol is btl2cap. * The target is the combination of the address * of the Bluetooth device to connect to and the Protocol * Service Multiplexor (PSM) of the service. * The PSM value is used by the * L2CAP to determine which higher level protocol or application is the * recipient of the messages the layer receives. *

* The parameters defined specific to L2CAP are ReceiveMTU (Maximum * Transmission Unit (MTU)) and TransmitMTU. The ReceiveMTU and TransmitMTU * parameters are optional. ReceiveMTU * specifies the maximum payload size this connection can accept, and * TransmitMTU specifies the maximum payload size this connection can * send. An example of a valid L2CAP client connection string is:
* btl2cap://0050CD00321B:1003;ReceiveMTU=512;TransmitMTU=512 * * @version 1.0 February 11, 2002 */ public interface L2CAPConnection extends Connection { /** * Default MTU value for connection-oriented channels * is 672 bytes. *

* The value of DEFAULT_MTU is 0x02A0 (672). */ public static final int DEFAULT_MTU = 672; /** * Minimum MTU value for connection-oriented channels * is 48 bytes. *

* The value of MINIMUM_MTU is 0x30 (48). */ public static final int MINIMUM_MTU = 48; /** * Returns the MTU that the remote device supports. This value * is obtained after the connection has been configured. If the * application had specified TransmitMTU in the Connector.open() * string then this value should be equal to that. If the application did * not specify any TransmitMTU, then this value should be less than or * equal to the ReceiveMTU the remote device advertised during * channel configuration. * * @return the maximum number of bytes that can be sent in a single call to * send() without losing any data * * @exception IOException if the connection is closed */ public int getTransmitMTU() throws IOException; /** * Returns the ReceiveMTU that the connection supports. If the * connection string did not specify a ReceiveMTU, the value returned will be * less than or equal to the DEFAULT_MTU. Also, if the connection * string did specify an MTU, this value will be less than or equal to the * value specified in the connection string. * * @return the maximum number of bytes that can be read in a single call * to receive() * * @exception IOException if the connection is closed * */ public int getReceiveMTU() throws IOException; /** * Requests that data be sent to the remote device. The TransmitMTU * determines the amount of data that can be successfully sent in * a single send operation. If the size of data is * greater than the TransmitMTU, then only the first TransmitMTU bytes * of the packet are sent, and the rest will be discarded. If * data is of length 0, an empty L2CAP packet will be sent. * * @param data data to be sent * * @exception IOException if data cannot be sent successfully * or if the connection is closed * * @exception NullPointerException if the data is * null */ public void send(byte[] data) throws IOException; /** * Reads a packet of data. The amount of data received in * this operation is related to the value of ReceiveMTU. If * the size of inBuf is greater than or equal to ReceiveMTU, then * no data will be lost. Unlike read() on an * java.io.InputStream, if the size of inBuf is * smaller than ReceiveMTU, then the portion of the L2CAP payload that will * fit into inBuf will be placed in inBuf, the * rest will be discarded. If the application is aware of the number of * bytes (less than ReceiveMTU) it will receive in any transaction, then * the size of inBuf can be less than ReceiveMTU and no data * will be lost. If inBuf is of length 0, all data sent in * one packet is lost unless the length of the packet is 0. * * @param inBuf byte array to store the received data * * @return the actual number of bytes read; 0 if a zero length packet is * received; 0 if inBuf length is zero * * @exception IOException if an I/O error occurs or the connection has been * closed * * @exception InterruptedIOException if the request timed out * * @exception NullPointerException if inBuf is null */ public int receive(byte[] inBuf) throws IOException; /** * Determines if there is a packet that can be read via a call to * receive(). If true, a call to * receive() will not block the application. * * @see #receive * * @return true if there is data to read; * false if there is no data to read * * @exception IOException if the connection is closed * */ public boolean ready() throws IOException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy