Hi!
Ich probier' grad 'n bisschen mit Vala und BlueZ herum und habe dazu in der BlueZ-Doku ein Beispiel zum scannen nach erreichbaren Geräten gefunden. Wer's nicht kennt:
using GLib; using BlueZ; [DBusInterface (name = "org.bluez.Adapter")] interface BlueZ.BlueZInterface; public class BlueZDiscovery : Object { private DBus.Connection conn; private BlueZInterface bluez; public MainLoop loop { set; get; } public void run () { conn = DBus.Bus.get (DBus.BusType.SYSTEM); bluez = conn.get_object<BlueZInterface> ("org.bluez", "/org/bluez/hci0"); // dbus signals bluez.RemoteDeviceFound += remote_device_found; bluez.DiscoveryStarted += discovery_started; bluez.DiscoveryCompleted += discovery_completed; bluez.RemoteNameUpdated += remote_name_updated; // async dbus call bluez.DiscoverDevices (); } [InstanceLast] private void remote_device_found (BlueZInterface bluez, string address_, uint class_, int rssi_) { message ("Signal: RemoteDeviceFound(%s, %d, %d)", address_, class_, rssi_); } private void discovery_started(BlueZInterface bluez) { message ("Signal: DiscoveryStarted()"); } private void remote_name_updated(BlueZInterface bluez, string address_, string name_) { message ("Signal: RemoteNameUpdated(%s, %s)", address_, name_); } private void discovery_completed(BlueZInterface bluez) { message ("Signal: DiscoveryCompleted()"); loop.quit(); } static int main (string[] args) { MainLoop loop = new MainLoop (null, false); BlueZDiscovery test = new BlueZDiscovery (); test.loop = loop; test.run (); loop.run (); return 0; } }
Leider funktioniert das Beispiel nicht, in der Konsole kommt folgende Ausgabe:
** (process:22353): CRITICAL **: blue_zdiscovery_discovery_started: assertion `IS_BLUE_ZDISCOVERY (self)' failed ** (process:22353): CRITICAL **: blue_zdiscovery_remote_device_found: assertion `IS_BLUE_ZDISCOVERY (self)' failed ** (process:22353): CRITICAL **: blue_zdiscovery_remote_name_updated: assertion `IS_BLUE_ZDISCOVERY (self)' failed ** (process:22353): CRITICAL **: blue_zdiscovery_discovery_completed: assertion `IS_BLUE_ZDISCOVERY (self)' failed
Kann mir leider keinen Reim drauf machen, vielleicht kennt sich jemand von euch damit aus. Meine Version von Vala ist 0.2.