Alljoyn Device Management
Total Page:16
File Type:pdf, Size:1020Kb
Any questions please contact [email protected] • 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 Consumer (client) Producer (server) 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 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. <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" /> </property> signals, properties and <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> 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"> <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" /> Properties <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" value="true" /> or constraints </method> <signal name="ThresholdCrossed" /> </interface> </node> Producer Consumer (direction="out") Consumer Producer (direction="in") 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 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". • 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 Visual Studio 2015, click File > New > Project. 3. In the New Project dialog box, click Installed > Templates > Visual C# > Windows > Universal to create a new AllJoyn App project Add and Remove Interfaces Automatically add the generated files as a WinRT Component To modify the interfaces after the solution is created… Go to AllJoyn > Add/Remove Interfaces... to launch the Interface manager Add a “Using” clause to access the WinRT components Using Windows.Devices.AllJoyn; Using com.example.Door; Implement the Producer 1. Create a class for the producer’s service. Use Quick Action to fill in the necessary components. 2. Create a new AllJoynBusAttachment 3. (Optional) Populate the About data for the producer through AllJoynBusAttachment.AboutData 4. Initialize the producer with the AllJoynBusAttachment 5. Instantiate the newly created Service for the producer 6. Start the producer [email protected] Subscribe 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 Join WinHEC LINE Community We want to hear from you! @winhec Please Complete the Evaluation Form and return it to our reception. Your input is highly important to us! Thank you!! .