mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-12 13:34:41 +08:00
1396 lines
39 KiB
Plaintext
1396 lines
39 KiB
Plaintext
D-Bus API description for BlueZ
|
|
*******************************
|
|
|
|
Copyright (C) 2004-2007 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) 2005-2006 Eduardo Rocha <eduardo.rocha@indt.org.br>
|
|
|
|
|
|
Constant definitions
|
|
====================
|
|
|
|
The class of device definition from the Bluetooth specification divides into
|
|
three different parts. It the major class, the minor class and the service
|
|
classes. The D-Bus interface will always use string constants to identify
|
|
any of these classes.
|
|
|
|
Service classes positioning, networking, rendering, capturing,
|
|
object transfer, audio, telephony, information
|
|
|
|
Major classes miscellaneous, computer, phone, access point,
|
|
audio/video, peripheral, imaging, wearable, toy,
|
|
uncategorized
|
|
|
|
Minor classes computer uncategorized, desktop, server, laptop, handheld,
|
|
palm, wearable
|
|
|
|
Minor classes phone uncategorized, cellular, cordless, smart phone,
|
|
modem, isdn
|
|
|
|
Minor classes access point fully, 1-17 percent, 17-33 percent,
|
|
33-50 percent, 50-67 percent, 67-83 percent,
|
|
83-99 percent, not available
|
|
|
|
Minor classes audio video uncategorized, headset, handsfree,microphone,
|
|
loudspeaker, headphones, portable audio, car audio,
|
|
set-top box, hifi audio, vcr, video camera, camcorder,
|
|
video monitor, video display and loudspeaker,
|
|
video conferencing, gaming/toy, unknown
|
|
|
|
Minor classes peripheral uncategorized, keyboard, pointing, combo
|
|
|
|
Minor classes imaging display, camera, scanner, printer
|
|
|
|
Minor classes wearable wrist watch, pager, jacket, helmet, glasses
|
|
|
|
Minor classes toy robot, vehicle, doll, controller, game
|
|
|
|
Error hierarchy
|
|
===============
|
|
|
|
Interface org.bluez.Error
|
|
|
|
Errors Failed
|
|
|
|
An unknown error occured. The error messages is
|
|
taken from the strerror(errno) function.
|
|
|
|
InvalidArguments
|
|
|
|
Error returned when the argument list is invalid or
|
|
out of specification for the method.
|
|
|
|
NotAuthorized
|
|
|
|
Error returned when the caller of a method is not
|
|
authorized. This might happen if a caller tries to
|
|
terminate a connection that it hasn't created.
|
|
|
|
OutOfMemory
|
|
|
|
Error returned when a memory allocation via malloc()
|
|
fails. This error is similar to ENOMEM.
|
|
|
|
NoSuchAdapter
|
|
|
|
Error returned when the requested adapter doesn't
|
|
exists. This error is similar to ENODEV.
|
|
|
|
NotReady
|
|
|
|
Error returned when the adapter is DOWN.
|
|
|
|
NotAvailable
|
|
|
|
Error returned when a specified record is not
|
|
available.
|
|
|
|
NotConnected
|
|
|
|
Error returned when the remote device isn't connected
|
|
at the moment.
|
|
|
|
ConnectionAttemptFailed
|
|
|
|
AlreadyExists
|
|
|
|
Error returned if a record for a specific procedure
|
|
already exists and it has been tried create a new
|
|
one. The error message however should indicate the
|
|
procedure that fails. For example "Bonding already
|
|
exists"
|
|
|
|
DoesNotExist
|
|
|
|
Error returned if a record for a specifc procedure
|
|
doesn't exist. The error message however should
|
|
indicate the procedure that fails. For example
|
|
"Bonding does not exist".
|
|
|
|
InProgress
|
|
|
|
Error returned if an operation is in progress. Since
|
|
this is a generic error that can be used in various
|
|
situations, the error message should be more clear
|
|
about what is in progress. For example "Bonding in
|
|
progress".
|
|
|
|
NotSupported
|
|
The feature is not supported by the remote device
|
|
|
|
AuthenticationFailed
|
|
|
|
AuthenticationTimeout
|
|
|
|
AuthenticationRejected
|
|
|
|
AuthenticationCanceled
|
|
|
|
UnsupportedMajorClass
|
|
|
|
|
|
Manager hierarchy
|
|
=================
|
|
|
|
Service org.bluez
|
|
Interface org.bluez.Manager
|
|
Object path /org/bluez
|
|
|
|
Methods uint32 InterfaceVersion()
|
|
|
|
Returns the current interface version. At the moment
|
|
only version 0 is supported.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
string DefaultAdapter()
|
|
|
|
Returns object path for the default adapter.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
string FindAdapter(string pattern)
|
|
|
|
Returns object path for the specified adapter. Valid
|
|
patterns are "hci0" or "00:11:22:33:44:55".
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
array{string} ListAdapters()
|
|
|
|
Returns list of adapter object paths under /org/bluez
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.OutOfMemory
|
|
|
|
string FindService(string pattern)
|
|
|
|
Returns object path for the specified service. Valid
|
|
patterns are the unqiue identifier or a bus name.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NoSuchService
|
|
|
|
array{string} ListServices()
|
|
|
|
Returns list of object paths of current services.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
string ActivateService(string pattern)
|
|
|
|
Returns the unqiue bus id of the specified service.
|
|
Valid patterns are the same as for FindService(). If
|
|
the service is not running it will be started.
|
|
|
|
Signals void AdapterAdded(string path)
|
|
|
|
Parameter is object path of added adapter.
|
|
|
|
void AdapterRemoved(string path)
|
|
|
|
Parameter is object path of removed adapter.
|
|
|
|
void DefaultAdapterChanged(string path)
|
|
|
|
Parameter is object path of the new default adapter.
|
|
|
|
void ServiceAdded(string path)
|
|
|
|
Parameter is object path of registered service agent.
|
|
|
|
void ServiceRemoved(string path)
|
|
|
|
Parameter is object path of unregistered service agent.
|
|
|
|
|
|
Database hierarchy
|
|
==================
|
|
|
|
Service org.bluez
|
|
Interface org.bluez.Database
|
|
Object path /org/bluez or /org/bluez/{hci0,hci1,...}
|
|
|
|
Methods void RegisterService(string identifier, string name, string description)
|
|
|
|
This method registers a new service specified by
|
|
its unique identifier. This is only needed for
|
|
services that are not started through the
|
|
Bluetooth daemon.
|
|
|
|
void UnregisterService(string identifier)
|
|
|
|
This method unregisters a service specified by
|
|
its unique identifier.
|
|
|
|
uint32 AddServiceRecord(array{byte})
|
|
|
|
Adds a new service record and returns the assigned
|
|
record handle.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.Failed
|
|
|
|
uint32 AddServiceRecordFromXML(string record)
|
|
|
|
Adds a new service record and returns the assigned
|
|
record handle.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.Failed
|
|
|
|
void UpdateServiceRecord(uint32 handle, array{byte})
|
|
|
|
Updates a given service record.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
org.bluez.Error.Failed
|
|
|
|
void RemoveServiceRecord(uint32 handle)
|
|
|
|
Remove a service record identified by its handle.
|
|
|
|
It is only possible to remove service records that
|
|
where added by the current connection.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAuthorized
|
|
org.bluez.Error.DoesNotExist
|
|
org.bluez.Error.Failed
|
|
|
|
void RequestAuthorization(string address, string uuid)
|
|
|
|
This method gets called when a service wants to check
|
|
if a remote device is authorized to perform some
|
|
action. The authorization request is forwarded to an
|
|
authorization agent.
|
|
|
|
The address parameter is the Bluetooth address of the
|
|
remote device and the uuid is the identifier of the
|
|
profile requesting the authorization. This parameter
|
|
can also be left blank.
|
|
|
|
void CancelAuthorizationRequest(string address, string uuid)
|
|
|
|
This method cancels an authorization process requested
|
|
by a previous call to RequestAuthorization(). The
|
|
address and uuid parameters must match.
|
|
|
|
|
|
Adapter hierarchy
|
|
=================
|
|
|
|
Service org.bluez
|
|
Interface org.bluez.Adapter
|
|
Object path /org/bluez/{hci0,hci1,...}
|
|
|
|
Methods dict GetInfo()
|
|
|
|
Returns the properties of the local adapter.
|
|
|
|
string GetAddress()
|
|
|
|
Returns the device address for a given path.
|
|
|
|
Example: "00:11:22:33:44:55"
|
|
|
|
Possible errors: none
|
|
|
|
string GetVersion()
|
|
|
|
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.
|
|
|
|
Example: "Bluetooth 2.0 + EDR"
|
|
|
|
Possible errors: none
|
|
|
|
string GetRevision()
|
|
|
|
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.
|
|
|
|
Example: "HCI 19.2"
|
|
|
|
Possible errors: org.bluez.Error.Failed
|
|
|
|
string GetManufacturer()
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.Failed
|
|
|
|
string GetCompany()
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.Failed
|
|
|
|
string GetMode()
|
|
|
|
Returns the current mode of a adapter.
|
|
|
|
Valid modes: "off", "connectable", "discoverable"
|
|
|
|
Possible errors: none
|
|
|
|
void SetMode(string mode)
|
|
|
|
Sets mode of the adapter. See GetMode for valid strings
|
|
for the mode parameter.
|
|
|
|
Possible errors: org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.Failed
|
|
|
|
uint32 GetDiscoverableTimeout()
|
|
|
|
Returns the discoverable timeout in seconds. A value
|
|
of zero means that the timeout is disabled and it will
|
|
stay in discoverable mode forever.
|
|
|
|
The default value for the discoverable timeout should
|
|
be 180 seconds (3 minutes).
|
|
|
|
Possible errors: none
|
|
|
|
void SetDiscoverableTimeout(uint32 timeout)
|
|
|
|
Sets the discoverable timeout in seconds. A value of
|
|
zero disables the timeout and the adapter would be
|
|
always discoverable.
|
|
|
|
Changing this value doesn't set the adapter into
|
|
discoverable mode. The SetMode method must be used.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.InvalidArguments
|
|
|
|
boolean IsConnectable()
|
|
|
|
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.
|
|
|
|
Possible errors: none
|
|
|
|
boolean IsDiscoverable()
|
|
|
|
Returns true if the local adapter is discoverable and
|
|
false if it is only connectable or switched off.
|
|
|
|
It is also possible to use GetMode to retrieve this
|
|
information.
|
|
|
|
Possible errors: none
|
|
|
|
boolean IsConnected(string address)
|
|
|
|
Return true if the local adapter is connected to
|
|
the remote device.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
array{string} ListConnections()
|
|
|
|
Returns a list with addresses of currently connected
|
|
remote devices.
|
|
|
|
Possible errors: none
|
|
|
|
string GetMajorClass()
|
|
|
|
Returns the current major class value for this
|
|
system. Currently, only "computer" is supported.
|
|
For the other values, unsupported major class
|
|
error is returned.
|
|
|
|
Possible errors: org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.UnsupportedMajorClass
|
|
org.bluez.Error.Failed
|
|
|
|
array{string} ListAvailableMinorClasses()
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.UnsupportedMajorClass
|
|
|
|
string GetMinorClass()
|
|
|
|
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".
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.UnsupportedMajorClass
|
|
|
|
void SetMinorClass(string minor)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.UnsupportedMajorClass
|
|
|
|
array{string} GetServiceClasses()
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.Failed
|
|
|
|
string GetName()
|
|
|
|
Returns the local adapter name (friendly name) in UTF-8.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
|
|
void SetName(string name)
|
|
|
|
Sets the local adapter name. If EIR is supported by
|
|
the local hardware this modifies also the extended
|
|
response data value.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.Failed
|
|
|
|
Questions: What to do (in case of EIR) if one
|
|
low-level API call fails.
|
|
|
|
dict GetRemoteInfo(string address)
|
|
|
|
Returns the properties for a remote device.
|
|
|
|
string GetRemoteVersion(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"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteRevision(string address)
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteManufacturer(string address)
|
|
|
|
Get the manufacturer of the chip for a remote device.
|
|
|
|
Example: "Nokia Mobile Phones"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteCompany(string address)
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteMajorClass(string address)
|
|
|
|
Get the major device class of the specified device.
|
|
|
|
Example: "computer"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteMinorClass(string address)
|
|
|
|
Get the minor device class of the specified device.
|
|
|
|
Example: "laptop"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
array{string} GetRemoteServiceClasses(string address)
|
|
|
|
Get the service classes of the specified device.
|
|
|
|
Example: ["networking", "object transfer"]
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
uint32 GetRemoteClass(string address)
|
|
|
|
Get the remote major, minor, and service classes
|
|
encoded as 32 bit integer.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
array{byte} GetRemoteFeatures(string address)
|
|
|
|
Get the remote features encoded as bit mask.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
string GetRemoteName(string address)
|
|
|
|
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"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
org.bluez.Error.NotReady
|
|
org.bluez.Error.RequestDeferred
|
|
|
|
string GetRemoteAlias(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
void SetRemoteAlias(string address, string alias)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.Failed
|
|
org.bluez.Error.InvalidArguments
|
|
|
|
void ClearRemoteAlias(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.Failed
|
|
org.bluez.Error.InvalidArguments
|
|
|
|
string LastSeen(string address)
|
|
|
|
Returns the date and time when the adapter has been
|
|
seen by a discover procedure.
|
|
|
|
Example: "2006-02-08 12:00:00 GMT"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
Question: Can we find a better name?
|
|
|
|
string LastUsed(string address)
|
|
|
|
Returns the date and time of the last time when the
|
|
adapter has been connected.
|
|
|
|
Example: "2006-02-08 12:00:00 GMT"
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotAvailable
|
|
|
|
Question: Can we find a better name?
|
|
|
|
void DisconnectRemoteDevice(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotConnected
|
|
org.bluez.Error.InProgress
|
|
|
|
void CreateBonding(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.AlreadyExists
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.ConnectionAttemptFailed
|
|
org.bluez.Error.AuthenticationFailed
|
|
org.bluez.Error.AuthenticationTimeout
|
|
org.bluez.Error.AuthenticationRejected
|
|
org.bluez.Error.AuthenticationCanceled
|
|
|
|
void CancelBondingProcess(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NotInProgress
|
|
org.bluez.Error.NotAuthorized
|
|
|
|
void RemoveBonding(string address)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.NoSuchAdapter
|
|
org.bluez.Error.DoesNotExist
|
|
|
|
boolean HasBonding(string address)
|
|
|
|
Returns true if the remote device is bonded and false
|
|
if no link key is available.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
array{string} ListBondings()
|
|
|
|
List device addresses of currently bonded adapter.
|
|
|
|
Possible errors: none
|
|
|
|
uint8 GetPinCodeLength(string address)
|
|
|
|
Returns the PIN code length that was used in the
|
|
pairing process.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.DoesNotExist
|
|
|
|
uint8 GetEncryptionKeySize(string address)
|
|
|
|
Returns the currently used encryption key size.
|
|
|
|
This method will fail if no connection to the address
|
|
has been established.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.Failed
|
|
|
|
void SetTrusted(string address)
|
|
|
|
Marks the remote device as trusted. Authorization
|
|
request will automatically succeed.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.AlreadyExists
|
|
|
|
boolean IsTrusted(string address)
|
|
|
|
Returns true if the user is trusted or false otherwise.
|
|
The address parameter must match one of the remote
|
|
devices of the service.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
void RemoveTrust(string address)
|
|
|
|
Marks the remote device as not trusted.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.DoesNotExist
|
|
|
|
void DiscoverDevices()
|
|
|
|
This method starts the device discovery procedure. This
|
|
includes an inquiry procedure and remote device name
|
|
resolving.
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
void DiscoverDevicesWithoutNameResolving()
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
void CancelDiscovery()
|
|
|
|
This method will cancel any previous DiscoverDevices
|
|
or DiscoverDevicesWithoutNameResolving actions.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.NotAuthorized
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
void StartPeriodicDiscovery()
|
|
|
|
This method starts a periodic discovery.
|
|
|
|
Possible errors: org.bluez.error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
void StopPeriodicDiscovery()
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.NotReady
|
|
org.bluez.Error.Failed
|
|
org.bluez.Error.NotAuthorized
|
|
org.bluez.Error.NoSuchAdapter
|
|
|
|
boolean IsPeriodicDiscovery()
|
|
|
|
Returns true if the periodic inquiry is active and
|
|
false if it is switched off.
|
|
|
|
Possible errors: none
|
|
|
|
void SetPeriodicDiscoveryNameResolving(boolean resolve_names)
|
|
|
|
Enable or disable automatic remote name resolving for
|
|
periodic discovery.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
boolean GetPeriodicDiscoveryNameResolving()
|
|
|
|
Check if automatic remote name resolving is enabled or not
|
|
for periodic discovery.
|
|
|
|
Possible error: org.bluez.Error.InvalidArguments
|
|
|
|
array{uint32} GetRemoteServiceHandles(string address, string match)
|
|
|
|
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.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.ConnectionAttemptFailed
|
|
org.bluez.Error.Failed
|
|
|
|
array{byte} GetRemoteServiceRecord(string address, uint32 handle)
|
|
|
|
This method will request the SDP database of a remote
|
|
device for a service record and return the binary
|
|
stream of it.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.Failed
|
|
|
|
string GetRemoteServiceRecordAsXML(string address, uint32 handle)
|
|
|
|
This method will request the SDP database of a remote
|
|
device for a service record and return its data in XML
|
|
format.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.InProgress
|
|
org.bluez.Error.Failed
|
|
|
|
void FinishRemoteServiceTransaction(string address)
|
|
|
|
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.
|
|
|
|
array{string} ListRemoteDevices()
|
|
|
|
List addresses of all known remote devices (seen, used or bonded).
|
|
|
|
Possible errors: none
|
|
|
|
array{string} ListRecentRemoteDevices(string date)
|
|
|
|
List addresses of all used or bonded remote devices since date.
|
|
|
|
date format is "YYYY-MM-DD HH:MM:SS GMT"
|
|
|
|
Possible errors: none
|
|
|
|
Signals void ModeChanged(string mode)
|
|
|
|
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.
|
|
|
|
void DiscoverableTimeoutChanged(uint32 timeout)
|
|
|
|
After changing the discoverable timeout this signal
|
|
provide the new timeout value.
|
|
|
|
void MinorClassChanged(string minor)
|
|
|
|
After changing the minor class with SetMinorClass this
|
|
signal will provide the new class value.
|
|
|
|
void NameChanged(string name)
|
|
|
|
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.
|
|
|
|
void DiscoveryStarted()
|
|
|
|
This signal indicates that a device discovery
|
|
procedure has been started.
|
|
|
|
void DiscoveryCompleted()
|
|
|
|
This signal indicates that a device discovery
|
|
procedure has been completed.
|
|
|
|
void PeriodicDiscoveryStarted()
|
|
|
|
This signal indicates that a periodic discovery
|
|
procedure has been started.
|
|
|
|
void PeriodicDiscoveryStopped()
|
|
|
|
This signal indicates that a periodic discovery
|
|
procedure has been completed.
|
|
|
|
void RemoteDeviceFound(string address, uint32 class, int16 rssi)
|
|
|
|
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.
|
|
|
|
void RemoteDeviceDisappeared(string address)
|
|
|
|
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.
|
|
|
|
void RemoteClassUpdated(string address, uint32 class)
|
|
|
|
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.
|
|
|
|
void RemoteNameUpdated(string address, string name)
|
|
|
|
This signal will be send every time the service daemon
|
|
detect a new name for a remote device.
|
|
|
|
void RemoteNameFailed(string address)
|
|
|
|
This signal will be sent every time the service daemon
|
|
tries to resolve a remote and this fails.
|
|
|
|
void RemoteNameRequested(string address)
|
|
|
|
This signal will be sent every time the service daemon
|
|
tries to resolve a remote name during discovery.
|
|
|
|
void RemoteAliasChanged(string address, string alias)
|
|
|
|
After changing an alias with SetRemoteAlias this
|
|
signal will indicate the new alias.
|
|
|
|
void RemoteAliasCleared(string address)
|
|
|
|
After removing an alias with ClearRemoteAlias this
|
|
signal will indicate that the alias is no longer
|
|
valid.
|
|
|
|
void RemoteDeviceConnected(string address)
|
|
|
|
This signal will be send if a low level connection
|
|
between two devices has been created.
|
|
|
|
void RemoteDeviceDisconnectRequested(string 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.
|
|
|
|
void RemoteDeviceDisconnected(string address)
|
|
|
|
This signal will be send if a low level connection
|
|
between two devices has been terminated.
|
|
|
|
void BondingCreated(string address)
|
|
|
|
Signals that a successful bonding has been created.
|
|
|
|
void BondingRemoved(string address)
|
|
|
|
Signals that a bonding was removed.
|
|
|
|
|
|
Service hierarchy
|
|
=================
|
|
|
|
Service org.bluez
|
|
Interface org.bluez.Service
|
|
Object path path from org.bluez.Manager.ListServices()
|
|
|
|
Methods dict GetInfo()
|
|
|
|
Returns the service properties.
|
|
|
|
string GetIdentifier()
|
|
|
|
This method returns the service identifier.
|
|
|
|
string GetName()
|
|
|
|
This method returns the service name.
|
|
|
|
string GetDescription()
|
|
|
|
This method returns the service description.
|
|
|
|
string GetBusName() [experimental]
|
|
|
|
Returns the unique bus name of the service if it has
|
|
been started.
|
|
|
|
Possible errors: org.bluez.Error.NotAvailable
|
|
|
|
void Start()
|
|
|
|
This method tells the system to start the
|
|
service.
|
|
|
|
void Stop()
|
|
|
|
This method tells the system to stop the
|
|
service.
|
|
|
|
boolean IsRunning()
|
|
|
|
Returns true if the service has been started and
|
|
is currently active. Otherwise, it returns false.
|
|
|
|
boolean IsExternal()
|
|
|
|
Returns true if the service was registered using the
|
|
Database.RegisterService method instead of a .service
|
|
file. The Start and Stop methods are not applicable to
|
|
external services and will return an error.
|
|
|
|
array{string} ListUsers() [experimental]
|
|
|
|
Returns list of current users (device addresses)
|
|
of the service.
|
|
|
|
void RemoveUser(string address) [experimental]
|
|
|
|
Removes a user of the service. The address parameter
|
|
must match one of the current users of the service.
|
|
|
|
void SetTrusted(string address) [experimental]
|
|
|
|
Marks the user as trusted.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.AlreadyExists
|
|
|
|
boolean IsTrusted(string address) [experimental]
|
|
|
|
Returns true if the user is trusted or false otherwise.
|
|
The address parameter must match one of the
|
|
current users of the service.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
|
|
void RemoveTrust(string address) [experimental]
|
|
|
|
Marks the user as not trusted.
|
|
|
|
Possible errors: org.bluez.Error.InvalidArguments
|
|
org.bluez.Error.DoesNotExist
|
|
|
|
Signals void Started()
|
|
|
|
The object path of this signal contains which service
|
|
was started.
|
|
|
|
void Stopped()
|
|
|
|
The object path of this signal contains which service
|
|
was stopped.
|
|
|
|
void TrustAdded(string address)
|
|
|
|
Sent when SetTrusted() is called.
|
|
|
|
void TrustRemoved(string address)
|
|
|
|
Sent when RemoveTrust() is called.
|
|
|
|
|
|
Security hierarchy
|
|
==================
|
|
|
|
Service org.bluez
|
|
Interface org.bluez.Security
|
|
Object path /org/bluez or /org/bluez/{hci0,hci1,...}
|
|
|
|
Methods void RegisterDefaultPasskeyAgent(string path)
|
|
|
|
This registers the default passkey agent. It can
|
|
register a passkey for all adapters or for a
|
|
specific device depending on with object path has
|
|
been used.
|
|
|
|
The path parameter defines the object path of the
|
|
passkey agent that will be called when a passkey
|
|
needs to be entered.
|
|
|
|
If an application disconnects from the bus all
|
|
registered passkey agent will be removed.
|
|
|
|
Possible errors: org.bluez.Error.AlreadyExists
|
|
|
|
void UnregisterDefaultPasskeyAgent(string path)
|
|
|
|
This unregisters a default passkey agent that has
|
|
been previously registered. The object path and
|
|
the path parameter must match the same values that
|
|
has been used on registration.
|
|
|
|
Possible errors: org.bluez.Error.DoesNotExist
|
|
|
|
void RegisterPasskeyAgent(string path, string address)
|
|
|
|
This registers the application passkey agent that
|
|
will be used for any application specific passkey
|
|
tasks.
|
|
|
|
The path parameter defines the object path of the
|
|
passkey agent that will be called when a passkey
|
|
needs to be entered. The address defines the remote
|
|
device that it will answer passkey requests for.
|
|
|
|
If an application disconnects from the bus all
|
|
registered passkey agent will be removed. It will
|
|
also be unregistered after a timeout and if the
|
|
pairing succeeds or fails. The application has to
|
|
take care of that it reregisters the passkey agent.
|
|
|
|
Possible errors: org.bluez.Error.AlreadyExists
|
|
|
|
void UnregisterPasskeyAgent(string path, string address)
|
|
|
|
This unregisters a passkey agent that has been
|
|
previously registered. The object path and the path
|
|
and address parameter must match the same values
|
|
that has been used on registration.
|
|
|
|
The method is actually only needed if an application
|
|
wants to removed the passkey agent and don't wanna
|
|
wait for the automatic timeout.
|
|
|
|
Possible errors: org.bluez.Error.DoesNotExist
|
|
|
|
void RegisterDefaultAuthorizationAgent(string path)
|
|
|
|
This registers the default authorization agent. It can
|
|
register an authorization agent for all adapters or
|
|
for a specific one depending on which object path has
|
|
been used.
|
|
|
|
The path parameter defines the object path of the
|
|
authorization agent that will be called when an
|
|
authorization request needs to be answered.
|
|
|
|
void UnregisterDefaultAuthorizationAgent(string path)
|
|
|
|
This unregisters a default authorization agent that has
|
|
been previously registered. The path parameter must
|
|
match the same value that has been used on
|
|
registration.
|
|
|
|
|
|
PasskeyAgent hierarchy
|
|
======================
|
|
|
|
Service unique name
|
|
Interface org.bluez.PasskeyAgent
|
|
Object path freely definable
|
|
|
|
Methods string Request(string path, string address, boolean numeric)
|
|
|
|
This method gets called when the service daemon
|
|
needs to get the passkey for an authentication. The
|
|
return value is actual passkey.
|
|
|
|
The first argument contains the path of the local
|
|
adapter and the second one the remote address. The
|
|
third argument signals if a numeric PIN code is
|
|
expected or not. The default is a 1 to 16 byte PIN
|
|
code in UTF-8 format.
|
|
|
|
Possible errors: org.bluez.Error.Rejected
|
|
org.bluez.Error.Canceled
|
|
|
|
void Confirm(string path, string address, string value)
|
|
|
|
This method gets called when the service daemon
|
|
needs to verify a passkey. The verification is
|
|
done by showing the value to the passkey agent
|
|
and returning means a successful confirmation.
|
|
In case the values don't match an error must
|
|
be returned.
|
|
|
|
Possible errors: org.bluez.Error.Rejected
|
|
org.bluez.Error.Canceled
|
|
|
|
void Display(string path, string address, string value)
|
|
|
|
This method gets called when the service daemon
|
|
needs to display the passkey value. No return
|
|
value is needed. A successful paring will be
|
|
indicated by the Complete method and a failure
|
|
will be signaled with Cancel.
|
|
|
|
void Keypress(string path, string address)
|
|
|
|
This method indicates keypresses from the remote
|
|
device. This can happen when pairing with a keyboard.
|
|
|
|
void Complete(string path, string address)
|
|
|
|
This method gets called to indicate that the
|
|
authentication has been completed.
|
|
|
|
void Cancel(string path, string address)
|
|
|
|
This method gets called to indicate that the
|
|
authentication request failed before a reply was
|
|
returned by the Request method.
|
|
|
|
void Release()
|
|
|
|
This method gets called when the service daemon
|
|
unregisters a passkey agent. An agent can use
|
|
it to do cleanup tasks. There is no need to
|
|
unregister the agent, because when this method
|
|
gets called it has already been unregistered.
|
|
|
|
|
|
AuthorizationAgent hierarchy (experimental)
|
|
===========================================
|
|
|
|
Service unique name
|
|
Interface org.bluez.AuthorizationAgent
|
|
Object path freely definable
|
|
|
|
Methods void Authorize(string adapter_path, string address,
|
|
string service_path, string uuid)
|
|
|
|
This method gets called when the service daemon wants
|
|
to get an authorization for accessing a service. This
|
|
method should return if the remote user is granted
|
|
access or an error otherwise.
|
|
|
|
The adapter_path parameter is the object path of the
|
|
local adapter. The address, service_path and action
|
|
parameters correspond to the remote device address,
|
|
the object path of the service and the uuid of the
|
|
profile.
|
|
|
|
Possible errors: org.bluez.Error.Rejected
|
|
org.bluez.Error.Canceled
|
|
|
|
void Cancel(string adapter_path, string address,
|
|
string service_path, string uuid)
|
|
|
|
This method cancels a previous authorization request.
|
|
The adapter_path, address, service_path and uuid
|
|
parameters must match the same values that have been
|
|
used when the Authorize() method was called.
|
|
|
|
void Release()
|
|
|
|
This method gets called when the service daemon
|
|
unregisters an authorization agent. An agent can
|
|
use it to do cleanup tasks. There is no need to
|
|
unregister the agent, because when this method
|
|
gets called it has already been unregistered.
|