Introduction to AllJoyn

Click here to load reader

  • date post

  • Category


  • view

  • download


Embed Size (px)


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 representa