The medium to enable AllJoyn applications to communicate via - - PowerPoint PPT Presentation
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
- 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
Co Consu sumer mer (cl client) ient) Pr Produc
- ducer
er (se server) er)
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.
Servicing, reduced code size Optimized performance, full integration Reduced code size, integrated with Windows SDK AllJoyn Studio accelerates development for Windows UWP Samples
AllJoyn Standard Client API (C) MSAJAPI.dll
An Visual Studio extension developed by Microsoft
Windows Runtime Class Description <Foo>Watcher Searches for producers that advertise the target service <Foo>JoinSessionResult Reports the success or failure of joining a session, and exposes a <Foo>Consumer instance for the session if the join was successful. <Foo>Producer Advertises a service and exposes handlers for AllJoyn events. <Foo>Signals Exposes methods and handlers to send and receive signals. Used by both producers and consumers. <Foo>Consumer Interacts with a service after it has been discovered. <Foo><Method>CalledEventArgs Arguments passed to methods in EventAdapters.<Foo>ServiceEventAdapter. <Foo><Method>Result Used by method implementations in IService to report the success
- r failure of the call, as well as any return values.
<Foo><Signal>ReceivedEventArgs Arguments passed to a signal in Signals.
Interfaces as described via signals, properties and methods.
<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" value="true" /> </property> <method name="SetLockState"> <arg name="lockDoor" type="b" direction="in" /> <annotation name="org.freedesktop.DBus.Method.NoReply" value="true" /> </method> <signal name="ThresholdCrossed" /> </interface> </node>
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.
"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">
Properties Signals Methods Describe additional functionality
- r constraints
Producer Consumer (direction="out") Consumer Producer (direction="in")
<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" value="true" /> </property> <method name="SetLockState"> <arg name="lockDoor" type="b" direction="in" /> <annotation name="org.freedesktop.DBus.Method.NoReply" value="true" /> </method> <signal name="ThresholdCrossed" /> </interface> </node>
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>
- 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 const The property will never change value and never emit a changed signal. This will be introduced in the AllJoyn 16.04 release; until then, use "true".
- 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.
Provide feedback as error, warning, and informational messages ajxmlcop.exe doorExample.xml
GitHub
- 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
Add and Remove Interfaces Automatically add the generated files as a WinRT Component T
- modify the interfaces after the solution is created…