BlueZ 5.5 und D-Bus -> Agent wird nicht aufgerufen

Alles rund um die Programmierung mit Qt
Antworten
pinki
Beiträge: 10
Registriert: 19. August 2009 14:54

BlueZ 5.5 und D-Bus -> Agent wird nicht aufgerufen

Beitrag von pinki »

Hallo,
ich würde gerne einen Agenten für BlueZ (Version 5.5) schreiben.
Zur Verbindung mit BlueZ benutze ich libbluedevil in Version 2 (git-Version von schaal).
Eine Verbindung zu BlueZ bekomme ich hin und ich kann mich auch als Agent bekannt machen, indem ich vom Manager die Methode registerAgent aufrufe und meinen Adaptor als Parameter übergebe. Die Debugausgabe des BlueZ-Daemons zeigt auch an, dass ein neuer Agent registriert worden ist. Leider wird nun aber bei einem Pairingvorgang keine der Methoden des Adaptors aufgerufen. Zuerst dachte ich, dass ich vielleicht das verkehrte bzw. ein unvollständiges D-Bus-Interface für den Agenten hatte, weshalb ich bei der BlueZ-Truppe direkt nachfragte. Diese versicherten mir jedoch, dass das Interface das richtige sei und dass es an meinem Qt-Code läge. Hier komme ich nun allerdings nicht weiter, weil ich meinen Fehler nicht sehe. Ich hoffe ihr könnt mir helfen.

Da es sich um recht viele Dateien handelt,packe ich mal das Projekt in den Anhang und schreibe hier nur meine main.cpp rein.


Gruß
Michael


main.ccp

Code: Alles auswählen

// built using Qt 4.8.2

#include <QCoreApplication>
#include <bluedevil/bluedevil.h> // schaal's port to BlueZ 5
#include <iostream>

#include "paths.h"
#include "pairingagent.h"
#include "pairingagentadaptor.h"

using namespace std;
using namespace BlueDevil;


int main(int argc, char *argv[])
{
	QCoreApplication app(argc, argv);

	PairingAgent pairingAgent;
	PairingAgentAdaptor pairingAgentAdaptor(&pairingAgent);

	bool registerSuccess = QDBusConnection::systemBus().registerObject(QString(AGENT_PATH), &pairingAgentAdaptor);

	if (registerSuccess) {
		cout << "Registered as " << AGENT_PATH << endl;
	} else {
		QDBusConnection::systemBus().unregisterObject(QString(AGENT_PATH), QDBusConnection::UnregisterTree);

		registerSuccess = QDBusConnection::systemBus().registerObject(QString(AGENT_PATH), &pairingAgentAdaptor);

		if (registerSuccess) {
			cout << "Registered as " << AGENT_PATH << " (round 2)" << endl;
		} else {
			cerr << "Registering of " << AGENT_PATH << " failed." << endl;
			exit(1);
		}
	}

	Manager* const manager = Manager::self();
	manager->registerAgent(QString(AGENT_PATH), Manager::DisplayOnly);

	//pairingAgentAdaptor.AuthorizeService(QDBusObjectPath("/Test/Path"), "TestInput");

	return app.exec();
}
Dateianhänge
bluez_dbus.zip
Projekt
(10.61 KiB) 149-mal heruntergeladen
pinki
Beiträge: 10
Registriert: 19. August 2009 14:54

Re: BlueZ 5.5 und D-Bus -> Agent wird nicht aufgerufen

Beitrag von pinki »

Mittlerweile erhalte ich die Meldung
No such interface 'org.bluez.Agent1' at object path '/pairing/agent'.
Wie mache ich das denn publik, dass ich dieses Interface an dem Pfad implementiere?

Gruß
Michael
Antworten