javax.bluetooth.LocalDevice Maven / Gradle / Ivy
Show all versions of microemu-jsr-82 Show documentation
/**
* 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: LocalDevice.java 1379 2007-10-13 02:00:43Z vlads $
*/
package javax.bluetooth;
import javax.microedition.io.Connection;
/**
* The LocalDevice
class defines the basic functions of the
* Bluetooth manager. The
* Bluetooth manager provides the lowest level of interface possible
* into the Bluetooth stack. It provides access to and control of the
* local Bluetooth device.
*
* This class produces a singleton object.
*
* @version 1.0 February 11, 2002
* @version 1.1 September 2, 2005
*/
public class LocalDevice {
/**
* The default constructor is hidden so that no one can create a new
* instance of the LocalDevice. To get the LocalDevice
* object for this device, use the getLocalDevice()
* static method in this class.
*
* @see #getLocalDevice
*/
private LocalDevice() throws BluetoothStateException {
}
/**
* Retrieves the LocalDevice
object for the local Bluetooth
* device. Multiple calls to this method will return the same
* object. This method will never return null
.
*
* @return an object that represents the local Bluetooth device
*
* @exception BluetoothStateException if the Bluetooth system could not be
* initialized
*/
public static LocalDevice getLocalDevice() throws BluetoothStateException {
throw new BluetoothStateException("This is not JSR-82 implementation");
}
/**
* Returns the discovery agent for this device. Multiple calls
* to this method will return the same object. This method will
* never return null
.
*
* @return the discovery agent for the local device
*
*/
public DiscoveryAgent getDiscoveryAgent() {
return null;
}
/**
* Retrieves the name of the local device. The Bluetooth
* specification calls this name the "Bluetooth device name" or the
* "user-friendly name".
*
* @return the name of the local device; null
if the
* name could not be retrieved
*/
public String getFriendlyName() {
return null;
}
/**
* Retrieves the DeviceClass
object that represents the
* service classes, major device class, and minor device class of the
* local device. This method will return null
if the
* service classes, major device class, or minor device class could not
* be determined.
*
* @return the service classes, major device class, and minor device
* class of the local device, or null
if the service
* classes, major device class or minor device class could not be
* determined
*
*/
public DeviceClass getDeviceClass() {
return null;
}
/**
* Sets the discoverable mode of the device. The mode
may be
* any number in the range 0x9E8B00 to 0x9E8B3F as defined by the Bluetooth
* Assigned Numbers Document. When this specification was defined, only GIAC
* (DiscoveryAgent.GIAC
) and
* LIAC (DiscoveryAgent.LIAC
) were defined, but Bluetooth profiles
* may add additional access codes in the future. To determine what values
* may be used, check the Bluetooth Assigned Numbers document at
*
* http://www.bluetooth.org/assigned-numbers/baseband.htm. If
* DiscoveryAgent.GIAC
or DiscoveryAgent.LIAC
are
* provided, then this method will attempt to put the device into general or
* limited discoverable mode, respectively. To take a device out of
* discoverable mode, provide the
* DiscoveryAgent.NOT_DISCOVERABLE
flag. The BCC decides if the
* request will be granted. In addition to the BCC, the Bluetooth system
* could effect the discoverability of a device.
*
* According to the Bluetooth Specification, a device should only be
* limited discoverable (DiscoveryAgent.LIAC
) for 1 minute.
* This is handled by the implementation of the API. After the minute is
* up, the device will revert back to the previous discoverable mode.
*
* @see DiscoveryAgent#GIAC
* @see DiscoveryAgent#LIAC
* @see DiscoveryAgent#NOT_DISCOVERABLE
*
* @param mode the mode the device should be in; valid modes are
* DiscoveryAgent.GIAC
, DiscoveryAgent.LIAC
,
* DiscoveryAgent.NOT_DISCOVERABLE
and any value in the
* range 0x9E8B00 to 0x9E8B3F
*
* @return true
if the request succeeded, otherwise
* false
if the request failed because the BCC denied
* the request; false
if the Bluetooth system does not
* support the access mode specified in mode
*
* @exception IllegalArgumentException if the mode
is
* not DiscoveryAgent.GIAC
, DiscoveryAgent.LIAC
,
* DiscoveryAgent.NOT_DISCOVERABLE
, or in the range
* 0x9E8B00 to 0x9E8B3F
*
* @exception BluetoothStateException if the Bluetooth system is in
* a state that does not allow the discoverable mode to be changed
*
*/
public boolean setDiscoverable(int mode) throws BluetoothStateException {
if ((mode != DiscoveryAgent.GIAC) && (mode != DiscoveryAgent.LIAC) && (mode != DiscoveryAgent.NOT_DISCOVERABLE)
&& (mode < 0x9E8B00 || mode > 0x9E8B3F)) {
throw new IllegalArgumentException("Invalid discoverable mode");
}
return false;
}
/**
* Retrieves the power state of the local Bluetooth device.
*
* @since 1.1
* @return true
if the local Bluetooth device is powered on,
* false
if the local Bluetooth device is off.
*/
public static boolean isPowerOn() {
return false;
}
/**
* Retrieves the local device's discoverable mode. The return value
* will be DiscoveryAgent.GIAC
,
* DiscoveryAgent.LIAC
,
* DiscoveryAgent.NOT_DISCOVERABLE
, or a value in the
* range 0x9E8B00 to 0x9E8B3F.
*
* @see DiscoveryAgent#GIAC
* @see DiscoveryAgent#LIAC
* @see DiscoveryAgent#NOT_DISCOVERABLE
*
* @return the discoverable mode the device is presently in
*/
public int getDiscoverable() {
return DiscoveryAgent.NOT_DISCOVERABLE;
}
/**
* Retrieves Bluetooth system properties. The following properties
* must be supported, but additional values are allowed:
*
* Property Name Description
* bluetooth.api.version The version of the Java
* API for Bluetooth wireless technology that is supported. For this
* version it will be set to "1.0".
* bluetooth.master.switch Is master/slave switch
* allowed?
* Valid values are either "true" or "false".
* bluetooth.sd.attr.retrievable.max Maximum number of
* service attributes to be retrieved per service record. The string
* will be in Base 10 digits.
* bluetooth.connected.devices.max The maximum number
* of connected devices supported. This number may be greater than 7 if
* the implementation handles parked connections. The string will be
* in Base 10 digits.
* bluetooth.l2cap.receiveMTU.max The maximum ReceiveMTU
* size in bytes supported in L2CAP. The string will be in Base 10
* digits, e.g. "32".
* bluetooth.sd.trans.max Maximum
* number of concurrent service discovery transactions. The string
* will be in Base 10 digits.
* bluetooth.connected.inquiry.scan Is Inquiry scanning allowed
* during connection? Valid values are either "true" or "false".
* bluetooth.connected.page.scan Is Page
* scanning allowed during connection? Valid values are either "true"
* or "false".
* bluetooth.connected.inquiry Is Inquiry allowed during a
* connection? Valid values are either "true" or "false".
* bluetooth.connected.page Is paging allowed during a
* connection? In other words, can a connection be established to one
* device if it is already connected to another device. Valid values are
* either "true" or "false".
*
*
* BlueCove specific properties.
*
* Property Name Description
* bluecove The version of BlueCove implementation
* bluecove.stack The Bluetooth Stack: "winsock", "widcomm" or "bluesoleil"
*
*
* @param property the property to retrieve as defined in this class.
*
* @return the value of the property specified; null
if
* the property
is not defined
*/
public static String getProperty(String property) {
return null;
}
/**
* Retrieves the Bluetooth address of the local device. The
* Bluetooth address will never be null
. The Bluetooth address
* will be 12 characters long. Valid characters are 0-9 and A-F.
*
* @return the Bluetooth address of the local device
*/
public String getBluetoothAddress() {
return null;
}
/**
* Gets the service record corresponding to a btspp
,
* btl2cap
, or btgoep
notifier. In the
* case of a run-before-connect service, the service record
* returned by getRecord()
was created by the same
* call to Connector.open()
that created the
* notifier
.
*
* If a connect-anytime server application does not already
* have a service record in the SDDB, either because a service
* record for this service was never added to the SDDB or because
* the service record was added and then removed, then the
* ServiceRecord
returned by getRecord()
* was created by the same call to Connector.open()
* that created the notifier.
*
In the case of a connect-anytime service, there may be a
* service record in the SDDB corresponding to this service prior
* to application startup. In this case, the
* getRecord()
method must return a
* ServiceRecord
whose contents match those of the
* corresponding service record in the SDDB. If a connect-anytime
* server application made changes previously to its service record
* in the SDDB (for example, during a previous execution of the
* server), and that service record is still in the SDDB, then
* those changes must be reflected in the
* ServiceRecord
returned by getRecord()
.
*
*
Two invocations of this method with the same
* notifier
argument return objects that describe the
* same service attributes, but the return values may be different
* object references.
*
* @param notifier a connection that waits for clients to connect
* to a Bluetooth service
*
* @return the ServiceRecord
associated with
* notifier
*
* @exception IllegalArgumentException if notifier
is
* closed, or if notifier
does not implement one of
* the following interfaces:
* javax.microedition.io.StreamConnectionNotifier
,
* javax.bluetooth.L2CapConnectionNotifier
, or
* javax.obex.SessionNotifier
. This exception is
* also thrown if notifier
is not a Bluetooth
* notifier, e.g., a StreamConnectionNotifier
created
* with a scheme other than btspp
.
*
* @exception NullPointerException if notifier
is
* null
*
*/
public ServiceRecord getRecord(Connection notifier) {
if (notifier == null) {
throw new NullPointerException("notifier is null");
}
return null;
}
/**
* Updates the service record in the local SDDB that corresponds
* to the ServiceRecord
parameter. Updating is
* possible only if srvRecord
was obtained using the
* getRecord()
method. The service record in the SDDB
* is modified to have the same service attributes with the same
* contents as srvRecord
.
*
*
*
* If srvRecord
was obtained from the SDDB of a
* remote device using the service search methods, updating is not
* possible and this method will throw an
* IllegalArgumentException
.
*
*
*
* If the srvRecord
parameter is a btspp
* service record, then before the SDDB is changed the following
* checks are performed. If any of these checks fail, then an
* IllegalArgumentException
is thrown.
*
*
* - ServiceClassIDList and ProtocolDescriptorList, the mandatory
* service attributes for a
btspp
service record, must
* be present in srvRecord
.
* - L2CAP and RFCOMM must be in the ProtocolDescriptorList.
*
srvRecord
must not have changed the RFCOMM server
* channel number from the channel number that is currently in the
* SDDB version of this service record.
*
*
*
*
* If the srvRecord
parameter is a btl2cap
* service record, then before the SDDB is changed the following
* checks are performed. If any of these checks fail, then an
* IllegalArgumentException
is thrown.
*
* - ServiceClassIDList and ProtocolDescriptorList, the mandatory
* service attributes for a
btl2cap
service record,
* must be present in srvRecord
.
* - L2CAP must be in the ProtocolDescriptorList.
*
srvRecord
must not have changed the PSM value
* from the PSM value that is currently in the SDDB version of this
* service record.
*
*
*
*
* If the srvRecord
parameter is a btgoep
* service record, then before the SDDB is changed the following
* checks are performed. If any of these checks fail, then an
* IllegalArgumentException
is thrown.
*
* - ServiceClassIDList and ProtocolDescriptorList, the mandatory
* service attributes for a
btgoep
service record, must
* be present in srvRecord
.
* - L2CAP, RFCOMM and OBEX must all be in the
* ProtocolDescriptorList.
*
srvRecord
must not have changed the RFCOMM server
* channel number from the channel number that is currently in the
* SDDB version of this service record.
*
*
*
*
* updateRecord()
is not required to ensure that
* srvRecord
is a completely valid service record. It
* is the responsibility of the application to ensure that
* srvRecord
follows all of the applicable syntactic
* and semantic rules for service record correctness.
*
*
*
* If there is currently no SDDB version of the
* srvRecord
service record, then this method will do
* nothing.
*
* @param srvRecord the new contents to use for the service record in
* the SDDB
*
* @exception NullPointerException if srvRecord
is
* null
*
* @exception IllegalArgumentException if the structure of the
* srvRecord
is missing any mandatory service
* attributes, or if an attempt has been made to change any of the
* values described as fixed.
*
* @exception ServiceRegistrationException if the local SDDB could
* not be updated successfully due to
* insufficient disk space, database locks, etc.
*
*/
public void updateRecord(ServiceRecord srvRecord) throws ServiceRegistrationException {
if (srvRecord == null) {
throw new NullPointerException("Service Record is null");
}
}
}