Вы находитесь на странице: 1из 23

A Context Aware Framework

Mark Assad
Supervisor: Bob Kummerfeld
Goals Of The Project
Design a framework for context aware
applications.
Design and implement a small number of
sensors for context aware applications.
Write a small collection of context aware
applications for the framework.

What is Context Aware?
The term context-awareness was
introduced in 1994 to describe a new class
of computer software application that
exploits the changing environment of a
mobile computer user.


What is Context?
Hard to define.
Been defined as:
location,
identities of the people around the user
the time of day
season
Temperature
etc.

Examples Of Context Systems
Active Whiteboard
GUIDE, an intelligent
electronic tourist
guide
IEEE 802.11
Nearest base station
locating.
Guided Tour Of an Art
Museum.


Local Sensors
Bluetooth
People who own a
phone, carry it with
them.
Modern phones
communication with
Bluetooth.
Can be used to detect
if someone is in a
room.
2
.
5
0
m
.
3.00m.
0.90m
Local Sensors (cont.)
Location of the Printer
Number of queued jobs
Is there a problem with the printer?
Local Applications
Print Manager
Find the closest printer to me.
Location context of the current user
Location context of the printers
Which printer will be ready soonest?
Number of queued jobs on the printer?
Is the printer jammed/Out of Paper?
Context Tool-Kit
Design of a toolkit to support these problems.
Use a simple already developed messaging protocol.
Provide an API to communicate between context
devices.
Security/Authorisation
Store information historically
Highly scalable lots of context emitting devices in
the world

Defining Context
How do you define what the context
information is?
E.g. The format for the location of the printer,
and the location of the user must be similar
so that they can be compared.
Spread Messaging Systems
WAN Multicast
Network
Reliable and
unreliable message
passing
Efficient Multicast
Group Based

Spread Server
Spread Server
Spread Server
Spread Group Services
Every user has a private group
Every user can connect to a public group.
Any user can join any public group
Once you have joined a group you will receive
all messages to that group
Can send a message to more than one
group at a time.

How Does this map to Context?
Every item that can have context must
be represented on the network. (by its
own group)
That way you join a group to subscribe to
events for each item.

Example
Interested in knowing when someone
enters g62 in the Madsen Building.
Client joins the group assigned to g62.
Sensors will send messages to the g62 group
when an event occurs.
Example 2
Interested in finding the location of an
entity. Where is Mark?
Client joins the group assigned to Mark
Sensors who currently know about Mark,
would have also joined the assigned group
Client sends a query to the group, appropriate
sensors would then send a reply to the clients
private group.

Example 2 (cont.)
Client
MARK
Sensor
1. Query?
2. Query
(sent to all sensors
that have registered
to know about Mark)
Answer
Client Program
Spread Group
How do I find these groups?
Lots of different types of Context.
Need to be able to mange the addition
and removing of entities from the
network.
Use a similar technique to DNS.
Two types of entities
Fixed Location Items
Desktop Computers
Printers
Rooms
Floating Items
People
Finding Fixed Entities
Needs a mapping from a fixed description
to a Spread group.
Description to follow a similar plan to
domain names.
Example:
G62.f09.buildings.usyd.sydney.nsw.au
Example (cont.)
G62.f09.buildings.usyd.sydney.nsw.au
1) Find name server for .au, then .nsw
etc. down to g62.
Each server returns the Group ID for the
subgroup below it.
Clients can then cache these Group IDs for
future use.
Finding a floating entity.
Harder!!!
Client who wants to find a user knows its
GroupID, so can send a direct query.
What about the sensors?
They need to convert a real world data into a
Spread GroupID.
What does a hierarchical structure
allow?
Allows
subscriptions at a
higher level.
AU
NSW
SYDNEY
USYD
F09
G62 G90
F11
419
Library Overview
Context Toolkit
Name Lookups
Subscription
Callback Interface
Blocking receive
Context Structure
SPREAD
SPREAD C++ Wrapper
Context Toolkit
Python
Binding
???
Binding
APPLICATION