the medium to enable alljoyn applications to communicate
play

The medium to enable AllJoyn applications to communicate via - PowerPoint PPT Presentation

Any questions please contact winhectpe@microsoft.com The medium to enable AllJoyn applications to communicate via published APIs Communication is via messages that map directly to APIs in high-level programming languages Based on


  1. Any questions please contact winhectpe@microsoft.com

  2. • The “medium” to enable AllJoyn applications to communicate via published APIs • Communication is via messages that map directly to APIs in high-level programming languages • Based on discovery of applications/services Can run over Wi-Fi, Wi-Fi Direct, Ethernet, PLC and Bluetooth

  3. Co Consu sumer mer (cl client) ient) Pr Produc oducer er (se server) er)

  4. If required, authentication occurs on demand between the two apps when a method is invoked or to receive a signal. PIN code, PSK, or ECDSA (Elliptical Curve Digital Signature Algorithm). Once authenticated, all messages between these two devices are encrypted using AES-128 CMM.

  5. Servicing, reduced code size Optimized performance, full integration Reduced code size, integrated with Windows SDK AllJoyn Studio accelerates development for Windows UWP Samples

  6. AllJoyn Standard Client API (C) MSAJAPI.dll

  7. An Visual Studio extension developed by Microsoft

  8. Windows Runtime Class Description <Foo>Watcher Searches for producers that advertise the target service Reports the success or failure of joining a session, and exposes a <Foo>JoinSessionResult <Foo>Consumer instance for the session if the join was successful. <Foo>Producer Advertises a service and exposes handlers for AllJoyn events. Exposes methods and handlers to send and receive signals. Used <Foo>Signals by both producers and consumers. <Foo>Consumer Interacts with a service after it has been discovered. Arguments passed to methods in <Foo><Method>CalledEventArgs EventAdapters.<Foo>ServiceEventAdapter. Used by method implementations in IService to report the success <Foo><Method>Result or failure of the call, as well as any return values. <Foo><Signal>ReceivedEventArgs Arguments passed to a signal in Signals.

  9. <node> <interface name="com.example.Door"> <annotation name="org.alljoyn.Bus.Secure" value="true" /> <annotation name="org.alljoyn.Bus.DocString.En" value="Example interface for a doorway" /> <property name="Locked" type="b" access="read"> <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" Interfaces as described via value="true" /> signals, properties and </property> <method name="SetLockState"> methods. <arg name="lockDoor" type="b" direction="in" /> <annotation name="org.freedesktop.DBus.Method.NoReply" value="true" /> </method> <signal name="ThresholdCrossed" /> </interface> </node>

  10. low-overhead, inter-process communication with a type format for data representation. Extends D-Bus Specification XML with XML tags for holding textual descriptions while also applying AllJoyn principles to the specification.

  11. "com.contoso.Sensor ” vs “ com.contoso.Sensor.Humidity ” The "Foo" interface created by Contoso Ltd., which owns the contoso.com domain <interface name="com.contoso.Foo">

  12. <node> <interface name="com.example.Door"> <annotation name="org.alljoyn.Bus.Secure" value="true" /> <annotation name="org.alljoyn.Bus.DocString.En" Properties value="Example interface for a doorway" /> <property name="Locked" type="b" access="read"> Signals <annotation Methods name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="true" /> </property> <method name="SetLockState"> <arg name="lockDoor" type="b" direction="in" /> Describe additional functionality <annotation name="org.freedesktop.DBus.Method.NoReply" or constraints value="true" /> </method> <signal name="ThresholdCrossed" /> </interface> </node> Producer  Consumer (direction="out") Consumer  Producer (direction="in")

  13. Default: "null" authentication Strong authentication: pre-shared key (PSK) / certificate key exchange (ECDSA). <node> <interface name="com.example.Door"> <annotation name="org.alljoyn.Bus.Secure" value="true" /> <annotation name="org.alljoyn.Bus.DocString.En" value="Example interface for a doorway"/> ... </interface> </node>

  14. • Allow access to a producer's state • Access values: “read” and “ readwrite ” • Annotation - “ org.freedesktop.DBus.Property.EmitsChangedSignal ” Value Action when property change occurs true Emit a signal denoting the changed property and the new value Invalidates Emit a signal denoting the changed property but NOT the new value false Emit no signal The property will never change value and never emit a changed signal. const This will be introduced in the AllJoyn 16.04 release; until then, use "true".

  15. Modify the state of a producer • May have input and output arguments • No return message: "org.freedesktop.DBus.Method.NoReply". • • Inform consumers of an event that they could not determine by querying the producer • “out” arguments only. • Should never be state-based.

  16. Provide feedback as error, warning, and informational messages ajxmlcop.exe doorExample.xml GitHub

  17. 1. Install the AllJoyn Studio 2. Launch Visu sual al Studi dio 2015, click Fi File > New > Proje ject ct. 3. In the New Project dialog box, click Inst stalle lled > T emp mplates es > Visu sual al C# > Windo dows ws > Unive versal sal to create a new AllJ lJoyn yn App pp project

  18. Add and Remove Interfaces Automatically add the generated files as a WinRT Component T o modify the interfaces after the solution is created… Go to AllJoyn lJoyn > Add/Re Remo move ve Inter terfac aces es... ... to launch the Inter terface face ma manager ger

  19. Add a “Using” clause to access the WinRT components Using Windows.Devices.AllJoyn; Using com.example.Door; Implement the Producer Create a class for the producer’s service. Use Quick Action to fill in the necessary 1. components. Create a new AllJoynBusAttachment 2. (Optional) Populate the About data for the producer through 3. AllJoynBusAttachment.AboutData Initialize the producer with the AllJoynBusAttachment 4. Instantiate the newly created Service for the producer 5. Start the producer 6.

  20. allseen-gateway@lists.allseenalliance.org Subscribe

  21. https://channel9.msdn.com/Blogs/Internet-of-Things-Blog/Creating-AllJoyn-Producers-and-Authoring- AllJoyn-Introspection-XML?ocid=EntriesInArea https://channel9.msdn.com/Blogs/Internet-of-Things-Blog/Using-the-AllJoyn--Studio-Extension https://wiki.allseenalliance.org/irb/interface_design_guidelines_1.1

  22. We want to hear from you! Join WinHEC LINE Community @winhec hec Please Complete the Evaluation Form and return it to our reception. Your input is highly important to us! Thank you!! 

Recommend


More recommend