summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
Diffstat (limited to 'hcid')
-rw-r--r--hcid/Bluetooth.cs15
1 files changed, 14 insertions, 1 deletions
diff --git a/hcid/Bluetooth.cs b/hcid/Bluetooth.cs
index 0b27f7d6..36b17e50 100644
--- a/hcid/Bluetooth.cs
+++ b/hcid/Bluetooth.cs
@@ -26,6 +26,12 @@ namespace Bluetooth
using System;
using DBus;
+ [Interface("org.bluez.Manager")]
+ internal abstract class ManagerProxy
+ {
+ [Method] public abstract string DefaultAdapter();
+ }
+
public delegate void RemoteDeviceFoundHandler(string address, Int16 rssi,
string major, string minor, string[] services);
public delegate void RemoteNameUpdatedHandler(string address, string name);
@@ -60,6 +66,7 @@ namespace Bluetooth
{
private Service service;
private Connection connection;
+ private ManagerProxy manager;
private AdapterProxy adapter;
private string path;
@@ -68,7 +75,7 @@ namespace Bluetooth
public event RemoteNameUpdatedHandler RemoteNameUpdated;
#pragma warning restore 0067
- public Adapter() : this("/org/bluez/hci0")
+ public Adapter() : this("")
{
}
@@ -77,6 +84,11 @@ namespace Bluetooth
connection = Bus.GetSystemBus();
service = Service.Get(connection, "org.bluez");
+ manager = (ManagerProxy) service.GetObject(typeof(ManagerProxy), "/org/bluez");
+
+ if (path == "")
+ path = manager.DefaultAdapter();
+
this.path = path;
adapter = (AdapterProxy) service.GetObject(typeof(AdapterProxy), path);
@@ -90,6 +102,7 @@ namespace Bluetooth
public void Dispose()
{
GC.SuppressFinalize(adapter);
+ GC.SuppressFinalize(manager);
}
private void OnSignalCalled(Signal signal)