SlideShare a Scribd company logo
1 of 37
Download to read offline
Paloma Maisterra, Alex Gonzalez
March 2014
Introduction to AllJoyn
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.
Use Cases
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.
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.
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.
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.
(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?
TextMessage:Carol
Smart energy example
AllJoyn Thin CLient
Router/Gateway
History
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 user’s 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.
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.
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.
• Musiac’s multi room music system
• Android featured apps
Architecture
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.
High level architecture
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.
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.
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...
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.
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.
The Daemon
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.
Alljoyn Bus Structure
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 client’s [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.
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.
Session structure
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.
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
SDKs
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)
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
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
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)
Q & A
Thanks for listening
This presentation is shared with an Attribution-NonCommercial-ShareAlike 3.0 Unported license.

More Related Content

What's hot

Mobile computing unit2,SDMA,FDMA,CDMA,TDMA Space Division Multi Access,Frequ...
Mobile computing unit2,SDMA,FDMA,CDMA,TDMA  Space Division Multi Access,Frequ...Mobile computing unit2,SDMA,FDMA,CDMA,TDMA  Space Division Multi Access,Frequ...
Mobile computing unit2,SDMA,FDMA,CDMA,TDMA Space Division Multi Access,Frequ...
Pallepati Vasavi
 
Wireless sensor networks
Wireless sensor networksWireless sensor networks
Wireless sensor networks
AneeshGKumar
 
FUNCTION APPROXIMATION
FUNCTION APPROXIMATIONFUNCTION APPROXIMATION
FUNCTION APPROXIMATION
ankita pandey
 
Wireless Body Area network
Wireless Body Area networkWireless Body Area network
Wireless Body Area network
Rajeev N
 

What's hot (20)

Wlan architecture
Wlan architectureWlan architecture
Wlan architecture
 
composite video signal
composite video signalcomposite video signal
composite video signal
 
Mobile computing unit2,SDMA,FDMA,CDMA,TDMA Space Division Multi Access,Frequ...
Mobile computing unit2,SDMA,FDMA,CDMA,TDMA  Space Division Multi Access,Frequ...Mobile computing unit2,SDMA,FDMA,CDMA,TDMA  Space Division Multi Access,Frequ...
Mobile computing unit2,SDMA,FDMA,CDMA,TDMA Space Division Multi Access,Frequ...
 
Associative memory network
Associative memory networkAssociative memory network
Associative memory network
 
IoT Levels and Deployment Templates
IoT Levels and Deployment TemplatesIoT Levels and Deployment Templates
IoT Levels and Deployment Templates
 
Wireless sensor networks
Wireless sensor networksWireless sensor networks
Wireless sensor networks
 
Underwater Wireless Communication
Underwater Wireless CommunicationUnderwater Wireless Communication
Underwater Wireless Communication
 
UMTS, Introduction.
UMTS, Introduction.UMTS, Introduction.
UMTS, Introduction.
 
FUNCTION APPROXIMATION
FUNCTION APPROXIMATIONFUNCTION APPROXIMATION
FUNCTION APPROXIMATION
 
vehicular communications
vehicular communicationsvehicular communications
vehicular communications
 
Wireless Body Area network
Wireless Body Area networkWireless Body Area network
Wireless Body Area network
 
Software defined radio
Software defined radioSoftware defined radio
Software defined radio
 
Software Defined Network - SDN
Software Defined Network - SDNSoftware Defined Network - SDN
Software Defined Network - SDN
 
Levels of Virtualization.docx
Levels of Virtualization.docxLevels of Virtualization.docx
Levels of Virtualization.docx
 
Wireless Sensor Networks ppt
Wireless Sensor Networks pptWireless Sensor Networks ppt
Wireless Sensor Networks ppt
 
Traffic Characterization
Traffic CharacterizationTraffic Characterization
Traffic Characterization
 
Routing Protocols in WSN
Routing Protocols in WSNRouting Protocols in WSN
Routing Protocols in WSN
 
Demand Assigned Multiple Access
Demand Assigned Multiple AccessDemand Assigned Multiple Access
Demand Assigned Multiple Access
 
Routing protocols for ad hoc wireless networks
Routing protocols for ad hoc wireless networks Routing protocols for ad hoc wireless networks
Routing protocols for ad hoc wireless networks
 
Mobile Radio Propagations
Mobile Radio PropagationsMobile Radio Propagations
Mobile Radio Propagations
 

Viewers also liked

Jornada Formativa Qualcomm y Movilforum: Alljoyn
Jornada Formativa Qualcomm y Movilforum: AlljoynJornada Formativa Qualcomm y Movilforum: Alljoyn
Jornada Formativa Qualcomm y Movilforum: Alljoyn
videos
 

Viewers also liked (20)

Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent Introduction to the AllJoyn Gateway Agent
Introduction to the AllJoyn Gateway Agent
 
Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06Security & Identity in AllJoyn 14.06
Security & Identity in AllJoyn 14.06
 
An Open Source Project for the IoT
An Open Source Project for the IoTAn Open Source Project for the IoT
An Open Source Project for the IoT
 
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/LinuxIoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
IoTivity Tutorial: Prototyping IoT Devices on GNU/Linux
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
Jornada Formativa Qualcomm y Movilforum: Alljoyn
Jornada Formativa Qualcomm y Movilforum: AlljoynJornada Formativa Qualcomm y Movilforum: Alljoyn
Jornada Formativa Qualcomm y Movilforum: Alljoyn
 
Welcome
WelcomeWelcome
Welcome
 
Open Source and The Internet of Things
Open Source and The Internet of ThingsOpen Source and The Internet of Things
Open Source and The Internet of Things
 
The tools & technologies behind Resin.io
The tools & technologies behind Resin.ioThe tools & technologies behind Resin.io
The tools & technologies behind Resin.io
 
AllSeen Alliance Overview
AllSeen Alliance OverviewAllSeen Alliance Overview
AllSeen Alliance Overview
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.io
 
IoTivity on Tizen: How to
IoTivity on Tizen: How toIoTivity on Tizen: How to
IoTivity on Tizen: How to
 
Tizen Connected with IoTivity
Tizen Connected with IoTivityTizen Connected with IoTivity
Tizen Connected with IoTivity
 
Quem não poupa não tem...
Quem não poupa não tem...Quem não poupa não tem...
Quem não poupa não tem...
 
Building Universal Windows Apps with AllJoyn
Building Universal Windows Apps with AllJoynBuilding Universal Windows Apps with AllJoyn
Building Universal Windows Apps with AllJoyn
 
Connected Lighting: The Next Frontier in the Internet of Everything
Connected Lighting: The Next Frontier in the Internet of EverythingConnected Lighting: The Next Frontier in the Internet of Everything
Connected Lighting: The Next Frontier in the Internet of Everything
 
Programming the Internet of Things: Why Devices Need APIs
Programming the Internet of Things: Why Devices Need APIsProgramming the Internet of Things: Why Devices Need APIs
Programming the Internet of Things: Why Devices Need APIs
 
OCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/WearableOCF/IoTivity for Healthcare/Fitness/Wearable
OCF/IoTivity for Healthcare/Fitness/Wearable
 
Programming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.ioProgramming IoT Gateways in JavaScript with macchina.io
Programming IoT Gateways in JavaScript with macchina.io
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술
 

Similar to Introduction to AllJoyn

An Instantaneous Introduction to the Alliance Access Grid
An Instantaneous Introduction to the Alliance Access GridAn Instantaneous Introduction to the Alliance Access Grid
An Instantaneous Introduction to the Alliance Access Grid
Videoguy
 
Android fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginnersAndroid fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginners
Boom Shukla
 
Installing and Configuring the Access Grid Toolkit (AGTk) 2
Installing and Configuring the Access Grid Toolkit (AGTk) 2Installing and Configuring the Access Grid Toolkit (AGTk) 2
Installing and Configuring the Access Grid Toolkit (AGTk) 2
Videoguy
 
(Download)
(Download)(Download)
(Download)
Videoguy
 
NewAer Proximity SDK Messaging Overview
NewAer Proximity SDK Messaging OverviewNewAer Proximity SDK Messaging Overview
NewAer Proximity SDK Messaging Overview
Dave Mathews
 

Similar to Introduction to AllJoyn (20)

Internet of Everything Development Using AllJoyn
Internet of Everything Development Using AllJoynInternet of Everything Development Using AllJoyn
Internet of Everything Development Using AllJoyn
 
Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.
 
Multimedia authoring and user interface
Multimedia authoring and user interface Multimedia authoring and user interface
Multimedia authoring and user interface
 
Introduction to Nokia Asha software platform 1.0
Introduction to Nokia Asha software platform 1.0Introduction to Nokia Asha software platform 1.0
Introduction to Nokia Asha software platform 1.0
 
An Instantaneous Introduction to the Alliance Access Grid
An Instantaneous Introduction to the Alliance Access GridAn Instantaneous Introduction to the Alliance Access Grid
An Instantaneous Introduction to the Alliance Access Grid
 
Android fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginnersAndroid fundamentals and tutorial for beginners
Android fundamentals and tutorial for beginners
 
Installing and Configuring the Access Grid Toolkit (AGTk) 2
Installing and Configuring the Access Grid Toolkit (AGTk) 2Installing and Configuring the Access Grid Toolkit (AGTk) 2
Installing and Configuring the Access Grid Toolkit (AGTk) 2
 
Android OS
Android OSAndroid OS
Android OS
 
(Download)
(Download)(Download)
(Download)
 
Web services have made the development of mobile Web applications much easier...
Web services have made the development of mobile Web applications much easier...Web services have made the development of mobile Web applications much easier...
Web services have made the development of mobile Web applications much easier...
 
NewAer Proximity SDK Messaging Overview
NewAer Proximity SDK Messaging OverviewNewAer Proximity SDK Messaging Overview
NewAer Proximity SDK Messaging Overview
 
Cloud computing v2final
Cloud computing v2finalCloud computing v2final
Cloud computing v2final
 
Cloud Automation and IIOT by Engr.Bilal Mehmood
Cloud Automation and IIOT by Engr.Bilal MehmoodCloud Automation and IIOT by Engr.Bilal Mehmood
Cloud Automation and IIOT by Engr.Bilal Mehmood
 
Kristiaan De Roeck at UX Antwerp Meetup - 30 January 2018
Kristiaan De Roeck at UX Antwerp Meetup - 30 January 2018Kristiaan De Roeck at UX Antwerp Meetup - 30 January 2018
Kristiaan De Roeck at UX Antwerp Meetup - 30 January 2018
 
Customize and control connected devices
Customize and control connected devicesCustomize and control connected devices
Customize and control connected devices
 
Cutomize and Control Connected Devices
Cutomize and Control Connected DevicesCutomize and Control Connected Devices
Cutomize and Control Connected Devices
 
Internship msc cs
Internship msc csInternship msc cs
Internship msc cs
 
WSO2 Enterprise Integrator 101
WSO2 Enterprise Integrator 101WSO2 Enterprise Integrator 101
WSO2 Enterprise Integrator 101
 
Tizen IVI - Rusty Lynch (Intel) - Korea Linux Forum 2012
Tizen IVI - Rusty Lynch (Intel) - Korea Linux Forum 2012Tizen IVI - Rusty Lynch (Intel) - Korea Linux Forum 2012
Tizen IVI - Rusty Lynch (Intel) - Korea Linux Forum 2012
 
Ohio LinuxFest: Crash Course in Open Source Cloud Computing
Ohio LinuxFest:  Crash Course in Open Source Cloud ComputingOhio LinuxFest:  Crash Course in Open Source Cloud Computing
Ohio LinuxFest: Crash Course in Open Source Cloud Computing
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 

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.
  • 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?
  • 10. Smart energy example AllJoyn Thin CLient Router/Gateway
  • 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 user’s 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. • Musiac’s multi room music system • Android featured apps
  • 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.
  • 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.
  • 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.
  • 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 client’s [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.
  • 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.