Seminar Report Rover Technology Repaired
Seminar Report Rover Technology Repaired
Seminar Report Rover Technology Repaired
COLLEGE PERUMBAVOOR
Koovappady P.O Ernakulam – 683 544 Kerala
Semester – V
SEMINAR
REPORT ON
Rover technology
SUBMITTED BY
Alan krishna
S5, COMPUTER ENGINEERING
REG NO.: 2101131898
GOVERNMENT POLYTECHNIC
COLLEGE PERUMBAVOOR
Koovappady P.O Ernakulam – 683 544 Kerala
CERTIFICATE
This is to certify that the seminar report Rover technology submitted by Alan
krishna has been carried out under the guidance of Sri. Biju Peter, Lecturer in
Computer Engineering, Govt. Polytechnic College, Perumbavoor. The seminar
report is approved for submission requirement for seminar in 5th semester
Computer Engineering at Govt. Polytechnic College, Perumbavoor.
BIJU PETER
HOD in Computer Engineering
VISION AND MISSION
Vision:
Mission:
● To impart state of the art knowledge and skill to the graduate and mould
them to be competent, committed and responsible for the well-being of
society.
Vision:
Mission:
● To impart state of the art knowledge, skill and attitude to the graduates and
contribute to their sustainable development.
● To merge technologies in the field of computer engineering with
occupational skills, thereby improving the quality of living.
I would also like to thank our respected Head of Department Computer Engineering Prof.
S.R.Dhore. I would also like to thank all those people who helped me see through the
preparation of the seminar. I would also like to thank the staff of the Computer Engineering
Department without who, this seminar would not have been possible.
Finally I would like to thank my parents for their everlasting support and blessings.
PANKAJ GULERIA
TE COMPUTERS
TABLE OF CONTENTS
1. INTRODUCTION…………………………………………………..
1.1 BACKGROUND……………………………………………….
2. ROVER ARCHITECTURE AND WORKING………………….…
3.1 ROVER SERVICES…………………………………………………
3.2 ROVER ARCHITECTURE………………………………………..
3.2.1 System Scalability………………………………………………
3.3 ACTION MODEL……………………………………………………..
3.3.1 Actions vs. Threads……………………………………………
3.4 ROVER CLIENTS……………………………………………………..
3.5 ROVER CONTROLLER………………………………………………
3.6 ROVER DATABASE………………………………………………….
3.7 LOCATION SERVER………………………………………………….
3.8 MULTI-ROVER SYSTEM………………………………………………
3. ROVER IMPLEMENTATION AND ANALYSIS……………………..
4.1 COMMUNICATION INTERFACES…………………………………….
4.2 INITIAL IMPLEMENTATION…………………………………………
4.2.1 SYSTEM FUNCTIONALITY……………………………………
4.3 SYSTEM PERFORMANCE…………………………………………….
4.3.1 Analysis using Passive Monitoring……………………………..
4.3.2 Experimental configuration…………………………………..
4.3.3 Results and discussion…………………………………………..
4. CONCLUSION AND FUTURE WORK…………………………..
APPENDIX…………………………………………………………
1
INTRODUCTION
1.1BACKGROUND
Location-aware computing involves the automatic tailoring of information and services based on
the current location of the user. We have designed and implemented Rover, a system that enables
location-based services, as well as the traditional time-aware, user-aware and device-aware
services. To achieve system scalability to very large client sets, Rover servers are implemented
in an “action-based” concurrent software architecture that enables fine-grained application-
specific scheduling of tasks. We have demonstrated feasibility through implementations for both
outdoor and indoor environments on multiple platforms.
A user is shopping in a mall. On entering a store, he pulls out a PDA and browses through
detailed information about the products on display. Satisfied with the information, through the
PDA, he makes an online purchase of the items of interest that will be subsequently shipped to
his home directly. As he walks on to the next store, which happens to be a video rental store,
information on newly-released movies in his favorite categories are downloaded automatically
into his PDA, along with their availability information. He chooses a couple of these movies and
indicates that he will pick them up at the storefront. His membership discounts are applied to the
bill, and he confirms the charge to his credit card. The intriguing aspect of this scenario is the
automatic tailoring of information and services based on the current location of the user. We
refer to this paradigm as location-aware computing. The different technology components
needed to realize location-aware computing are present today, powered by the increasing
capabilities of mobile personal computing devices and the increasing deployment of wireless
connectivity (IEEE
802.11 wireless LANs [7], Bluetooth [1], Infra-red [2], Cellular services, etc.) What has hindered
its ubiquitous deployment is the lack of system-wide integration of these components in a
manner that scales with large user populations. In this paper, we describe the design and initial
implementation
experience of such a system, which we call Rover, and discuss the impact such a system can
have on the next generation of applications, devices, and users.
Location-aware, in addition to the more traditional notions of time-aware, user-aware,
and device-aware. Rover has a location service that can track the location of every user, either by
automated location determination technology (for example, using signal strength or time
difference) or by the user manually entering current location (for example, by clicking on a map).
Available via a variety of wireless access technologies (IEEE 802.11 wireless LANs,
Bluetooth, Infrared, cellular services, etc.) and devices (laptop, PDA, cellular phone, etc.), and
allows roaming between the different wireless and device types. Rover dynamically chooses
between different wireless links and tailors application-level information based on the device and
link layer technology.
Scales to a very large client population, for example, thousands of users. Rover achieves
this through fine-resolution application-specific scheduling of resources at the servers and the
network.
Services that require location manipulation are a particularly important class of data
services in Rover. Location is an important attribute of all objects in Rover. The technique used
to estimate the location of an object (some techniques are described in the Appendix)
significantly affects the granularity and accuracy of the location information. Therefore an
object’s location is identified by a tuple of Value, Error, and Timestamp. The error identifies the
uncertainty in the measurement (value). The timestamp identifies when the measurement was
completed. The accuracy of the location information is relevant to the context of its use. For
example, an accuracy of _ meters is adequate to provide walking directions from the user’s
current location to another location about 500 meters away. However, this same accuracy is
inadequate to identify the exhibit in front of the user. User input in these cases, helps
significantly improve the accuracy of user location information.
– Media streaming unit: provides the streaming of audio and video content to the clients. In fact,
it is possible to use many of the off-the-shelf streaming-media units that are available today and
integrate them in the Rover system.
– Rover database: stores all content delivered to the Rover clients. It also serves as the stable
store for the state of the users and clients that is maintained by the Rover controller.
– Logger: interacts with all the Rover server devices and receives log messages from their
instrumentation modules.
3.2.1 System Scalability
There are two potential bottlenecks that can hinder the scalability of such a system to large user
populations. One is the server system because it needs to handle a very large number of client
requests with tight real-time constraints. Another potential bottleneck is the bandwidth and
latency of the wireless access points.
For a server to handle such a large volume of real-time requests, in addition to adequate compute
power and appropriate data structures, it must have fine-grained real-time application-specific
scheduling of tasks to efficiently manage the available resources, both processing and bandwidth.
This leads us to divide server devices into two classes:-
- Primary servers, which directly communicate with the clients, and
- Secondary servers, which do not directly communicate with clients but interact with primary
servers to provide backend capabilities to the system.
The Rover controller, location server and media streaming unit are examples of primary servers,
while the Rover database and the logger are examples of secondary servers.
In order to meet the performance objectives, only the primary servers need to implement the
fine-grained real-time task scheduling mechanism. We have defined a concurrent software
architecture called the Action model that provides such a scheduling mechanism, and
implemented the Rover controller accordingly. The Action model, explained below, avoids the
overheads of thread context switches and allows a more efficient scheduling of execution tasks.
The Rover system exports a set of well defined interfaces through which it interacts with the
heterogeneous world of users and devices with their widely varying requirements and
capabilities. Thus new and different client applications can be developed by third-party
developers to interact with the Rover system.
A Rover system represents a single domain of administrative control that is managed and
moderated by its Rover controller. A large domain can be partitioned into multiple administrative
domains each with its own Rover system, much like the existing Domain Name System [9]. For
this multi-Rover system, we define protocols that allow interaction between the domains. This
enables users registered in one domain to roam into other domains and still receive services from
the system
We use the term server operation to refer to a transaction, either client- or administrator-
initiated, that interacts with the Rover controller; examples in the museum scenario would be
register Device, get Route and locate User. A server operation consists of a sequence (or more
precisely, a partial order) of actions interleaved by asynchronous I/O events. Each server
operation has exactly one “response handling” action for handling all I/O event responses for the
operation; i.e., the action is eligible to execute whenever an I/O response is received.
A server operation at any given time has zero or more actions eligible to be executed. A
server operation is in one of the following three states:
- Ready-to-run: At least one action of the server operation is eligible to be executed but
no action of the server operation is executing.
-Running: One action of the server operation is executing (in a multi-processor setup,
several actions of the operation can be executing simultaneously).
-Blocked: The server operation is waiting for some asynchronous I/O response and no
actions are eligible to be executed.
The Action Controller uses administrator-defined policies to decide the order of execution of the
set of eligible actions. The scheduling policy can be a simple static one, such as priorities
assigned to server operations, but it can equally well be time based, such as earliest-deadline-first
or involving real-time cost functions. In any case, the controller picks an eligible action and
executes it to completion, and then repeats, waiting only if there are no eligible actions
(presumably all server operations are waiting for I/O completions).
The management and execution of actions are done through a simple Action API defined
as follows:
-init (action id, function ptr): This routine is called to initialize a new action (identified by
action id) for a server operation. Function ptr identifies the function (or piece of code) to
be executed when the action runs.
-run (action id, function parameters, deadline, deadline failed handler ptr): This routine
is called to mark the action as eligible to run. Function parameters are the parameters
used in executing this instance of the action. Deadline is optional and indicates the time
(relative to the current time) by which the action should be executed. This is a soft
deadline, that is, its violation leads to some penalty but not system failure. If the action
controller is unable to execute the action within the deadline, it will execute the function
indicated by deadline failed handler ptr. This parameter can be NULL, indicating that no
compensatory steps are needed.
-cancel (action id, cancel handler ptr): This routine is called to cancel a ready-to-run
action provided it is not executing. Cancel handler ptr indicates a cleanup function. It can
be NULL.
and across operations. Of course, each thread could keep track of all its eligible actions and do
scheduling at the action level, but this is essentially recreating the action model within each
thread.
Figure 3.2: Scenario A has 10,000 processor-bound Figure 3.3: Scenario B has 100 I/O bound server
server operations where computation is inter- operations where computation is interleaved
leaved with file write operations with network I/O interactions
In Table 1, we present the overheads obtained in each case, where the overhead is the
total execution time minus the fixed, identical and unavoidable computation/communication
costs for the two scenarios. We report the mean execution overheads of a large number of runs,
which were required to obtain low variance. For the computation-intensive server operations
there are very little performance gains in trying to overlap computation with communication (file
I/O), and is not substantial enough to justify the overheads of a multi-threaded implementation.
Therefore, a thread-based system with a single thread achieves the best performance among the
thread-based implementations.
For the I/O intensive server operations, using a multi-threaded implementation is useful,
since computation and communication can be overlapped. Consequently, the best performance
for the thread-based system is achieved, when the maximum number of threads is used (one
thread for each server operation).
For the wireless interface of client devices, we have currently considered two link layer
technologies — IEEE 802.11 Wireless LAN and Bluetooth. Bluetooth is power efficient and is
therefore better at conserving client battery power. According to current standards, it can provide
bandwidths of up to 2 Mbps. In contrast, IEEE 802.11 wireless is less power-efficient but is
widely deployed and can currently provide bandwidths of up to 11 Mbps. In areas where these
high bandwidth alternatives are not available, Rover client devices will use the lower bandwidth
air interfaces provided by cellular wireless technologies that use CDMA [11] or TDMA based
techniques. In particular, cellular phones can connect as clients to Rover, which implies that the
Rover system interfaces with cellular service providers.
Admin Interface: This interface is used by system administrators to oversee the Rover system,
including monitoring the Rover controller, querying client devices, updating security policies,
issuing system specific commands, and so on.
-Content Interface: This interface is used by the content provider to update the content that is
served by the Rover controller to the client devices. Having a separate content interface
decouples the data from the control path.
Back-end Interface: This interface is used for interaction between the Rover controller and
certain external services as may be required. One such service is e-commerce, by which credit
card authorization for various purchases can be made. These services would typically be
provided by third-party vendors.
Server Assistants Interface: This interface is used for interaction of the Rover controller with the
secondary servers. e.g. the database and the streaming media unit.
Fig 3.4 Logical architecture of a Rover system
Transport Interface: This is the communication interface between the Rover controller and the
clients, which identify data formats and interaction protocols between them.
One component of the database is the user info base, which maintains user and device
information of all active users and devices in the system. It contains all client-specific contexts of
the users and devices, namely profiles and preferences, client location, and triggers set by the
clients. This information changes at a fairly regular rate due to client activities, e.g. the client
location alters with movements. The Rover controller has the most updated copy of this
information and periodically commits this information to the database. For many of these data
items (e.g. client location), the Rover controller lazily updates the database. These are termed as
volatile data since any change to these data items are not guaranteed to be accurately reflected by
the system across system crashes. For some others, (e.g. new client registration) the Rover
controller commits this information to the database before completing the operation. These are
termed as non-volatile data. The Rover controller, identifies some parts of the data to be volatile,
so as to avoid very frequent database transactions. The Rover controller does not guarantee
perfect accuracy of the volatile data, and thus trades off accuracy with efficiency for these data
components.
The other component in the database is the content info base. This stores the content that
is served by the Rover controller and changes less frequently. The content provider of the Rover
system is responsible for keeping this info base updated. In the museum example, this
component stores all text and graphical information about the various artifacts on display.
The Rover database implements an extended-SQL interface that is accessed by the Rover
controller. Apart from the usual SQL functionality, it also provides an API for retrieval of spatial
information of different objects and clients in the system.
The transactions of the Rover controller with the database are executed on behalf of the
different server operations. The transactions, by definition, are executed atomically by the
database. Additionally, each transaction is identified by two different flags that identify certain
properties for execution, as follows:
Lock-Acquiring: If this flag is set, the transaction is required to acquire relevant locks,
on behalf of the server operation, to read or write data to the database. It also requires that
these locks will be released by the server operation prior to its termination at the Rover
controller.
Blocking: If a transaction issued by a server operation is unable to access or modify some
data due to locks being held by other server operations, it can either block till it
successfully reads the data, or it returns immediately to the server operation without
successfully execution. If the Blocking flag is set for a transaction, then the first option is
chosen for the transaction.
To avoid deadlocks, server operations acquire the relevant locks on data items stored in the
database using a Two Phase Locking protocol with a lexicographic ordering of lock acquiring for
data items. It is important to note that server operations may need to acquire locks at the database,
if and only if they need to access the stored data through multiple transactions and all these
transactions need to have the same data view. This is not required for the vast majority of server
operations that either make a single database transaction, or do not need its multiple transactions
to have identical views. None of the server operations in the current implementation of Rover,
required to acquire locks at the database. The transactions themselves might acquire and release
locks at the database during their execution, which are not visible to the server operations at the
Rover controller.
The location server is responsible for storing and managing user locations in the Rover
system. The system is designed to work in both indoors and outdoors environments. We have
experimented with RF-based systems that infer the location of a device based on the signal
strength of received RF signals of IEEE 802.11 wireless LAN frames.
In our RF-based techniques, the user location of a client is obtained without the use of
any additional hardware. It thus provides more ubiquitous coverage in campus-like environments
that already have a rich wireless LAN coverage for data transport. This can be contrasted to
alternative Infra-red tag-based systems [18, 11, 3] or ultra-sonic emitter and receiver based
systems [16] in which additional devices need to be attached to the infrastructure as well as the
clients. We have developed different RF-based technique in the context of the Rover system.
Techniques are categorized into:
– Model-based Techniques: The relation between the signal strength received from an
access point and the distance to this access point is captured by some function (model).
By using three or more access points, the user location is estimated. Two methods are
used:
o Minimum Triangulation: Given each access point i located at coordinates xi; yi; zi,
the distance between the receiver and the access point (di) is modeled as:
where x; y; z are receiver’s coordinates, vi is the strength of the received signal,
and k is a constant. Due to problems in signal propagation like reflection and
multi pathes,we model the problem as finding a solution to the minimization
problem:
By solving the derivatives equations of f numerically, we can get the estimation
coordination of the receiver.
where PL is the received power at certain position in decibels, d is the three
dimensional path length between the transmitter and the receiver, d0 is a reference
distance, and n represents the path loss exponent. We estimate the A and B
parameters for each access points using curve fitting techniques. Given the vector
of samples, we can estimate how far the receiver is from each access point to
estimate his location.
For indoor environments, we found that radio-map based techniques achieve better accuracy than
model-based techniques. This is because the relation between the signal strength hand distance in
indoor environments is complicated by to the multi-path effect and other phenomena which are
difficult to capture by simple models. On the other hand, model based techniques have the
advantage of not depending on the calibration process required to build the radio-map. This
advantage favors model-based techniques in outdoor environments, where the relation between
signal strength and distance can be captured by simple functions and the coverage area is large
making building the radio-map a time consuming process.
A single Rover system comprises of a single Rover controller, other server devices (e.g., Rover
database and Rover streaming media unit), and a set of Rover clients. A single system is sufficient for
management of Rover clients in a zone of single administrative control. For example, consider a Rover
system in a single museum. All artifacts and objects on display in the museum are managed by a single
administrative entity. There is a single content provider for this system and a single Rover system is
appropriate to serve all visitors to this museum.
However, each separate museum has its independent administrative authority. Therefore,
we can have a separate Rover system for each of the different museums that are administered
separately by each museum authority. This allows a decentralized administration of the
independent Rover systems, locally by each museum authority. However, it is important to
provide a seamless experience to visitors as they roam from museum to museum. A multi-Rover
system is a collection of independent Rover systems that peer with each other to provide this
seamless connectivity to the user population.
The design of a multi-Rover system is similar in spirit to the Mobile IP [10] solution to
provide network layer mobility to devices. Each client device has a home Rover system to which
it is registered. As the device physically moves into the zone of a different, or foreign Rover
system, it needs to authenticate itself with the Rover controller of the foreign system. Based on
administrative policies, the two Rover systems have service level agreements that define the
services that they will provide to clients of each other.
When the Rover controller of a system detects a foreign client device, it first checks
whether it has an appropriate service-level agreement with the Rover controller of the device’s
home system. If one exists, the Rover controller of the foreign system requests transfer of
relevant state about the client device from the Rover controller of the home system and
subsequently provides necessary services to it. Rover controllers of different Rover system use
the Inter-Controller protocols to interact.
3
Fig 4.1 Rover’s controller interacts with other parts of the system and the external world
For the wireless interface to client devices, we considered two link-layer technologies: IEEE
802.11 and Bluetooth. Bluetooth is power efficient and therefore better at conserving client
battery power. According to current standards, Bluetooth can provide bandwidths up to 2 Mbps.
In contrast, IEEE 802.11 is less power efficient but widely deployed and currently provides
bandwidths up to 11 Mbps. In areas where these high-bandwidth alternatives are not available,
Rover client devices will use the lower bandwidth interfaces that cellular wireless technologies
provide. Figure 4.1 shows how Rover’s controller interacts with other parts of the system and
with the external world. The controller uses the location interface to query the location service
about the positions of client devices and the transport interface to identify data formats and
interaction protocols for communicating with the clients. It uses the server assistants’ interface
to interact with secondary servers like the database and the streaming media unit and the back-
end interface to interact with external services, such as credit card authorization for e-commerce
purchases. Third-party providers typically offer these external services. System administrators
can use the admin interface to oversee the Rover system, including monitoring the Rover
controller, querying client devices, updating security policies, issuing system-specific commands,
and so on. The content interface lets content providers update the information and services that
the Rover controller serves to client devices. Having a separate content interface decouples the
data from the control path.
Fig 4.2 Rover client screen shots taken from a demonstration at the McKeldin mall of the
University of Maryland campus. (a) Rover client running the client software showing the mall
map. (b) A notification to the client about a nearby food stall. The user associated with the client
had previously set a trigger notification request when he is close to a food stall. (c) The user had
issued a query operation about the sites of interest in his vicinity. On receiving the response from
the Rover system, the client has highlighted the relevant sites. (d) An active chat session between
this user and another user is marked as a dotted line connecting both users.
We have successfully built Rover prototype systems and tested them in the
campus of University of Maryland College Park. The implementation has been demonstrated for
both indoor and outdoor environments. A preliminary test implementation was developed on
Windows based systems (Windows 2000 for the controller and Windows CE for the client
devices). The current implementation of the Rover system has been developed under the Linux
operating system. The Rover controller is implemented on a Intel Pentium machine running Red
Hat Linux 7.1 and the clients are implemented on Compaq iPAQ Pocket PC (model H3650)
running the Familiar distribution (release versions 0.4 and 0.5) of Linux for PDAs1. Wireless
access is provided using IEEE 802.11 wireless LANs. Each Compaq iPAQ is equipped with a
wireless card which is attached to the device through an expansion sleeve.
We have experimented with a set of 8 client devices and have tested various
functionalities of the system.
In both these cases, we implemented the basic functionality of the Rover system. They include:
User activation/de-activation and device registration/de-registration procedures.
Periodic broadcast of events of interest from the Rover controller to the users in specific
locations.
Interaction between users. This can be either simple text messaging or voice chat. Users
can optionally make their location visible to other users. In the museum example, a tour
group coordinator can use this feature to locate all the other members of the group.
Users can request alerts from the Rover controller when certain conditions are met. The
conditions may be time, location or context dependent. This can be used to provide
notification to ticket holders of an approaching show time. Clearly, for the users who are
further away from the show venue, this notification needs to be provided early enough, so
that they have enough time to reach the venue.
An administrator’s console allows a global view of all users and their locations in the
system. The administrator can directly interact with all or a specific subset of the users
based on the location or other attributes of the users.
In this section we show the results obtained for each of the above operations.
GetAllLoginUsers
Figure 4.5(a) shows the response time at the controller plotted against the number of
clients in the system for different think times (Z = 100ms; 200ms; 300ms). The total
Fig 4.5 GetAllLoginUsers operation: (a) Controller response time, (b) Client response
time, and (c) Response timewhen Z=200ms.
service time, D of the controller is observed to be around 300 microseconds5. For only one
device in the system Dmax = D. Using Equation 1 where D = 300 microseconds and a think time
Z = 200 milliseconds, we get N¤ to be approximately 667 requests. Hence the server can support
667 requests without any significant delays. In an actual deployment, the think time would be of
the order of 10’s of seconds and that would give an even higher value of N*(of the order of
thousands of clients). Figure 4.5(b) shows the response time for the client side.Figure 4.5(c)
shows the response time behavior of both the controller and the client when the think time is Z =
200 milliseconds. As the graph shows the controller graph stays almost horizontal as the number
of clients are increased which shows the controller can handle a large number of clients. On the
other hand, the client graph grows with the number of clients. This can either be due to the effect
of the wireless hop involved or the processing involved at the OS level. The performance of the
802.11b wireless network has not been taken into account and is left for future work.
VectorMap
Figure 4.6 shows the response time at the different Rover components. For the database
the total service demand time is observed to be around 0.5 seconds. Using equation 1, we can
predict the knee-point to be at N¤ = 3 with a think time Z = 1 second. We should note that the
VectorMap operation is an infrequent operation and has been used only to assess the
performance of the system in the extreme case. In an actual deployment, the duration between
subsequent VectorMap operation requests (Z) would be in the order of minutes.
Figure 4.6 shows the response time observed at the database, the controller, and the client
when the think time is Z = 1 second. The difference in the database response and the controller
response could be explained by the fact that at the controller all the data is touched and a copy is
created for debugging purpose. Once this debugging code is taken out the controller graph
should follow the database graph very closely.
Fig. 4.6. VectorMap operation: (a) Database response time, (b) Controller response time,
(c) Client response time, and(d) Response time when Z=1s.
Locate
Similar to the analysis of the previous operations, we show the response time at the
database, the server and the client for a think time of 200 milliseconds in Figure 4.7. With
database service demand time (D) is 200 microseconds and the think time (Z) is 200 milliseconds,
we get N* to be approximated 1000 requests the database can handle without any significant
delays. The difference between the database graph and the controller graph can be explained by
the same reasoning as given in the analysis of VectorMap request.
Fig.4.7. Response time of Locate (Z=200ms)
CONCLUSION AND FUTURE WORK
We believe that Rover Technology will greatly enhance the user experience in a large
number places, including visits to museums, amusement and theme parks, shopping malls, game
fields, offices and business centers. The system has been designed specifically to scale to large
user populations. Therefore, we expect the benefits of this system to be higher in such large user
population environments.
APPENDIX
References
[1] http://www.bluetooth.com.
[2] http://www.irda.org.
[3] J. Agre, D. Akenyemi, L. Ji, R. Masuoka, and P. Thakkar. A Layered Architecture for
Location-based Services in Wireless Ad Hoc Networks. In Proceedings of IEEE
Aerospace Conference, March 2002.
[4] P. Bahl and V.N. Padmanabhan. RADAR: An in-building RF-based user location and
tracking system. In Proceedings of Infocom, Tel Aviv, Israel, March 2000.
[5] N. Davies, K. Cheverst, K. Mitchell, and A. Efrat. Using and Determining Location in a
Context sensitive Tour Guide. IEEE Computer, 34(8), August 2000.
[7] IEEE. Wireless LAN medium access control (MAC) and physical layer (PHY)
specification, Standard 802.11, 1999.
[8] J. Mitola. The Software Radio Architecture. IEEE Communications Magazine, 5, May
1995.