2016-03-30 10 views
0

Ich versuche, eine Anwendung zu erstellen, die das Signal durch den ganzen Bus ankündigen wird. Die Idee, dass Sie keine Verbindung zu einem bestimmten Objekt im Bus herstellen müssen. Ich habe gesehen, dass Interfaces introspectable sein könnten, aber wie ich fand, dass diese Schnittstellen automatisch zum Busobjekt hinzugefügt werden, wenn es auf dem Bus registriert. Die Frage ist also, wie man das Signal im Bus sichtbar macht.Öffentlich exponiertes Signal in alljoyn

Schnittstelle:

@BusInterface(name = Door.DOOR_INTF_NAME, announced = "true") 
public interface Door { 

    String DOOR_INTF_NAME = "com.example.Door"; 
    String PERSON_PASSED_THROUGH = "PersonPassedThrough"; 

    @BusSignal(name = PERSON_PASSED_THROUGH, sessionless = true) 
    void personPassedThrough(String person) throws BusException; 
} 

publushing:

private void doRegisterBusObject(Object obj) { 
    LocatableBusObject object = (LocatableBusObject) obj; 
    String location = object.getBusObjectLocation(); 
    if (!location.startsWith("/")) { 
     location = "/" + location; 
    } 
    // Register the object on the local bus 
    Status status = bus.registerBusObject(object, location); 
    if (Status.OK != status) { 
     return; 
    } 
    // Have About send a signal a new door is available. 
    aboutObj.announce(CONTACT_PORT, aboutData); 
} 

Das Objekt ist sichtbar, aber Signal nicht.

+0

vielleicht hinzufügen 'status = bus.addMatch (" sessionless = 't' ");' – Lino

+0

@Lino, hallo wo kann ich einige Informationen über Regeln für BusAttachment finden? Alles, was ich sehe, ist nur die Regel hinzuzufügen, aber was macht sie und einige Beispiele? – Lebedevsd

+0

Da 'addMatch' eine DBUS-Matching-Regel hinzufügt, können Sie hier einen Blick darauf werfen: https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-add-match – Lino

Antwort

0

Grundsätzlich wird die Schnittstelle org.allseen.Introspectable vom Router hinzugefügt, nur wenn wir die Beschreibung für das @BusInterface ankündigen.

Bis dahin werden wir diese Schnittstelle nicht haben.