AllJoyn is an open source framework in the fight to become the standard for IoT applications. The presentation brings together information scattered around to give an overview of the framework and its applications.
Transcript of Introduction to AllJoyn
1. Paloma Maisterra, Alex Gonzalez March 2014 Introduction to
AllJoyn
2. Overview AllJoyn is an open sourced framework to enable
proximity based peer to peer mobile networking. It provides an
abstraction layer with a clean API to the underlying networks
stacks (wireless, bluetooth) which is relatively easy to extend
with new network implementations (takers for zigbee?). AllJoyn
provides service advertisement and discovery abstraction, as well
as various application to application security mechanisms and a
Remote Method Invocation abstraction.
3. Use Cases
4. OnBoarding The problem: Small embedded devices need to
connect to a local wireless network but lack a proper user
interface. Adding a user interface just to, for example, input
wireless authentication, is wasteful. The solution: The embedded
devices run a small AllJoyn thin client and use an AllJoyn router
to onboard the local wireless network.
5. Audio/data distribution The problem: Data is either
centrally stored (media server) or distributed (several media
devices) but need to be accessed by all devices. The solution:
Embedded devices running the AllJoyn thin client can access a
central media storage server running an AllJoyn router and can
access each other s data.
6. Control Panel/Configuration The problem: Small embedded
devices that need to configured and managed but lack a user
interface or a web server. The solution: The embedded devices run
an AllJoyn thin client that can be managed using a remote control
panel on another UI capable device running the AllJoyn router.
7. Notification The problem: Devices without a display need to
inform the user of events. The solution: They ran an AllJoyn client
and use another AllJoyn device with a display for event
notification.
8. (the eternal) Smart home example What about telling the
coffee maker you want a coffee when you arrive home? Controlling
your home security from your Smartphone? The fridge reminding you
what you must buy? Adjusting the temperature,or the lighting?
Sharing media with other devices?
9. TextMessage:Carol
10. Smart energy example AllJoyn Thin CLient
Router/Gateway
11. History
12. AllJoyn A software framework that allows devices and
systems to autonomously discover and interact with nearby products
regardless of brand, transport layer, platform or operating system.
Open source licensed, Apache 2.0 (source) Originally developed by
and being contributed to the Alliance by Qualcomm Innovation
Center, Inc. Initial set of capabilities include: o Service
discovery (learning about the features and functions of other
nearby devices) o Onboarding to add a device to the users network o
User notifications o A common control panel for creating rich user
experiences o Audio streaming for simultaneous playback on multiple
speakers. First Allseen alliance framework release is 14.02 (SDKs)
Releases every 4 months, (April/June/October). The AllJoyn
framework is written in C++ and has bindings for the following
languages: o Java (inc. Android) o Objective C o Unity o Javascript
o C The AllJoyn thin client (in C) for embedded devices includes
Linux, Windows 7, Arduino, ThreadX and more.
13. Allseen Alliance Recently formed, around 4 montsh old.
Consortium of companies that collaborate on the AllJoyn framework
development, including: o Qualcomm o Cisco o Panasonic o Sharp o LG
o HTC Structured in a set of working groups, currently core, base
services and development tools.
14. Products LG smart TV Muzzleys is integrating Alljoyn in
their cloud ITTIA DB SQL supports Alljoyn, which allows to monitor,
control, and distribute stored data. Musiacs multi room music
system Android featured apps
15. Architecture
16. High level architecture An AllJoyn network is composed of
routing nodes and leaf nodes. Leaf nodes can only connect to
routing nodes, and routing nodes connect to other routing nodes to
form a mesh of stars. Nodes form a distributed software bus that
enables to publish, discover and use APIs. Applications that expose
APIs are services, if they consume them, clients, and if they do
both peers.
17. High level architecture
18. AllJoyn Bus This is the most basic abstraction providing a
fast lightweight way to move marshalled messages around a
distributed system. The bus formation is ad hoc, based on
application or service discovery. The wire protocol is an extended
backwards compatible d-bus protocol which can run over any medium,
WiFi, WiFi direct, ethernet, PLC, bluetooth etc. When a session is
created the bus is extended. Peers are notified on join and leave
events and can interact via their APIs or with multicast
events.
19. Bus extension Advertisement and Discovery When a service is
started it reserves a well known name in the bus and advertises it
existence. This advertisement will be different on the different
underlying technologies, UDP multicast over WiFi, pre-association
service advertisement on WiFi direct or bluetooth service discovery
message. Client applications may declare their interest in
receiving advertisements by initiating a discovery operation.
20. Alljoyn Interfaces The published interfaces are discovered
and introspected remotely using the About service framework and
they are formed by three types of members: Methods: which can be
called and return a result. Signals: broadcast, multicast or point
to point asynchronous event notifications. Also sessionless.
Properties: Accessed by getter and setter methods. They can contain
basic and complex data types defined by the dbus specification:
Interfaces can be defined in XML, or inline code, C++, Java,
C...
21. AllJoyn Software components AllJoyn has two main
components, AllJoyn applications (leaf nodes) and the router
(routing node). Both are implemented with the AllJoyn client
library which comes in two flavours, standard client, for
applications running on high level OSes, and thin client, for
deeply embedded devices (device firmware). The standard client is
implemented in C++ and has bindings for various other languages,
while the thin client is a C implementation and it depends on a
routing node running off the device itself. The client library is
represented by the AllJoyn SDK API. Routers are built using the
standard client library so they must run on a high level OS. It can
either run standalone (only supported under Linux) or integrated on
an AllJoyn application. Routers perform bus management and message
routing tasks.
22. AllJoyn Bus implementation The Daemon The part of the bus
running on a device is called a bus segment. Each segment needs an
AllJoyn daemon, which are background processes which act as
representatives of the AllJoyn bus. In order for the clients and
servers to communicate with the bus daemon, they contain a
representative of the bus called bus attachment.
23. The Daemon
24. AllJoyn Bus Implementation Bus attachments, interfaces and
objects The bus attachment is a local language specific object that
represents the AllJoyn bus to a client, server or peer. It lives in
each process that needs to communicate with the bus. A bus
interface is a group of bus methods, properties and signals along
with their associated type signatures. This org.alljoyn.Bus
interface is implemented in bus objects. As there might be multiple
bus objects on a bus attachment, an object path is used to
differentiate them, for example /org/alljoyn/bus/1. Remote bus
objects are accessed through proxy bus objects which are local
representatives of the remote bus object.
25. Alljoyn Bus Structure
26. AllJoyn Sessions Sessions are created between client and
servers before they can interact. A server half association has the
form [options,bus name,session port] And the clients [options,
unique name, session ID] A session will join these two half
associations in [options, bus name, unique name, session ID] The
final options are negotiated in the session negotiation, as well as
security checks.
27. Sessions So the service advertises: [reliable IP ,
org.alljoyn.samples.chat.1 , 42] Asumming there is a bus attachment
:2.1 on a remote daemon wanting to connect: [reliable IP ,
org.alljoyn.samples.chat.1 , :2,1 , 1025] The session ID 1025 is
assigned by the system.
28. Session structure
29. Code Flow Example The framework usage is the same
independently of the language binding used: 1. Create a
BusAttachment. 2. Register listeners. 3. Create a BusInterterface.
4. Optionally perform 1 or more of the following: a. Create and
register a BusObject that implements 1 or more BusInterfaces. b.
Register Signal handlers. c. Advertise and/or Discover. d. Create a
Session. e. Join a Session. 5. Remove listeners. 6. Release the
BusAttachment.
30. AllJoyn Base Services Build on top of the allJoyn framework
for accelerated application development. They all use the About
feature for advertisement and discovery. Each service framework
will need to setup AllJoyn and the About feature. They are:
Notification Service Framework: Sends and receives text messages,
with the possibility of referencing media, with priority and
filtering. Onboarding Service Framework: Standard way to get
devices into a Wifi network. The onboarder device discovers a
device that needs to be onboarded (onboardee), it connects to it,
provides configuration information, and the onboardee verifies the
connection. Audio Service Framework Control Panel Service
Framework
31. SDKs
32. Developing from SDKs Supported operating systems include:
Android (Java,needs SDK and NDK installed) iOS and OSX (Objective
C) Windows and Linux (C++) Windows and Linux thin client (C)
33. Resources Video webminars Documentation o Environment setup
guides: Android Thin Client (Arduino, Linux, Windows, embedded
OSes) Objective C (iOS and OSX) Java (Linux, Windows) Unity C++
(Windows , Linux) o Development guides: Java Troubleshooting guide
Thin Client Getting started Building an application
34. Service frameworks About feature o Getting started (Java) o
Usage guide (Java, C, Objective C, C++) o Best practises o
Interface specification Audio service o Getting Started (Java, C++)
o Usage guide (C++) o Best practises o Interface specification
Configuration service o Getting Started (Java) o Usage guide (Java,
C, Objective C, C++) o Best practises o Interface specification
Control panel o Getting Started (Java) o Usage guide (Java, C,
Objective C, C++) o Best practises o Interface specification
Notification o Getting Started (Java) o Usage guide (Java, C,
Objective C, C++) o Best practises o Interface specification
Onboarding o Getting Started (Java) o Usage guide (Java) o Best
practises o Interface specification
35. Framework APIs Framework APIs: Java (Android, Linux,
Windows 7) C++ (Android, Linux, Windows 7) C (Linux, Arduino, Thin
Client, ) Objective C (iOS and OSX) Javascript (Linux, WIndows 7)
C# (Unity)
36. Q & A Thanks for listening
37. This presentation is shared with an
Attribution-NonCommercial-ShareAlike 3.0 Unported license.