/** * BlueCove - Java library for Bluetooth * Copyright (C) 2009 Vlad Skarzhevskyy * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * * ======================================================================================= * * BlueZ Java docs licensed under GNU Free Documentation License, Version 1.1 http://www.fsf.org * Copyright (C) 2004-2008 Marcel Holtmann <marcel@holtmann.org> * Copyright (C) 2005-2006 Johan Hedberg <johan.hedberg@nokia.com> * Copyright (C) 2005-2006 Claudio Takahasi <claudio.takahasi@indt.org.br> * Copyright (C) 2006-2007 Luiz von Dentz <luiz.dentz@indt.org.br> * * @author vlads * @version $Id$ */ package org.bluez.v3; import java.util.Map; import org.bluez.Error; import org.freedesktop.dbus.DBusInterfaceName; import org.freedesktop.dbus.DBusSignal; import org.freedesktop.dbus.UInt32; import org.freedesktop.dbus.exceptions.DBusException; /** * The "Adapter" interface provides methods to setup the local adapter(s), search remote * devices, pairing and search for services. * <p> * This interface is considered stable and no change is planned. * <p> * For each available adapter the hcid register an adapter object instance provided in the * path "/org/bluez/hci{0, 1, 2, ...}". * * Service org.bluez * <p> * Interface org.bluez.Adapter * <p> * Object path /org/bluez/{hci0,hci1,...} * * Created base on D-Bus API description for BlueZ bluez-utils-3.36/hcid/dbus-api.txt */ @DBusInterfaceName("org.bluez.Adapter") public interface Adapter extends org.bluez.Adapter { /** * Returns the properties of the local adapter. * * @since BlueZ 3.10 */ Map GetInfo() throws Error.NotReady; /** * Returns the device address for a given path. Example: "00:11:22:33:44:55" */ String GetAddress() throws Error.NotReady; /** * Returns the version of the Bluetooth chip. This version is compiled from the LMP * version. In case of EDR the features attribute must be checked. * * @return Example: "Bluetooth 2.0 + EDR" */ String GetVersion(); /** * Returns the revision of the Bluetooth chip. This is a vendor specific value and in * most cases it represents the firmware version. This might derive from the HCI * revision and LMP subversion values or via extra vendor specific commands. * * In case the revision of a chip is not available. This method should return the LMP * subversion value as a String. * * * @return Example: "HCI 19.2" * @throws Error.Failed */ String GetRevision() throws Error.Failed; /** * Returns the manufacturer of the Bluetooth chip. If the company id is not know the * sting "Company ID %d" where %d should be replaced with the numeric value from the * manufacturer field. * * Example: "Cambridge Silicon Radio" */ String GetManufacturer() throws Error.Failed; /** * Returns the company name from the OUI database of the Bluetooth device address. * This function will need a valid and up-to-date oui.txt from the IEEE. This value * will be different from the manufacturer string in the most cases. * * If the oui.txt file is not present or the OUI part of the BD_ADDR is not listed, it * should return the string "OUI %s" where %s is the actual OUI. * * Example: "Apple Computer" */ String GetCompany() throws Error.Failed; /** * Returns a list of available modes the adapter can be switched into. */ String[] ListAvailableModes(); /** * Returns the current mode of a adapter. * * @return Valid modes: "off", "connectable", "discoverable", "limited" */ String GetMode(); /** * Sets mode of the adapter. See GetMode for valid Strings for the mode parameter. * * Sets mode of the adapter. See GetMode for valid strings for the mode parameter. In * addition to the valid strings for GetMode, this method also supports a special * parameter value "on" which will change the mode to the previous non-off mode (or do * nothing if the current mode isn't "off"). * * @param mode */ void SetMode(String mode) throws Error.Failed, Error.NoSuchAdapter; /** * Returns the discoverable timeout in seconds. A value of zero means that the timeout * is disabled and it will stay in discoverable/limited mode forever. * * The default value for the discoverable timeout should be 180 seconds (3 minutes). */ UInt32 GetDiscoverableTimeout(); /** * Sets the discoverable timeout in seconds. A value of zero disables the timeout and * the adapter would be always discoverable/limited. * * Changing this value doesn't set the adapter into discoverable/limited mode. The * SetMode method must be used. * */ void SetDiscoverableTimeout(UInt32 timeout) throws Error.NotReady, Error.InvalidArguments; /** * Returns true if the local adapter is connectable and false if it is switched off. * * It is also possible to use GetMode to retrieve this information. */ boolean IsConnectable(); /** * Returns true if the local adapter is discoverable/limited and false if it is only * connectable or switched off. * * It is also possible to use GetMode to retrieve this information. */ boolean IsDiscoverable(); /** * Return true if the local adapter is connected to the remote device. * * @param address * @return */ boolean IsConnected(String address) throws Error.InvalidArguments; /** * Returns a list with addresses of currently connected remote devices. */ String[] ListConnections(); /** * Returns the current major class value for this system. Currently, only "computer" * is supported. For the other values, unsupported major class error is returned. */ String GetMajorClass() throws Error.InvalidArguments, Error.UnsupportedMajorClass; /** * Returns a list of available minor classes for the currently used major class. At * the moment this should only return a list of minor classes if the major class is * set to "computer". * * If the major class is not "computer" an error should be returned. */ String[] ListAvailableMinorClasses() throws Error.InvalidArguments, Error.UnsupportedMajorClass; /** * Returns the current minor class value for this system where the default major class * is "computer". * * If the major class is not "computer" an error should be returned. * * Valid values: "uncategorized", "desktop", "server", "laptop", "handheld", "palm", * "wearable" * * The default value is "uncategorized". */ String GetMinorClass() throws Error.InvalidArguments, Error.UnsupportedMajorClass; /** * Sets the local minor class and on success it sends a MinorClassChanged signal. * * If the major class is not "computer" an error should be returned. */ void SetMinorClass(String minor) throws Error.NotReady, Error.InvalidArguments, Error.NoSuchAdapter, Error.Failed, Error.UnsupportedMajorClass; /** * Returns the current set of service classes. * * In the case no service classes are set (when no service has been registered) an * empty list should be returned. * * Valid values: "positioning", "networking", "rendering", "capturing", * "object transfer", "audio", "telephony", "information" */ String[] GetServiceClasses() throws Error.NotReady, Error.NoSuchAdapter, Error.Failed; /** * Returns the local adapter name (friendly name) in UTF-8. */ String GetName() throws Error.NotReady, Error.Failed; /** * Sets the local adapter name. If EIR is supported by the local hardware this * modifies also the extended response data value. * * Questions: What to do (in case of EIR) if one low-level API call fails. */ void SetName(String name) throws Error.InvalidArguments, Error.Failed; /** * Returns the properties for a remote device. * * @since BlueZ 3.10 */ Map GetRemoteInfo(String address); /** * Get the version info for a remote device. This request returns always this * information based on its cached data. The base for this string is the LMP version * value and the features for EDR support. * * Not available can be received if the remote device was not contacted(connected) * previously. Remote data is automatically retrieved in the first connection. * * Example: "Bluetooth 2.0 + EDR" */ String GetRemoteVersion(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the revision of the Bluetooth chip. This is a vendor specific value and in most * cases it represents the firmware version. This derives only from the LMP subversion * value. * * Example: "HCI 19.2" */ String GetRemoteRevision(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the manufacturer of the chip for a remote device. * * Example: "Nokia Mobile Phones" */ String GetRemoteManufacturer(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the company name from the OUI database of the Bluetooth device address. This * function will need a valid and up-to-date oui.txt from the IEEE. This value will be * different from the manufacturer string in the most cases. * * Example: "Microsoft Corporation" */ String GetRemoteCompany(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the major device class of the specified device. * * Example: "computer" */ String GetRemoteMajorClass(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the minor device class of the specified device. * * Example: "laptop" */ String GetRemoteMinorClass(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the service classes of the specified device. * * Example: ["networking", "object transfer"] */ String[] GetRemoteServiceClasses(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the remote major, minor, and service classes encoded as 32 bit integer. */ UInt32 GetRemoteClass(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the remote features encoded as bit mask. * * @since BlueZ 3.8 */ byte[] GetRemoteFeatures(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Get the remote device's name. This request returns always a cached name. The * service daemon is responsible for updating the cache. * * NotAvailable error is returned if the name is not in the cache. But if there is a * discovery running, then this function will return RequestDeferred. In this case the * service daemon will queue the request and it will try to resolve the name at the * next possible opportunity. On success a RemoteNameUpdated signal will be send and * if a failure happens it will be indicated by a RemoteNameFailed signal. * * If this is an empty String, the UI might want to display the BD_ADDR instead. * * Example: "00:11:22:33:44:55", "Nokia 770" * * throws Error.InvalidArguments Error.NotAvailable Error.NotReady * Error.RequestDeferred */ String GetRemoteName(String address) throws Error.InvalidArguments, Error.NotAvailable, Error.NotReady, Error.RequestDeferred; /** * Returns alias name for remote device. If this is an empty String value, the UI * should show the remote name instead. * * An alias should supersede the remote name. */ String GetRemoteAlias(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Sets alias name for remote device. If alias name is empty, then no alias is set. * * On success the SetRemoteAlias method will produce a RemoteAliasChanged signal which * applications can use to update their current display of the remote device name. */ void SetRemoteAlias(String address, String alias) throws Error.Failed, Error.InvalidArguments; /** * Resets alias name for remote device. If there is no alias set for the device this * method will silently succeed, but no RemoteAliasCleared signal has to be sent in * this case. * * On success the ClearRemoteAlias method will produce a RemoteAliasCleared signal. */ void ClearRemoteAlias(String address) throws Error.Failed, Error.InvalidArguments; /** * Returns the date and time when the adapter has been seen by a discover procedure. * * Example: "2006-02-08 12:00:00 GMT" */ String LastSeen(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * Returns the date and time of the last time when the adapter has been connected. * * Example: "2006-02-08 12:00:00 GMT" */ String LastUsed(String address) throws Error.InvalidArguments, Error.NotAvailable; /** * This method disconnects a specific remote device by terminating the low-level ACL * connection. The use of this method should be restricted to administrator use. * * A RemoteDeviceDisconnectRequested signal will be sent and the actual disconnection * will only happen 2 seconds later. This enables upper-level applications to * terminate their connections gracefully before the ACL connection is terminated. */ void DisconnectRemoteDevice(String address) throws Error.NotReady, Error.Failed, Error.NoSuchAdapter, Error.InvalidArguments, Error.NotConnected, Error.InProgress; /** * This method creates a bonding with a remote device. * * If a link key for this adapter already exists, this procedure should fail instead * of trying to create a new pairing. * * If no connection to the remote device exists, a low-level ACL connection must be * created. * * This function will block and the calling application should take care of setting * are higher timeout. This might be needed in case of a page timeout from the * low-level HCI commands. * * In case of success it will send a BondingCreated signal. */ void CreateBonding(String address) throws Error.NotReady, Error.Failed, Error.InvalidArguments, Error.AlreadyExists, Error.InProgress, Error.NoSuchAdapter, Error.ConnectionAttemptFailed, Error.AuthenticationFailed, Error.AuthenticationTimeout, Error.AuthenticationRejected, Error.AuthenticationCanceled; /** * This method will cancel the CreateBonding process. * * The CreateBonding method will return AuthenticationCanceled to signal that an * attempt to create a bonding has been canceled. */ void CancelBondingProcess(String address) throws Error.NotReady, Error.Failed, Error.InvalidArguments, Error.NotInProgress, Error.NotAuthorized; /** * This method removes the bonding with a remote device. * * For security reasons this includes removing the actual link key and also * disconnecting any open connections for the remote device. * * If the link key was stored on the Bluetooth chip, it must be removed from there, * too. * * After deleting the link key this method will send a BondingRemoved signal. */ void RemoveBonding(String address) throws Error.NotReady, Error.Failed, Error.InvalidArguments, Error.NoSuchAdapter, Error.DoesNotExist; /** * Returns true if the remote device is bonded and false if no link key is available. */ boolean HasBonding(String address) throws Error.InvalidArguments; /** * List device addresses of currently bonded adapter. */ String[] ListBondings(); /** * Returns the PIN code length that was used in the pairing process. * * @param address * @return unit8 */ byte GetPinCodeLength(String address) throws Error.InvalidArguments, Error.DoesNotExist; /** * Returns the currently used encryption key size. * * This method will fail if no connection to the address has been established. * * @param address * @return unit8 */ byte GetEncryptionKeySize(String address) throws Error.InvalidArguments, Error.Failed; /** * Marks the remote device as trusted. Authorization request will automatically * succeed. * * @param address * @since BlueZ 3.10 */ void SetTrusted(String address) throws Error.InvalidArguments, Error.AlreadyExists; /** * Returns true if the user is trusted or false otherwise. The address parameter must * match one of the remote devices of the service. * * @param address * @return * @since BlueZ 3.10 */ boolean IsTrusted(String address) throws Error.InvalidArguments; /** * Marks the remote device as not trusted. * @since BlueZ 3.10 */ void RemoveTrust(String address) throws Error.InvalidArguments, Error.DoesNotExist; /** * Returns a list of remote devices that are trusted. * * @return */ String[] ListTrusts(); /** * This method starts the device discovery procedure. This includes an inquiry * procedure and remote device name resolving. * <p> * On start up this process will generate a DiscoveryStarted signal and then return * RemoteDeviceFound and also RemoteNameUpdated signals. If the procedure has been * finished an DiscoveryCompleted signal will be sent. */ void DiscoverDevices() throws Error.NotReady, Error.Failed, Error.InProgress, Error.NoSuchAdapter; /** * This method starts the device discovery procedure. This includes an inquiry and an * optional remote device name resolving. The remote names can be retrieved with * GetRemoteName and in the case a name doesn't exist it will be queued for later * resolving and GetRemoteName will return an error. * <p> * While this procedure is running every found device will be returned with * RemoteDeviceFound. While DiscoverDevices() automatically resolves unknown devices * names and sends RemoteNameUpdated in this case it will only happen if GetRemoteName * has been called and no previously stored name is available. */ void DiscoverDevicesWithoutNameResolving() throws Error.NotReady, Error.Failed, Error.InProgress, Error.NoSuchAdapter; /** * This method will cancel any previous DiscoverDevices or * DiscoverDevicesWithoutNameResolving actions. */ void CancelDiscovery() throws Error.NotReady, Error.Failed, Error.NotAuthorized, Error.NoSuchAdapter; /** * This method starts a periodic discovery. */ void StartPeriodicDiscovery() throws Error.NotReady, Error.Failed, Error.InProgress, Error.NoSuchAdapter; /** * This method stops a periodic discovery. If the adapter is not in the periodic * inquiry mode an error(not authorized) is returned. Everyone can request exit from * this mode, it is not restricted to start requestor. */ void StopPeriodicDiscovery() throws Error.NotReady, Error.Failed, Error.NotAuthorized, Error.NoSuchAdapter; /** * Returns true if the periodic inquiry is active and false if it is switched off. */ boolean IsPeriodicDiscovery(); /** * Enable or disable automatic remote name resolving for periodic discovery. * * @param resolve_names * @since BlueZ 3.8 */ void SetPeriodicDiscoveryNameResolving(boolean resolve_names) throws Error.InvalidArguments; /** * Check if automatic remote name resolving is enabled or not for periodic discovery. * @since BlueZ 3.8 */ boolean GetPeriodicDiscoveryNameResolving() throws Error.InvalidArguments; /** * This method will request the SDP database of a remote device and retrieve the * service record handles. To request service browse send an empty match String. */ public UInt32[] GetRemoteServiceHandles(String address, String match) throws Error.InvalidArguments, Error.InProgress, Error.ConnectionAttemptFailed, Error.Failed; /** * This method will request the SDP database of a remote device for a service record * and return the binary stream of it. * */ public byte[] GetRemoteServiceRecord(String address, UInt32 handle) throws Error.InvalidArguments, Error.InProgress, Error.Failed; /** * This method will request the SDP database of a remote device for a service record * and return its data in XML format. * * @since BlueZ 3.8 */ public String GetRemoteServiceRecordAsXML(String address, UInt32 handle) throws Error.InvalidArguments, Error.InProgress, Error.Failed; /** * This method will request the SDP database of a remote device for all supported * services. The identifiers are returned in UUID 128 String format. * * @param address * @return */ String[] GetRemoteServiceIdentifiers(String address) throws Error.InProgress, Error.Failed; /** * This method will finish all SDP transaction for that given address. In general this * call is not needed, but in cases of resources restricted devices it is useful to * call this to finish the SDP transaction before proceeded with profile specific * connections. * * @since BlueZ 3.10 */ void FinishRemoteServiceTransaction(String address); /** * List addresses of all known remote devices (bonded, trusted and used). * * @since BlueZ 3.8 */ String[] ListRemoteDevices(); /** * List addresses of all bonded, trusted, seen or used remote devices since date. * Bonded and trusted devices are always included(the date informed is not applied). * * date format is "YYYY-MM-DD HH:MM:SS GMT" * * @param date * @return * @since BlueZ 3.8 */ String[] ListRecentRemoteDevices(String date); //===================== Signals ===================== /** * If the current mode is changed with SetMode this signal will inform about the new * mode. * * This signal can also be triggered by low-level HCI commands. */ public class ModeChanged extends DBusSignal { private final String mode; public ModeChanged(String path, String mode) throws DBusException { super(path, mode); this.mode = mode; } public String getMode() { return mode; } } /** * After changing the discoverable timeout this signal provide the new timeout value. * * @since BlueZ 3.8 */ public class DiscoverableTimeoutChanged extends DBusSignal { private final UInt32 timeout; public DiscoverableTimeoutChanged(String path, UInt32 timeout) throws DBusException { super(path, timeout); this.timeout = timeout; } public UInt32 getTimeout() { return timeout; } } /** * After changing the minor class with SetMinorClass this signal will provide the new * class value. */ public class MinorClassChanged extends DBusSignal { private final String minorClass; public MinorClassChanged(String path, String minorClass) throws DBusException { super(path, minorClass); this.minorClass = minorClass; } public String getMinorClass() { return minorClass; } } /** * After changing the local adapter name with SetName this signal will provide the new * name. * * This signal can also be triggered by low-level HCI commands. */ public class NameChanged extends DBusSignal { private final String name; public NameChanged(String path, String name) throws DBusException { super(path, name); this.name = name; } public String getMinorClass() { return name; } } /** * This signal indicates that a device discovery procedure has been started. */ public class DiscoveryStarted extends DBusSignal { public DiscoveryStarted(String path) throws DBusException { super(path); } } /** * This signal indicates that a device discovery procedure has been completed. */ public class DiscoveryCompleted extends DBusSignal { public DiscoveryCompleted(String path) throws DBusException { super(path); } } /** * This signal indicates that a periodic discovery procedure has been started. */ public class PeriodicDiscoveryStarted extends DBusSignal { public PeriodicDiscoveryStarted(String path) throws DBusException { super(path); } } /** * This signal indicates that a periodic discovery procedure has been completed. */ public class PeriodicDiscoveryStopped extends DBusSignal { public PeriodicDiscoveryStopped(String path) throws DBusException { super(path); } } /** * This signal will be send every time an inquiry result has been found by the service * daemon. In general they only appear during a device discovery. */ public class RemoteDeviceFound extends DBusSignal { private final String address; private final UInt32 deviceClass; private final int rssi; public RemoteDeviceFound(String path, String address, UInt32 deviceClass, int rssi) throws DBusException { super(path, address, deviceClass, rssi); this.address = address; this.deviceClass = deviceClass; this.rssi = rssi; } /** * @return the address */ public String getDeviceAddress() { return address; } /** * @return the deviceClass */ public UInt32 getDeviceClass() { return deviceClass; } /** * @return the rssi */ public int getDeviceRssi() { return rssi; } } /** * This signal will be send when an inquiry session for a periodic discovery finishes * and previously found devices are no longer in range or visible. */ public class RemoteDeviceDisappeared extends DBusSignal { private final String address; public RemoteDeviceDisappeared(String path, String address) throws DBusException { super(path, address); this.address = address; } /** * @return the address */ public String getDeviceAddress() { return address; } } /** * This signal will be send every time the remote class of device has been changed. * This happens for example after a remote connection attempt. This signal will not be * send if the class of device hasn't changed compared to cached one. */ public class RemoteClassUpdated extends DBusSignal { private final String address; private final UInt32 deviceClass; public RemoteClassUpdated(String path, String address, UInt32 deviceClass) throws DBusException { super(path, address, deviceClass); this.address = address; this.deviceClass = deviceClass; } /** * @return the address */ public String getDeviceAddress() { return address; } /** * @return the deviceClass */ public UInt32 getDeviceClass() { return deviceClass; } } /** * This signal will be send every time the service daemon detect a new name for a * remote device. */ public class RemoteNameUpdated extends DBusSignal { private final String address; private final String name; public RemoteNameUpdated(String path, String address, String name) throws DBusException { super(path, address, name); this.address = address; this.name = name; } /** * @return the address */ public String getDeviceAddress() { return address; } /** * @return the name */ public String getDeviceName() { return name; } } /** * This signal is sent to indicate the provided services of a given remote device. It * will be sent after GetRemoteServiceIdentifiers calls. This signal has at least one * identifier and it does not contain repeated entries. * */ public class RemoteIdentifiersUpdated extends DBusSignal { private final String address; private final String[] identifiers; public RemoteIdentifiersUpdated(String path, String address, String[] identifiers) throws DBusException { super(path, address); this.address = address; this.identifiers = identifiers; } /** * @return the address */ public String getDeviceAddress() { return address; } public String[] getIdentifiers() { return this.identifiers; } } /** * This signal will be sent every time the service daemon tries to resolve a remote * and this fails. */ public class RemoteNameFailed extends DBusSignal { private final String address; public RemoteNameFailed(String path, String address) throws DBusException { super(path, address); this.address = address; } /** * @return the address */ public String getDeviceAddress() { return address; } } /** * This signal will be sent every time the service daemon tries to resolve a remote * name during discovery. * * @since BlueZ 3.10 */ public class RemoteNameRequested extends DBusSignal { private final String address; public RemoteNameRequested(String path, String address) throws DBusException { super(path, address); this.address = address; } /** * @return the address */ public String getDeviceAddress() { return address; } } /** * After changing an alias with SetRemoteAlias this signal will indicate the new * alias. */ public class RemoteAliasChanged extends DBusSignal { private final String address; private final String alias; public RemoteAliasChanged(String path, String address, String alias) throws DBusException { super(path, address); this.address = address; this.alias = alias; } /** * @return the address */ public String getDeviceAddress() { return address; } public String getAlias() { return this.alias; } } /** * After removing an alias with ClearRemoteAlias this signal will indicate that the * alias is no longer valid. */ public class RemoteAliasCleared extends DBusSignal { private final String address; public RemoteAliasCleared(String path, String address) throws DBusException { super(path, address); this.address = address; } /** * @return the address */ public String getDeviceAddress() { return address; } } /** * This signal will be send if a low level connection between two devices has been * created. */ public class RemoteDeviceConnected extends DBusSignal { private final String address; public RemoteDeviceConnected(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * This signal will be sent when a low level disconnection to a remote device has been * requested. The actual disconnection will happen 2 seconds later. */ public class RemoteDeviceDisconnectRequested extends DBusSignal { private final String address; public RemoteDeviceDisconnectRequested(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * This signal will be send if a low level connection between two devices has been * terminated. */ public class RemoteDeviceDisconnected extends DBusSignal { private final String address; public RemoteDeviceDisconnected(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * Signals that a successful bonding has been created. */ public class BondingCreated extends DBusSignal { private final String address; public BondingCreated(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * Signals that a bonding was removed. */ public class BondingRemoved extends DBusSignal { private final String address; public BondingRemoved(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * Sent when SetTrusted() is called. */ public class TrustAdded extends DBusSignal { private final String address; public TrustAdded(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } /** * Sent when RemoveTrust() is called. */ public class TrustRemoved extends DBusSignal { private final String address; public TrustRemoved(String path, String address) throws DBusException { super(path, address); this.address = address; } public String getDeviceAddress() { return address; } } }