Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this t...
217 downloads
1352 Views
4MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Back Cover ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Bluetooth is a technology for wireless communication. It is similar in functionality to the way laptops connect to the Apress © 2003 (352 pages) Internet from home/office, but is typically used for short burst communications instead of a continuous connection. The authors of this to develop wireless Java phones and personal devices. Because of this difference, Bluetooth is text moredescribe typicallyhow found supported in wireless using of Bluetooth for In a variety of platforms. This and Ranjith Antony describe how to Bluetooth for Java isapplications not an overview Bluetooth. the book, Bruce Hopkins includes an APIusing overview of thefor Java library,ofdevelopment of includes an API overview of the develop wireless Java applications Bluetooth a variety platforms. This Bluetooth-based services, services, highlightshighlights of security and Java library, development of Bluetooth-based ofconcerns, security concerns, and walkthroughs for more. development with some of the different tools available. Programs will not be just J2ME (micro devices) based, but will also be for J2SE (client/desktop). Table of Contents
About the Authors
Bluetooth for Java Bruce Hopkins is an early adopter of Java technology, and has used it in a wide variety of applications, ranging from Introduction embedded systems to enterpise applications. He currently works as a technical architect at Redwood Solutions, an Chapter 1 firm - Introducing IT services in Livonia, Bluetooth Michigan. Chapter 2 - Bluetooth 1.1 Ranjith Antony is the technical lead for Atinav, an early Bluetooth "provider"/adopter. Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress BRUCE HOPKINS AND© 2003 (352 pages) The authors of this text describe how to develop wireless Java RANJITH ANTONY applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents
Copyright © 2003 by Bruce Hopkins and Ranjith Antony
Bluetooth for Java Introduction
All rights No part of this work may be reproduced or transmitted in any form or by any means, Chapter 1 reserved. - Introducing Bluetooth electronic mechanical, Chapter 2 -orBluetooth 1.1 including photocopying, recording, or by any information storage or retrieval system,3 without theYou prior written permission of the copyright owner and the publisher. Chapter - Before Get Started ISBN (pbk): 1-59059-078-3the Java Bluetooth API Chapter 4 - Understanding Chapter 5
- Bluetooth with J2ME MIDP Printed and bound in the United States of America 12345678910
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter Trademarked 7 - Java names and OBEX may appear in this book. Rather than use a trademark symbol with every occurrence
of a trademarked we use the names only in an editorial fashion and to the benefit of the trademark Chapter 8 - Using aname, Bluetooth Simulator owner, 9with- Bluetooth no intention of infringement of the trademark. Chapter Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Technical Reviewer: Andrew Stringer
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 Directors: - Bluetooth Dan and Jini Editorial Appleman, Gary Cornell, Simon Hayes, Karen Watterson, John Zukowski Appendix A - javax.bluetooth
Assistant Appendix B -Publisher: javax.obex Grace Wong Appendix C - Java Bluetooth Development on the PalmOS Platform
Project Manager and Development Editor: Tracy Brown Collins
Appendix D - BlipNet 1.1 API Index Copy Editor: Ami Knox List of Figures
Compositor: Impressions Book and Journal Services, Inc. List of Tables List of Listings
Artist and Cover Designer: Kurt Krames
List of Sidebars
Indexer: Valerie Robbins Production Manager: Kari Brooks Manufacturing Manager: Tom Debolski Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 175 Fifth Avenue, New York, NY, 10010 and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany. In the United States, phone 1-800-SPRINGER, email , or visit http://www.springer-ny.com. Outside the United States, fax +49 6221 345229, email , or visit http://www.springer.de. For information on translations, please contact Apress directly at 2560 9th Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax: 510-549-5939, email , or visit http://www.apress.com. The information in this book is distributed on an "as is" basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by
the information contained in this work. Bluetooth for Java
ISBN:1590590783 The source codeby forBruce this book Hopkins is available and Ranjith to readers Antony at http://www.apress.com in the Downloads Apress © 2003 (352 pages) section.
The authors of this text describe how to develop wireless Java
First and foremost, I dedicateusing this book to thefor Lord JesusofChrist, without applications Bluetooth a variety platforms. Thiswhom I could not have written includes an overview of the Java this book. I also dedicate thisAPI book to my loving wife,library, Schrell,development and my twoofwonderful children, Lydia and Bluetooth-based services, highlights of security concerns, and Bruce Jr. more.
—Bruce Hopkins Table of Contents Dedicated to my parents, Prof. Antony Mampilly and Prof. Kochurani Mampilly. Bluetooth for Java
—Ranjith Antony Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
About the Authors
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Bruce Hopkins is a 6-year Java veteran with experience in distributed computing and wireless networking. Appendix C -electrical Java Bluetooth Development on the PalmOS He has an and computer engineering degreePlatform from Wayne State University in Detroit and has Appendix interest in D -robotics, BlipNet 1.1 microcomputing, API and electronics. He has worked in Java since JDK 1.0a, and his
research studies include distributed computing, clustering, encryption, and pervasive computing. He Index currently works as an independent consultant in the Metro Detroit area. List of Figures List of Tables List of Listings List of Sidebars
Ranjith Antony earned his bachelor of technology degree in computer engineering from the College of Engineering, Chengannur, Kerala, India, an institute affiliated with Cochin University of Science and Technology. He became a lecturer in the Department of Computer Engineering of the Government Model Engineering College, an institute affiliated with Cochin University of Science and Technology. In June 1998, he joined Atinav as a software engineer. Presently, he is working as a senior technical manager and is managing the Bluetooth-related Java products from Atinav. About the Technical Reviewer Andrew Stringer was educated at the Dublin Institute of Technology in computer science and software engineering, receiving a bachelor of science degree. Andrew joined Rococo Software in 2001 as a trainer and consultant in the field of wireless software development. Andrew has great experience in developing
and delivering courses with J2ME and also with Java APIs for Bluetooth Wireless Technology (JABWT). Bluetooth for Java Andrew lives in Dublin, Ireland. by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) Acknowledgments The authors of this text describe how to develop wireless Java
I personally want applications to thank all using the people whofor helped me of in writing theThis book that you're holding. Never in a Bluetooth a variety platforms. includes API overview of thebe Java library,with development of and John Zukowski, both of million years would I havean thought that I would working Gary Cornell Bluetooth-based services, of security concerns, and accepted my proposal way whom are very respected Java authors. I'mhighlights very grateful that Gary and John more. back in January of 2002. For that matter, I want to thank the rest of the team at Apress including Tracy Brown, Ami Knox, Kari Brooks, and Wanshun Tam. More honor, however, goes to Tracy. Many thanks to Andrew Stringer from Rococo for tech reviewing this book; I never knew that I could have been wrong so Table of Contents many times. It's good to have an expert at your disposal. Bluetooth for Java Introduction
Bluetooth equipment isn't cheap, so I also want to acknowledge all the great companies around the world - Introducing Bluetooth (literally) that gave Ranjith and me hardware loans and technical assistance. For instance, Jeff Day and Chapter Bluetooth the rest2of -the team at1.1 3Com (including Ken Morley, Brent Nixon, and Randy Rollins) were very helpful in Chapter 3 us - Before You Get Started providing with Bluetooth adapters and tech support. Mahendra Tailor from TDK Systems in the UK was Chapter 4 - Understanding Java BluetoothasAPI very helpful in providing usthe with equipment well. Rococo was very kind to allow us to have an extended Chapter 5 -period Bluetooth with to J2ME MIDP evaluation in order write the chapter on Bluetooth simulation. Thanks to Geraldine, Karl, and the Chapter 6 -team Creating a Bluetooth Print Server with Mobiwave JPS API rest of the in Ireland. Lim Siong Huat from in Singapore was very helpful in allowing us to Chapter use their 7 protocol - Java and analyzer OBEX for the security chapter. Peter Duchemin from Smart Network Devices in Germany verya helpful in getting me the inside scoop on their Micro BlueTarget. I also want to thank Chapter 8 was - Using Bluetooth Simulator Niels-Christian Gjerrild from Ericsson in Sweden for hardware and documentation on the Ericsson BlipNet Chapter 9 - Bluetooth Security system. North of the border, in Canada, I also assistance from Dr. Steven Knudsen regarding the Chapter 10 - Wireless Embedded Systems with thereceived Micro BlueTarget integration of Jini and Bluetooth. Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 1
Chapter 12 - Bluetooth and Jini
This is my first book, so I definitely have to thank all the wonderful teachers at Grant, Cass Tech, and WSU who helped me to get here. You'll never forget a good teacher, and I've had many in my lifetime. I Appendix B - javax.obex want to thank personally Mrs. Smith, Mrs. Parent, Mr. Walker, and Mrs. Cowan from Grant School. At Appendix C - Java Development on the Mr. PalmOS Platform Cass Tech, I hadBluetooth the pleasure to study under Miller, Mr. Raymond, and Mrs. Ashford. Dr. Steve Kahn Appendix D BlipNet 1.1 API was a little disappointed that I didn't finish my degree with the Mathematics Department after I joined the Index Emerging Scholars Program, but he deserves to be mentioned. I also want to thank Dr. Chaudhary for List of Figures giving me the opportunity to study and research with him in the Parallel and Distributed Computing Lab at List Wayne of Tables State. Very few students were eligible to work in the undergraduate research program, and I'm grateful to Bill Hill for allowing me to be a part of it. List of Listings Appendix A - javax.bluetooth
List of Sidebars
I wouldn't be the person that I am today without the spiritual guidance of my pastors at Bethlehem Temple Church. Many thanks to the late Bishop Jackson, the late Bishop Porter, Elder Clark, and the whole church family. I'm the youngest of seven children, so each one of my siblings played a role in shaping my life and career. Thanks to Theresa, Valerie, Darlene, Barbara, Mark, and Tyrone. I definitely have to give special thanks to Mom and Dad, because they've dealt with me for 26 years of my life. They did an excellent job raising all seven children with college educations. Thanks to Thaddeus Johnson for being a good friend. In order to stay smart, you have to hang around smart people. Finally, I want to thank my wonderfully sweet wife, Schrell. She was very patient and understanding while I wrote this book. She is truly a virtuous woman. —Bruce Hopkins Numerous people have provided assistance, advice, and encouragement during the preparation of this book. Major contributors of material, ideas, insights, solutions, and explanations that have found their way into this book include James Jose, Salman Ali, Rajesh Rabindranath, Sudhin Latheef, Vaishali Patil, and Sajith M Nair. Besides them, my teammates at Atinav, especially George Mathew, Cipson Jose, and Dinkar Raj, have contributed suggestions, fixed program bugs, and made imperceptible contributions too numerous to mention. I am also grateful to Mr. Lim Siong Huat and his colleagues at Mobiwave for extending their support by providing timely advice and necessary equipment. Without him, the chapter on
Bluetooth security would not have materialized. Bluetooth for Java
—Ranjith Antonyby Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Introduction by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
© 2003wireless (352 pages) In the near future,Apress Bluetooth technology will be embedded into nearly every consumer electronics The authors of this text describe howdesktops, to developcalculators, wireless Java device. Devices like mobile phones, PDAs, laptops, watches, keyboards, mice, applications using Bluetooth for a variety of platforms. This printers, scanners, cameras, and video game consoles are just a sample of what device manufacturers includes an API overview of the Java library, development of will be embedding with Bluetooth.services, Today, Bluetooth chipsets can be purchased (in mass quantities) for $5, Bluetooth-based highlights of security concerns, and so it's only a matter of time before many of your personal devices become Bluetooth enabled. more.
With Java, you get the ability to create applications that are agnostic of their underlying hardware platform. Table of Contents As you can see, this makes Java the perfect programming language for Bluetooth! Regardless of the Bluetooth hardwarefororJava OS used for your PDA, mobile phone, watch, etc., you can use the same programming
language to create your Bluetooth applications. This book is all about how to create wireless applications Introduction using Java Bluetooth. Chapter 1 - and Introducing Bluetooth Chapter 2
- Bluetooth 1.1
- Before You Get How This Book IsStarted Organized
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API Here's 5an -overview ofwith what's covered Chapter Bluetooth J2ME MIDP in this book: Chapter 6 - Creating a Bluetooth Print Server with JPS API new to Bluetooth, then this chapter is for you. In Chapter 1: Introducing Bluetooth: If you're completely Chapter Chapter 7 - Java 1, we and give OBEX a brief introduction to Bluetooth, with a general explanation of what you can do with
the8technology. Chapter - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 2: Bluetooth 1.1: In this chapter, we dive right into the dirty details of the Bluetooth protocol. Here we define the roles and relationships between the Bluetooth stack, Bluetooth profiles, and Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Bluetooth hardware. If you've seen Bluetooth terminology before, but you don't know the difference Chapter 12 - Bluetooth and Jini between SDP and SDAP for instance, then this chapter will help clear things up. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix A - javax.bluetooth
Appendix B - javax.obex Chapter 3: Before You Get Started: Chapter 3 is very appropriately named because it covers all the Appendix loose C -ends Javathat Bluetooth need to Development be addressed on the before PalmOS we show Platform you how to integrate Bluetooth and Java. Appendix D - BlipNet 1.1 API
Chapter 4: Understanding the Java Bluetooth API: This chapter covers the full life cycle of a Bluetooth application (whether you're using Java or not). This chapter also shows you how to use the List of Figures javax.bluetooth package of the official Java Bluetooth API (the JSR-82) in order to create List of Tables Bluetooth applications. Index
List of Listings
List ofChapter Sidebars5: Bluetooth with J2ME MIDP: The first complete example of a Java Bluetooth application is
explained in Chapter 5. Before we present the code, however, we provide a short review of the J2ME MIDP. Chapter 6: Creating a Bluetooth Print Server with JPS API: Now with a complete example under your belt, things will start to get pretty exciting. In Chapter 6, we introduce you to the Java Printing API and show you how to create a Bluetooth print server. Chapter 7: Java and OBEX: Chapter 7 covers the foundation of the OBEX protocol and provides an example on how to transfer files using the javax.obex package of the JSR-82. Chapter 8: Using a Bluetooth Simulator: As you might have guessed, this chapter is all about how to create Java applications that interact with virtual Bluetooth devices. In this chapter, the entire Bluetooth network is simulated in software. Chapter 9: Bluetooth Security:Chapter 9 covers the security measures provided by the Bluetooth specification in order to make wireless applications more secure. Chapter 10: Wireless Embedded Systems with the Micro BlueTarget: The primary focus of Chapter 10 is the Micro BlueTarget by Smart Network Devices. In this chapter, we explore the possibilities of creating applications with a fully functional computer that fits in your hand and includes an implementation of the JSR-82.
Chapter 11: Enterprise Bluetooth Applications with the Ericsson BlipNet: In Chapter 11, we introduce Bluetooth for Java you to enterprise Bluetooth applications and show you how to construct them using Java and the ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Ericsson BlipNet. Apress © 2003 (352 pages)
Chapter 12: Bluetooth and In the final chapter the book, we provide an overview of Jini network The authors of Jini: this text describe how to of develop wireless Java applications Bluetooth for aJini variety of platforms. This technology and describeusing how to implement and Bluetooth together. includes an API overview of the Java library, development of
services, highlights of security concerns, and Appendix A: Bluetooth-based javax.bluetooth:Appendix A is a handy reference that contains all the method signatures more. of the javax.bluetooth API.
Appendix B: javax.obex: Appendix B is a handy reference that contains all the method signatures of thejavax.obex API.
Table of Contents Bluetooth for Java
Introduction Appendix C: Java Bluetooth Development on the PalmOS Platform: Appendix C provides a quick Chapter 1 - Introducing overview of how to Bluetooth get started creating Java Bluetooth applications on the Palm OS platform. Chapter 2
- Bluetooth 1.1 Appendix D: BlipNet API: Appendix D contains full descriptions of the classes, exceptions, and Chapter 3 - Before You Get1.1 Started
interfaces that comprise BlipNet API.API This appendix will be really useful to have on hand when Chapter 4 - Understanding thethe Java Bluetooth developing BlipNet applications. - Bluetooth with J2ME MIDP
Chapter 5 Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Intended Audience by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
So who are you?Apress This book really has two audiences. If you're a Java developer, then this book assumes © 2003 (352 pages) that you're an intermediate Java developer with little experience with Bluetooth. You'll get the most The authors of this text describe how or to no develop wireless Java out of this book ifapplications you've written a few Java classes on your own (especially using Bluetooth for a variety of platforms. This J2ME applications). includes an API overview of the Java library, development of Bluetooth-based services, highlights of security andChapter 2. If you've never used If you're a Bluetooth developer, then this book becomes usefulconcerns, to you after more. Java before, then we'd suggest that you read the first few chapters of a J2ME book before you read this book. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
The Code
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The source codeApress for this©book is available at http://www.apress.com in the Downloads section. The 2003 (352 pages) book's companion Web site, http://www.javabluetooth.com, also contains the source code, as The authors of this text describe how to develop wireless Java well as other useful resources such as a list of recommended Bluetooth hardware for running the applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of examples. Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 1: Introducing Bluetooth ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress ©is 2003 (352 pages) Simply stated, Bluetooth a wireless communication protocol. As such, you would use Bluetooth to The authors of this Bluetooth-capable text describe how todevices. develop In wireless Java Bluetooth is like any other communicate to two or more other this sense, applications using Bluetooth for a variety of platforms. This communication protocol that you may use every day like HTTP, FTP, SMTP, or IMAP. Bluetooth is also includes an API overview of the Java library, development of like these protocols in that it has aservices, client-server architecture. Inconcerns, Bluetooth,and the one who initiates the Bluetooth-based highlights of security connection (the client) more. is the master, and the one who receives the connection (the server) is the slave.
The purpose of this chapter is to give you an introduction to Bluetooth. We'll briefly compare it with Table of Contents competing technologies like Infrared and 802.11b and explain where Bluetooth fills the gaps that these Bluetooth other technologies for Java leave open. Next, we'll show you what Bluetooth can do and where it is currently used
in applications today, just in case you're unfamiliar with the capabilities of the technology. Finally, we'll Introduction wrap up1 this chapter with a few scenarios for how Bluetooth will be used in the near future. Chapter - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
- Before YouInfrared Get Started Bluetooth vs.
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API Of course, Chapter 5 -wireless Bluetoothcommunication with J2ME MIDPbetween two computers is not new. PDAs have been able to do that
for years infrared technology. drawback infrared is that the devices involved must be a few Chapter 6 using - Creating a Bluetooth PrintOne Server with JPStoAPI feet apart, importantly, the infrared transceivers must see each other "eye to eye." If either of Chapter 7 -and Javamost and OBEX
those conditions are not met, then the transmission will fail. Bluetooth overcomes the first limitation by - Using a Bluetooth Simulator having a nominal range of about 10 meters (30 feet). Bluetooth overcomes the second limitation because Chapter 9 - Bluetooth Security it works like a radio, so transmissions are omnidirectional. Consequently, there are no line-of-sight issues Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget when communication occurs between two Bluetooth devices. Chapter 8
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Bluetooth vs. 802.11b by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
If you've heard ofApress Bluetooth before, then you've certainly heard of 802.11b (the wireless LAN protocol), © 2003 (352 pages) another wireless The communication protocol. Bluetooth 802.11b were created to accomplish two authors of this text describe how and to develop wireless Java different goals, although both technologies operate in the same frequency band: 2.4 GHz. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of services, highlights of security concerns, Note Having Bluetooth-based both technologies operate at the same frequency rangeand does not mean they'll interfere more. when placed in range of each other, according to a Forrester Research study conducted in 2001. Go to http://www.forrester.com/ for details on that report. Table of Contents
The goal of wireless LAN (802.11b) is to connect two relatively large devices that have lots of power at
Bluetooth for Java high speeds. Typically, this technology is used to connect two laptops within 300 feet at 11 Mb/s. This Introduction technology is also useful for network administrators who want to extend their LAN to places where it is Chapter 1 - Introducing Bluetooth to run cables. either expensive or inconvenient Chapter 2 - Bluetooth 1.1
On the 3other hand,You Bluetooth is intended to connect smaller devices like PDAs and mobile phones within a Chapter - Before Get Started range of feet at a rate of 1 Mb/s. Slower data Chapter 4 30 - Understanding the Java Bluetooth API rates and shorter ranges allow Bluetooth to be a lowpower wireless technology. Compared Chapter 5 - Bluetooth with J2ME MIDP to 802.11b devices, some Bluetooth devices can easily consume 500 times -less power, which can make a huge difference in the battery life of many mobile devices. Creating a Bluetooth Print Server with JPS API
Chapter 6
Chapter 7 is - Java OBEX to be used as a cable replacement technology. If you have multiple peripherals Bluetooth alsoand intended Chapter 8 - to Using Bluetooth using Simulator connected youracomputer RS-232 or USB, then Bluetooth is the ideal solution if you want to use Chapter 9 - Bluetooth Security those devices wirelessly. It's almost impossible to connect peripherals to your computer using 802.11b Chapter 10 - (well, Wireless Embedded Systems with the even Micro has BlueTarget technology except for printers). Bluetooth a built-in capability for wireless audio Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet communication. Chapter 12 - Bluetooth and Jini
Can either replace the other? Hardly. Bluetooth will never replace 802.11b because it's bad at Appendix A -technology javax.bluetooth handling the following:
Appendix B - javax.obex
Appendix C -file Java Bluetooth Development Large transfers between deviceson the PalmOS Platform Appendix D - BlipNet 1.1 API Index Long-range communication (only Class 1 Bluetooth devices have a range of 300 feet) List of Figures
CROSSREFERENCE
List of Tables
List of Listings
See "Bluetooth Device Power Classes" in Chapter 2 for details about power classes.
List Sidebars Onofthe other hand, 802.11b will never replace Bluetooth because
802.11b can't be used to communicate to peripherals. 802.11b requires too much power for communication. 802.11b is overkill for small data transfers. 802.11b wasn't designed for voice communication. In the wireless communication arena, there is no technology that is best suited for every possible application. Either Bluetooth or 802.11b can be used for wireless communication between computers. Both have their place in the market and can perform in their niches well. Newer wireless LAN protocols like 802.11a and 802.11g will further clear the distinction between Bluetooth and wireless LAN because they extend 802.11b's bandwidth limitation to 54 Mb/s.
Bluetooth for Java Bluetooth Devices on the Market Today by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Now, let's take a Apress look at©Bluetooth devices that you can get at any consumer electronics store today. We'll 2003 (352 pages) highlight the problems that Bluetooth solves and how give to some scenarios forJava using this technology. If you're The authors of this text describe develop wireless already familiar with common usage scenarios of Bluetooth devices, then applications using Bluetooth for a variety of platforms. This feel free to skip this section. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Wireless Data Transfer: PDA to Phone
Almost everyone owns a mobile phone nowadays. These devices are very convenient, compact, and cute Table ofatContents (well, least some of them). However, they suffer from two major limitations: Bluetooth for Java
Mobile phones have limited memory for phone book entries. Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Data entry on mobile phones can be cumbersome.
Chapter 3 been - Before Youbefore. Get Started We've all there Entering data on a mobile phone is very tedious because you're dealing with Chapter a nine-button 4 - Understanding keypad to type thealphanumeric Java Bluetoothtext. API Also, mobile phones don't have a lot of memory for
storage, you're limited onlyMIDP 50 or 100 entries. On top of that, you'll also need to truncate some Chapter 5 so- Bluetooth with to J2ME names6when adding aphone entries, "Auntwith Clarissa Johnson" becomes "Ant Clrssa Jnsn." Chapter - Creating Bluetooth Printso Server JPS API Chapter 7
- Java and OBEX
If you own a PDA, then you probably agree that PDAs are also useful devices. They can store thousands Chapter 8 - Using a Bluetooth Simulator of contact entries, and they are a lot better for entering data compared to mobile phones. Since you can't Chapter 9 - Bluetooth Security store your entire contact list on your mobile phone, you probably have it stored on your PDA. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Unfortunately, it's a little inconvenient to look up a phone number on the PDA and then manually dial the Chapter Enterprise number11on- the mobileBluetooth phone. Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
With a Bluetooth-enabled Appendix A - javax.bluetoothPDA and a Bluetooth-enabled mobile phone, you can keep your entire contact list on the where it's far more convenient. Don't even bother to store phone numbers on your phone. Appendix B -PDA javax.obex Whenever ready toDevelopment dial a number, youPalmOS just look up the number on the PDA and send the phone Appendix C -you Javaare Bluetooth on the Platform number Dover to the1.1 phone; Appendix - BlipNet API no wires, no hassle. Figure 1-1 is a picture of one of HP's advanced Bluetoothenabled PDAs. Index List of Figures List of Tables List of Listings List of Sidebars
Figure 1-1: The short antennae on HP iPAQ 5400 series Pocket PC allows it to communicate via
Bluetooth and 802.11b. For added security, this model also includes a fingerprint reader. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
ConnectionTheSharing: Laptop to Phone authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This
If you're a programmer and you have a laptop, you know how cumbersome it is to get a dial-up Internet includes an API overview of the Java library, development of connection on your mobile phone.services, You may have anofInternet-ready phone, Bluetooth-based highlights security concerns, andbut you may not have the right cable. Maybe youmore. have the right cable (which isn't cheap), but you need additional software to establish the dial-up connection. Sometimes, you need to connect two cables together to accomplish this feat. Bluetooth eliminates all the hassle from this scenario by creating a standardized method for wireless dialTable of Contents up networking. You can even keep your wireless phone at your hip or in your purse while you surf the Web Bluetooth for JavaThe same applies for PCs or PDAs that want to use your phone to connect to the Internet. on your laptop. Introduction This is really convenient whenever your broadband connections at home go down for servicing. You can Chapter - Introducing Bluetooth simply 1place your wireless phone in the vicinity of your PC and that's it, you're connected. Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started Personal Networks: PC to PC - Understanding the Java Bluetooth API
Chapter 4
Chapter 5 is - Bluetooth with J2ME MIDP Bluetooth great for connecting two PCs together at a moderate speed. If you want higher speeds or if Chapter 6 Creating a Bluetooth Print you're Server better with JPS you need to transfer large files, then off API using Wireless LAN technology. On the other hand, Chapter 7 is - Java OBEX Bluetooth goodand at creating small, personal networks. So this is a great technology if you're having an Chapter impromptu 8 - meeting Using a Bluetooth with coworkers. Simulator Bluetooth also has the added capability to discover new devices when
they enter network. Chapter 9 -your Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Cable Replacement: PC to Peripherals
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
You canAimagine Bluetooth as functioning like any other protocol to connect to your peripherals, such as Appendix - javax.bluetooth serial (RS-232), parallel, USB, or Firewire. In the near future, your personal computer will be equipped Appendix B - javax.obex with a Bluetooth in the same manner that it currently features a serial and USB port. Appendix C - Java "port" Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
You can use Bluetooth to connect to your peripherals wirelessly and effortlessly. Have you ever been to a remote location with a laptop and wanted to use a printer to print out some files? If you don't have the right List of Figures printer driver or the right cable, then you'll need to give your file to someone who does have it. If that List of Tables person doesn't have the right program to read your file, then you're out of luck; no printing for you. If you List of had aListings Bluetooth laptop and that printer was a Bluetooth printer (regardless of the manufacturer), then List of Sidebars you'd have no problem. With Bluetooth, you can ask the printer for the right driver if you don't have it, and then you can print your file with no problem. Index
The Power User So what if you're a power user? You most likely have a PDA, a wireless phone, a printer or two, a scanner, an MP3 player, a digital camera, and a DV camera. The back of your computer probably looks like a rat's nest of wires and cables. Some devices you may leave disconnected until you really, really need them. Bluetooth solves all this by allowing you to have virtually an unlimited number of peripherals wirelessly connected to your computer. The only limitation is that you can only have seven active connections at the same time. That should be fine because it would be quite rare for you to print, scan, upload pictures, and sync your PDA all at the same time.
Interoperability: Any Device to Any Device In the previous scenario, your non-Bluetooth-enabled devices are definitely not interoperable. In other words, if you want to send a picture from the camera to the PDA, then you'll need to use the computer to interconnect them. The same also goes if you want to scan a document and send it to the printer (i.e., to act like a copier) or send it to the PDA; you'll always need your PC to be the "man in the middle." Of course, you can buy a cable or two to do some of those tasks, but those cables are rare and expensive. Bluetooth solves all this by allowing your devices to communicate among themselves with no hassle and
with no cables. It's essentially the universal cable! Bluetooth for Java
by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Bluetooth in the© 2003 Small Office or Home Office Apress (352 pages)
The authors of this text describe how to develop wireless Java
In the small officeapplications setting, how do you share peripherals like a printer among users? Let's say you have a using Bluetooth for a variety of platforms. This $300 printer that includes you wantantwo users on your network to share. Your cheapest option is to buy a print API overview of the Java library, development of server—but that'sBluetooth-based another $300! You services, mighthighlights as well buy of security anotherconcerns, printer for and that kind of money. With Bluetooth, if bothmore. your users are in range, no print server is needed because both users can connect to the printer as if it were a local printer. For that matter, the printer should be able to print for every Bluetooth user within range; but remember that it can only handle seven active connections at the same time.
Table of Contents Bluetooth for Java
Bluetooth for Voice Applications
Introduction Chapter 1
- Introducing Bluetooth
Chapter 5
- Bluetooth with J2ME MIDP
Now, Bluetooth is great at transferring data wirelessly, but it also has the capability to transmit voice and Chapter 2 - Bluetooth 1.1 sound as well. So if you had a Bluetooth headset, you could use the same headset to answer calls on your Chapter 3 - Before You Get Started Bluetooth-enabled wireless phone as well as answer calls on your Bluetooth-enabled home phone. You Chapter 4 - Understanding the Java Bluetooth API could also use the same headset to listen to your Bluetooth-enabled portable radio. Chapter 6 can - Creating a Bluetooth Print API driving and you receive a call on your wireless Bluetooth also be enabled in yourServer car sowith thatJPS if you're Chapter phone,7you- can Java simply and OBEX transfer the call to the hands-free system built right into the car. Your phone stays
on your8hip, or in your briefcase. You can also use the same technology to initiate a call in your car without Chapter - Using a Bluetooth Simulator touching phone at all. In either case, if you've arrived at your destination and you want to continue the Chapter 9 your - Bluetooth Security conversation, you just transfer the call back phone. Chapter 10 - Wireless Embedded Systems with to thethe Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Bluetooth for Wireless Gaming
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Of course, can use Bluetooth for wireless gaming. It's always a hassle when you want to connect two Appendix B -you javax.obex handheld systems and playon against a friend. Most cables were about 6 feet long, so if both Appendix C video - Javagame Bluetooth Development the PalmOS Platform players were on a school Appendix D - BlipNet 1.1 APIbus, they needed to sit right next to each other to play. With Bluetooth, you just have to come within range of your opponent to play.
Index
List of Figures Okay, we're grownups now. But what do you do if you're in a boring meeting and you have some time to List of With Tables kill? Bluetooth, you and your equally bored colleague can both get out your PDAs and play a game of List of Listings checkers. PDAs are business tools, so no one will ever know if you are taking down notes or getting List of Sidebars double jumped. Figure 1-2 shows a Bluetooth-enabled mobile gaming device that could revolutionize the
portable gaming industry: the Nokia N-Gage.
Figure 1-2: The Bluetooth-enabled Nokia N-Gage wireless gaming system
for Java Devices of Bluetooth the Future by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
So, what kind of devices, Apress © applications, 2003 (352 pages)or innovations can we expect to see in the future that involve Bluetooth? Well, The hereauthors are justofathis fewtext thatdescribe we can how thinktoof: develop wireless Java applications using Bluetooth for a variety of platforms. This
Bluetooth locator system includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
Personalizedmore. family car The new arcade: a restaurant lobby Table of Contents
The following sections describe these in more detail. Bluetooth for Java Introduction - Introducing Bluetooth Bluetooth Locator System
Chapter 1 Chapter 2
- Bluetooth 1.1 Let's start with aYou Bluetooth-enabled home, which means that wherever you go in your home, you are Chapter 3 -off Before Get Started
within range of the wirelessthe network. With a Bluetooth-enabled home, you have the ultimate locator Chapter 4 - Understanding Java Bluetooth API system.5 All- your Bluetooth-enabled devices can never be misplaced if they are within the bounds of your Chapter Bluetooth with J2ME MIDP
home. If an item ever gets lost, all you need to do is go to your PC and start up the Bluetooth locator - Creating a Bluetooth Print Server with JPS API system program. For basic systems, you tell the program what device you are looking for, and the device Chapter 7 - Java and OBEX will beep until it is found. For advanced systems, the Bluetooth locator system will display a map of your Chapter 8 - Using a Bluetooth Simulator house and show you which room has your lost item. This solution is ideal for people who always misplace Chapter 9 - Bluetooth Security small but essential items like PDAs, wireless phones, keys, TV remotes, watches, and baby pacifiers! Chapter 6
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Personalized Family Car
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
In this example, let's start off with a Bluetooth-enabled car. With a Bluetooth-enabled car, all you need to do is to set the mirrors, seats, and radio stations just once and store your preferences on a BluetoothAppendix - Javathat Bluetooth Development onthe the time, PalmOS enabledCdevice you carry with you all likePlatform a wireless phone, PDA, or a watch. It wouldn't Appendix D BlipNet 1.1 API matter if someone else used your car, because all your preferences are stored on the device you keep Index with you. After someone uses your car, all you need to do is upload your preferences from your BluetoothList of Figures enabled device (like your watch—see Figure 1-3) and be on your merry way. Appendix B - javax.obex
List of Tables List of Listings List of Sidebars
Figure 1-3: Although the Fossil Wrist PDA doesn't contain any Bluetooth hardware, it does come preloaded with a Bluetooth-enabled OS— the Palm OS 4.1. Palm OS is a registered trademark of Palm, Inc.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony The New Arcade: A Restaurant Lobby Apress © 2003 (352 pages)
ISBN:1590590783
The sometime authors of in this describe develop wireless Finally, let's say that thetext near future,how youto(and several otherJava people) are waiting for a seat at a applications using Bluetooth for a variety of platforms. This restaurant. While you are waiting for your table, the hostess gives you a little gaming device to help you kill includes an API overview of the Java library, development of time. This Bluetooth-enabled device not only lets youofplay games againstand the computer, but you can also Bluetooth-based services, highlights security concerns, play games with other more. people in the lobby! When your table is ready, your game unit vibrates automatically, so the hostess doesn't even need to call you. When you turn your device in to the hostess, your score is automatically uploaded to the high scores list. If your score is good enough, you may even Table Contents win aoffree meal. Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Bluetooth is a great technology forpages) wireless connections between power-conservative computer devices. It Apress © 2003 (352 is also a great cable replacement technology forhow PCstoand laptops. It canJava function as a universal connector The authors of this text describe develop wireless between your peripherals and devices, and you may never again need a cable (some of which can be applications using Bluetooth for a variety of platforms. This includes andevices API overview of the Java library, development of expensive) to connect your together. Bluetooth-based services, highlights of security concerns, and more. In the next chapter, we'll dig right in to the Bluetooth protocol. If you're new to Bluetooth, this will be your
first introduction to a lot of new terminology. We'll explain to you the components of the Bluetooth stack and the purpose of Bluetooth profiles. When you create your wireless applications, you'll interact with the Table of Contents stack and profiles to send and receive data. Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 2: Bluetooth 1.1 by Bruce Hopkins and Ranjith Antony
Overview
ISBN:1590590783
Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This The main focus of includes this chapter an APIisoverview to describe of the theJava inner library, workings development of Bluetooth. of The most current revision of Bluetooth-based highlights of security concerns, and the protocol is version 1.1. Almostservices, every device on the market today is compliant with Bluetooth version more.
1.1, although you might be able to find some devices that use the 1.0B version of Bluetooth. The differences between Bluetooth 1.0B and 1.1 are beyond the scope of this book. The differences are minimal, and they really don't apply to Java programmers. Table of Contents Bluetooth for Java
What can you expect for future versions of Bluetooth like 1.2 and 2.0? Whenever the Bluetooth SIG (the group of companies that developed the Bluetooth spec) plans to release later revisions of the spec, you Chapter 1 - some Introducing can expect thingsBluetooth like higher speeds, more profiles, and backward compatibility with 1.1. We Chapter 2 expect - Bluetooth 1.1 versions to try to compete with 802.11 speeds, but you might see data rates of wouldn't the newer Chapter - Before You Bluetooth's Get Started niche is as a low-power wireless communication protocol, so don't 4, 8, or3even 12 Mb/s. Chapter - Understanding Java Bluetooth API expect 4Bluetooth 2.0 to be the a power hog. Introduction
Chapter 5
- Bluetooth with J2ME MIDP CROSSSeeChapter 1 for with a discussion Chapter 6 - Creating a Bluetooth Print Server JPS API of Bluetooth versus 802.11b.
REFERENCE Chapter 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator This chapter is all about Bluetooth. We'll give you brief history on how it began and how it got its name.
Chapter 9 -show Bluetooth Security Next, we'll you the radio spectrum and where Bluetooth fits in with devices that you probably already Chapter 10 Wireless Embedded Systems the withanatomy the MicroofBlueTarget know about. Afterwards, we'll describe a Bluetooth-enabled device by giving a description Chapter 11 - Enterprise Applications the Ericsson BlipNetFor the remainder of this book, when of Bluetooth hardware,Bluetooth the Bluetooth stack, with and Bluetooth profiles. Chapter 12 Bluetooth and Jini we refer to Bluetooth, we are referring to the 1.1 version of the spec. Now, let's dig in to Bluetooth! Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java A Brief History of Bluetooth by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Bluetooth got its name Apressfrom © 2003King (352 Harald pages) Blätand (Bluetooth) of Denmark. His most notable accomplishment The wasauthors that he of united Denmark and Norway under Christianity this text describe how to develop wireless Java in the 10th century. In 1994, Ericsson conducted the first research studies of a wireless technology to applications using Bluetooth for a variety of platforms. Thislink mobile phones and includes an1997, API overview the Java library, development of accessories. Years later in Ericssonofformed the Bluetooth Special Interest Group (Bluetooth SIG) so Bluetooth-based services, highlights of securityAt concerns, and that other companies could use and promote the technology. that time, the Bluetooth SIG consisted of more. the following promoter companies: Ericsson
Table of Contents Bluetooth IBM for Java Introduction
Intel Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Nokia
Chapter 4 - Understanding the Java Bluetooth API Toshiba Chapter 5
- Bluetooth with J2ME MIDP Later on, 1999 after the 1.0 specification Chapter 6 in - Creating a Bluetooth Print Server was withreleased, JPS API the Bluetooth SIG added four more members: Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
3Com
Chapter 9 - Bluetooth Security Agere Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Microsoft Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Motorola
Appendix A - javax.bluetooth Appendix B - Bluetooth javax.obexSIG has well over 2,000 members that are all interested in promoting and improving Today, the Appendix C - Java Bluetooth Development on the PalmOS Platform the Bluetooth standard. Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java The Radio Spectrum by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Wireless communication computers is either in the form of light or radio signals. Infrared Apress © between 2003 (352 pages) technology is theThe common way to conduct short range communications and obviously uses light. authors of this text describe how towireless develop wireless Java Conversely, Bluetooth technology uses radio signals. Table 2-1 gives a list of common everyday items that applications using Bluetooth for a variety of platforms. This includes an API overviewAs of the development of rely on radio signals for communication. you Java can library, see, Bluetooth, cordless phones, 802.11b, and highlights security concerns, and concept if you are new to all 802.11g fall in theBluetooth-based 2.4 GHz range.services, Hopefully, this willofdemystify the Bluetooth more. this; it's just a radio. Table Common Radio Frequencies Table of 2-1: Contents Bluetooth for Java
ITEM
Introduction Chapter AM radio 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Garage door openers
Baby 4monitors Chapter - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
TV channels 2–6
FREQUENCY RANGE 535 kHz-1.6 MHz 40 MHz 49 MHz 54 MHz-88 MHz
FM radio Chapter 7 - Java and OBEX
88 MHz-108 MHz
Chapter 8
174 MHz-216 MHz
- Using a Bluetooth Simulator TV channels 7–13
Chapter 9
- Bluetooth Security
TV channels 14–83Embedded Systems with the Micro BlueTarget 512 MHz-806 MHz Chapter 10 - Wireless Chapter 11cellular - Enterprise BlipNet CDMA phoneBluetooth Applications with the Ericsson824 MHz-894 MHz Chapter 12 - Bluetooth and Jini
GSM cellular phone Appendix A - javax.bluetooth
880 MHz-960 MHz
Appendix B -phones javax.obex Cordless
900 MHz
Appendix C - Java Bluetooth Development on the PalmOS Platform
GlobalDPositioning System Appendix - BlipNet 1.1 API
1.227 GHz-1.575 GHz
Index PCS cellular phone List of Figures
1.85 GHz-1.99 GHz
802.11b
2.4 GHz-2.483 GHz
List802.11g of Listings
2.4 GHz-2.483 GHz
List of Tables List of Sidebars
Bluetooth
2.4 GHz-2.483 GHz
Cordless phones
2.4 GHz
802.11a
5.15–5.35 GHz
Bluetooth Devices So, if a Bluetooth device is just a radio, then what do these radios look like? Well, Figures 2-1,2-2, and 2-3 are just a sample of devices that are Bluetooth radios. Some of these items are used in development kits, while others are meant to be used by consumers.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Figure The 3COM USB Bluetooth module Chapter 2 - 2-1: Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Figure 2-2: The CSR BlueCore 1. This single-chip solution includes a microprocessor, RAM, I/O controller, and Bluetooth implementation in a single package! This is most likely the smallest radio List of Figures that you've ever seen. Index
List of Tables
List of Listings List of Sidebars
Figure 2-3: The Palm SD Bluetooth card for Palm OS 4 devices. Palm OS is a registered trademark of Palm, Inc. The examples in this book will use a variety of Bluetooth devices from multiple vendors. The example in Chapter 8, however, uses no Bluetooth devices at all! In that example, we simulate the entire Bluetooth network in software using the Rococo Impronto Simulator.
Point-to-Point and Multipoint
One factor that distinguishes various Bluetooth devices is their connection capabilities. If a Bluetooth Bluetooth for Java device can only support point-to-point communication, then it can only communicate to a single Bluetooth ISBN:1590590783 Bruce Hopkins and Ranjith Antony device at a time. by Figure 2-4 demonstrates point-to-point communication in Bluetooth. Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter Figure 1 - 2-4: Introducing You can Bluetooth only connect to one Bluetooth device at a time if you have hardware that only
supports point-to-point Chapter 2 - Bluetooth 1.1 communication. Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API Now, point-to-point communication isn't necessarily a bad thing. If you have a Bluetooth phone, you really
Chapter 5 -one Bluetooth with J2ME MIDP only need connection to your Bluetooth phone. Frankly, it doesn't make sense to have multiple Chapter 6 Creating a Bluetooth Print phone Server while with JPS headsets be able to connect to your youAPI are using it. Chapter 7
- Java and OBEX
On the 8other hand, a multipoint device is able to communicate with up to seven other devices at the same Chapter - Using a Bluetooth Simulator time. Figure 2-5 is a diagram of a multipoint device communicating to other devices within range using Chapter 9 - Bluetooth Security Bluetooth technology. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 2-5: You can connect to up to seven Bluetooth devices at a time if you have multipoint-capable hardware.
Bluetooth Device Power Classes Bluetooth hardware devices are broken up into three power classes. Table 2-2 describes the device classes and their capabilities. Table 2-2: Bluetooth Device Power Classes CLASS
POWER RATING
RANGE
Class 1
100 mW
100 meters
Class 2
2.5 mW
20 meters
Class 3
1 mW
10 meters
So as we stated in Chapter 1, Bluetooth devices are not limited to 10 meters in range.
Bluetooth Java CROSS Seefor "Bluetooth vs. 802.11b" in Chapter 1 for details on the initial discussion of ISBN:1590590783 by BruceBluetooth's Hopkins and Ranjith Antony REFERENCE range. Apress © 2003 (352 pages)
How can you determine a Bluetooth device's power and thereby The authors of this text describe howclass, to develop wirelessknow Java its range? The power class is rarely printed on the unit, so here's a hint if you're trying to distinguish the applications using Bluetooth for a variety of platforms. Thispower class of a device that includes the Javaby library, development you've never seen before.an If API thatoverview device isof powered batteries, or if it fitsofin your hand (like a wireless Bluetooth-based services, of security and phone or a headset), then it is most likely ahighlights Class 2 or 3 device.concerns, If the Bluetooth device is built right into the more. hardware of another unit, and that unit is plugged into AC power, then it is most likely a Class 1 device. Don't worry about Bluetooth device classes too much; just be aware that Bluetooth can communicate at greater distances than 10 meters.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Stack The Bluetooth Protocol by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Your computer isApress a pretty powerful device. It has a processor, memory, bus, hard drive, and other neat © 2003 (352 pages) things. The unfortunate thing is that the computer doesn't have the abilityJava to use peripherals by itself. The authors of this text describe how to develop wireless Common peripherals like CD/DVD drives, graphic displays, mice, keyboards, modems, printers, and applications using Bluetooth for a variety of platforms. This API computer overview of the Java library, development scanners all needincludes drivers.an Your needs a driver to instruct it howofto use a peripheral. By itself, the highlights of with security concerns, and computer has noBluetooth-based idea how to printservices, to a printer or scan a scanner. The computer is pretty powerful, but more. also pretty helpless. The device driver is the controlling agent that helps the computer to communicate with its peripherals. Table of Contents
The Bluetooth stack and Bluetooth hardware have a similar relationship. The Bluetooth stack is a controlling agent (it could be software, firmware, hardware, or a combination of all three) that implements Introduction the Bluetooth protocol and also allows you to control your Bluetooth device programmatically. The Chapter 1 - Introducing Bluetooth Bluetooth stack allows you to do these two things: Bluetooth for Java
Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Started Communicate withGet other Bluetooth devices Chapter 4 - Understanding the Java Bluetooth API
Control your ownwith Bluetooth device Chapter 5 - Bluetooth J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API So, if you're familiar with the HTTP protocol stack and how it works, then you can relate to the Bluetooth
Chapter 7 stack. - JavaAand OBEX protocol Web browser uses an HTTP protocol stack so that it can receive Web content like HTML Chapter - Using a Bluetooth pages, 8images, files, and bestSimulator of all, Java applets. A Web server also uses an HTTP protocol stack to Chapter 9 Web - Bluetooth send out contentSecurity to Web browsers over the network. So, like the HTTP protocol stack, a Bluetooth Chapter 10stack - Wireless Embedded Systems with Micro BlueTarget protocol will allow Bluetooth clients andthe servers to send and receive data over a wireless network. Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
So how12 do- the Bluetooth and the Bluetooth stack work together? What is their relationship? Well, a Chapter Bluetooth and device Jini Bluetooth without a stack can be compared to a computer without an operating system. More Appendix A device - javax.bluetooth specifically, it's like a computer peripheral without a driver. Figure 2-6 illustrates this concept.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 2-6: A) The computer may be attached to its peripherals, but it can't control them without a driver. B) The computer may be attached to a Bluetooth device, but it can't control it without a stack. So, in order to communicate with the Bluetooth protocol and to control a Bluetooth radio, your computer uses a Bluetooth stack. Now, let's break down the Bluetooth stack into its individual components and see how they work. Each component of the stack is called a layer.
Layers of the Protocol Stack For application developers, the Bluetooth protocol can be broken up into two main items: layers and profiles. All the layers of the Bluetooth protocol form the protocol stack. Figure 2-7 shows how the following layers of the Bluetooth protocol "stack up": Host Controller Interface (HCI) Logical Link Control and Adaptation Protocol (L2CAP) Service Discovery Protocol (SDP)
RFCOMM
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
Telephony Control Protocol Specification (TCS-BIN)
ISBN:1590590783
The authors this text describe how to develop wireless Java Wireless Access Protocolof(WAP) applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Object Exchange (OBEX)
Bluetooth-based services, highlights of security concerns, and more. Encapsulation Protocol (BNEP) Bluetooth Network
Human Interface Device Protocol (HID)
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - 2-7: Wireless the Micro BlueTarget Figure TheEmbedded Bluetooth Systems protocol with stack Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Note if you're familiar with the Java Collection Framework, then you've heard of Chapter 12 Now, - Bluetooth and Jini Please erase that idea from your mind completely, or you'll be thoroughly Appendix A java.util.Stack. - javax.bluetooth here. Bluetooth uses some terms like stack and profile, which unfortunately are used Appendix B confused - javax.obex in Java as well. This chapter is all about Bluetooth, so we'll clear up the confusion whenever there is a clash of terminology here.
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Index You may notice that some of these layers are called "protocols" as well. That's because these items are List of Figures of the Bluetooth protocol stack. Others like TCP/IP, OBEX, and WAP were not originated by subprotocols List Tables SIG, but they have been incorporated into the Bluetooth protocol. Those subprotocols are theofBluetooth List of Listings known as adopted protocols. List of Sidebars
Host Controller Interface (HCI) The Host Controller Interface is a layer of software that passes all your data from your computer to your attached Bluetooth device. For instance, if you are trying to communicate wirelessly from your PC (the host) and you have a Bluetooth device (the controller) attached to your USB port, then you'll need a layer that can understand the USB calls and send that information to the upper layers of the stack. Everything (voice and data) passes though the Host Controller Interface.
Logical Link Control and Adaptation Protocol (L2CAP) The Logical Link Control and Adaptation Protocol is the core layer of the stack through which all data must pass. L2CAP boasts some powerful features like packet segmentation and reassembling of data, as well as protocol multiplexing. If you are trying to pass a very large packet of data, L2CAP breaks up the packet and sends smaller ones. Conversely, L2CAP also reassembles segmented packets when accepting data. With protocol multiplexing, L2CAP can accept data from more than one upper protocol at the same time (like SDP and RFCOMM). Only data passes through the L2CAP layer; audio links have direct access to the Host Controller Interface.
Service Discovery Protocol (SDP)
A Bluetooth device uses Service Discovery Protocol in order to discover services. What's a Bluetooth Bluetooth for Java service? A good example would be a Bluetooth printer. A Bluetooth printer will publish itself with a ISBN:1590590783 by"IBruce Antony message such as, am aHopkins printer, and howRanjith can I help you?" If you have a document, and you want to print it, Apress © 2003 (352 pages) then you would use the Service Discovery Protocol to find a printer that offers a printer service in your The authors of this text describe how to develop wireless Java range.
RFCOMM
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
RFCOMM is commonly known as the wireless serial port, or the cable replacement protocol. The name is derived from the fact that your serial ports are called COMM1, COMM2, etc. RFCOMM simulates the Table of Contents functionality of a standard serial port. For instance, a Bluetooth-enabled PDA would use the RFCOMM Bluetooth for Java layer to synchronize its data to a Bluetooth-enabled PC as if they were physically connected by a cable. Introduction Chapter 1
- Introducing Bluetooth
Telephony Control Protocol Specification (TCS, TCS Binary, TCSChapter 2 - Bluetooth 1.1 Chapter BIN) 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API Telephony Protocol Specification (TCS, TCS Binary, TCS-BIN) is used to send control signals to Chapter 5 - Control Bluetooth with J2ME MIDP
devices6that want to a employ the Print audioServer capabilities within Chapter - Creating Bluetooth with JPS API Bluetooth. For example, a Bluetooth cordless phone would useand thisOBEX layer of the protocol to send signals to the base station indicating that the user has Chapter 7 - Java requested -toUsing hanga up the current call, or to use call waiting, or to place a three-way call, etc. Bluetooth Simulator
Chapter 8 Chapter 9
- Bluetooth Security
Wireless Access Protocol (WAP)
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
If you've used an Internet-enabled wireless phone before, then you've used WAP. In Bluetooth, this is an adopted protocol, so the Bluetooth SIG has incorporated the existing WAP protocol into the Bluetooth Appendix A - javax.bluetooth protocol to fit Bluetooth's needs. WAP requires that PPP, IP, and UDP be present in the stack. Chapter 12 - Bluetooth and Jini Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Object Exchange (OBEX)
Appendix D - BlipNet 1.1 API Index
OBEX is a communication protocol initially defined by the Infrared Data Association (IrDA). Unless you've worked with infrared, you've probably haven't heard of OBEX. Just like WAP, OBEX was defined by List of Tables another group, but it was adopted by the Bluetooth SIG. OBEX is pretty useful when you want to transfer List of Listings objects like files between Bluetooth devices. OBEX does not require that TCP and IP be present in the List of Sidebars stack, but the manufacturer is free to implement OBEX over TCP/IP. List of Figures
Note A Bluetooth vendor does not need to implement all the Bluetooth protocol layers into its product in order to be Bluetooth compliant. For instance, a Bluetooth cordless phone may very well only have HCI, SDP, L2CAP, and TCS implemented into its stack. That's perfectly fine because a cordless phone may not need any extra functionality.
Bluetooth Network Encapsulation Protocol (BNEP) The Bluetooth Network Encapsulation Protocol is a layer in the Bluetooth stack that allows other networking protocols to be transmitted over Bluetooth, namely Ethernet. A Bluetooth vendor has many options if it wants to implement TCP/IP networking in its Bluetooth device. BNEP is a popular choice because it encapsulates TCP/IP packets in L2CAP packets before handing off the data to the L2CAP layer in the stack.
Human Interface Device Protocol (HID) The Human Interface Device Protocol is another adopted protocol in the Bluetooth specification. It was originally defined in the USB specification, and it lists the rules and guidelines for transmitting information to and from human interface devices like keyboards, mice, remote controls, and video game controllers. Table 2-3 is a handy guide that gives a brief description of the layers of the Bluetooth stack and their
purpose.
Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Table 2-3: Layers of the Bluetooth Protocol Stack
ISBN:1590590783
Apress © 2003 (352 pages)
SHORT NAME
FULL NAMEof this text describe how DESCRIPTION The authors to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights security Host Controller Interface Theoflayer thatconcerns, interfacesand the host (i.e., the PC) more. and the controller (the Bluetooth module)
HCI L2CAP
Logical Link Control and
Table of Contents Adaptation Protocol Bluetooth for Java
SDP
Introduction Chapter 1
Service Discovery Protocol
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1 RFCOMM RFCOMM
The layer that handles all data transmissions from upper layers The layer that discovers services on Bluetooth devices in the area The layer that allows you to create a virtual serial port and to stream data
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
Protocol Specification - Creating a Bluetooth Print Server with JPS API
TCS-BIN
Chapter WAP 7
Telephony Control
Chapter 8
- Java and OBEX Access Protocol Wireless - Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
OBEX
Object Exchange
The layer that allows you to create control signals for audio applications The adopted protocol that allows you to view content in Wireless Markup Language (WML) The adopted protocol that allows you to send and receive objects
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter BNEP12 - Bluetooth Bluetooth and Jini Network Appendix A - javax.bluetooth Encapsulation Protocol Appendix B - javax.obex
The layer that encapsulates other protocol data packets into L2CAP packets
HID C - Java Bluetooth Human Interface The layer that traffics the controls signals and Appendix Development on the PalmOS Platform Device Protocol Appendix D - BlipNet 1.1 API
data for input devices like keyboards and mice
Index List of Figures
Note For an exhaustive list of all the new and upcoming Bluetooth protocols, go to the Bluetooth Member site at http://www.bluetooth.org.
List of Tables
List of Listings
List of Sidebars
Profiles
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
So, let's say that Apress you own a Bluetooth-enabled PDA and a Bluetooth-enabled wireless phone. Both of the © 2003 (352 pages) devices have Bluetooth stacks. How can you tell if your devices wireless will interact The authors of this text describe how to develop Javaproperly and allow you to synchronize the phone lists between each other? How will you know if you applications using Bluetooth for a variety of platforms. This can send a phone number from includes an most API overview of thehow Javacan library, development of the PDA to the phone? And importantly, you determine if these devices will allow you to Bluetooth-based services, highlights ofwireless security modem? concerns, and browse the Internet on the PDA using the phone as a more.
That's why the Bluetooth SIG defined profiles. A Bluetooth profile is a designed set of functionality for Bluetooth devices. For instance, using the examples just listed, the phone and the PDA must both support Table of Contents the Synchronization Profile in order to synchronize data between themselves. In order to send object data Bluetooth for Java like a .vcf file from the PDA to the phone, both devices need to have the Object Push Profile implemented. Introduction And finally, the PDA and the wireless phone must both support the Dial-Up Networking Profile in order for Chapter 1 - Introducing Bluetooth the PDA to wirelessly browse the Internet from the phone. If you want your Bluetooth-enabled devices to Chapter 2 - Bluetooth 1.1 interact, having a Bluetooth stack is not good enough. Those devices also need to implement the same Chapter profile. 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API Now, here's a list of many of theMIDP Bluetooth profiles and a description of what they do. For most of them, Chapter 5 - Bluetooth with J2ME
you can6 basically guess what they do;Server the names areAPI not cryptic. Chapter - Creating a Bluetooth Print with JPS Chapter 7
- Java and OBEX
Chapter 9
- Bluetooth Security
Note For an exhaustive list of all the Bluetooth profiles, go to the Bluetooth Member site at Chapter 8 - Using a Bluetooth Simulator http://www.bluetooth.org. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Generic Access Profile
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
The Generic Access Profile is the most common Bluetooth profile. All other profiles use this profile for basic connection establishment. This is the java.lang.Object in the Bluetooth Profile realm; every Appendix B - javax.obex profile needs to use the functionality of the GAP. Appendix A - javax.bluetooth
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Service Discovery Application Profile
Index
List of Figures
The Service Discovery Application Profile is a profile that directly interacts with the Service Discovery
List of Tables Protocol (SDP) layer in the Bluetooth protocol stack. This profile is used to find services on BluetoothList of Listings enabled devices in the area. List of Sidebars
Serial Port Profile The Serial Port Profile is a profile that interacts directly with the RFCOMM layer in the Bluetooth protocol stack. This profile is used to create a virtual serial port on your Bluetooth-enabled device. For instance, some Bluetooth kits come with a driver that will allow your operating system to communicate over the virtual serial port as if it were an actual serial port. As far as the operating system is concerned, it's just another serial port, as shown in Figure 2-8.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Figure 2-8: As you can see in Windows 2000, the operating system thinks that COMM10 and - Understanding the Java Bluetooth API COMM11 are actual serial ports!
Chapter 4 Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6 Of - Creating Server to with JPS API Note course, aif Bluetooth you want Print to connect another device over the air using your virtual serial port, then Chapter 7 you'll - Javaneed and OBEX another Bluetooth-enabled device in the area that also supports the Serial Port Chapter 8 Profile. - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Dial-Up Networking Profile
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter If you've 12used - Bluetooth a modem andbefore, Jini then you should be familiar with the concept of dial-up networking. The
Dial-Up ANetworking Profile allows you to mimic the functionality of a modem. Just like the Serial Port Appendix - javax.bluetooth Profile, some Bluetooth kits come with a driver that will allow your operating system to communicate over Appendix B - javax.obex the virtual as if it were an actualon modem (see Figure 2-8). As far as the operating system is Appendix C -modem Java Bluetooth Development the PalmOS Platform concerned, it's just 1.1 another Appendix D - BlipNet API modem. Index
Note For such an example to work, you'll need another Bluetooth-enabled device in the area that also supports the Dial-Up Networking Profile, like a network access point or a wireless phone.
List of Figures List of Tables
List of Listings
FAX Profile
List of Sidebars
Using the FAX Profile, a Bluetooth-enabled computer can send a fax wirelessly to a Bluetooth-enabled fax machine or to a Bluetooth-enabled wireless phone.
Headset Profile The Headset Profile is primarily designed for connecting Bluetooth-enabled headsets to Bluetoothenabled wireless phones.
LAN Access Profile A Bluetooth-enabled device such as a PC or laptop will use the LAN Access Profile to connect to a network access point connected to a LAN.
Personal Area Networking Profile The Personal Area Networking Profile is pretty much similar to the LAN Access Profile, except it also has support for devices to form ad-hoc networks among themselves. The PAN Profile also has a requirement that BNEP be present in the underlying protocol stack.
Cordless Telephony Profile Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Cordless Telephony Profile allows you to use a Bluetooth-enabled handset to connect to a BluetoothApress © 2003 (352 pages) enabled "landline" phone to place calls. For instance, through this profile, you continue to receive calls to The authors of this text describe how to develop wireless Java your home phone, but you have the convenience of answering that call on your Bluetooth wireless phone, applications using Bluetooth for a variety of platforms. This without using the includes minutesan of API the overview calling plan of your phone. of the Java wireless library, development of Bluetooth-based services, highlights of security concerns, and more.
Intercom Profile
If twoofBluetooth-enabled devices are within range, and they support the Intercom Profile, then they can Table Contents function for justJava like regular intercoms. Bluetooth Introduction
Generic - Introducing Object Bluetooth Exchange Profile
Chapter 1 Chapter 2
- Bluetooth 1.1 The Generic Object Exchange Profile is the generic profile that all profiles use if they want to employ the Chapter 3 - Before You Get Started
functionality of the OBEX protocol in the Bluetooth stack. - Understanding the Java Bluetooth API
Chapter 4 Chapter 5
- Bluetooth with J2ME MIDP
Object -Push Creating Profile a Bluetooth Print Server with JPS API
Chapter 6 Chapter 7
- Java and OBEX
Chapter 9
- Bluetooth Security
The Object Push Profile provides the functionality for a device to push and pull an object. Using this Chapter 8 - Using a Bluetooth Simulator profile, though, you are limited to a certain class of objects like vCards. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
File Transfer Profile
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
The File Transfer Profile is a more robust profile for transferring objects. You can use the File Transfer Profile to transfer files and folders from one Bluetooth-enabled device to another.
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Synchronization Profile
Appendix D - BlipNet 1.1 API Index
You use the Synchronization Profile to synchronize data between two Bluetooth-enabled devices. The most common applications for this profile would be to synchronize data between a PDA and a PC.
List of Figures List of Tables
List of Listings
Basic Printing Profile
List of Sidebars
The Basic Printing Profile allows a Bluetooth-enabled device to send plain text to a Bluetooth-enabled printer for printing.
Hard Copy Cable Replacement Profile The Hard Copy Cable Replacement Profile is what we call the "Advanced Printing Profile." With this profile, you can print any printable document to a Bluetooth-enabled printer. If you don't already have the driver for that printer, that's okay; the printer will give it to you.
Basic Imaging Profile The Basic Imaging Profile is intended to be used by imaging devices like cameras for remote control, image transfers, and downloading.
Hands Free Profile The Bluetooth-enabled hands-free kits in automobiles use the Hands Free Profile to allow the driver to place and receive calls from a Bluetooth-enabled phone.
Human Interface BluetoothDevice for Java Profile by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
As you might have guessed, the Human Interface Device Profile has a requirement that the HID Protocol Apress © 2003 (352 pages) must exist in the underlying Bluetooth stack. This profile defines the case scenarios for using BluetoothThe authors of this text describe how to develop wireless Java enabled human interface devices like keyboards and mice. One of the goals of this profile is that a applications using Bluetooth for a variety of platforms. This Bluetooth-enabled device that run for of three months on three AAA includes an APIconforms overview to ofthe the HID JavaProfile library,should development alkaline batteries.Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Profile Interdependencies by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The profiles are heavily dependent upon each other, and you should already know that every profile Apress © 2003 (352 pages) depends upon the Generic Access Profile. The Bluetooth profiles were designed to be building blocks, The authors of this text describe how to develop wireless Java where a higher level profile is dependent upon the functionality of the lower profiles to exist. Take a look at applications using Bluetooth for a variety of platforms. This includes an Bluetooth API overview of theare Java library, development Figure 2-9 and see how the profiles dependent upon each of other for functionality. Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
Figure Bluetooth Appendix D - 2-9: BlipNet 1.1 API profile interdependencies Index List Figures in order for a PDA vendor to say that it supports the Synchronization Profile for its new Forofexample, List of Tables Bluetooth-enabled BJL 200 PDA, it also must support the Generic Object Exchange Profile, Serial Port List of Listings Profile, and Generic Access Profile because the Synchronization Profile cannot function without them. If a List phone of Sidebars manufacturer claims that its new Bluetooth-enabled TLJ 50 headset supports the Headset Profile,
then it must also include the Serial Port Profile and the Generic Access Profile. Bluetooth Profiles vs. J2ME Profiles Do not get Bluetooth profiles confused with J2ME profiles. J2ME profiles are a set of Java classes that extend the functionality of a J2ME Configuration. For instance, the PDA and MID Profiles are both a set of Java classes that extend the functionality of the Connected Limited Device Configuration. On the otherhand, a Bluetooth profile can be implemented in any language and on any platform, because it refers to a defined set of functionality for a Bluetooth-enabled device. So, the Object Push Profile can be implemented on a Palm OS PDA in C++, and it can also be implemented on a Bluetooth-enabled printer in Assembler; it's just a defined set of functionality.
Bluetooth for Java Personal Area Networks: Piconets and Scatternets by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
When two or more Bluetooth-enabled Apress © 2003 (352 pages)devices come within range and establish a connection, a personal area network is formed. A personal areadescribe networkhow cantoeither be a piconetJava or a scatternet. Figure 2-10 The authors of this text develop wireless shows Bluetooth applications devices in ausing piconet. Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7 - 2-10: Java and Figure In aOBEX piconet, the slaves can only communicate to the master. Chapter 8 - Using a Bluetooth Simulator
A Bluetooth piconet has a single master and up to seven slaves. No matter what kind of Bluetooth devices Chapter 9 - Bluetooth Security are involved (they can be phones, access points, PDAs, laptops, headsets, etc.), the master of the piconet Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget is the one initiatesBluetooth the connection. The device that accepts the connection automatically becomes the Chapter 11 -that Enterprise Applications with the Ericsson BlipNet slave. Master/slave Chapter 12 - Bluetoothroles and are Jini not predefined, so if a piconet exists between a laptop and a PDA, either device could be the master or the slave.
Appendix A - javax.bluetooth
Appendix - javax.obex NoteB In certain conditions, a role switch between the master and slave is allowed. These conditions Appendix C are - Java Bluetooth Development the PalmOS Platform explained in the Bluetoothon specification. Appendix D - BlipNet 1.1 API
So what happens to the piconet if a new Bluetooth device wants to join the piconet after the master has Index acquired seven slaves? Does it shut down? Will older members of the piconet get kicked off? No, actually, List of Figures theofmaster List Tables of the piconet will not invite new members to join until at least one the old members leaves (or goes into an inactive state). Now, on the other hand, if one of the slaves in the Bluetooth piconet also List of Listings happens to be multipoint-capable, then the newcomer can create a piconet with that slave, thereby creating a scatternet (as shown in Figure 2.11). A scatternet will also be created if the master of the existing piconet becomes a slave to the newcomer.
List of Sidebars
Figure 2.11: A scatternet is formed when a slave in one piconet is the master in another piconet.
Bluetooth for Java The Bluetooth Qualification Process by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Okay, so what does it take to turn a product that uses Bluetooth technology into an official BluetoothApress © 2003 (352 pages) certified product?The Well, you first need to describe join the Bluetooth SIG. wireless How do Java you join? Just go to authors of this text how to develop http://www.bluetooth.org and fill out the membership form. After applications using Bluetooth for a variety of platforms. This becoming a member, you need includes API overview of the Java library, development of to submit your product foran testing by a Bluetooth Qualification Body. The Qualification Body will test your services, highlights security concerns, andwith other devices that use device against theBluetooth-based current Bluetooth specification asofwell as interoperability more. your Bluetooth profiles. Note Java developers really don't need to join the Bluetooth SIG or undergo the qualification process if prequalified Bluetooth materials (i.e., stacks and radios) are used in their products. However, if Bluetooth for Java you want to use that really cool-looking Bluetooth logo on your products, then you need to join Introduction the SIG.
Table of Contents
Chapter 1
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1 Once testing has been completed, and if your device passes the tests, it will be listed on the Bluetooth Chapter Qualification 3 - Before Web site You (http://qualweb.bluetoothsig.org). Get Started Most companies will postpone Chapter announcing 4 - Understanding their new Bluetooth-enabled the Java Bluetooth product API until it has been certified, so check that site often to see
"who's 5doing what" in with Bluetooth. Chapter - Bluetooth J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
In this chapter you learned all (352 about Bluetooth devices, and you found out what they look like. By now, you Apress © 2003 pages) should also knowThe about the role of the protocol stack wireless and howJava it interacts with your Bluetooth authors of this textBluetooth describe how to develop hardware. You should take away from this chapter a finite knowledge of Bluetooth profiles, and you should applications using Bluetooth for a variety of platforms. This anserve. API overview theshould Java library, development of know the purposeincludes that they Finally,ofyou be aware of the difference between piconets and Bluetooth-based highlights concerns, scatternets, and you should knowservices, what it takes to getofasecurity Bluetooth device and certified. more.
Great! You now should have a good understanding of how the Bluetooth protocol works. In the next chapter, we'll see what happens when we throw in Java. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 3: Before You Get Started ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress © 2003 (352and pages) Okay, now that you know the ins outs of Bluetooth, you're probably eager to find out how to integrate The authors of this textisdescribe how to develop wireless Java Bluetooth with Java. Well, this chapter all about doing just that. But wait! Before you learn about how to applications using Bluetooth for a variety of platforms. This use Bluetooth and Java, you need to know when it is not a good idea to use the two technologies together. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
When NOT to Use Bluetooth and Java
You should not use Bluetooth with Java for the following purposes:
Table of Contents
Bluetooth for strength Java Signal indicator Introduction
Voice Chapter 1 -applications Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Distance measuring
Chapter 4 few - Understanding the Java Bluetooth API scenarios. The next sections explain why to avoid those Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
Creating a Bluetooth Print Server with JPS API Signal -Strength Indicator
Chapter 7
- Java and OBEX
Chapter 8 that - Using Bluetooth Simulatorunits, and you want to know what the signal strength is between Let's say you ahave two Bluetooth Chapter - Bluetooth Security them. A9 good example is when you want to use the services of a network access point. A signal strength Chapter indicator 10would - Wireless let you Embedded know if you Systems werewith within therange. Micro Well, BlueTarget Java is not the ideal language for that sort of
application kind of Applications information with is notthe exposed the level where a JVM would have access to Chapter 11 - because Enterprisethat Bluetooth EricssontoBlipNet it. The JVM will let youand know Chapter 12 - Bluetooth Jini if you are within range or not within range; there is no middle ground. In this scenario, better off using a native language for your device such as C or C++. Appendix A you're - javax.bluetooth Appendix B - javax.obex
Voice Applications
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Now, you've already read Chapter 2, and you realize that Bluetooth is a really great technology because Index youofhave the ability to transmit voice and data information wirelessly to other Bluetooth devices. Suddenly, List Figures youofget ideas bubbling in your head about how great it would be to create a speech-to-text application on List Tables
your Bluetooth-enabled phone. Unfortunately, Java (especially J2ME) is not well suited to this arena just yet. Performance is a key factor in voice-based applications, and once again, in this case, you're better off List of Sidebars using a native language such as C. However, this application may be feasible to do in Java if the Java Real-Time Technology can be incorporated. List of Listings
Distance Measuring The best wireless technology for accurately measuring distance is light waves and not radio signals. Light waves are direct, and the calculations can be pretty simple because the speed of light (in various mediums) is pretty well documented. Using radio signals to measure distance can be quite tricky, and one of the best ways to do that is to use triangulation, like GPS transceivers do. Whether you are using Java or C, Bluetooth might be a viable technology for triangulation, but definitely not for calculating or measuring accurate distances. Note The key word here is accurate. You can definitely use Bluetooth for proximity measurement (i.e., where in the building is Bruce Hopkins?). In fact, the Ericsson BlipNet does exactly that! See Chapter 11 for more information on the Ericsson BlipNet. So, to put it succinctly, you can only do what is possible using the constraints of the Bluetooth technology and what the JVM exposes to you. If the JVM only gives you access to the RFCOMM layer for communication, then you're stuck with it. If the OBEX layer is not exposed to the JVM, then don't expect to be able to send objects. To increase application portability, your Java Bluetooth vendor should implement the Java Bluetooth specification created through the JCP.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth Java Understanding theforJCP by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The JCP is the Java Community and it is the formal procedure to get an idea from a simple Apress © 2003 (352Process, pages) concept incorporated into the Java standard. Thishow process allows developers The authors of this text describe to develop wireless Java and industry experts to shape the future applications of the Java standard. Popular APIs like Java USB, Java using Bluetooth for a variety of platforms. ThisReal-Time, Java Printing, Java includes API overview ofJDBC the Java development New I/O, J2ME MIDP 1.0,an J2ME MIDP 2.0, 3.0,library, EJB 2.0, and even of JDK 1.4 all went through the services, highlights of security concerns, andJava language, or if you want Java CommunityBluetooth-based Process. If you want to add some new functionality to the more. to suggest a new API, or if you think that some new classes should have a package name of java.* or javax.*, then you need to go through the JCP. Table of Contents
The Role of the JSR-82
Bluetooth for Java Introduction
A JSR 1is a-Java Specification Request in the Java Community Process. The JSR-82 is the formal JCP Chapter Introducing Bluetooth name for Java APIs Chapter 2 the - Bluetooth 1.1for Bluetooth. When a proposed JSR is approved, an Expert Group is formed by the specification lead. specification lead for the JSR-82 was Motorola, and together with the JSR-82 Chapter 3 - Before You The Get Started Expert 4Group, they createdthe theJava official Java Bluetooth APIs. The following companies participated in the Chapter - Understanding Bluetooth API JSR-825 Expert Group:with J2ME MIDP Chapter - Bluetooth Chapter 6
- Creating a Bluetooth Print Server with JPS API Extended Systems
Chapter 7
- Java and OBEX
Chapter IBM 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Mitsubishi
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Newbury Networks Chapter 12 - Bluetooth and Jini
Nokia Appendix A - javax.bluetooth Appendix B - javax.obex
Parthus Technologies
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Research in Motion (RIM) Index List ofRococo Figures Software List of Tables
Sharp Electronics
List of Listings
List ofSony Sidebars Ericsson
Smart Fusion Smart Network Devices Sun Microsystems Symbian Telecordia Vaultus Zucotto The JSR-82 Expert Group also had three individual experts: Peter Dawson, Steven Knudsen, and Brad Threatt.
What Is the RI and TCK? According to the Java Community process, the specification lead company is responsible for creating a Reference Implementation (RI) and also a Technology Compatibility Kit (TCK). The Reference Implementation is basically a proof of concept to prove that the specification can be implemented. Other
companies are free to implement the JSR-82, and in order to certify that their vendor kit is compliant to the for Java JSR-82 standard,Bluetooth that vendor's product must pass the TCK. by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) The JSR-82 specification actually has two Reference Implementations and Technology Compatibility Kits. Why did they do this? Recall of in this Chapter 2 that the Bluetooth SIGwireless has adopted The authors text describe how to develop Java some preexisting protocols applications using Bluetooth a variety platforms. in the Bluetooth specification, namely OBEX.for The OBEX of protocol wasThis used with infrared technology for includes API overview of was the Java development of object transmissions longan before Bluetooth evenlibrary, invented. The designers of the Java Bluetooth Bluetooth-based services, highlights of security concerns, and specification decided not to tie OBEX to Bluetooth when creating the Java Bluetooth standard. Therefore, more. the JSR-82 actually consists of two independent packages:
javax.bluetooth (the 13 classes and interfaces that are needed to perform wireless Table of Contents communication with the Bluetooth protocol) Bluetooth for Java Introduction
javax.obex (the 8 classes that are needed to send objects between devices, independent of the - Introducing Bluetooth transport mechanism between them)
Chapter 1 Chapter 2
- Bluetooth 1.1
Chapter So, to answer 3 - Before yourYou nextGet question, Started yes, you can use OBEX without Bluetooth. Bluetooth is simply one of
many transports with whichthe OBEX operate. Chapter 4 - Understanding Java can Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
The classes and interfaces that comprise the Java Bluetooth specification are briefly described in Tables - Creating a Bluetooth Print Server with JPS API 3-1 and 3-2. These classes and their methods are covered as needed in the following chapters, and their Chapter 7 - Java and OBEX APIs are listed in detail in Appendix A and Appendix B. Chapter 6 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Table 3-1: Classes in the javax.bluetooth Package
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
CLASS DESCRIPTION Chapter 11 NAME - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
DiscoveryListener
Appendix A - javax.bluetooth Appendix B - javax.obex
TheDiscoveryListener interface allows an application to receive device discovery and service discovery events.
Appendix C - Java Bluetooth Development on the PalmOS Platform
L2CAPConnection Appendix D - BlipNet 1.1 API Index ListL2CAPConnectionNotifier of Figures List of Tables List of Listings
TheL2CAPConnection interface represents a connection-oriented L2CAP channel. TheL2CAPConnectionNotifier interface provides an L2CAP connection notifier.
ServiceRecord
TheServiceRecord interface describes characteristics of a Bluetooth service.
DataElement
TheDataElement class defines the various data types that a Bluetooth service attribute value may have.
DeviceClass
TheDeviceClass class represents the class of device (CoD) record as defined by the Bluetooth specification.
DiscoveryAgent
TheDiscoveryAgent class provides methods to perform device and service discovery.
LocalDevice
TheLocalDevice class represents the local Bluetooth device.
RemoteDevice
TheRemoteDevice class represents a remote Bluetooth device.
UUID
TheUUID class defines universally unique identifiers.
BluetoothConnectionException
This BluetoothConnectionException is thrown when a Bluetooth connection (L2CAP, RFCOMM, or OBEX) cannot be established successfully.
List of Sidebars
TheBluetoothStateException is thrown when a request the Bluetooth system that the by Bruce Hopkins and Ranjith Antonyis made toISBN:1590590783 system cannot support in its present state. Apress © 2003 (352 pages)
BluetoothStateException Bluetooth for Java
The authors of this text describe how to develop wireless Java ServiceRegistrationException TheServiceRegistrationException is thrown applications using Bluetooth for a variety of platforms. This when there is a failure to add a service record to the includes an API overview of the Java library, development of local Service Discovery Database Bluetooth-based services, highlights of security concerns, and (SDDB) or to modify an existing service record in the SDDB. more.
Table of Contents
Table 3-2: Classes in the javax.obex Package
Bluetooth for Java
CLASS NAME Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Authenticator
Chapter 3
DESCRIPTION This interface provides a way to respond to authentication challenge and authentication response headers.
- Before You Get Started ClientSession TheClientSession interface provides methods for OBEX Chapter 4 - Understanding the Java Bluetooth API Chapter 5
requests. - Bluetooth with J2ME MIDP
Chapter 6 - Creating a Bluetooth PrintThe Server with JPS API HeaderSet HeaderSet interface defines the methods that set and get Chapter 7 - Java and OBEX the values of OBEX headers. Chapter 8
- Using a Bluetooth Simulator
TheOperation interface provides ways to manipulate a single OBEX PUT or GET operation. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet SessionNotifier TheSessionNotifier interface defines a connection notifier Chapter 12 - Bluetooth and Jini for server-side OBEX connections. Operation - Bluetooth Security
Chapter 9
Appendix A - javax.bluetooth
PasswordAuthentication
Appendix B - javax.obex
This class holds user name and password combinations.
ResponseCodes TheResponseCodes class contains the list of valid response Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
codes a server may send to a client.
Index
TheServerRequestHandler class defines an event listener that will respond to OBEX requests made to the server.
ServerRequestHandler
List of Figures List of Tables List of Listings List of Sidebars
Bluetooth Java Bluetooth API The Benefits of theforJava by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
There are two key advantages to using Apress © 2003 (352 pages) the official Java Bluetooth API versus a C-based (or native) API: The authors of this text describe how to develop wireless Java
API is independent of theusing stackBluetooth and radiofor a variety of platforms. This applications
includes an API overview of the Java library, development of
StandardizedBluetooth-based Bluetooth API services, highlights of security concerns, and more.
API Is Independent of Stack and Radio Table of Contents
So what makes the official Java Bluetooth API better than a C/C++ Bluetooth API? One of the principle reasons is that the JSR-82 API is independent of the stack and the Bluetooth hardware. That gives you the Introduction ability to write applications without any knowledge of the underlying Bluetooth hardware or stack. And Chapter 1 - Introducing Bluetooth that's essentially what Java gives you today. If you write standard Java code (without any native methods), Chapter 2 - Bluetooth 1.1 you can run your code on basically any hardware platform and on any OS with little or no modification. Chapter 3 it's - Before You Get Started Whether an appli-cation, applet, midlet, servlet, or EJB, you can code your application on one platform Chapter 4 Understanding the Java Bluetooth API and deploy to another platform. Bluetooth for Java
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API The Only Standardized Bluetooth API - Java and OBEX
Chapter 7
Chapter 8 -a Using a Bluetooth Simulator If you have C/Cbased Bluetooth SDK, then you are basically at the mercy of the vendor. There is no Chapter 9 for - Bluetooth Security standard a C/Cbased Bluetooth SDK, so each vendor is free to name functions and methods to Chapter 10 they - Wireless Embedded withfive the profiles Micro BlueTarget whatever choose. Vendor Systems A may have in its SDK, and Vendor B may only have three. If Chapter 11 to - Enterprise Bluetoothhardware Applications with the Ericsson BlipNet you want change Bluetooth or stack libraries, then you'll need to rewrite your Bluetooth Chapter application 12 - and/or Bluetooth change and Jini its functionality. Because the JSR-82 is the official Java API for Bluetooth, all
vendors Awho implement the standard must include a core set of layers and profiles in their Bluetooth SDK. Appendix - javax.bluetooth Appendix B - javax.obex
A JSR-82-compliant Bluetooth stack must include the following layers:
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix - BlipNet 1.1 API HostDController Interface (HCI) Index List ofLogical FiguresLink Control and Adaptation Protocol (L2CAP) List of Tables
Service Discovery Protocol (SDP)
List of Listings
List ofRFCOMM Sidebars
These profiles are also required: Generic Access Profile Service Discovery Application Profile Serial Port Profile Generic Object Exchange Profile CROSSREFERENCE
See "The Bluetooth Protocol Stack" and "Profiles" in Chapter 2 for details on the Bluetooth protocol stack and profiles just in case you forgot.
The first thing that may come to your mind is, "Hey, wait a minute, doesn't the Bluetooth specification contain more profiles than that? Why did they implement only a few profiles in Java?" Well, here are two major reasons: First of all, the JSR-82 team wanted to get the Java Bluetooth specification in the hands of developers as quickly as possible. Recall in Chapter 2 that Bluetooth profiles are designed to be functional enough where higher profiles extend the functionality of the lower, or base, profiles. Refer to Figure 2-9, which shows a diagram of the relationship of the profiles of the Bluetooth specification.
Secondly, by implementing the base profiles (Generic Access Profile, Service Discovery Application Bluetooth for Java Profile, Serial Port Profile, and Generic Object Exchange Profile), the SDK vendor or the application ISBN:1590590783 Bruce Hopkins Ranjith Antony developer is free by to implement theand higher profiles of the Bluetooth specification. Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth Java What You Need tofor Get Started by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
We know that thisApress question has been on your mind for a while. Well, here's a list of what you'll need: © 2003 (352 pages) The authors of this text describe how to develop wireless Java
Bluetooth devices (at least two) applications using Bluetooth for a variety of platforms. This
includes an API overview of the Java library, development of
Bluetooth host (at least one) services, highlights of security concerns, and Bluetooth-based more.
Bluetooth stack Java Bluetooth API Table of Contents Bluetooth for Java
Now let's cover all these components in detail and describe how they all work together.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 3
- Before You Get Started
Bluetooth Devices Chapter 2 - Bluetooth 1.1
Bluetooth devices were covered in Chapter 2, but just in case you forgot, take another look at Figures 2-1, - Understanding the Java Bluetooth API 2-2, and 2-3. Remember, Bluetooth devices are simply radios, so getting a single device is just like getting Chapter 5 - Bluetooth with J2ME MIDP a single walkie talkie; it's pretty useless. If your Bluetooth device is point-to-point capable, then that means Chapter 6 - Creating a Bluetooth Print Server with JPS API it can only talk to a single Bluetooth device at a time. If it is multipoint capable, then it can talk to up to Chapter 7 - Java OBEX seven devices atand a time. The Bluetooth device is also known as the controller. Chapter 4
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Bluetooth Host
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet The Bluetooth host is the computer that is physically connected to the Bluetooth device. For the most part, Chapter 12 Bluetooth and Jini this is your desktop PC, laptop, PDA, or smart phone. Usually, the connection is USB, RS-232, or UART. Appendix A - javax.bluetooth
Now, you definitely going to need two Bluetooth devices, but you can get away with having only one Appendix B are - javax.obex Bluetooth does Development this work? Well, if you have Platform a PC that has two serial ports or two USB ports (or Appendix C host. - JavaHow Bluetooth on the PalmOS both), then can1.1 connect Appendix D - you BlipNet API both of your Bluetooth devices to your PC's ports. In order for this to work, you need to start two instances of your JVM; each JVM will have its own Bluetooth device. Index List of Figures
The Bluetooth host must meet the minimum requirements for the CLDC, so you need at least 512k total
List of Tables memory for the JVM. List of Listings List of Sidebars
Bluetooth Stack A Bluetooth stack is required in order for a Bluetooth host (the PC) to properly communicate to the Bluetooth device (the controller). If you go back to Figure 2-6, which shows a diagram of the Bluetooth stack, the bottom layer of the stack is the Host Controller Interface! See, it does make sense. The Host Controller Interface is literally the software required to interface the Bluetooth host and the Bluetooth device (the controller). Since this book is all about Java and Bluetooth, you might think that the Bluetooth stack needs to be written completely in the Java language. Well, not exactly. Some Bluetooth vendors have implemented a completely all-Java stack, while others have implemented a Java interface (i.e., JNI or other means) to a native stack. Either way, you need to access the stack through Java code, whether or not the stack is in Java.
Java Bluetooth API Finally, you're going to need a set of libraries to interface with your stack. For the most part, a company will sell you a Java Bluetooth API and Bluetooth stack together in a kit. Just be sure to ask them what Bluetooth devices their kit supports. Another question to ask your Java Bluetooth kit vendor is if their product is JSR-82 compliant. Currently, JSR-82 can only be implemented on the J2ME platform. JSR-82 cannot be implemented on the J2SE
platform because the J2SE does not support the Generic Connection Framework. Hopefully, the Generic Bluetooth for Java Connection Framework will be implemented by JDK 1.5. by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) the GCF in the JDK is JSR-197. Note The official JSR to implement The authors of this text describe how to develop wireless Java
Does this mean that it is impossible to do Java Bluetooth development applications using Bluetooth forand a variety of platforms. This on the J2SE platform? No, it includes an API overview of the Javayou library, development of not be compliant with JSR-82 simply means that whatever Java Bluetooth kit that obtain for J2SE will services,ishighlights of security concerns, and ramification of this problem is until the Generic Bluetooth-based Connection Framework implemented in J2SE. The major more. that your J2ME and J2SE code may be drastically different from each other, even if you are doing the same thing. Table of Contents
Java Bluetooth Vendor SDKs
Bluetooth for Java Introduction
So, who's Java Bluetooth Bluetooth SDKs, and which are JSR-82 compliant? Fortunately, there is a plethora Chapter 1 -offering Introducing of Java2Bluetooth SDKs Chapter - Bluetooth 1.1to fit the needs that your application requires. Vendor support is available for Java Bluetooth on Started a wide range of operating systems and JVM platforms. Table 3-3 displays Chapter 3 development - Before You Get various4attributes of many the Java Bluetooth SDKs. Chapter - Understanding Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Table 3-3:- Java Bluetooth SDK Vendors [*] Creating a Bluetooth Print Server with JPS API Chapter 7 - Java and OBEX COMPANY JSR-82 JSR-82 Chapter Bluetooth Simulator NAME8 - Using aJAVAX.BLUETOOTH JAVAX.OBEX Chapter 9 - Bluetooth SUPPORT Security SUPPORT Chapter 6
SUPPORTED JAVA PLATFORMS
SUPPORTED OPERATING SYSTEMS
Yes
J2ME, J2SE
Win-32, Linux, Pocket PC
No
Waba JVM
uClinux
No
J2SE
Win-32, Linux
No
J2ME
Win-32, Palm OS, Pocket PC, many others
No
No
J2SE
Win-32, Linux, others
Possio
Yes
Yes
J2ME
Win-32, Linux
Rococo
Yes
Yes
J2ME, J2SE
Win-32, Linux, Palm OS, Pocket PC
Smart Network Devices
Yes
No
J2ME
HyNetOS
SuperWaba
No
No
Waba JVM
Palm OS
Zucotto
No
No
J2ME, J2SE
Win-32
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Atinav
Yes
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix BlueGiga A - javax.bluetooth No Appendix B - javax.obex
Ericsson
No
Appendix C - Java Bluetooth Development on the PalmOS Platform
Esmertec Appendix D - BlipNetYes 1.1 API Index List of Figures ListHarald of Tables List of Listings List of Sidebars
[*]The
information in this table is subject to change, so check the companion Web site http://www.javabluetooth.com for up-to-date information. Palm OS is a registered trademark of Palm, Inc.
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter has Apress only skimmed the surface of how to integrate Java Bluetooth. You learned about the © 2003 (352 pages) advantages of using Java versus C for development. You also learned about JSR-82 as well The authors of this textapplication describe how to develop wireless Java as what it takes toapplications get things using up and running. Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlightsJava of security concerns, as and In the next chapter, we'll focus more on integrating and Bluetooth, well as introduce some more. example code. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 4: Understanding the Java Bluetooth API ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress 2003 (352 pages) This chapter will be your©formal introduction to the Java Bluetooth API. We'll cover a vast majority of the classes The authors of this how to to develop wireless Java in the javax.bluetooth packagetext anddescribe examine how use them in your applications. Rather than looking at applications using Bluetooth for a variety of platforms. This every class and interface individually, we'll take a different approach by first looking at the basic components of a includes an API overview of the Java library, development of typical Bluetooth Bluetooth-based application (Javaservices, or otherwise). After we haveconcerns, identifiedand these components, we'll explain how to highlights of security use the Java Bluetooth more. API in order to create wireless applications.
The Basic Components of a Bluetooth Application
Table of Contents Bluetooth for Java
The basic components of any Bluetooth application consist of the following items:
Introduction
Chapter 1 -initialization Introducing Bluetooth Stack Chapter 2
- Bluetooth 1.1 Device management Chapter 3 - Before You Get Started Chapter 4
the Java Bluetooth API Device- Understanding discovery
Chapter 5
- Bluetooth with J2ME MIDP
Chapter Service 6 - Creating discovery a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Service registration Chapter 8 - Using a Bluetooth Simulator Chapter 9 - Bluetooth Security Communication Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
The Java specification adds a special the mix called the Bluetooth Control Center Chapter 11 Bluetooth - Enterprise Bluetooth Applications with component the Ericsson to BlipNet (BCC).12 We'll talk about the BCC in the next section because in some vendor implementations, stack initialization Chapter - Bluetooth and Jini is handled the BCC. Appendix A -through javax.bluetooth Appendix B - javax.obex
The Bluetooth Control Center
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
The Bluetooth Control Center is an awkward beast due to its ambiguity. It is required to exist in a JSR-82 Index compliant implementation, but there are no guidelines in the official Java Bluetooth specification about how it List of Figures should be implemented. One vendor could implement the BCC as a set of Java classes, and another vendor List of Tables could implement it as a native application on the Bluetooth host. But no matter how it is implemented, it is an integral part of your security architecture because the BCC defines device-wide security settings for your List of Sidebars Bluetooth device. List of Listings
Now, for the most part, if you are working with a JSR-82-compliant Java Bluetooth development kit within your development environment, then the BCC will probably be implemented as one or more Java classes. But because the BCC is vendor specific, the classes that form the BCC will not have a javax.bluetooth package name; they will be in the form of something like com.vendor.bluetooth.bcc. Now, if you're working with a device that comes with the Java Bluetooth standard (like a mobile phone or a PDA), then there is a high probability that the BCC would be implemented as a native application on that device. According to the Java Bluetooth specification, these are the requirements of the BCC: Include base security settings of the device. Provide a list of Bluetooth devices that are already known. The devices do not need to be within range. Provide a list of Bluetooth devices that are already trusted. The devices do not need to be within range. Provide a mechanism to pair two devices trying to connect for the first time. Provide a mechanism to provide for authorization of connection requests. Information contained in the BCC must not be modified or altered other than by the BCC itself. Depending upon the JSR-82 implementation that you're using, the BCC may need to be packaged and deployed
with your application code.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
Stack Initialization Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java
Now before you can do anything, your stack needs to be initialized. Remember, a Bluetooth stack has direct applications using Bluetooth for a variety of platforms. This access to the underlying device.ofStack initialization can consistofof a number of things, but its main includes Bluetooth an API overview the Java library, development purpose is to get Bluetooth-based the Bluetooth device services, ready highlights to start of wireless security communication. concerns, and Stack initialization sequences can more. vary, and it's heavily dependent upon the underlying OS and Bluetooth radio. In some cases (in particular, with the Rococo Palm DK) no code is needed at all to initialize your stack. In other cases, you'll need to write a bit of code to get your stack initialized because you need to specify baud rates for your RS-232 interface.
Table of Contents
Bluetooth for Java For instance, Listing 4-1 shows the snippet of code that you would need in order to initialize your stack if you were Introduction using the Atinav SDK with a RS-232-based Bluetooth device. Chapter 1
- Introducing Bluetooth
Listing24-1: Stack Initialization Code for the Atinav SDK Chapter - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4 com.atinav.bcc.*; - Understanding the Java Bluetooth API import Chapter ... 5 - Bluetooth with J2ME MIDP Chapter BCC.setPortName("COM1"); 6 - Creating a Bluetooth Print Server with JPS API
BCC.setBaudRate(57600); Chapter 7 - Java and OBEX BCC.setConnectable(true); Chapter 8 - Using a Bluetooth Simulator BCC.setDiscoverable(DiscoveryAgent.GIAC); Chapter 9 - Bluetooth Security ... 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Esmertec takes a different approach for stack initialization. Their JSR-82 implementation and stack tends to be used mostly by wireless device OEMs. Listings 4-2 and 4-3 show the Java classes that would be part of a startup Appendix C - Java Bluetooth Development on the PalmOS Platform sequence to initialize the stack for the entire device. After the device has started (which consequently means that Appendix 1.1 API other Java applications that reside on the device no longer need to include code to the stackD is- BlipNet also initialized), Index initialize the stack. Appendix B - javax.obex
List of Figures
Listing 4-2: BluetoothSetup1.java List of Tables List of Listings List of Sidebars import com.jbed.bluetooth.*;
import java.io.IOException; public class BluetoothSetup1 { private static int device; private static BCC myBCC; static { device = DeviceProperties.DEVICE_1; try { myBCC = BCC.getInstance(); myBCC.startUp(device); myBCC.initDriver(); System.out.println("Bluetooth Started"); } catch (IOException exc) { System.out.println("IOException: " + exc.getMessage()); exc.printStackTrace(); System.out.println("Bluetooth Probably NOT Started "); } } }
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) Listing 4-3: DeviceProperties.java The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This import com.jbed.bluetooth.*; includes an API overview of the Java library, development of import com.jbed.bluetooth.HciTransport; Bluetooth-based services, highlights of security concerns, and more. import java.util.Hashtable;
public final class DeviceProperties {
Table of Contents Bluetooth for Java
public static final int DEFAULT = 0;
Introduction public static final int ERICSSON = 1; Chapterpublic 1 - Introducing staticBluetooth final int CSR = 2; Chapterpublic 2 - Bluetooth 1.1 final int SILICONWAVE = 3; static Chapterpublic 3 - Before You Get Startedint NON_SECURE_MODE_1 = 1; static final Chapterpublic 4 - Understanding the Java Bluetooth API static final int SERVICE_LEVEL_MODE_2 = 2; Chapterpublic 5 - Bluetooth static withfinal J2ME MIDP int LINK_LEVEL_MODE_3 = 3;
static finalPrint intServer TRUSTED_DEVICE = 0; Chapterpublic 6 - Creating a Bluetooth with JPS API final int UNTRUSTED_DEVICE = 1; Chapterpublic 7 - Javastatic and OBEX static final int UNKNOWN_DEVICE = 2; Chapterpublic 8 - Using a Bluetooth Simulator static final int AUTHORISATION_REQUIRED = 0x1; Chapterpublic 9 - Bluetooth Security static finalSystems int AUTHENTICATION_REQUIRED = 0x2; Chapterpublic 10 - Wireless Embedded with the Micro BlueTarget public static final int ENCRYPTION_REQUIRED = 0x4; static int SERVICE_TABLE_SIZE = 32; Chapter 12 - Bluetooth and Jini static int DEVICE_TABLE_SIZE = 8; Appendix A - javax.bluetooth public static final int DEVICE_1 = 0; Appendix B - javax.obex public static final int DEVICE_2 = 1; Appendix C - Java Bluetooth Development on the PalmOS Platform static int NAP_GN_MODE = DEVICE_2; Appendix D - BlipNet API static int1.1 PANU_MODE = DEVICE_1; Index static int DATA_MTU = 1691; List of Figures static int HEADER_LENGTH = 14; List of Tables public static int maximumServiceRecordCount = 0xffff; List of Listings public static int maximumAttributeByteCount = 0xffff; List of Sidebars static int SDP_SERVER_THREADS = 4; static int SDP_CLIENT_THREADS = 4; static int BNEP_CHANNELS = 4; static int MAX_IN_L2CAP_BUFFERS = 32; static int SDP_THREAD_TIMEOUT = 120000; static int BLUETOOTH_EVENT_TIMEOUT = 180000; public static String DEVICE1_NAME = "Little Device1"; public static String DEVICE2_NAME = "Little Device2"; static int DEVICE1_IP = 0x0a110101; // 10.17.01.01 static int DEVICE2_IP = 0x0a110102; // 10.17.01.02 static int NETMASK = 0xFFFFFF00; // 255.255.255.0 static int BROADCAST = 0x0a1101FF; // 10.17.01.255 static int DST_UUID = Sdp.UUID_PANU; static int SRC_UUID = Sdp.UUID_GN; Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Hashtable ht; private ExternalSecurityControlEntity myEsce; String pin = "123"; HciTransport hciTransport; String device1SerialPort = "COM1"; String device2SerialPort = "COM1";
int int int int
device1BaudRate = 19200; // 38400; //57600; //9600; //115200; Bluetooth for Java device2BaudRate = 19200; // 57600; //38400; //9600; //115200; ISBN:1590590783 by Bruce Hopkins and Ranjith Antony roleSwitch = HciConnectionTable.REFUSE_ROLE_SWITCH; Apress © 2003 (352 pages) securityMode = SERVICE_LEVEL_MODE_2;
The authors of this text describe how to develop wireless Java applications using Bluetooth DeviceProperties(int device)for { a variety of platforms. This includes an API overview of the Java library, development of ht = Bluetooth-based new Hashtable(); services, highlights of security concerns, and myEsce = new ESCESample(pin); more.
// SerialIFHciTransport is a simple UART connection Table of Contents if (device == DEVICE_1) { Bluetooth for Java hciTransport = new SerialIFHciTransport(device1SerialPort, Introduction Chapter 1
device1BaudRate);
Chapter 2
- Introducing Bluetooth // Human readable form of the device name - Bluetooth ht.put("bluetooth.device.name", 1.1 DEVICE1_NAME);
Chapter 3
elseYou { Get Started -}Before
Chapter 4
hciTransport new SerialIFHciTransport(device2SerialPort, - Understanding the Java = Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP device2BaudRate);
Chapter 6
// aHuman readable form - Creating Bluetooth Print Server with of JPS the API device name
Chapter 7
DEVICE2_NAME); - Java ht.put("bluetooth.device.name", and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
}
ht.put("bluetooth.api.version", "1.0a"); ht.put("bluetooth.security.mode", Integer.toString(securityMode)); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet ht.put("bluetooth.l2cap.receiveMTU.max", Integer.toString(DATA_MTU)); Chapter 12 - Bluetooth and Jini ht.put("bluetooth.connected.devices.max", "7"); Appendix A -ht.put("bluetooth.connected.inquiry", javax.bluetooth "true"); Appendix B -ht.put("bluetooth.connected.page", javax.obex "true"); Appendix C -ht.put("bluetooth.connected.inquiry.scan", Java Bluetooth Development on the PalmOS Platform "true"); Appendix D -ht.put("bluetooth.connected.page.scan", BlipNet 1.1 API "true"); Index ht.put("bluetooth.master.switch", "true"); List of Figures ht.put("bluetooth.sd.trans.max", Integer.toString(SDP_CLIENT_THREADS)); List of Tablesht.put("bluetooth.sd.attr.retrievable.max", "64"); Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
List of Listings
testProperties(); List of Sidebars }
ExternalSecurityControlEntity getEsce() { return myEsce; }
private void testProperties() { int i; if (hciTransport == null) { throw new Error("No connection to Host Controller defined"); } i = getInt("bluetooth.security.mode"); if (i < NON_SECURE_MODE_1 || i > LINK_LEVEL_MODE_3) throw new Error("bluetooth.security.mode must be NON_SECURE_MODE_1, SERVICE_LEVEL_MODE_2, or LINK_LEVEL_MODE_3"); if (getInt("bluetooth.l2cap.receiveMTU.max") < 48)
throw new Error("bluetooth.l2cap.receiveMTU.max must be at least" + Bluetooth for Java " 48 bytes, default value is 672"); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony } Apress © 2003 (352 pages) private int getInt(String prop) { The Integer.parseInt((String) authors of this text describe how to develop wireless Java return ht.get(prop)); applications using Bluetooth for a variety of platforms. This }
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
}
Table of we Contents So, as stated earlier, stack initialization must occur before you can do any real work in your Bluetooth Bluetooth for (whether Java application you invoke it directly in your code or not). Introduction Chapter 1
Introducing Bluetooth Device- Management
Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Get Started and DeviceClass are the classes in the Java Bluetooth specification that LocalDevice, RemoteDevice, Chapter 4 Generic - Understanding the Java Bluetooth APIto perform device management. These classes allow you to query form the Access Profile and allow you
some statistical information about your own Bluetooth device (LocalDevice) and also some information on the Chapter 5 - Bluetooth with J2ME MIDP devices6in -the area (RemoteDevice). The DeviceClass object gives you information about the official class of Chapter Creating a Bluetooth Print Server with JPS API device 7(CoD) as and defined in the Bluetooth specification. Chapter - Java OBEX Chapter 8
- Using a Bluetooth Simulator
javax.bluetooth.LocalDevice Chapter 9 - Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
There is a famous quote that says, "Know thyself." Well, this class allows you to do exactly that. The
Chapter 11 - Enterprise Bluetooth withinformation the Ericssonabout BlipNet LocalDevice class is the classApplications that gives you yourself, the local Bluetooth device. Being a Chapter 12 Bluetooth and Jini singleton object, you can only have a single instance of this object in your JVM at a time. Its constructor is Appendix A -so javax.bluetooth private, you can instantiate it by using the static getLocalDevice() method: Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
LocalDevice localdevice = LocalDevice.getLocalDevice();
Appendix D - BlipNet 1.1 API Index List public of Figures String getBluetoothAddress() List of Tables
Bluetooth devices have unique addresses, which are quite similar to MAC addresses for network cards on your PC. This class allows you to find out what your Bluetooth address is with the getBluetoothAddress() List of Sidebars method. It returns a 12-character String in the form of something like 00FE3467B092. In most cases, your Bluetooth radio shows what your address is somewhere externally, but it's nice to have a way to access it programmatically. List of Listings
public boolean setDiscoverable(int mode) In order to allow remote Bluetooth devices to find your device, you need to set the discovery mode of your Bluetooth device. Table 4-1 contains a list of valid modes and descriptions for the Bluetooth discovery modes. Table 4-1: Bluetooth Discovery Modes ACCESS MODE
FULL NAME
DESCRIPTION
VALUE
NOT_DISCOVERABLE
Not Discoverable
Don't allow any devices to discover your device.
0
GIAC
General/Unlimited Inquiry Access Code
Allow all devices to discover your device.
10390323
LIAC
Limited Inquiry Access Code
A temporary access mode that will revert back to a previous state after 1 minute.
10390272
One question that might be on your mind is why the values for the access modes are 0, 10390272, and Bluetooth for Java 10390323. Wouldn't it be simpler for the values to be something like 0, 1, and 2? Well, the codes for ISBN:1590590783 by Bruce Hopkins and Ranjith NOT_DISCOVERABLE, LIAC, and GIAC are allAntony defined in the Bluetooth Assigned Numbers document from Apress © 2003 (352 pages) http://www.bluetooth.org. Each entry in the document (which has more than just codes for Bluetooth of this text describe how to develop wireless discovery modes)The hasauthors a unique code in hexadecimal format. The actualJava codes for LIAC and GIAC as described applications using Bluetooth for a variety of platforms. This and 0x9E8B33 (for GIAC). For your in the Bluetooth Assigned Numbers document are 0x9E8B00 (for LIAC) includes an API overview of the Java library, development of convenience, these values are available you as public constants in theand DiscoveryAgent class: Bluetooth-based services,tohighlights of security concerns, more.
// javax.bluetooth.DiscoveryAgent.java ... Table of Contents public static final int NOT_DISCOVERABLE = 0; Bluetooth for Java public static final int LIAC = 0x9E8B00 // 10390272 Introduction public static final int GIAC = 0x9E8B33 // 10390323; Chapter 1 - Introducing Bluetooth ... Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
public 5int -getDiscoverable() Chapter Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Call this method if you want to know the current discovery mode of your Bluetooth device. This will (obviously) - Java and OBEX return an int that's either NOT_DISCOVERABLE,LIAC, or GIAC.
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security javax.bluetooth.RemoteDevice
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter TheRemoteDevice 11 - Enterpriseclass Bluetooth givesApplications you accesswith to athe single Ericsson remote BlipNet Bluetooth device in the area. The most common
way to 12 obtain a reference to a RemoteDevice is through device discovery, which is covered in the next section. Chapter - Bluetooth and Jini Here areA two useful methods that pertain to device management. Appendix - javax.bluetooth Appendix B - javax.obex
public final String getBluetoothAddress()
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 already API As you probably have assumed, this method returns to you the 12-character Bluetooth address of the Index remote device. List of Figures
public String getFriendlyName(boolean alwaysAsk) List of Tables List of Listings
Knowing the Bluetooth address of the RemoteDevice is fine, but it is even better to know the "friendly name" of that device. The friendly name of a Bluetooth device is something like "Andrew's PDA", "Home Office Printer", or "Ranjith's MP3 Player".
List of Sidebars
javax.bluetooth.DeviceClass This class represents the class of device in the Bluetooth specification. A device class is simply a classification of Bluetooth devices. Why is this class useful? Well, by simply calling the methods of this class, you can determine what kind of devices are in the area, like computers, laptops, phones, PDAs, access points, etc. The methods provided to accomplish this task are getMinorDeviceClass() and getMajorDeviceClass(), both of which return an int.Table 4-2 shows some common major and minor device classes. Table 4-2: Bluetooth Major and Minor Device Classes [*] MAJOR CLASS
MINOR CLASS
0
MAJOR CLASS DESCRIPTION
MINOR CLASS DESCRIPTION
Misc. major device
256
0
Computer
Unassigned, misc.
256
4
Computer
Desktop
256
8
Computer
Server
256
12 Bluetooth for Java Computer
256
by16 Bruce Hopkins and Ranjith Antony Computer Apress © 2003 (352 pages)
256
20authors of this text Computer PDA The describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This 24 Computer Watch includes an API overview of the Java library, development of size Bluetooth-based services, highlights of security concerns, and 0 Phone Unassigned, misc. more.
256 512 512 Table 512of Contents Bluetooth for Java
512
Introduction
Laptop ISBN:1590590783
Sub-laptop
4
Phone
Cellular
8
Phone
Household cordless
12
Phone
Smart phone
Chapter 512 1
- Introducing 16 Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
LAN/network access point
Fully available
Chapter 768 4
- Understanding 32 the Java Bluetooth LAN/network API access point
1–17% utilized
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
768 7 Chapter
96OBEX - Java and
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
768
768
768
0
64
128
Phone modem
LAN/network access point
17–33% utilized
LAN/network access point
33–50% utilized
LAN/network access point
50–76% utilized
768 10 - Wireless160 LAN/network access point Chapter Embedded Systems with the Micro BlueTarget
67–83% utilized
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
LAN/network access point
83–99% utilized
768 A - javax.bluetooth 224 Appendix
LAN/network access point
100% utilized, no service available
Appendix 1024 B - javax.obex 0
Audio/video device
Unassigned, misc.
768
192
Chapter 12 - Bluetooth and Jini
Appendix C - Java Bluetooth Development on the PalmOS Platform
1024 D - BlipNet 4 Appendix 1.1 API
Audio/video device
Headset (must conform to the Headset Profile)
8
Audio/video device
Hands-free device
16
Audio/video device
Microphone
44
Audio/video device
VCR
1024
72
Audio/video device
Video game system
1280
64
Computer peripheral
Keyboard
1280
128
Computer peripheral
Mouse, trackball, etc.
1280
12
Computer peripheral
Remote control
1536
16
Imaging device
Display device
1536
32
Imaging device
Camera
1536
64
Imaging device
Scanner
1536
128
Imaging device
Printer
Index List1024 of Figures List of Tables
1024
List of Listings List1024 of Sidebars
7936
Unclassified major device
[*]This
table has a majority of the major and minor device classes listed in the Bluetooth Assigned Numbers document on the Bluetooth Web site: http://www.bluetooth.org.
So, that's about all it takes to perform device management with the Java Bluetooth APIs. Now, let's take a look at the concept in Bluetooth that allows you to discover other Bluetooth devices: device discovery.
Device Discovery Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Your Bluetooth device has no idea of what other Bluetooth devices are in the area. Perhaps there are laptops, Apress © 2003 (352 pages) desktops, printers, mobile phones, or PDAs in the area. Who knows? The possibilities are endless. In order to The authors of this text describe how to develop wireless Java find out, your Bluetooth device will use the device discovery classes that are provided in the Java Bluetooth API to applications using Bluetooth for a variety of platforms. This see what's out there. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
Which Bluetooth more. devices should use device discovery? Well, if you are planning to use a peer-to-peer application in Bluetooth, like two PDAs in a chat session, then either device would use device discovery to find the other device. If you are planning to use a client-server type application, like printing from a lap-top to a printer, then the Table clientofisContents most likely to perform device discovery. It doesn't make sense for the printer to constantly look for Bluetooth for Java devices that want to print something. Introduction
Now, let's a look atBluetooth the two classes needed in order for your Bluetooth device to discover remote Bluetooth Chapter 1 -take Introducing devices2in -the area: DiscoveryAgent and DiscoveryListener. Chapter Bluetooth 1.1 Chapter 3
- Before You Get Started
javax.bluetooth.DiscoveryAgent - Understanding the Java Bluetooth API
Chapter 4
Chapter 5 - Bluetooth with J2MEobject, MIDP the most logical next step for device discovery is to instantiate the After getting a LocalDevice Chapter 6 Creating a Bluetooth Server with JPS API DiscoveryAgent object. You Print accomplish this task by calling LocalDevice.getDiscoveryAgent(). Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator LocalDevice localdevice = LocalDevice.getLocalDevice();
Chapter 9 - Bluetoothdiscoveryagent Security DiscoveryAgent = localdevice.getDiscoveryAgent(); Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
When you to discover other Bluetooth devices in the area, DiscoveryAgent gives you two methods to Chapter 12 -want Bluetooth and Jini work with: and retrieveDevices(). Appendix A -startInquiry() javax.bluetooth Appendix B - javax.obex
public boolean startInquiry(int accessCode, DiscoveryListener listener)
Appendix C - Java Bluetooth Development on the PalmOS Platform
Appendix - BlipNet 1.1 API your DiscoveryAgent, you use this method to make your Bluetooth device search After youD have instantiated Index for other devices in the area. The length of the inquiry is totally dependent upon the implementation of the Java List Bluetooth of Figures specification. The accessCode can be one of the following DiscoveryAgent constants:
NOT_DISCOVERABLE, LIAC, or GIAC. You must also pass a reference to a class that implements the List of Tables DiscoveryListener interface. When new devices are discovered, event callbacks are passed back to this List of Listings object. This method will return trueif the device successfully went into discovery mode. The List of Sidebars startInquiry() method is the only way to perform device discovery without blocking the current thread. public RemoteDevice[] retrieveDevices(int option) Use the retrieveDevices() method to get a list of RemoteDevice objects that were found by previous inquiries. The option field has either the value of 0 for CACHEDor 1 for PREKNOWN. For your convenience, CACHED and PREKNOWN are also defined as constants in the DiscoveryAgent class. Unlike the startInquiry() method, this method blocks the calling thread until it returns. CACHED and PREKNOWN devices are determined by the BCC. Note For the most part, a CACHED device is simply a Blue-tooth device that was found from a recent inquiry. Of course, the definition of "recent" is implementation dependent. A PREKNOWN device is a level above aCACHED device and is one that you frequently communicate with. For example, let's say that you own a Bluetooth-enabled PDA. If you have exchanged business cards with another PDA within an hour, an implementation may classify that PDA as CACHED. However, if you own a printer at home, and you print to it often from the PDA, then an implementation may classify the printer as PREKNOWN. Please note that the retrieveDevices() method does not perform a true inquiry for Bluetooth devices, and subsequently, devices found from this method may not be in the area. However, this really isn't a problem, because the purpose of this method is to quickly give you the references to the devices that you want to connect to. The startInquiry() method will guarantee that the device is in the area, but it may take a considerable
amount of time in order to find the device that you want. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony javax.bluetooth.DiscoveryListener
ISBN:1590590783
Apress © 2003 (352 pages)
If you've worked with event handling in Java, thenhow thetoconcept listeners is not new to you. Like all listeners, The authors of this text describe developofwireless Java applications Bluetooth for a method variety ofthat platforms. DiscoveryListener is anusing interface that has is calledThis by the JVM when the desired event includes an API overview the Java library, of occurs. If you want to be informed when aofBluetooth device development is found by DiscoveryAgent.startInquiry(), Bluetooth-based services, highlights of security concerns, and then your class needs to implement the DiscoveryListener interface. Whenever a Bluetooth device is found, more. the method deviceDiscovered() is called. public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) Table of Contents Bluetooth for Java
As stated in the preceding section, this method is called by the JVM when a remote Bluetooth device is found from an inquiry. The RemoteDevice object is a reference to the Bluetooth device found from the inquiry. The Chapter 1 - Introducing Bluetooth DeviceClass object (which tells you if the remote device is a phone, a PC, a PDA, etc.) is also provided when Chapter 2 - Bluetooth this method is called. 1.1 See Table 4-2 for common device classes and their numbers. Introduction
Chapter 3
- Before You Get Started Note deviceDiscovered() method Chapter 4 The - Understanding the Java Bluetooth APImay be called more than once for the same Bluetooth device in
vicinity. with J2ME MIDP Chapter 5 the - Bluetooth Chapter 6
- Creating a Bluetooth Print Server with JPS API
Now that you know all the semantics about discovering devices, let's discuss how to find what services (if any) - Java and OBEX that these devices offer.
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Service Discovery
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
After you have located devices in the area, it would be really nice to see what services those devices offer. Of course, you can always inspect the DeviceClass object, but that may only reveal half the picture. Let's say that Appendix A - javax.bluetooth you want to print a text file. Obviously, if the DeviceClass indicates that the major device class of the Appendix B - javax.obex RemoteDevice is a printer, then you're all set. But what if the major device class is a computer? Would it come Appendix C - Java Bluetooth Development on thethat PalmOS Platform to mind that you can also print to a computer is acting as a print server? Chapter 12 - Bluetooth and Jini
Appendix D - BlipNet 1.1 API IndexCROSSList ofREFERENCE Figures
This is actually a good segue for Chapter 6. In Chapter 6, you'll learn how to convert your desktop computer into a wireless print server.
List of Tables
The service discovery-related classes in the Java Bluetooth specification implement the Service Discovery Application Profile. The Service Discovery Application Profile, in turn, uses the Service Discovery Protocol (SDP) List of Sidebars layer in your Bluetooth stack to find services on remote Bluetooth devices. List of Listings
CROSSREFERENCE
SeeChapter 2 for detailed descriptions of profiles and layers in Bluetooth.
The following classes are provided in the Java Bluetooth specification for service discovery: DiscoveryAgent, DiscoveryListener,ServiceRecord,DataElement, and UUID. You'll also interact (indirectly) with the SDDB whenever you want to discover services on a remote Bluetooth device.
The Service Discovery Database The Service Discovery Database (SDDB) is the central repository for all service records, but it's not a database in the sense of Oracle 9i, Sybase, or even MS Access. It's simply a collection of service records (and no, we don't mean a Java Collections object). The JSR-82 implementation is free to implement the SDDB in any form, so when a ServiceRecord object is stored in the SDDB, it doesn't necessarily mean that the JVM serialized the ServiceRecord object and stored it in a data store. If a particular JSR-82 implementation does not store service records in the SDDB as Java objects, then it must convert them into ServiceRecord objects when a client performs a search for services and a match is found. Figures 4-1 through 4-4 present graphical depictions of the SDDB, ServiceRecord,DataElement, and UUID objects in regard to how they all work together for service discovery.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Figure 4-1: Service records in the SDDB
Chapter Understanding the Java Bluetooth API As you 4can- see in Figure 4-1, a service record is an individual entry in the SDDB (Service Discovery Database). Chapter 5 - Bluetooth with J2ME MIDP
Entries6in service records are called Chapter - Creating a Bluetooth Print attributes. Server withAttributes JPS API consist of an ID and value. See Figure 4-2 for an illustration. Chapter 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Figure 4-2: An individual attribute of a service record
Index
List of Figures Attribute IDs are 16-bit unsigned integers (0x000-0xFFFF). In a ServiceRecord object, attribute values are List of Tables stored as DataElement objects as shown in Figure 4-3. List of Listings List of Sidebars
Figure 4-3: An illustration of a service record attribute DataElements can be created from the following Java types: int,boolean,UUID, and Enumeration (see Figure 4-4).
Figure 4-4: DataElements Figure 4-5 wraps it all up by showing the process of service discovery for a PDA that wants to use the services of
a Bluetooth keyboard. A successful service discovery will occur only if there is a match in the UUID of a service Bluetooth for Java record in the SDDB of the RemoteDevice. by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Figure 4-5: The service discovery process for a PDA that wants to use the services of a Bluetooth keyboard Chapter 1 - Introducing Bluetooth
Now, let's at the service discovery-related classes in detail. Chapter 2 -look Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 5
- Bluetooth with J2ME MIDP
javax.bluetooth.UUID Chapter 4 - Understanding the Java Bluetooth API TheUUID class is simply a class that uniquely identifies services in the Bluetooth protocol (UUID stands for - Creating a Bluetooth Print Server with JPS API Universal Unique Identifier). Let's say that you have a Bluetooth client device that supports L2CAP connections. If Chapter 7 - Java and OBEX you want to send a message to a Bluetooth server device, just perform service discovery with the UUID of Chapter 8 which - Using Bluetooth Simulator 0x0100, is athe UUID for L2CAP. If you have a Bluetooth-enabled PDA, and you want to send your Chapter 9 Bluetooth Security business card (.vcf) to other Bluetooth-enabled devices, then you'll perform service discovery with a UUID of Chapter 10 which - Wireless with the Micro 0x1105, is theEmbedded UUID for Systems the OBEX Object PushBlueTarget Profile. Table 4-3 lists a sample of UUIDs for Bluetooth Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet protocol layers and Table 4-4 lists UUIDs for Bluetooth services and their corresponding Bluetooth profile. For Chapter 12 Bluetooth and Jini instance, Headset and HeadsetAudioGateway are both distinct services that are a part of the Headset Profile. Therefore, service has its own UUID, 0x1108 and 0x1112, respectively. Some profiles, like the FAX Appendix A - each javax.bluetooth Profile, only have one service: FAX (which has a UUID of 0x1111). A more exhaustive list of UUID values for Appendix B - javax.obex protocolsC and profile services can be seen in the Bluetooth Assigned Numbers document. Appendix - Java Bluetooth Development on the PalmOS Platform Chapter 6
Appendix D - BlipNet 1.1 API
Table 4-3: Common UUID Values for Bluetooth Protocol Layers Index ListPROTOCOL of Figures
UUID (DECIMAL)
UUID (HEXADECIMAL)
ListSDP of Listings
1
0x0001
List of Sidebars
RFCOMM
3
0x0003
L2CAP
256
0x0100
HTTP
12
0x000C
FTP
10
0x000A
TCP
4
0x0004
IP
9
0x0009
UDP
2
0x0002
BNEP
15
0x000F
OBEX
8
0x0008
TCS-BIN
5
0x0005
List of Tables
Table 4-4: Common UUID Values for Bluetooth Profiles
PROFILE Serial Port
SERVICE NAME Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
SerialPort
UUID (DECIMAL) ISBN:1590590783 4353
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. Dial-up Networking LANAccessUsingPPP 4354 This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Dial-up Networking DialupNetworking 4355 more.
UUID (HEXADECIMAL) 0x1101 0x1102 0x1103
Object Push
OBEXObjectPush
4357
0x1105
Object Push Table of Contents
OBEXFileTransfer
4358
0x1106
CordlessTelephony
4361
0x1109
Audio/Video Control Bluetooth A/V_RemoteControl Chapter 1 - Introducing
4366
0x110E
4368
0x1110
4369
0x1111
4360
0x1108
4370
0x1112
4382
0x111E
Bluetooth forTelephony Java Cordless Introduction
Profile2 - Bluetooth 1.1 Chapter Chapter 3 - Before You Get Started Intercom Intercom Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Fax
Fax
Chapter 6 Access - Creating a Bluetooth Print Server with JPS API Generic Headset Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Generic Access
HeadsetAudioGateway
Chapter 9 - Bluetooth SecurityHandsfree Handsfree
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Handsfree
HandsfreeAudioGateway
4383
0x111F
4386
0x1122
4387
0x1123
Hard Copy Cable HardCopyCableReplacement Appendix C - Java Bluetooth Development on the PalmOS Platform 4389
0x1125
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter Basic 12 Printing - Bluetooth and Jini BasicPrinting Appendix A - javax.bluetooth
Basic Printing
Appendix B - javax.obex
PrintingStatus
Replacement Appendix D - BlipNet 1.1 API Index
Hard Copy Cable
HCR_Print
4390
0x1126
HCR_Scan
4391
0x1127
Human Interface Device
HumanInterfaceDeviceService
4388
0x1124
Generic Networking
n/a
4609
0x1201
ListReplacement of Figures List of Tables
Copy Cable ListHard of Listings ListReplacement of Sidebars
Now, let's take a look at the constructors for UUID. public UUID(long uuidValue) This is pretty cut and dry—it constructs a UUID object from a long. public UUID(String uuidValue, boolean shortUUID) This method allows you to construct a UUID from a String representation of a UUID. If shortUUID is set to true, then a short UUID is returned (one that is made up of 16 bits instead of 128 bits). Note When using this method, be sure not to include the "0x" prefix in front of the String when constructing this object.
javax.bluetooth.DiscoveryAgent Hey, wait a minute, didn't we use this class for device discovery? Well, that's why the authors of the Java
Bluetooth specification named this class DiscoveryAgent, because they intended this class to be used for both Bluetooth for device and service discovery. InJava order to find services on remote devices, you'll use either selectService() or ISBN:1590590783 by Bruce Hopkins and Ranjith Antony searchServices(). Apress © 2003 (352 pages)
public int searchServices(int[] attrSet, UUID[]how uuidSet, RemoteDevice btDev, DiscoveryListener The authors of this text describe to develop wireless Java discListener) applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
Bluetooth-based of on security concerns, This method allows you to searchservices, for a listhighlights of services a single remoteand Bluetooth device. The attrSet[] more. parameter must be populated with an array of integers that correspond to attributes that you want to see when the services match the UUIDs. The UUID[] parameter is the list of UUIDs of services that you want to look for. RemoteDevice Table of Contents is the reference to the remote device that you want to search for services. You must also provide Bluetooth an forobject Java that will implement the DiscoveryListener interface in order to receive event callbacks when services that match your UUID criteria are discovered. This method returns an int that is the transaction Introduction ID. You can later use the transaction ID to cancel this search if you need to. Chapter 1 - Introducing Bluetooth Chapter - Bluetooth 1.1 public 2String selectService(UUID uuid, int security, boolean master) Chapter 3 - Before You Get Started
This method also allows you search for services, but it has a slight twist that makes it different from Chapter 4 - Understanding theto Java Bluetooth API searchServices(). This method Chapter 5 - Bluetooth with J2ME MIDPaccepts neither a DiscoveryListener nor a RemoteDevice object. By using this can perform searchwith for JPS a particular UUID that is available on ANY device in the area. If Chapter 6 method, - Creatingyou a Bluetooth PrintaServer API there is7a match, thenOBEX this method returns a String that will be used in the Connector.open() method in Chapter - Java and order to8 establish connection to that device. Be sure to notice that this method only allows you to search on a Chapter - Using aa Bluetooth Simulator singleUUID and not multiple UUIDs, as in searchServices().
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Systems with in the Micro BlueTarget Unfortunately, there Embedded is no method available the JSR-82 specification that will allow you to discover every Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet service offered by remote devices. By using either searchServices() or selectService(), you need to Chapter 12 Bluetooth and Jini know the UUID of the service that you're looking for before you attempt to perform a search. Appendix A - javax.bluetooth
NoteB You may be able to discover every service on a remote device if that device has all of its services Appendix - javax.obex with Development a BrowseGroupList attribute in the service record. If not, then you're out of luck. Appendix C categorized - Java Bluetooth on the PalmOS Platform the Bluetooth Appendix D See - BlipNet 1.1 API specification for more details on how to browse for services. Index
javax.bluetooth.DiscoveryListener
List of Figures
List Tables Ourofgood ol' buddy DiscoveryListener, which helped us to discover devices, comes back to help us discover List of Listings services on remote Bluetooth devices. List of Sidebars
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) If you use the DiscoveryAgent.searchServices() method (which accepts a DiscoveryListener), then this method is called by the JVM when services are discovered on the remote device. The transaction ID and an array of ServiceRecord objects are provided to this method. With a ServiceRecord in hand, you can do plenty of things, but you would most likely want to connect to the RemoteDevice where this ServiceRecord originated: String connectionURL = servRecord[i].getConnectionURL(0, false);
javax.bluetooth.ServiceRecord ServiceRecord objects are representations of individual entries in the SDDB. As you may remember, the SDDB is the central repository of service records for a Bluetooth device.
javax.bluetooth.DataElement As we continue to break down the anatomy of service discovery, let's now examine the DataElement object. EachServiceRecord object in the SDDB is made up of attributes. All attributes are stored as DataElement objects. A DataElement object can be from any of the following:
Integers Booleans
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Strings
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This UUIDs includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Sequences of the preceding values more.
Be sure to take another look at Figures 4-1 through 4-4 if you're still in the dark about the relationship between Table the SDDB, of Contents ServiceRecord,DataElement, and UUID objects. Bluetooth for Java Introduction
Service Registration
Chapter 1
- Introducing Bluetooth
Chapter - Bluetooth 1.1 device can use service discovery on a Bluetooth server device, the server needs to Before 2a Bluetooth client Chapter register3its-services Before You internally. Get Started That process is called service registration. This section discusses what's involved in
service4registration for a Bluetooth device, and Chapter - Understanding the Java Bluetooth APIwe'll also give you a rundown of the classes needed to accomplish this. Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Note In a peer-to-peer application, like a file transfer or chat application, be sure to remember that any - Java and OBEX device can act as the client or the server, so you'll need to incorporate that functionality into your code Chapter 8 - Using a Bluetooth Simulator in order to handle both scenarios of service discovery and service registration. Chapter 7 Chapter 9
- Bluetooth Security
Chapter - Wireless Systems with the Micro BlueTarget Here's 10 a scenario of Embedded what's involved in getting your service registered and stored in the SDDB: Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet to a StreamConnectionNotifier object. 1. CallConnector.open() and cast the resulting connection Chapter Connector.open() 12 - Bluetooth and Jini creates a new ServiceRecord and sets some attributes. Appendix A - javax.bluetooth
2. Use LocalDevice object and the StreamConnectionNotifier to obtain the ServiceRecord Appendix B - the javax.obex byDevelopment the system. on the PalmOS Platform Appendixthat C - was Javacreated Bluetooth Appendix D - BlipNet 1.1 API
3. Add or modify the attributes in the ServiceRecord (optional).
Index
List of 4. Figures Use the StreamConnectionNotifier to call acceptAndOpen() and wait for Bluetooth clients to List of Tables discover this service and connect. List of Listings
5.Sidebars The system creates a service record in the SDDB. Wait until a client connects. When the server is ready to List of exit, call close() on the StreamConnectionNotifier.
6. The system removes the service record from the SDDB. StreamConnectionNotifier and Connector both come from the javax.microedition.io package of the J2ME platform. Listing 4-4 is a snippet of code that achieves the service registration process. Listing 4-4: The Service Registration Process ... // let's name our variables StreamConnectionNotifier notifier = null; StreamConnection sconn = null; LocalDevice localdevice = null; ServiceRecord servicerecord = null; // step #1 // the String url will already be defined with the correct url parameters notifier = (StreamConnectionNotifier)Connector.open(url); // step #2 // we will get the LocalDevice if not already done
localdevice = LocalDevice.getLocalDevice(); for Java servicerecordBluetooth = localdevice.getRecord(notifier); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony // step #3 is optional Apress © 2003 (352 pages)
// step #4 The authors of this text describe how to develop wireless Java usingthe Bluetooth for a variety of platforms. // this step applications will block current thread until a This client responds includes an API overview of the Java library, development of notifier.acceptAndOpen(); Bluetooth-based services, highlights of security concerns, and // the service record is now in the SDDB more. // step #5 Table of Contents // just wait... Bluetooth for Java // assume the client has connected and you are ready to exit Introduction Chapter 1 #6 - Introducing Bluetooth //step Chapter // this 2 -causes Bluetooththe 1.1 service record to be removed from the SDDB
notifier.close(); Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
And that's -all that you need to do service registration in Bluetooth. The next step is communication. Java and OBEX
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Communication - Bluetooth Security
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Okay, Bluetooth is a communication protocol, so how do you communicate with it? Well, the official Java Bluetooth API gives you three ways to send and receive data, but for right now we'll cover only two of them: Chapter 12 - Bluetooth and Jini RFCOMM and L2CAP. Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Appendix A - javax.bluetooth Appendix B - javax.obex
RFCOMM Connections
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API As you may remember from Figure 2-9, the most common Bluetooth profiles use the Serial Port Profile as a Index foundational layer. List of Figures
Note RFCOMM is the protocol layer that the Serial Port Profile uses in order to communicate, but these two items are almost always used synonymously.
List of Tables
List of Listings
List of Sidebars Sessions and Connections
Before we continue, there's a little more terminology to introduce here: sessions and connections. You can only have a single session between two Bluetooth devices. This limitation isn't a big deal, per se, because the definition of a session is simply one or more connections shared between two devices. You can also relate a Bluetooth session in the same way that sessions are created and used on the Web. When a Web server is communicating to a Web client, there is only one session, although there are numerous connections. Now, a Bluetooth device can have multiple sessions only if each session is linked to a different device. This also applies on the Web; powerful application servers have the capability to create multiple sessions and keep them in memory, but each session is linked to a different client. Server Connections with the Serial Port Profile Listing 4-5 demonstrates what is needed to open connections on a Bluetooth device that will act as a server. Listing 4-5: Opening Connections on a Bluetooth Server ... // let's name our variables StreamConnectionNotifier notifier = null; StreamConnection con = null;
LocalDevice localdevice = null; for Java = null; ServiceRecordBluetooth servicerecord by Bruce Hopkins and Ranjith Antony InputStream input; Apress © 2003 (352 pages) OutputStream output;
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications Bluetooth for a variety of platforms. This // let's create a URLusing that contains a UUID that includes an API overview of the Java library, development of // has a veryBluetooth-based low chanceservices, of conflicting with anything highlights of security concerns, and String url = more. "btspp://localhost:00112233445566778899AABBCCDDEEFF;name=serialconn";
// let's open the connection with the URL and cast it into a StreamConnectionNotifier Table of Contents notifier = (StreamConnectionNotifier)Connector.open(url); Bluetooth for Java Introduction // block the current thread until a client responds Chapter - Introducing Bluetooth con =1 notifier.acceptAndOpen(); Chapter // the 2 client - Bluetooth has 1.1 responded, so open some streams
input3 = -con.openInputStream(); Chapter Before You Get Started output con.openOutputStream(); Chapter 4 =- Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP // now thea streams areServer open, and receive some data Chapter 6 that - Creating Bluetooth Print withsend JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
For the most part, this is just about the same code used in service registration, and in fact, it is; service registration and server communication are both accomplished using the same lines of code. Here are a few Chapter 11 -need Enterprise Bluetooth Applications with url the Ericsson BlipNet items that to be pointed out. The String begins with btspp://localhost:, which is required if Chapter 12 Bluetooth and Jini you're going to use the Bluetooth Serial Port Profile. Next comes the UUID part of the URL, which is Appendix A - javax.bluetooth 00112233445566778899AABBCCDDEEFF. This is simply a custom UUID that was made up for this service; any Appendix B - javax.obex string that's 128 bits long could have been used. Finally, we have name=serialconn in the URL String. We Appendix C - left Javathis Bluetooth PalmOS Platform could have part off,Development but we wanton ourthe custom service to have a name, so the actual service record in the Appendix D - the BlipNet 1.1 API SDDB has following entry: Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Index List of Figures ServiceName = serialconn List of Tables List of Listings
The has also assigned a channel identifier to this service. The client must provide the channel List of implementation Sidebars number along with other parameters in order to connect to a server. Client Connections with the Serial Port Profile Establishing a connection with the Serial Port Profile for a J2ME client is simple because the paradigm hasn't changed. You simply call Connector.open(). StreamConnection con = (StreamConnection)Connector.open(url);
You obtain the url String that is needed to connect to the device from the ServiceRecord object that you get from service discovery. Here's a bit more code that will show you how a Serial Port Profile client makes a connection to a Serial Port Profile server: String connectionURL = serviceRecord.getConnectionURL(0, false); StreamConnection con = (StreamConnection)Connector.open(connectionURL);
What does a Serial Port Profile client connection URL look like? If the address of the server is 0001234567AB, then the String that the SPP client would use would look something like this:
btspp://0001234567AB:3 Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The 3 at the end The of the URL String is the channel thatwireless the server authors of this text describe hownumber to develop Javaassigned to this service when this applications using Bluetooth for a variety of platforms. This service was added to the SDDB.
L2CAP
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Connections more.
Unlike RFCOMM connections, which are stream oriented, L2CAP connections are packet oriented. Before we cover to create L2CAP connections, we'll briefly cover a new concept called Maximum Transmission Unit Table ofhow Contents (MTU). We'll also cover the classes needed in order to create L2CAP connections: L2CAPConnection and Bluetooth for Java L2CAPConnectionNotifier. Introduction Chapter 1
Introducing Bluetooth Maximum-Transmission Unit
Chapter 2
- Bluetooth 1.1
Chapter Because 3 of - Before the factYou thatGet theStarted L2CAP layer sends data in packets, the official Java Bluetooth API gives you the
flexibility how large packets canAPI be. The default MTU is 672 bytes, but you can attempt to negotiate Chapter 4 to- control Understanding the the Java Bluetooth a larger5 MTU in your connection URL strings. Here's why we say "attempt": If the client indicates that it can Chapter - Bluetooth with J2ME MIDP receive6data in packet sizes of 10MB, and the server is only capable of sending data at 1kB, then there's no real Chapter - Creating a Bluetooth Print Server with JPS API problem; client'll get its data in 1kB packets. Now on the other hand, if the server indicates that it's sending Chapter 7 the - Java and OBEX data in 810MB-size the client is only capable of handling 1kB packets, then the transmission will fail Chapter - Using apackets, Bluetoothand Simulator horribly. - Bluetooth Security
Chapter 9
Chapter Wireless Embedded Systems with theyou Micro In order10to-find out the largest packet size that canBlueTarget receive from a L2CAP connection, just run the following Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet piece of code: Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
LocalDevice local = LocalDevice.getLocalDevice();
Appendix - javax.obex StringB receiveMTUmax = local.getProperty("bluetooth.l2cap.receiveMTU.max"); Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
L2CAP Server Connections Index List of Figures
Following is the code that a L2CAP server uses to open a connection to a client:
List of Tables
List of Listings
L2CAPConnectionNotifier notifier = (L2CAPConnectionNotifier).Connector.open(url); List of Sidebars L2CAPConnection con = (L2CAPConnection)notifier.acceptAndOpen();
As you can see, it is not much different from the standard StreamConnectionNotifier and Connection used for RFCOMM server connections. L2CAP Client Connections Now here's the code that a client would use in order to establish an L2CAP connection with a server: L2CAPConnection = (L2CAPConnection)Connector.open(url);
Once again, it's pretty straightforward. More on MTUs Now, let's look at MTUs one more time, in conjunction with opening connections. For instance, if the server code looked like this: String url = "btl2cap://localhost:00112233445566778899AABBCCDDEEFF;ReceiveMTU=1024;TransmitMTU
=1024"; Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The connection String Apress © for 2003the (352 client, pages)on the other hand, would look something like this: The authors of this text describe how to develop wireless Java using Bluetooth for a variety of platforms. This String url = applications "btl2cap://2E345BB78902:1055;ReceiveMTU=4096;TransmitMTU=512"; includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
As you can see, the server is proposing to send data in packet sizes of 1024 bytes. Since the client is able to receive data packets four times that size, the negotiated connection will have a packet data size of the lowest Table of Contents common denominator: 1024. On the other hand, the client wants to send its data in packets of 512 bytes. The Bluetooth Java server is for able to handle that packet size with no problem at all, and the negotiated connection will be 512 byte Introduction packets. Chapter 1
- Introducing Bluetooth
Chapter 3
- Before You Get Started
Now, let's take a brief look at the two classes used in order to create L2CAP connections and some of their Chapter 2 - Bluetooth 1.1 methods. Chapter 4 - Understanding the Java Bluetooth API javax.bluetooth.L2CAPConnection Chapter 5
- Bluetooth with J2ME MIDP This interface is just aa Bluetooth subclass of theServer Connection interface, and you use it in the same manner. The following Chapter 6 - Creating Print with JPS API
methods found L2CAPConnection that are not found in Connection: Chapter 7 are - Java andinOBEX Chapter 8
- Using a Bluetooth Simulator
public int getReceiveMTU(): This method gets the negotiated ReceiveMTU value from the - Bluetooth Security connection.
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter public 11 - Enterprise int getTransmitMTU(): Bluetooth ApplicationsThis withmethod the Ericsson gets BlipNet the negotiated TransmitMTU value from the Chapter connection. 12 - Bluetooth and Jini Appendix A - javax.bluetooth
public boolean ready(): This method will return true if there is any data ready to be read. If this method returns true, then a call to receive() will not block the main thread.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Appendix D - BlipNet API public int 1.1 receive(byte[] inBuf): Regardless of the ReceiveMTU between your device and the Index remote device, you can set the size of inBuf to be whatever you want it to be. If the size of inBuf is greater List ofthan Figures or equal to the ReceiveMTU, then you won't lose any data during a transmission. If the size of inBuf[] List ofisTables smaller than the size of ReceiveMTU, then inBuf[] will be filled with data for the incoming packet, but List ofthe Listings remainder of the data will be lost. List of Sidebars
public void send(byte[] data): Use this method to send data to a remote Bluetooth device via the L2CAP protocol. You're free to send any size packet that you want, but if you exceed the TransmitMTU size, then the excess data will be discarded.
L2CAP vs. RFCOMM So now that you know how to send data between Bluetooth clients and servers using both L2CAP and RFCOMM, we bet you're wondering about typical usage scenarios for these connections. In other words, why would anyone use RFCOMM instead of L2CAP to send data or vice versa? Well, RFCOMM is also known as the virtual serial port communication protocol. An ideal way to use RFCOMM is in situations when you would replace a serial cable. For instance, if you were a developer for a GPS manufacturer, and your duty was to make one of their units Bluetooth enabled, then RFCOMM would be a likely choice in this scenario. Why? The GPS unit will always have a constant stream of information that needs to be processed, rendered, calculated, etc. So, collect the data from your stream and plot those coordinates on the screen. On the other hand, L2CAP is great for handling packet data. L2CAP can easily be used (and actually is) as a data multiplexer. You can read data from the connection, and based upon a header in the packet, you can route that data to different methods, threads, and classes in your application.
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter gaveApress you a©formal introduction to the official Java Bluetooth APIs. You should be aware of all 2003 (352 pages) the basic components of a Bluetooth application, as well as howwireless to implement The authors of this text describe how to develop Java them using the classes and interfaces of the official Java Bluetooth API. This chapter also discussed applications using Bluetooth for a variety of platforms. Thisthe importance and the roles that includes an API overview Java library,applications. development of the Bluetooth Control Center (BCC) playsofinthe your wireless Bluetooth-based services, highlights of security concerns, and more. showed you how a Bluetooth application works by its components. In the next Essentially, this chapter
chapter, we'll look at a full working example of a Java Bluetooth application using the Atinav Java Bluetooth SDK. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 5: Bluetooth with J2MEISBN:1590590783 MIDP by Bruce Hopkins and Ranjith Antony Apress ©a2003 (352 pages) Now that we've covered lot of the foundational material, let's start creating some Java Bluetooth The authors of this textyour describe howexample to develop wireless Java applications. This chapter will give you first full of a Java Bluetooth application, but before applications using Bluetooth for a variety of platforms. This we dive right in, we're going to give a brief primer on J2ME and the Mobile Information Device Profile includes an API overview of the Java library, development of (MIDP). Afterwards, we're going to examine two sample applications: Stealth Bluetooth-based services, highlights of security concerns, and Mode and the Piconet Browser. more.
Note If you've already developed a MIDlet, or if you have a working knowledge of J2ME, then feel free Table of Contents to skip down to the example code in the sections "Stealth Mode Example" and "Piconet Browser Bluetooth for Example." Java Introduction - Introducing Bluetooth J2ME Overview
Chapter 1 Chapter 2
- Bluetooth 1.1 Under the termGet of Started J2ME, there are two configurations that correspond to two classes of devices. Chapter 3 -general Before You
The connected device configuration (CDC) isAPI a classification for devices that have a network connection, Chapter 4 - Understanding the Java Bluetooth but have processing than a typical desktop computer. Set-top boxes, appliances, smart Chapter 5 less - Bluetooth withpower J2ME MIDP phones, high-end PDAs fit into category. TheAPI connected limited device configuration (CLDC) Chapter 6 and - Creating a Bluetooth Printthis Server with JPS classifies devices; they are capable of making a network connection, but it isn't robust or Chapter 7 many - Javamobile and OBEX
dedicated.-CLDC devices typically don't have a lot of processing power, and many mobile phones, twoUsing a Bluetooth Simulator way pagers, and some PDAs fit into this category.
Chapter 8 Chapter 9
- Bluetooth Security
Chapter - Wireless Embedded Systems A J2ME10Profile is a software layer that iswith builtthe onMicro top ofBlueTarget a configuration (not to be confused with a Bluetooth Chapter 11 Enterprise Bluetooth Applications with the BlipNet profile). Configurations typically encompass a broad Ericsson classification of devices, and profiles help to narrow Chapter 12 Bluetooth and Jini the scope, while providing more functionality to the configuration. Figure 5-1 shows the J2ME world, and Appendix A - javax.bluetooth the relationship between configurations and profiles. Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 5-1: J2ME Profiles and configurations
for Java Device Profile The Mobile Bluetooth Information by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Now, let's take a Apress look at©what is (by far) the most widely used J2ME Profile: Mobile Information Device 2003 (352 pages) Profile (MIDP). If The you authors have a Java-enabled mobile phone, then it's most Java likely a MIDP device. As stated of this text describe how to develop wireless earlier, the J2MEapplications Profiles extend the functionality of a configuration. The using Bluetooth for a variety of platforms. ThisCLDC provides the following an in API overview of the Javaapplications library, development packages for the includes developer order to create Java for smallof devices: Bluetooth-based services, highlights of security concerns, and
java.lang more. (basic core language classes) java.io (networking classes)
Table of Contents
Bluetooth java.util for Java (utility classes) Introduction
javax.microedition.io (more networking classes) - Introducing Bluetooth
Chapter 1 Chapter 2
- Bluetooth 1.1 Note These are not the full J2SE versions of java.lang,java.io, and java.util APIs. The - Before You Get Started CLDC contains a subset of these packages that's optimized for micro devices.
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter The MIDP 5 -adds Bluetooth thesewith additional J2ME MIDP packages for mobile devices: Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
javax.microedition.lcdui (user interface classes)
Chapter 8 - Using a Bluetooth Simulator (core MIDlet classes) javax.microedition.midlet Chapter 9 - Bluetooth Security
javax.microedition.rms (datawith persistence Chapter 10 - Wireless Embedded Systems the Micro classes) BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
According to the MIDP specification, these are the qualifications for a MIDP 1.0 device:
Chapter 12 - Bluetooth and Jini
Appendix A - javax.bluetooth A minimum screen resolution of 96 54 pixels. Appendix B - javax.obex
A minimum 128kB nonvolatile memory for the MIDP implementation. Appendix C - Java of Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
A minimum of 32kB volatile memory for JVM heap space.
List ofAFigures minimum of 8kB nonvolatile memory for applications to store persistent data. List of Tables
type of input mechanism. List ofSome Listings List of Sidebars
Support for network connectivity. The OS must provide minimal scheduling, exception handling, and interrupt processing. The OS must support writing of bitmapped graphics to display. The OS must be able to accept the input and pass it on to the JVM.
The MIDP 2.0 specification raises the bar by requiring at least 256kB of non-volatile memory, and 128kB of memory for the Java heap space. However, the MIDP 2.0 specification also brings along more functionality for wireless applications, including the following: Secure networking with HTTPS Push applications with the javax.microedition.io.PushRegistry class Standardized serial port communications Wireless application deployment with Over-the-Air provisioning (OTA) Better gaming applications with the javax.microedition.lcdui.game package
Developing MIDlets
What is a MIDlet? A MIDlet is a Java application that runs on a mobile device and uses the Mobile Bluetooth for Java Information Device Profile. MIDlets can be created by extending the ISBN:1590590783 by Bruce Hopkins and Ranjithclass. Antony javax.microedition.midlet.MIDlet A MIDlet has three states in its life cycle: active, Apress © 2003 (352 pages) paused, and destroyed. Those three states correspond to three methods:startApp(),pauseApp(), The authors this MIDlets text describe how to developin wireless anddestroyApp(). One or of more packaged together a JAR Java file constitute a MIDlet suite. applications using Bluetooth for a variety of platforms. This Software on the mobile device (called the application manager) is responsible for loading, running, and includes an API overview of the Java library, development of destroying the MIDlet. Bluetooth-based services, highlights of security concerns, and more.
The skeletal structure of a typical MIDlet looks like this: Table of Contents
import javax.microedition.midlet.MIDlet;
Bluetooth Java MyApplcation extends MIDlet public for class Introduction { Chapter 1
- Introducing publicBluetooth MyApplication()
Chapter 2
- Bluetooth 1.1 {
Chapter 3
- Before } You Get Started
Chapter 4
- Understanding public void the Java startApp() Bluetooth API
Chapter 5
{ - Bluetooth with J2ME MIDP
Chapter 6
} - Creating a Bluetooth Print Server with JPS API
Chapter 7
void pauseApp() - Javapublic and OBEX
Chapter 8
{ a Bluetooth Simulator - Using
Chapter 9
} - Bluetooth Security
public void destroyApp(boolean unconditional) { Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet } Chapter 12 - Bluetooth and Jini } Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API IndexNote Sun has created a very handy tool for MIDlet development called the J2ME Wireless Toolkit.
The tool comes bundled with an emulator and can package, compile, preverify, and run CLDC List of Figures and MIDP applications. The examples in this chapter use this tool, and it is available free from List of Tables the Wireless Java Web site (http://wireless.java.sun.com/). List of Listings List of Sidebars
Using the MIDP User Interface Components The MIDP UI is logically composed of two APIs: high-level and low-level. The high-level API is primarily designed for business applications, and it gives you objects like List,TextBox,ChoiceGroup, and DateField. This API includes a high level of abstraction because you can't define the visual appearance (i.e., shape, color, font, etc.) of those components. When using the high-level UI components, you won't have direct control of the navigation or scrolling, or have direct access to the input device (you can process input, but you won't have direct access to it). All of these items are handled by the MIDP implementation and are device dependent. This abstraction allows the same MIDlet to run on a Blackberry pager as well as on a Palm PDA. Thelow-level API, on the other hand, is designed for applications that need precise placement and control of graphic elements, as well as access to low-level input events. The low-level API is well suited for gaming or entertainment-based applications.
Using the RMS for Persistent Storage So, how do you store persistent data on a micro device? If you think about it, a mobile phone probably wouldn't have a file system in order to store its data. It's really overkill for such a small device that keeps names and phones numbers to have a file system just for data storage. Being aware of this, the J2ME architects have developed a viable alternative to storing data persistently called the RecordManagement System (RMS). The javax.microedition.rms package contains all the functionality that will enable
your classes to read, write, and sort data in the RMS. Bluetooth for Java
ISBN:1590590783 by Bruce Hopkins and Ranjith The RMS is a record-oriented database storedAntony in the nonvolatile memory of the mobile device. Since it is Apress © 2003 (352referred pages) record oriented, the RMS is also to as a flatfile system, where the data is stored in a series of rows in a table, much like theofdata in a conventional database. Each The authors this stored text describe how to develop wireless Javarow will have a unique applications using of Bluetooth a variety of platforms. This5-2. identifier. A logical representation a recordfor store is illustrated in Figure
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started Figure A logical representation of an RMS record store Chapter 4 - 5-2: Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6 class - Creating Bluetooth Print Server with JPS API The main in thea RMS is javax.microedition.rms.RecordStore. This class contains the Chapter 7 Java and OBEX methods for creating, updating, deleting, and querying a record store. A few interfaces are also provided is Chapter 8 - Using Bluetooth Simulator this package, andathey help you whenever you need to enumerate, compare, and filter the data stored Chapter 9 -record Bluetooth Security inside the store. The RMS also includes a listener interface called javax.microedition.rms.RecordListener. you associate this listener with a record store, Chapter 10 - Wireless Embedded Systems with the MicroWhen BlueTarget
the interface reports events that Applications correspondwith to inserts, updates, and deletes of data that are in the record Chapter 11 - Enterprise Bluetooth the Ericsson BlipNet store. 12 - Bluetooth and Jini Chapter Appendix A - javax.bluetooth
Performing I/O with the GCF
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
In order Dfor- J2ME to perform any networking or I/O, they must use the java.io and Appendix BlipNetapplications 1.1 API javax.microedition.io packages. These packages together form the Generic Connection Index Framework List of Figures(GFC). List of Tables
The general philosophy behind the GCF is to create a framework to abstract the communication process
List of Listings through a single class called Connector. You can then use Connector to create any connection like file List of SidebarsTCP/IP socket connections, HTTP connections, etc. In order to open a connection, just use I/O streams,
theopen method: Connector.open("protocol:address:parameters");
If a user wants to open an HTTP connection, the connection URL will look like this: Connector.open("http://mydomain.com");
Working with the Example Code Before you try out any of the examples in this book, it is recommended that you first get your JSR-82 implementation on your development environment installed and configured. If you don't have your development environment set up, then here's a checklist of the things that you need to do: Select a JSR-82 implementation that supports your OS. You can find an updated listing of JSR-82 implementations at the companion Web site for this book: http://www.javabluetooth.com.
Select the Bluetooth hardware that is supported by your JSR-82 implementation. Bluetooth for Java
by configure Bruce Hopkins Ranjith Antony Install and your and development environment.
ISBN:1590590783
Apress © 2003 (352 pages)
Try out the programs thatdescribe are included your wireless JSR-82 Java implementation. Thedemo authors of this text how towith develop applications using Bluetooth for a variety of platforms. This
Determine what stack (if any) is used in the demo includes an APIinitialization overview ofcode the Java library, development of programs. Bluetooth-based services, highlights of security concerns, and
The documentation more. for your JSR-82 implementation really should point out what you need to do in order to initialize your stack. But just in case they don't, a dead ringer would be a class that you need to import that's not part of the javax.bluetooth or javax.obex packages (see Appendices A and Table B offor Contents an exhaustive list). In some cases, your stack initialization code will also be setting the baud rate Bluetooth for Java for your Bluetooth device. Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Stealth Mode Example by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Stealth ModeApress example is (352 a simple © 2003 pages) program that illustrates the concepts of stack initialization, device management, and device discovery. When the program starts, itwireless looks for remote Bluetooth devices as The authors of this text describe how to develop Java shown in Figure 5-3. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 5-3: The application starts, and is now looking for remote Bluetooth devices. Once it finds another device, it goes into nondiscoverable mode, as shown in Figure 5-4.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List ofFigure Figures5-4: After a remote device is found, we now go into stealth mode (i.e., nondiscoverable). List of Tables List of Listings
In this example, we're using the J2ME Wireless Toolkit configured with the Atinav Bluetooth SDK. The Bluetooth device that we're using is a TDK USB module, as shown in Figure 5-5.
List of Sidebars
Figure 5-5: The TDK USB Bluetooth device using a CSR Bluetooth radio The code for this example is shown in Listings 5-1 and 5-2. Listing 5-1: Stealth.java import import import import
javax.microedition.midlet.*; javax.microedition.lcdui.*; javax.bluetooth.*; java.io.*;
import java.util.*; Bluetooth for Java import javax.microedition.io.*; by Bruce Hopkins and Ranjith Antony import com.atinav.bcc.*;
ISBN:1590590783
Apress © 2003 (352 pages) this text describe how used to develop /* The Timer The andauthors the of BeamTsk class is to wireless createJava the beam of applications using Bluetooth for a variety of platforms. * 3 concentric circles blinking. It has no purpose This except visual enhancement. includes an API overview of the Java library, development of */ Bluetooth-based services, highlights of security concerns, and public class more. Stealth extends MIDlet { private Display display; private GUI canvas; Table ofprivate Contents Timer tm; Bluetooth for Java BeamTsk tsk; private Introduction private String dev; Chapterprivate 1 - Introducing Bluetooth device[]; RemoteDevice Chapter 2
- Bluetooth 1.1
Stealth() Chapterpublic 3 - Before You Get Started Chapter{4
- Understanding the Java Bluetooth API
Chapter 5
-display=Display.getDisplay(this); Bluetooth with J2ME MIDP
Chapter 6
GUI(this); -canvas=new Creating a Bluetooth Print Server with JPS API
Chapter 7
-tm=new Java and Timer(); OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
tsk=new BeamTsk(canvas); tm.schedule(tsk,1000,1000);
} protected void startApp() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet { Chapter 12 - Bluetooth and Jini display.setCurrent(canvas); Appendix } A - javax.bluetooth Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform protected void pauseApp() Appendix { D - BlipNet 1.1 API Index } List of Figures
public void destroyApp(boolean unconditional) { List of Tables } List of Listings public void exitStealth() List of Sidebars { destroyApp(true); notifyDestroyed(); } public void exitTimer(){ tm.cancel(); tsk.cancel() ; } } class GUI extends Canvas implements CommandListener{ private Command exitCommand; private Image img=null; private Image imgArc=null; private Stealth midlet; public int i=0; // used for creating the beam public int count=0; // used to create the blinking public boolean cancel=false; int x=30; int y=30; int wd=5; int ht=10;
public GUI(Stealth midlet){ Bluetooth for Java this.midlet=midlet; ISBN:1590590783 by Bruce HopkinsCommand("Exit",Command.EXIT,1); and Ranjith Antony exitCommand=new Apress © 2003 (352 pages) addCommand(exitCommand); The authors of this text describe how to develop wireless Java setCommandListener(this); applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of try {Bluetooth-based services, highlights of security concerns, and img=Image.createImage("/phone.png"); more.
} catch (java.io.IOException e){ Table of Contents System.err.println("Unnable to locate or read image (.png) file"); Bluetooth for}Java Introduction try{ Chapter 1 - Introducing Bluetooth BCC.setPortName("COM1"); Chapter 2 - Bluetooth BCC.setBaudRate(57600); 1.1 BCC.setConnectable(false); Chapter 3 - Before You Get Started LocalDevice localDevice Chapter 4 - Understanding the Java Bluetooth API = LocalDevice.getLocalDevice(); discoveryAgent Chapter 5 - Bluetooth with J2ME MIDP = localDevice.getDiscoveryAgent(); device = new RemoteDevice[10]; Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7 - Java discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this); and OBEX }catch(BluetoothStateException btstateex) Chapter 8 - Using a Bluetooth Simulator { Chapter 9 - Bluetooth Security btstateex.printStackTrace(); Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget } Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
}
Appendixpublic A - javax.bluetooth void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) Appendix B - javax.obex { Appendix C - Java/* Bluetooth Development on the PalmOS The method is fired every Platform time a device is discovered. Appendix D - BlipNet 1.1 API * The inquiry is cancelled after the first device is discovered. Index List of Figures List of Tables
*/ BCC.setDiscoverable(DiscoveryAgent.NOT_DISCOVERABLE); cancelInquiry(discoveryAgent);
List of Listings }
public void inquiryCompleted(int discType) List of Sidebars { cancel=true; this.notify(); } /** * paint */ public void paint(Graphics g) { if (i==0){ // Used to clear the portion of the screen g.setColor(255,255,255); g.fillRect(25,10,50,70); } else { // draw the image of phone at given // coordinates at the top left of the screen g.drawImage(img,10,30,Graphics.LEFT|Graphics.TOP); // draw a string at the bottom left g.drawString("Me",10,45+img.getHeight(),Graphics.LEFT|
Graphics.BOTTOM); Bluetooth for Java if (!cancel){ ISBN:1590590783 by Bruce Ranjithcoordinates Antony // draw an Hopkins arc atand given Apress © 2003 (352 pages) g.drawArc(x,y,wd,ht,270,180); The authors of this text describe how to develop wireless Java } applications using Bluetooth for a variety of platforms. This else{
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and g.drawImage(img,90,30,Graphics.RIGHT|Graphics.TOP); more.
g.drawString("I am in Stealth Mode",2,100,Graphics.LEFT| Graphics.BOTTOM); Table of Contents try { Bluetooth forimg=Image.createImage("/phonegray.png"); Java Introduction }catch (Exception e){e.printStackTrace();} Chapter 1 -g.drawImage(img,10,30,Graphics.LEFT|Graphics.TOP); Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
; -midlet.exitTimer() Before You Get Started
Chapter}4
- Understanding the Java Bluetooth API
} 5 Chapter
- Bluetooth with J2ME MIDP
} Chapter 6
- Creating a Bluetooth Print Server with JPS API public c, Displayable s) { Chapter 7 void - Java commandAction(Command and OBEX Chapter 8
- Using a Bluetooth Simulator
if (c == exitCommand) - Bluetooth Security midlet.exitStealth();
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
}
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
}
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Listing 5-2: BeamTsk.java Appendix D - BlipNet 1.1 API Index
import java.util.*; public class BeamTsk extends TimerTask {
List of Figures List of Tables
List of Listings private GUI canvas; List of Sidebars /** Creates a new instance of BeamTsk */
public BeamTsk(GUI canvas) { this.canvas=canvas; } public void run() { //if (canvas.count>5) // canvas.cancel=true; if (canvas.i<3) canvas.i=canvas.i+1; else canvas.i=0; switch (canvas.i){ case 1:{ canvas.x=30; canvas.y=30; canvas.ht=10; break; } case 2 :{ canvas.x=canvas.x+5; canvas.y=canvas.y-3;
canvas.ht=canvas.ht+6; Bluetooth break; for Java ISBN:1590590783 } by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) case 3:{ The authors of this text describe how to develop wireless Java canvas.x=canvas.x+5; applications using Bluetooth for a variety of platforms. This canvas.y=canvas.y-3; includes an API overview of the Java library, development of canvas.ht=canvas.ht+6; Bluetooth-based services, highlights of security concerns, and canvas.count=canvas.count+1; more. break;
} Table } of Contents Bluetooth for Java canvas.repaint(); Introduction } Chapter 1 }
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
BluetoothExample for Java Piconet Browser by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Piconet Browser is © a 2003 handy Apress (352utility pages)that demonstrates all the concepts presented in the last example and also includes theThe functionality of service discovery. It'storeally something authors of this text describe how develop wireless that Javayou would want to keep with you at all times, so after you get this example working, be sure to load it on your mobile phone or PDA. applications using Bluetooth for a variety of platforms. This an you API can overview of theBluetooth Java library, development Using the Piconetincludes Browser, see what devices are in theofvicinity. After the list is displayed, Bluetooth-based services, highlights of security concerns, you can select a particular Bluetooth device to see what services it offers.and more.
The algorithm for this example is pretty simple. First, the MIDlet creates a form and displays it with buttons labeled Search and Exit (see Figure 5-6). Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 5-6: The initial screen for the Piconet Browser application After pressing the Search button, the application performs a device discovery, and displays the search results (see Figure 5-7).
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures
Figure 5-7: The Piconet Browser displays a list of Bluetooth devices in the area.
List of Tables
List of Listings
After you select a Bluetooth device, the application will display the services that it offers (see Figure 5-8). List of Sidebars
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List ofFigure Figures5-8: The Piconet Browser now displays the services offered by the remote device. List of Tables List of Listings
Listing 5-3 shows the code for the Piconet Browser. List of Sidebars Listing 5-3: PiconetMIDlet.java. import import import import import import
javax.microedition.midlet.*; javax.microedition.lcdui.*; javax.bluetooth.*; java.io.*; javax.microedition.io.*; com.atinav.bcc.*;
public class PiconetMIDlet extends javax.microedition.midlet.MIDlet implements CommandListener,DiscoveryListener{ private LocalDevice localDevice=null; private RemoteDevice device=null; private DiscoveryAgent discoveryAgent = null; private Command exitCommand; // The exit command private Command srchCommand; //The search command private Command backCommand; private Display display; private Form frm;
// The display for this MIDlet
private List deviceLst; Bluetooth for Java private List ServiceLst; ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) int count = 0; The authors of this text describe how to develop wireless Java applications using private String[] dev Bluetooth = null;for a variety of platforms. This includes an API overview of the Java library, development of private Image img[] services, =null; highlights of security concerns, and Bluetooth-based private String[] services=null; more.
public void startApp() { Table of Contents display = Display.getDisplay(this); Bluetooth forexitCommand Java = new Command("Exit", Command.EXIT, 1); Introduction srchCommand=new Command("Search",Command.SCREEN,1); Chapter 1 Chapter 2
-backCommand= Introducing Bluetooth new Command("Back",Command.BACK,1); -frm=new Bluetooth 1.1 Form("Piconet Browser");
Chapter 3
-frm.addCommand(srchCommand); Before You Get Started
Chapter 4
-frm.addCommand(exitCommand); Understanding the Java Bluetooth API
Chapter 5
-frm.setCommandListener(this); Bluetooth with J2ME MIDP
Chapter 6
-display.setCurrent(frm); Creating a Bluetooth Print Server with JPS API
Chapter}7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
public void pauseApp() { - Bluetooth Security }
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
public void destroyApp(boolean unconditional) { } Appendix A - javax.bluetooth public void commandAction(Command c, Displayable s) { Chapter 12 - Bluetooth and Jini Appendix B - javax.obex Appendix C -if Java(c Bluetooth Development on{the PalmOS Platform == exitCommand) Appendix D - BlipNet 1.1 API destroyApp(false); Index
notifyDestroyed();
List of Figures } List of Tablesif (c == srchCommand) {
try{ BCC.setPortName("COM1"); BCC.setBaudRate(57600); BCC.setConnectable(false); BCC.setDiscoverable(DiscoveryAgent.NOT_DISCOVERABLE); LocalDevice localDevice = LocalDevice.getLocalDevice(); //device = new RemoteDevice[10]; discoveryAgent = localDevice.getDiscoveryAgent(); discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this); }catch(BluetoothStateException btstateex) { btstateex.printStackTrace(); }
List of Listings
List of Sidebars
try{ deviceLst=new List("Devices",List.IMPLICIT,dev,img); deviceLst.addCommand(exitCommand); srchCommand=null; srchCommand=new Command("Refresh",Command.SCREEN,1); deviceLst.addCommand(srchCommand); deviceLst.setCommandListener(this); display.setCurrent(deviceLst);
System.out.println(deviceLst.getSelectedIndex()); Bluetooth for Javae){e.printStackTrace();} }catch (Exception ISBN:1590590783 by Bruce Hopkins and Ranjith Antony } Apress © 2003 (352 pages) if (c==List.SELECT_COMMAND){ The authors of this text describe how to develop wireless Java int index=deviceLst.getSelectedIndex(); applications using Bluetoothfor for adevice[index] variety of platforms. This //do service search includes an API overview of the Java library, development of int[] attrSetservices, = {100}; Bluetooth-based highlights of security concerns, and UUID[] more. uuids = new UUID[1]; uuids[0] = new UUID("9856",true); services=null; Table of Contents int transId=discoveryAgent.searchServices(attrSet,uuids, Bluetooth for Java device[i],PiconetMIDlet); Introduction Chapter 1 Chapter 2
- Introducing Bluetooth ServiceLst=new List("Service",List.IMPLICIT); - Bluetooth for (int 1.1 k=0;k<services.length;k++)
Chapter 3
- Before YouServiceLst.append(services[k],null); Get Started
Chapter 4
ServiceLst.addCommand(backCommand); - Understanding the Java Bluetooth API
Chapter 5
ServiceLst.setCommandListener(this); - Bluetooth with J2ME MIDP
Chapter 6
display.setCurrent(ServiceLst); - Creating a Bluetooth Print Server with JPS API
Chapter 7
-}Java and OBEX
if (c == backCommand) { display.setCurrent(deviceLst); Chapter 9 - Bluetooth Security } Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget } Chapter 8
- Using a Bluetooth Simulator
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) Appendix B - javax.obex { Appendix C Bluetooth Development on the PalmOS /*- Java Store the device address in thePlatform array which will be Appendix D *- BlipNet 1.1 API used to create the device list. Index
* the getBluetoothAddress() returns the Bluetooth address as a string.
List of Figures */
device[count]=btDevice; List of Tables //Check the type of device so that the appropriate image can be selected List of Listings try{ List of Sidebars if (cod.getMinorDeviceClass()==0x04) img[count]=Image.createImage("/phone.png"); else if (cod.getMinorDeviceClass()==0x0C) img[count]={Image.createImage("/laptop.png")}; else img[count]={Image.createImage("/misc.png")}; } catch (Exception e){e.printStackTrace();} count++; } public void servicesDiscovered(int transID,ServiceRecord[] servRecords) { for(int i=0;i<servRecords.length;i++) services[i]=servRecords[i].getAttributeValue(0x0100); synchronized(this){ this.notify(); } }
public void serviceSearchCompleted(int transID, int respCode)
{if(respCode==SERVICE_SEARCH_ERROR){ Bluetooth for Java System.out.println("\nSERVICE_SEARCH_ERROR\n"); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony } Apress © 2003 (352 pages) if(respCode==SERVICE_SEARCH_COMPLETED){ The authors of this text describe how to develop wireless Java // System.out.println("\nSERVICE_SEARCH_COMPLETED\n"); applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of } Bluetooth-based services, highlights of security concerns, and if(respCode==SERVICE_SEARCH_TERMINATED){ more.
System.out.println("\n SERVICE_SEARCH_TERMINATED\n"); } Tableif(respCode of Contents == SERVICE_SEARCH_NO_RECORDS){ Bluetooth forservices[0]=" Java None"; Introduction synchronized(this){ Chapter 1 - Introducing Bluetooth this.notify(); Chapter 2 - Bluetooth } 1.1 SERVICE_SEARCH_NO_RECORDS\n"); Chapter 3 System.out.println("\n - Before You Get Started } 4 - Understanding the Java Bluetooth API Chapter if(respCode Chapter 5 - Bluetooth== withSERVICE_SEARCH_DEVICE_NOT_REACHABLE) J2ME MIDP SERVICE_SEARCH_DEVICE_NOT_REACHABLE\n"); Chapter 6 System.out.println("\n - Creating a Bluetooth Print Server with JPS API } 7 - Java and OBEX Chapter Chapter 8
- Using a Bluetooth Simulator
public void inquiryCompleted(int discType) - Bluetooth Security { Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget this.notify(); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet } Chapter 9
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth } Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
In order to port these examples to another JSR-82 SDK, just remove the import statement: List of Figures List of Tables List of Listings import com.atinav.bcc.*; List of Sidebars
and the stack initialization code: BCC.setPortName("COM1"); BCC.setBaudRate(57600); BCC.setConnectable(false); BCC.setDiscoverable(DiscoveryAgent.NOT_DISCOVERABLE);
Your code is now 100 percent JSR-82 compatible. The next step is to follow the instructions of your JSR-82 implementation on how to initialize your stack. In some cases, as with the Rococo implementation, no additional code is needed at all.
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter gaveApress you your first fully working example of a wireless application using Java and Bluetooth. © 2003 (352 pages) We gave you twoThe examples, and together they demonstrated stack initialization, device management, authors of this text describe how to develop wireless Java device discovery,applications and serviceusing discovery. The Piconet Browser is a good utility program that you'll probably Bluetooth for a variety of platforms. This antimes. API overview of the Java library, development of want to keep withincludes you at all Bluetooth-based services, highlights of security concerns, and more. If any concepts are unclear to you, right now would be a good time to review them, because in the next
chapter we'll demonstrate communication by printing, and we'll also take a look at the JPS API. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 6: Creating a BluetoothISBN:1590590783 Print Server with JPS by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) API The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.many (if not all) printers will include a Bluetooth interface. You'll be able to walk up to In the years to come,
Highlights
any printer, download its drivers, and print to it using the Hardcopy Cable Replacement Profile. Unfortunately, that's not the case today. A large majority of the printers on the market today do not have a Table of Contents Bluetooth interface, and in order to make them Bluetooth enabled, you need to add a Bluetooth printer Bluetooth for Java adapter, like the one shown in Figure 6-1. Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - 6-1: Bluetooth and use Jini the 3Com Wireless Bluetooth Printer Adapter in order to make a traditional Figure You can Appendix - javax.bluetooth (i.e.,Anon-Bluetooth) printer Bluetooth enabled. Appendix B - javax.obex
Let's sayCthat youBluetooth have a mobile Bluetooth device that Platform is capable of printing (for instance, a laptop or Appendix - Java Development on the PalmOS PDA). Whether you're business user or a home user, you most likely would want to print to the printers Appendix D - BlipNet 1.1 a API that you already have connected to your desktop computer. If you're a consumer with one or two printers Index in your home, then you may need to buy a few printer adapters for the printers that are not Bluetooth enabled (which is somewhat practical, but can get really expensive if you have more printers). On the List of Tables other hand, if you're a business user, you probably have a whole network of printers available at your List of Listings disposal. Buying a printer adapter for each and every printer in a corporate environment really doesn't List of Sidebars make a lot of sense. List of Figures
This chapter gives you a handy utility that will turn your desktop computer into a Bluetooth print server using the Java Print Service (JPS) API. If your desktop computer already has the drivers and mappings that are necessary to print to your printers, why not utilize it? Your mobile device can submit print jobs to your desktop computer, and your desktop will automatically print the file to one of your printers using JPS (see Figure 6-2).
Figure 6-2: Using the handy utility provided in this chapter, you can turn your desktop into a Bluetooth print server.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java JPS Overview by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The relationship between a printer and its client is pretty simple. The client needs to answer two questions: Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java
What to print? applications using Bluetooth for a variety of platforms. This
includes an API overview of the Java library, development of
How to print it? Bluetooth-based services, highlights of security concerns, and more.
In turn, the printer also needs to answer two questions: What's the status of the printer itself? Table of Contents Bluetooth for Java
What's the status of the print job?
Introduction
Chapter 1 - Introducing Bluetooth The exchange of information between the printer and its client takes place by means of three entities Chapter 2 JPS - Bluetooth 1.1 within the architecture: documents,attributes, and events. Chapter 3
- Before You Get Started Note consists of the following packages: javax.print, Chapter 4 Consequently, - Understandingthe theJPS JavaAPI Bluetooth API
javax.print.attribute.standard, and Chapter 5 javax.print.attribute, - Bluetooth with J2ME MIDP Chapter 6 javax.print.event. - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
- Using a Bluetooth Simulator Documents
Chapter 8 Chapter 9
- Bluetooth Security By far, 10 the-most important pieceSystems of data with that the will Micro be exchanged Chapter Wireless Embedded BlueTargetbetween the client and the printer is the
document In JPSBluetooth terminology, the term document is used in a generic sense; it only refers to the Chapter 11 -itself. Enterprise Applications with the Ericsson BlipNet item to 12 be -printed. A document Chapter Bluetooth and Jini could be an image, a style sheet, an actual text document, or anything
that's printable. The classes that will enable you to create a document are included in the javax.print package. This package also has functionality that will allow you to create documents of well-known data Appendix B - javax.obex formats such as HTML, PostScript, GIF, and JPEG. Appendix A - javax.bluetooth
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Attributes
Index
List of Figures
Of course, you'll have to do more than just give the printer a document; you also need to tell the printer what exactly needs to be done to the document. Print attributes will indicate to the printer things such as List of Listings the size of the paper required, how many copies to print, the number of pages, and duplexing. The List of Sidebars packages javax.print.attribute and javax.print.attribute.standard allow you to create these attributes. List of Tables
Events The JPS event model is pretty simple; after you've submitted a print job to the printer, the printer will inform you of its status through events. You can be notified of things like the printer's on/off status, the number of pages printed, and so on. The javax.print.event package deals with creating and handling these events.
Bluetooth for Application Java A Step-by-Step JPS by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Let's walk through a simple JPS Along the way, we'll identify major classes and interfaces that Apress © 2003 (352application. pages) are a part of the JPS API. Now, in order to create a Java Print Service you need to do the The authors of this text describe how to develop wirelessapplication, Java following: applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
1. Identify theBluetooth-based format of the data to be printed (i.e., GIF, JPEG, PDF, HTML, etc.). services, highlights of security concerns, and more.
2. Search for a print service that supports your data format. a print job and submit it. Table3.of Create Contents Bluetooth for Java
4. Listen for status updates (optional).
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Printers and Print Services
If you're new toYou theGet JPS, you may say to yourself, "I know what a printer is, but what's a print service?" Chapter 3 - Before Started In JPS, a javax.print.PrintService Chapter 4 - Understanding the Java Bluetooth APIobject is a logical representation of an actual printer. So instead of printingwith to aJ2ME printer, you'll print to a print service. Chapter 5 - Bluetooth MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Identifying theSecurity Format - Bluetooth
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
The first thing to do is identify the data format. The class that allows you to do this is javax.print.DocFlavor. For instance, if you wanted to tell the print service that you want to print out Chapter 12 - Bluetooth and Jini GIF files, then the code would look something like this: Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Appendix A - javax.bluetooth Appendix B - javax.obex
DocFlavor docflavor = DocFlavor.INPUT_STREAM.GIF;
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Index The JPS also has the functionality built in to print other popular binary formats like PDF, PostScript, PNG, List Figures andofJPEG. List of Tables List of Listings
Creating a Document
List of Sidebars
Now that you've specified a document format, the next step is to create a document. All documents in JPS must implement the javax.print.Doc interface. You can implement this interface yourself, or you can use the javax.print.SimpleDocobject to encapsulate your data into a document. Following is a snippet of code that demonstrates how to create a document from a GIF file: DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; FileInputStream fInput = new FileInputStream("nicePic.gif"); Doc doc = new SimpleDoc(fInput, flavor, null);
Searching for a Print Service Now it's time to find a suitable printer for your needs. In the JPS, you'll never interact directly with a printer; you will always have to interact with a print service that represents that printer. So, when you are searching for a printer (either connected peripherally to your computer, or somewhere on your network), you are searching for print services. The code that follows shows you how to search for a print service that can print GIF files. In addition, this example also demonstrates how to specify some print attributes; this print service is capable of printing two copies, double-sided, on A4 size paper.
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; Bluetooth for Java PrintRequestAttributeSet attribSet = new HashPrintRequestAttributeSet(); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony attribSet.add(new Copies(2)); Apress © 2003 (352 pages) attribSet.add(MediaSizeName.ISO_A4); The authors of this text describe how to develop wireless Java attribSet.add(Sides.TWO_SIDED_LONG_EDGE); applications using Bluetooth for a variety of platforms. This PrintService[] services = includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and PrintServiceLookup.lookupPrintServices(flavor, attribSet); more.
As you can see, the static method lookupPrintServices() from the class javax.print.PrintServiceLookup returns an array of PrintService objects. Bluetooth for Java EachPrintService represents a printer that is capable of printing according to the attributes that you Introduction specified.
Table of Contents
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Creating a Print Job and Printing - Before You Get Started
Chapter 3
Chapter 4 - done, Understanding the Java API After that's the next step is toBluetooth create the print job and submit the job to a print service. Once you Chapter 5 Bluetooth with J2ME MIDP have an instance of a PrintService object, just call the createPrintJob() method, and it will return Chapter 6 - Creating a Bluetooth Server JPS API aDocPrintJob object (which isPrint a print job).with In order to print, just call the print() method on the Chapter 7 Java and OBEX DocPrintJobobject and provide it with the document that you want to print as well as the print Chapter 8 -The Using a Bluetooth Simulator attributes. code snippet that follows shows how to create a print job and submit it: Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded with the Micro BlueTarget DocPrintJob printJob = Systems services[0].createPrintJob(); Chapter try{ 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini printJob.print(doc, attribSet); Appendix } catch A -(PrintException javax.bluetooth e){
} Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Listening for Status Updates
Index
List of Figures
Optionally, List of Tablesyou can listen to status updates on your print job after you have submitted it. For instance, if youofhaven't List Listingsreceived an update from the printer in a while, you may also want to get a status update on the printer itself (it may be out of paper or something). The classes that enable you to do this are List of Sidebars javax.print.event.PrintServiceAttributeListener, javax.print.event.PrintJobAttributeListener, and javax.print.event.PrintJobListener. By implementing these interfaces, you'll receive callbacks from the JVM upon changes in state of the printer or the print job.
for Java A CompleteBluetooth JPS Application: JPSPrint by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Listing 6-1 showsApress the complete source © 2003 (352 pages) for JPSPrint.java, summarizing all the material that we've covered so far. It The includes an inner named how PrintStatus, which implements the authors of this class text describe to develop wireless Java PrintJobListener interface. This code will provide the status of a print job by displaying a few text applications using Bluetooth for a variety of platforms. This an line API overview of the Java library, development of messages at the includes command Bluetooth-based services, highlights of security concerns, and more. Listing 6-1: JPSPrint.java Table of Contents import java.io.*; Bluetooth import for javax.print.*; Java
import javax.print.event.*; Introduction import Chapter 1 javax.print.attribute.*; - Introducing Bluetooth import Chapter 2 javax.print.attribute.standard.*; - Bluetooth 1.1 Chapter 3
- Before You Get Started class4 PrintStatus PrintJobListener { Chapter - Understandingimplements the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
public void printDataTransferCompleted(PrintJobEvent pje) { - Creating a Bluetooth Print Server with JPS API System.out.println("Data delivered to printer successfully..."); Chapter 7 - Java and OBEX } Chapter 8 - Using a Bluetooth Simulator public void printJobCanceled(PrintJobEvent pje) { Chapter 9 - Bluetooth Security System.out.println("The print job has been cancelled..."); Chapter}10 - Wireless Embedded Systems with the Micro BlueTarget Chapterpublic 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet void printJobCompleted(PrintJobEvent pje) { Chapter 12 System.out.println("The - Bluetooth and Jini print job completed successfully..."); Appendix } A - javax.bluetooth Appendix B - javax.obex public void printJobFailed(PrintJobEvent pje) { Appendix C System.out.println("The - Java Bluetooth Development on the document PalmOS Platform failed to print .."); } D - BlipNet 1.1 API Appendix Index public void printJobNoMoreEvents(PrintJobEvent pje) { System.out.println("No more events to deliver..."); List of Figures } List of Tables public void printJobRequiresAttention(PrintJobEvent pje) { List of Listings System.out.println("Something terrible" + List of Sidebars "happened which requires attention..."); } } Chapter 6
public class JPSPrint { public static void main(String args[]) throws FileNotFoundException{ PrintStatus status = new PrintStatus(); // Create the DocFlavor for GIF DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; // Create an attribute set comprising of the print instructions PrintRequestAttributeSet attribSet = new HashPrintRequestAttributeSet(); attribSet.add(new Copies(1)); attribSet.add(MediaSizeName.ISO_A4); // Locate print services, which can print a GIF in the manner specified PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, attribSet);
if (pservices.length > 0) { Bluetooth for Java ISBN:1590590783 by Bruce Hopkins Ranjith Antony DocPrintJob job = and pservices[0].createPrintJob();
Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java // Adding a PrintStatus Listener applications using Bluetooth for a variety of platforms. This job.addPrintJobListener(status);
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and // Create more. a Doc implementation to pass the print data
FileInputStream fInput = new FileInputStream("nicePic.gif"); Doc doc = new SimpleDoc(fInput, flavor, null); Table of Contents Bluetooth for //Java Print the doc as specified Introductiontry { Chapter 1
- Introducing Bluetooth attribSet); job.print(doc, Chapter 2 }- Bluetooth 1.1
e) { Chapter 3 catch - Before (PrintException You Get Started System.err.println(e); - Understanding the Java Bluetooth API Chapter 5 }- Bluetooth with J2ME MIDP Chapter 4 Chapter}6
- Creating a Bluetooth Print Server with JPS API
Chapterelse 7 - Java and OBEX
System.err.println("No suitable printers"); - Using a Bluetooth Simulator
Chapter 8
}
Chapter 9
}
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Caution The JPS API is a part of JDK 1.4, and older versions of the JDK are not capable of running Appendix B - javax.obex the JPSPrint example. Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Bluetooth Java IntegratingBluetooth JPS and by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Now that you have a full©working of a JPS application under your belt, let's see what it will take in order Apress 2003 (352example pages) to turn this ordinary JPS print service into a Bluetooth-enabled, print server (refer back to Figure 6-2). The authors of this text describe how to develop wireless wireless Java applications using Bluetooth for a variety of platforms. This
The algorithm forincludes the application is pretty of simple. Thelibrary, computer that functions as the print server will start an an API overview the Java development of Bluetooth-based highlights of incoming security concerns, and L2CAP server and wait for clientsservices, to connect. After an file is received by the server, it is printed to a more. printer using the JPS API. Note As you may have already guessed, this application won't work if you use a JSR-82-compliant Java Bluetooth development kit. Why? Well, as we stated in Chapter 3, the official Java Bluetooth API has Bluetooth for Java a dependency on the Generic Connection Framework (GCF) to exist, which unfortunately is not a part Introductionof the J2SE JDK 1.4.
Table of Contents
Chapter 1
- Introducing Bluetooth
Chapter 2
That doesn't1.1 mean that Java Bluetooth development kits don't exist for the J2SE. In fact, Atinav, - Bluetooth Rococo, and Zucotto all make Java Bluetooth development kits for the J2SE. At the time of this - Before You Get Started writing, Atinav's and Rococo's J2SE implementation closely matches that of the JSR-82 - Understanding the Java Bluetooth API implementations. The next example uses the Atinav J2SE Bluetooth development kit. - Bluetooth with J2ME MIDP
Chapter 3 Chapter 4 Chapter 5
Chapter a Bluetooth Server with API example, JPSBluetoothPrint.java. As you can Listing 66-2-isCreating the server code forPrint the wireless printJPS server Chapter 7 Java and OBEX see, it is simply the JPSPrint.java example with a little Bluetooth code thrown in. All the wireless Chapter 8 - Using a Bluetooth in Simulator functionality is encapsulated the method connectToClientAndPrint(). When this method is called, the Chapter 9 -wait Bluetooth server will until a Security client attempts to connect at an L2CAP channel. After the client connects and sends a Chapter - Wireless Embedded Systems the Micro BlueTarget file, the10 server will attempt to print it withwith its printFile() method. Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Listing12 6-2: JPSBluetoothPrint.java Chapter - Bluetooth and Jini Appendix A - javax.bluetooth Appendix - javax.obex importB java.io.*; Appendix importC javax.print.*; - Java Bluetooth Development on the PalmOS Platform
importD javax.print.event.*; Appendix - BlipNet 1.1 API import javax.print.attribute.*; Index import javax.print.attribute.standard.*; List of Figures import javax.bluetooth.*; List of Tables import com.atinav.standardedition.io.*; List of Listings List of Sidebars
class PrintStatus implements PrintJobListener { public void printDataTransferCompleted(PrintJobEvent pje) { System.out.println("Data delivered to printer successfully..."); } public void printJobCanceled(PrintJobEvent pje) { System.out.println("The print job has been cancelled..."); } public void printJobCompleted(PrintJobEvent pje) { System.out.println("The print job completed successfully..."); } public void printJobFailed(PrintJobEvent pje) { System.out.println("The document failed to print .."); } public void printJobNoMoreEvents(PrintJobEvent pje) { System.out.println("No more events to deliver..."); } public void printJobRequiresAttention(PrintJobEvent pje) { System.out.println("Some thing terrible happened which" + "requires attention..."); }
} Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) public class JPSBluetoothPrint implements Runnable { The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This L2CAPConnection l2capConn = null; includes an API overview of the Java library, development of private int maxRecv =services, -1; highlights of security concerns, and Bluetooth-based more.
private boolean printFile(String fileName) throws FileNotFoundException{ Table of Contents System.out.println("Invoking Common printAPI for printing file : "+ Bluetooth for Java fileName); Introduction Chapter 1 PrintStatus - Introducing Bluetooth status = new PrintStatus(); Chapter 2 - Bluetooth 1.1
Create DocFlavor for GIF Chapter 3 //- Before Youthe Get Started flavor = DocFlavor.INPUT_STREAM.GIF; Chapter 4 DocFlavor - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP Createa an attribute setwith comprised of the print instructions Chapter 6 //- Creating Bluetooth Print Server JPS API
attribSet = new HashPrintRequestAttributeSet(); Chapter 7 PrintRequestAttributeSet - Java and OBEX Chapter 8 Chapter 9
attribSet.add(new Copies(1)); - Using a Bluetooth Simulator attribSet.add(MediaSizeName.ISO_A4); - Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
// Locate print services, which can print a GIF in the manner specified PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, Chapter 12 - Bluetooth and Jini attribSet); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Appendix A - javax.bluetooth Appendix B if- javax.obex (pservices.length > 0) { Appendix C - Java Bluetooth Development on the PalmOS Platform DocPrintJob job = pservices[0].createPrintJob(); Appendix D - BlipNet 1.1 API Index
// Adding a PrintStatus Listener
List of Figures job.addPrintJobListener(status); List of Tables List of Listings // Create a Doc implementation to pass the print data List of Sidebars FileInputStream fInput = new FileInputStream(fileName);
Doc doc = new SimpleDoc(fInput, flavor, null); // Print the doc as specified try { job.print(doc, attribSet); } catch (PrintException e) { System.err.println(e); } } else System.err.println("No suitable printers"); return true; } public void connectToClientAndPrint() throws Exception { System.out.println("Host Device = "+ LocalDevice.getLocalDevice().getBluetoothAddress()); String url = "btl2cap://localhost:" + uuid + ";name=simplePrintServer"; UUID uuid = new UUID("6666", true);
L2CAPConnectionNotifier l2capNotifier = Bluetooth for Java (L2CAPConnectionNotifier) Connector.open(url); ISBN:1590590783 by Bruce and Ranjith Antony l2capConn = Hopkins l2capNotifier.acceptAndOpen(); Apress © 2003 (352 pages) maxRecv = l2capConn.getReceiveMTU(); The authors of this text describe how develop wireless Java System.out.println("Connected toto a client..." + applications using Bluetooth for a variety of platforms. This "+ maxRecv); "Receive buffer Size is: includes an API overview of the Java library, development of new Thread(this).start(); Bluetooth-based services, highlights of security concerns, and }
more.
public void run() { Table of Contents try { Bluetooth for Java // packet receive Introduction byte [] data =
new byte[maxRecv];
Chapter 1
- Introducing Bluetooth // Reading fileName
Chapter 2
- Bluetooth // blocks 1.1 assuming fileName always less than 48 bytes
Chapter 3
int You dataSize = l2capConn.receive(data); - Before Get Started
Chapter 4
byte [] fileNameAsBytes - Understanding the Java Bluetooth API= new byte[dataSize];
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
System.arraycopy(data,0,fileNameAsBytes, 0,dataSize); - Creating a Bluetooth Print Server with JPS API
Chapter 7
String fileName = new String(fileNameAsBytes); - Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
System.out.println("File Name is = "+ fileName); FileOutputStream toFileStrm = new FileOutputStream(new File(fileName));
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
try {
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth System.out.println("Starting to Receive file Body"); Appendix B - javax.obex Appendix C - Java Bluetooth Development the PalmOS Platform // receive File on body Appendix D - BlipNetwhile(true) 1.1 API { Index if (l2capConn.ready()) { List of Figures dataSize = l2capConn.receive(data); List of Tables List of Listings List of Sidebars
// after the whole file, an empty packet is sent from // the other end if (dataSize == 0) { System.out.println("Signal to Stop recieved"); toFileStrm.close(); toFileStrm = null; printFile(fileName); break; } toFileStrm.write(data, 0, dataSize); } try { Thread.currentThread().sleep(10); }catch(Exception genExp) {} } } finally { try {l2capConn.close();}catch(Exception genExp) {} }
} catch(Exception genEx) { } }
public static void main(String [] args) throws Exception { Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Antony JPSBluetoothPrint srvRanjith = new JPSBluetoothPrint(); Apress © 2003 (352 pages) srv.connectToClientAndPrint();
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
} }
Listing 6-3 has the code that a client would use in order to submit a file to the print server. This code would run Table of Contents on any Bluetooth-enabled J2ME device. Bluetooth for Java
Listing 6-3: JPSBluetoothPrintClient.java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2 java.io.*; - Bluetooth 1.1 import Chapter 3 java.util.*; - Before You Get Started import Chapter import 4 javax.bluetooth.*; - Understanding the Java Bluetooth API
import Chapter 5 javax.obex.*; - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API public JPSBluetoothPrintClient implements DiscoveryListener { Chapter 7 class - Java and OBEX
local Simulator = null; ChapterLocalDevice 8 - Using a Bluetooth agent = null; ChapterDiscoveryAgent 9 - Bluetooth Security int[] attrSet = null; RemoteDevice btDev = null; Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet String serviceURL = null; Chapter 12 - Bluetooth and Jini L2CAPConnection l2capConn = null; Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix A - javax.bluetooth Appendix B - javax.obex
public JPSBluetoothPrintClient() throws BluetoothStateException {
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D local - BlipNet=1.1 API LocalDevice.getLocalDevice(); Index agent = local.getDiscoveryAgent(); List of Figures agent.startInquiry(DiscoveryAgent.GIAC, this); List of Tables synchronized(this){ //Waiting for Device Inquiry to be completed List of Listings try{ List of Sidebars
this.wait(); }catch(Exception IntE){ System.out.println(IntE.getMessage()); }
} } public void deviceDiscovered(RemoteDevice btDevice,DeviceClass cod){ if ("011114378000".indexOf(btDevice.getBluetoothAddress())> -1){ btDev = btDevice;System.out.println("Assigned"); } System.out.println("Device discovered "+btDevice.getBluetoothAddress()); } public void servicesDiscovered(int transID, ServiceRecord[] servRecord){ System.out.println("Discovered a service.... "); for(int i =0; i < servRecord.length; i++){ serviceURL = servRecord[i].getConnectionURL (ServiceRecord.NOAUTHENTICATE_NOENCRYPT,true); System.out.println("The service URL is "+serviceURL); }
} Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony public void serviceSearchCompleted(int transID, int respCode){ Apress © 2003 (352 pages) System.out.println("Service search completed.......... . "); The authors of this text describe how to the develop wireless synchronized(this){ //Unblocking wait forJava Service search complete applications using Bluetooth for a variety of platforms. This try{ includes an API overview of the Java library, development of this.notifyAll(); Bluetooth-based services, highlights of security concerns, and }catch(Exception IntE){ more. System.out.println(IntE.getMessage()); } Table of Contents }
Bluetooth for Java Introduction } Chapter 1
- Introducing Bluetooth
Chapterpublic 2 - Bluetooth void 1.1 inquiryCompleted(int discType){ Chapter 3
completed..."); -System.out.println("Inquiry Before You Get Started
Chapter 4
//Unblocking the wait for inquiry complete -synchronized(this){ Understanding the Java Bluetooth API
Chapter 5
try{with J2ME MIDP - Bluetooth
Chapter 6
- Creating athis.notifyAll(); Bluetooth Print Server with JPS API
Chapter 7
IntE){ - Java }catch(Exception and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
System.out.println(IntE.getMessage());
}
}
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
}
Appendix A - javax.bluetooth Appendix B - javax.obex public void getServices(){ Appendix C -UUID[] Java Bluetooth Development on the PalmOS Platform uuids = new UUID[1]; Appendix D -uuids[0] BlipNet 1.1 API = new UUID("6666", true); Index
try{ if(btDev == null){ System.out.println("No device has been discovered, "+ List of Tables "hence not worth proceeding,exiting.... "); List of Listings System.exit(1); List of Sidebars } System.out.println("Now searching for services....... . "); agent.searchServices(attrSet, uuids, btDev, this); List of Figures
} catch(BluetoothStateException e) { System.out.println(e.getMessage()); System.out.println("Got an exception, so exiting..."); System.exit(1); } synchronized(this){ //Waiting for Service Search to be completed try{ this.wait(); }catch(Exception IntE){ System.out.println(IntE.getMessage()); } } }
public boolean sendFile(String fileName){ try {Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony l2capConn = (L2CAPConnection)Connector.open(serviceURL); Apress © 2003 (352 pages) The authors of this textinConn describe how InputConnection = to develop wireless Java applications using Bluetooth for a variety of platforms. This (InputConnection)Connector.open("file://name="+fileName+";mode=r"); includes an API overview of the Java library, development of InputStream fileReader = inConn.openInputStream(); Bluetooth-based services, highlights of security concerns, and more.
int maxSendMTU = l2capConn.getTransmitMTU(); byte [] buffer = new byte[maxSendMTU]; Table of Contents Bluetooth for Java // sending fileName Introduction // assuming for the time being that the fileName Chapter 1 - Introducing Bluetooth // will not be greater than 48 bytes Chapter 2
- Bluetooth l2capConn.send(fileName.getBytes()); 1.1
Chapter 3
System.out.println("Send the file Name = "+ fileName); - Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
// sending fileContent - Bluetooth with J2ME MIDP
Chapter 6
// aafter the whole gets - Creating Bluetooth Print Serverfile with JPS API transferred, an empty packet is sent.
Chapter 7
actualDataSize = -1; - Java int and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
-
Chapter 10 Chapter 11 Chapter 12 Appendix A -
byte [] pkt = null; while((actualDataSize = fileReader.read(buffer)) != -1) { Bluetooth Security pkt = new byte[actualDataSize]; Wireless Embedded Systems with the Micro BlueTarget System.arraycopy(buffer, 0, pkt, 0, actualDataSize); Enterprise Bluetooth Applications with the Ericsson BlipNet l2capConn.send(pkt); Bluetooth and Jini } javax.bluetooth System.out.println("Completed sendng body of file = "+ fileName);
Appendix B - javax.obex Appendix C - Java //sending Bluetooth Development on the PalmOS Platformend of file empty packet signaling Appendix D - BlipNet 1.1 API l2capConn.send(new byte[0]); Index List of Figures List of Tables
fileReader.close(); return true;
} List of Listings List of Sidebars
catch(IOException e){ System.out.println(e.getMessage()); return false; } finally { System.out.println("Closing connection"); try {l2capConn.close();}catch(Exception genx) {} } } public static void main(String args[]) throws Exception { JPSBluetoothPrintClient client = new JPSBluetoothPrintClient(); client.getServices(); System.out.println(client.sendFile(args[0])); } }
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter wasApress probably your first time working with the new Java Print Service APIs. The JPS is a © 2003 (352 pages) platform-independent printing solution newhow in JDK 1.4. In this chapter, The authors of this textthat's describe to develop wireless Java you learned about all the steps that are necessary to create a complete JPS application, such as identifying the data format, applications using Bluetooth for a variety of platforms. This includes an specifying API overview of the Java development of searching for print services, attributes, andlibrary, creating and submitting print jobs. After creating a Bluetooth-based services, highlights security print concerns, and simple JPS application, you learned how to turn yourofordinary service into a Bluetooth-enabled print more. server! This chapter demonstrated communication with Bluetooth using the L2CAP protocol. This is ideal if you want to transfer items between two devices that can be broken into packets and reassembled again (such Bluetooth for Java as files). L2CAP is a layer below RFCOMM in the Bluetooth protocol stack, so if you optimize your MTU, Introduction you can achieve significantly faster data transfers between wireless devices. In Chapter 7, we'll examine a Chapter 1 - Introducing Bluetooth more robust Bluetooth protocol for transferring files: OBEX.
Table of Contents
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 7: Java and OBEX by Bruce Hopkins and Ranjith Antony
Overview
ISBN:1590590783
Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Whether you likeincludes it or not,an you're API overview surrounded of the by Java objects library, every development day. In fact,ofpart of the role of being a good services, concerns, and objects when developing Java programmerBluetooth-based is to find out what is thehighlights best way of to security recognize and create more.
business applications (and games, too). As we stated in Chapter 4, the Bluetooth specification gives you three protocols to send and receive data: Table of Contents
RFCOMM (for stream data)
Bluetooth for Java
Introduction L2CAP (for packet data) Chapter 1 - Introducing Bluetooth
OBEX object 1.1 data) Chapter 2 - (for Bluetooth Chapter 3
- Before You Get Started
In this chapter, we'll discuss the mechanics of the OBEX protocol, and how to send objects between
Chapter 4 devices. - Understanding the Java Bluetooth Bluetooth We'll cover the APIs in theAPI javax.obex package, and finish things up by Chapter 5 Bluetooth with J2ME MIDP demonstrating how to send files between two devices using OBEX. Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java What Is OBEX? by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
OBEX (which stands for©OBject EXchange) is a communication protocol that allows object data to be Apress 2003 (352 pages) transferred between two devices (it doesn't matter if those devices are wirelessly or physically connected). The authors of this text describe how to develop wireless Java OBEX was originally created by the Infrared Data Association (IrDA), but it later became one of the applications using Bluetooth for a variety of platforms. This includes an API of theaJava development Bluetooth adopted protocols (likeoverview WAP). Take looklibrary, at Figure 7-1 to seeofwhere OBEX fits in the Bluetooth services, highlights of security concerns, and and IrDA protocolBluetooth-based stacks. more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Figure is called IrOBEX in the IrDA protocol stack. Chapter 8 - 7-1: UsingOBEX a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless EmbeddedOBEX Systems withunderlying the Micro BlueTarget In the Bluetooth specification, is the protocol that is used to implement the following Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet Bluetooth profiles: Chapter 12 - Bluetooth and Jini
Generic Object Exchange Profile Appendix A - javax.bluetooth Appendix B - javax.obex
Object Push Profile
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Synchronization Profile Index
Transfer Profile List ofFile Figures List of Tables
Basic Imaging Profile
List of Listings
List ofBasic Sidebars Printing Profile
Note Did you realize that the official Java OBEX implementation was named javax.obex and not javax.bluetooth.obex? It was named javax.obex because the JSR-82 designers knew that (if structured correctly) the OBEX libraries would be the same regardless of the underlying transmission protocol (also known as the bearer or the transport). So, you can use the classes in thejavax.obex package to send objects between any device that implements the official Java OBEX API. The JSR-82 provides guidelines on how to use OBEX over Bluetooth, IR, and TCP/IP connections. The OBEX protocol has a simple client/server architecture. OBEX clients get objects from and put objects onto OBEX servers. OBEX servers wait around for incoming requests from clients. The OBEX definition can be summarized in two parts: the OBEX Object Model and the OBEX Session Protocol. The Object Model provides the definition of OBEX objects and information on how to transfer them. The Session Protocol defines the handshaking that needs to occur between the client and the server when transferring objects between devices. Let's look at OBEX Object Model and Session Protocol in more detail.
The OBEX Object Model In the OBEX Object Model, all the details about an object are represented as attributes called headers. Each header will contain information about the object (i.e., the name of the object) or the object itself. The Object Model defines headers as one byte for the header ID, and one or more bytes for the header's
value. A typical OBEX header is illustrated in Figure 7-2. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based Figure 7-2: An OBEX headerservices, highlights of security concerns, and more.
The OBEX Object Model has defined 17 headers for OBEX object attributes. However, the official Java OBEX specification uses only 12 of them as constants in the interface java.obex.HeaderSet. These Table of Contents constants are listed in Table 7-1. Bluetooth for Java Introduction
Table 7-1: OBEX Headers in the java.obex.HeaderSet Interface
Chapter 1
- Introducing Bluetooth
HEADER NAME 1.1 Chapter 2 - ID Bluetooth
HEADER Chapter 3 - Before You Get Started ID DECIMALAPI Chapter 4 - Understanding the Java Bluetooth VALUE Chapter 5 - Bluetooth with J2ME MIDP
JAVA TYPE
Chapter 6
Server with JPS API java.lang.Long COUNT - Creating a Bluetooth Print192
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
NAME9 Chapter
- Bluetooth Security
1
java.lang.String
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter TYPE12 - Bluetooth and Jini
66
java.lang.String
Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
LENGTH
DESCRIPTION
The number of objects to be sent The object's name (usually used as the filename) The type of the object, like text/plain
195
java.lang.Long
The length of the object in bytes
68
java.util.Calendar
The time in ISO 8601 format
196
java.util.Calendar
The time represented as a 4byte integer
DESCRIPTION
5
java.lang.String
A description of the object
TARGET
70
byte[]
The name of the service that the object is being sent to
HTTP
71
byte[]
The HTTP version 1.x header
WHO
74
byte[]
Refers to the peer OBEX application if peers are involved
OBJECT_CLASS
79
byte[]
The OBEX object class for the object
Appendix D - BlipNet 1.1 API Index ListTIME_ISO_8601 of Figures List of Tables ListTIME_4_BYTE of Listings List of Sidebars
APPLICATION_PARAMETER 76 Bluetooth for Java
byte[]
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Data that represents request and response parameters for the OBEX application
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and You are also freemore. to create your own headers as long as you obey the following guidelines:
java.lang.String object types should have a header ID decimal value between 48 and 63. Table of Contents
bytefor arrays Bluetooth Java(i.e. byte[]) should have a header ID decimal value between 112 and 127. Introduction
java.lang.Byte object types should have a header ID decimal value between 176 and 191.
Chapter 1
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1object types should have a header ID decimal value between 240 and 255. java.lang.Long Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
The OBEX Session Protocol - Bluetooth with J2ME MIDP
Chapter 5
Chapter 6 - Session Creating Protocol a Bluetooth Print Server withand JPSprocesses API The OBEX specifies all rules for communication between OBEX clients Chapter 7 Java and OBEX and servers. The communication scheme is a simple request-response process: The client sends a Chapter 8 and - Using a Bluetooth Simulator request, the server responds. Both requests and responses are sent as packets. Clients communicate Chapter 9 - Bluetooth to the server via eight Security simple operations: Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
CONNECT Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
DISCONNECT
Appendix A - javax.bluetooth Appendix PUTB - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
GET
Appendix D - BlipNet 1.1 API Index SETPATH List of Figures List ofABORT Tables List of Listings
CREATE-EMPTY
List of Sidebars
PUT-DELETE OBEX servers, in turn, return responses back to the OBEX clients, such as the following: SUCCESS FAILURE CONTINUE Note There are a lot more OBEX responses than just these three. All the valid response codes in the javax.obex API are contained in the javax.obex.ResponseCodes class, which is described later in this chapter. Figure 7-3 is an illustration of the message flow that takes place during a simple OBEX session.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Figure 7-3: A sample message flow between OBEX clients and servers
Chapter 5
- Bluetooth with J2ME MIDP The client the communication process sending Chapter 6 -initiates Creating a Bluetooth Print Server withbyJPS API a request packet with the CONNECT operation.
The request packet the code for the operation, the length of the packet itself, and the headers. Chapter 7 - Java andcontains OBEX Upon receiving thea request, server responds with a response packet that contains the response code, Chapter 8 - Using Bluetooththe Simulator the response length, and some response data. Under normal circumstances, the server returns a packet Chapter 9 - Bluetooth Security with a response code of SUCCESS. If, however, some problem has occurred, then the server returns a FAILURE code.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Chapter 12operation - Bluetooth and Jini ThePUT allows the client to send an object to the server. It's possible that a small object may fit Appendix A - javax.bluetooth into a single PUT request packet. If not, then the client sends multiple packets, and the server responds Appendix B - javax.obex with a CONTINUE response code. The server responds to the final PUT packet with a SUCCESS code. Appendix C - Java Bluetooth Development on the PalmOS Platform
Similarly, are1.1 able Appendix D clients - BlipNet APIto retrieve objects from the server by sending a GET request packet. If the server accepts the packet, it responds with either a SUCCESS or a CONTINUE response code. If the server Index
responds with a CONTINUE, then the client continues to send a GET request until the server responds with aSUCCESS code.
List of Figures List of Tables
List of client Listings The uses the SETPATH operation in conjunction with a PUT or GET operation in order to change the List of Sidebars directory on the server. The client can also use the ABORT operation in order to end the session with the
server prematurely. The client can create an empty file on the server using the CREATE-EMPTY operation, and it can remove an object from the server using the PUT-DELETE operation. Now that you have a pretty good understanding of the overall functionality of OBEX, let's take a look at the Java OBEX APIs.
Bluetooth Java The OBEX APIs in for the JSR-82 by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The following eight classes and interfaces make up the javax.obex package in the JSR-82 API. Some Apress © 2003 (352 pages) of these classes should look somewhat familiar you—namely HeaderSet, The authors of this text describe to how to develop wireless Java ResponseCodes, and Operation. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
Authenticator Bluetooth-based services, highlights of security concerns, and more.
ClientSession Table of Contents HeaderSet Bluetooth for Java
Operation Introduction Chapter 1
- Introducing Bluetooth PasswordAuthenticator
Chapter 2
- Bluetooth 1.1
Chapter ResponseCodes 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
SessionNotifier - Bluetooth with J2ME MIDP
Chapter 5
Chapter 6 - Creating a Bluetooth Print Server with JPS API ServerRequestHandler Chapter 7
- Java and OBEX
Chapter Now let's 8 take - Using a look a Bluetooth at someSimulator of these classes in more detail. Chapter 9
- Bluetooth Security
javax.obex.ClientSession
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
TheClientSession interface is a subclass of the javax.microedition.io.Connection class, and Chapter 12 - Bluetooth and Jini represents OBEX connection from the client's point of view. You can obtain an instance of this interface Appendix A - an javax.bluetooth by usingBthe following line of code: Appendix - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix ClientSession D - BlipNet 1.1 session API = (ClientSession)Connector.open(connectURL); Index List of Figures
This interface provides a way to define headers for OBEX operations. For instance, the methods put() andget() respectively allow you to create PUT and GET operations. Those methods return a List of Listings javax.obex.Operation object so that you can complete the operation. List of Tables
List of Sidebars
Note See the description of javax.obex.Operation later in this section for more information on how to complete GET and PUT operations. The methods connect(),disconnect(), and setPath() complete their respective operations (CONNECT,DISCONNECT, and SETPATH) and return the result in a javax.obex.HeaderSet object.
javax.obex.HeaderSet TheHeaderSet interface can be used to define all OBEX headers (even custom headers). It can be instantiated by calling ClientSession.createHeaderSet(). An example of an OBEX client setting theNAME and TYPE headers is shown here: HeaderSet hdr = clientSession.createHeaderSet(); //Creating a header set to request Hello.txt file from the server hdr.setHeader(HeaderSet.TYPE," text/vCard"); hdr.setHeader(HeaderSet.NAME," Hello.txt");
An OBEX server, in turn, can retrieve the headers sent from the client by calling either getHeader() or getHeaderList().
Bluetooth for Java
javax.obex.Operation by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
TheOperation interface provides you with all the methods necessary to complete an OBEX GET or PUT The authors of this text describe how to develop wireless Java operation. What do we mean by complete? As you can see in the following code snippet, an Operation applications using Bluetooth for a variety of platforms. This was created using the put() method in ClientSession: includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
ClientSession session = (ClientSession)Connector.open(connectURL); Operation op = session.put(null); Table of Contents Bluetooth for Java
However, the Operation is not complete until you include the object that you want to send (in the case of aPUT) and add some headers. Following is an example of how to complete a PUT operation:
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
ClientSession session = (ClientSession)Connector.open(connectURL); - Before You Get Started Operation op = session.put(null); Chapter 4 - Understanding the Java Bluetooth API OutputStream out = op.openOutputStream(); Chapter 5 - Bluetooth with J2ME MIDP out.write("Test".getBytes()); Chapter 6 - Creating a Bluetooth Print Server with JPS API out.close(); Chapter 3
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator Now in 9order to makeSecurity a CREATE-EMPTY operation, just open and close the OutputStream without Chapter - Bluetooth
writing 10 any- data, as shown here: Chapter Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini = (ClientSession)Connector.open(connectURL); ClientSession session Appendix Operation A - javax.bluetooth op = session.put(null);
OutputStream out = op.openOutputStream(); Appendix B - javax.obex out.close(); Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
The easiest way to create a PUT-DELETE is to call the delete() method of this class.
List of Figures List of Tables
javax.obex.ResponseCodes
List of Listings
List of Sidebars
TheResponseCodes class contains all the valid response codes that an OBEX server can send to its client. Since the OBEX request/response model is very similar to that of HTTP, you will see that the responses are modeled after their HTTP counterparts: OBEX_DATABASE_FULL OBEX_DATABASE_LOCKED OBEX_HTTP_ACCEPTED OBEX_HTTP_BAD_GATEWAY OBEX_HTTP_BAD_METHOD OBEX_HTTP_BAD_REQUEST OBEX_HTTP_CONFLICT OBEX_HTTP_CREATED OBEX_HTTP_ENTITY_TOO_LARGE OBEX_HTTP_FORBIDDEN
OBEX_HTTP_GATEWAY_TIMEOUT Bluetooth for Java
OBEX_HTTP_GONE by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
OBEX_HTTP_INTERNAL_ERROR The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This
OBEX_HTTP_LENGTH_REQUIRED includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
OBEX_HTTP_MOVED_PERM more. OBEX_HTTP_MOVED_TEMP Table of Contents
OBEX_HTTP_MULT_CHOICE Bluetooth for Java Introduction
OBEX_HTTP_NO_CONTENT
Chapter 1
- Introducing Bluetooth
Chapter OBEX_HTTP_NOT_ACCEPTABLE 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
OBEX_HTTP_NOT_AUTHORITATIVE - Understanding the Java Bluetooth API
Chapter 4
Chapter 5 - Bluetooth with J2ME MIDP OBEX_HTTP_NOT_FOUND Chapter 6
- Creating a Bluetooth Print Server with JPS API
OBEX_HTTP_NOT_IMPLEMENTED Chapter 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
OBEX_HTTP_NOT_MODIFIED
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget OBEX_HTTP_OK Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
OBEX_HTTP_PARTIAL Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
OBEX_HTTP_PAYMENT_REQUIRED
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform OBEX_HTTP_PRECON_FAILED Appendix D - BlipNet 1.1 API Index OBEX_HTTP_PROXY_AUTH List of Figures
OBEX_HTTP_REQ_TOO_LARGE
List of Tables
List ofOBEX_HTTP_RESET Listings List of Sidebars
OBEX_HTTP_SEE_OTHER OBEX_HTTP_TIMEOUT OBEX_HTTP_UNAUTHORIZED OBEX_HTTP_UNAVAILABLE OBEX_HTTP_UNSUPPORTED_TYPE OBEX_HTTP_USE_PROXY OBEX_HTTP_VERSION Note So where are the response codes that we discussed earlier in this chapter like SUCCESS, FAILURE, and CONTINUE? Good question. Well, the OBEX SUCCESS response code is mapped to OBEX_HTTP_OK in the ResponseCodes class. And rather than simply having a generic response code for FAILURE, there are numerous response codes to indicate what kind of failure has occurred. Finally, the CONTINUE response will always be handled by your underlying implementation, so you should never see it. Here is an example of how to use the ResponseCodes class to determine if your PUT operation was a success:
for Java ClientSessionBluetooth session = (ClientSession)Connector.open(connectURL); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Operation op = session.put(null); Apress © 2003 (352 pages) OutputStream out = op.openOutputStream(); The authors of this text describe how to develop wireless Java out.write("Test".getBytes()); out.close(); applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of if(op.getResponseCode() == Bluetooth-based services, highlights of security concerns, and ResponseCodes.OBEX_HTTP_OK) more. System.out.println("PUT operation is success"); Table of Contents Bluetooth for Java
javax.obex.ServerRequestHandler
Introduction Chapter 1
- Introducing Bluetooth TheServerRequestHandler is a very useful class for OBEX servers. It includes an event listener that Chapter 2 - Bluetooth 1.1 responds to specific OBEX requests made to the server. Chapter 3
- Before You Get Started
Chapter Note 4 This - Understanding is a class and thenot Java anBluetooth interface,API so in order to use its functionality, you need to extend this
and not implement it. Chapter 5 class - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
This class has the following methods that will be called when incoming client requests contain the - Java and OBEX corresponding operation:
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9 - Bluetooth Security onConnect() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
onSetPath() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
onDelete()
Appendix A - javax.bluetooth Appendix B - javax.obex onGet() Appendix C - Java Bluetooth Development on the PalmOS Platform
onPut() Appendix D - BlipNet 1.1 API Index
After the callback method has been called by the JVM, you can obtain the headers from the Operation object as shown here:
List of Figures List of Tables
List of Listings
public int onGet(Operation op) { try{ HeaderSet hdr = op.getReceivedHeaders(); }
List of Sidebars
javax.obex.SessionNotifier The SessionNotifier interface follows the same pattern as all notifiers in J2ME. A device that wants to be an OBEX server must implement this interface and call the acceptAndOpen() method and wait for clients, as shown in the following code: SessionNotifier sn = (SessionNotifier) Connector.open("btgoep://localhost:1106;name = FTP"); sn.acceptAndOpen(serverRequestHandler);
Once the server accepts a connection from a client, it then opens a channel for the client. The subclass of ServerRequestHandler that you passed to the acceptAndOpen() method is notified of all subsequent requests from the client. Now that we've covered many of the classes of the Java OBEX API, let's look at an example that puts
these concepts together.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java File Transfer Example by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
In the file transferApress example, we'll the code that's needed to send a file between two Bluetooth devices © 2003 (352examine pages) using the OBEX API of the JSR-82. The server complex than the client code, so we'll present that The authors of this text describecode how is to less develop wireless Java first. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
File Transfer Server
Before any clients can connect, the server must register the service in the SDDB. This is accomplished in the Table Contents mainofmethod as shown here: Bluetooth for Java Introduction public static void main(String args[]) throws IOException { Chapter 1 FTServer - Introducing Bluetooth server = new FTServer(); Chapter 2 LocalDevice - Bluetooth 1.1 localDevice = LocalDevice.getLocalDevice(); Chapter 3 SessionNotifier - Before You Get Started sn = Chapter 4 (SessionNotifier)Connector.open("btgoep://localhost:1106;name=FTP"); - Understanding the Java Bluetooth API
for a client connection.... . "); Chapter 5 System.out.println("Waiting - Bluetooth with J2ME MIDP Chapter 6 sn.acceptAndOpen(server); - Creating a Bluetooth Print Server with JPS API
Client now connected.... "); Chapter 7 System.out.println("A - Java and OBEX } 8 Chapter
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
A service record has now been created and stored in the SDDB of the server device. Now let's take a closer look at the connection URL:
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
btgoep://localhost:1106;name=FTP
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet As you can see, we1.1 areAPI using a new protocol for communication: btgoep (which stands for Bluetooth Generic Index Object Exchange Profile). Because this is a server device, the address will always be localhost. The UUID for List thisofservice Figuresis 1106, which is the UUID for OBEX file transfers. List of Tables
CROSSREFERENCE
List of Listings
SeeTable 4-4 for UUID values for Bluetooth services and their corresponding profiles.
List of Sidebars
We also gave a friendly name for this service, which is FTP. Our file transfer server has extended the ServerRequestHandler class, and has overridden the onConnect() and onGet() methods. Here, the onGet() method will attempt to read the requested file from the local storage and send the file back to the client. Obviously, the onConnect() and onGet() methods are only called if the clients send a CONNECT or GET operation to the server. The code for the file transfer server is shown in Listing 7-1. Listing 7-1: FTServer.java import import import import
javax.microedition.io.*; java.io.*; javax.bluetooth.*; javax.obex.*;
public class FTServer extends ServerRequestHandler{ public FTServer() throws BluetoothStateException { // initialize the stack, if needed } public int onConnect(HeaderSet request, HeaderSet reply) {
System.out.println("A OBEX connection has received.... "); Bluetooth for Java return ResponseCodes.OBEX_HTTP_OK; by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
}
ISBN:1590590783
The authors of this text describe public int onGet(Operation op)how { to develop wireless Java applications using Bluetooth for a variety of platforms. This try{ includes an API overview of the Java library, development of //The server services, has received request for Bluetooth-based highlightsaof GET security concerns, and client. System.out.println("Received a GET request from client.... . "); more. HeaderSet hdr = op.getReceivedHeaders(); Table of Contents System.out.println("Server has received a request for the file "+ Bluetooth for Java(hdr.getHeader(HeaderSet.NAME)).toString()); Introduction Chapter 1
String url = "file://name=" +
Chapter 2
- Introducing Bluetooth (hdr.getHeader(HeaderSet.NAME)).toString() + ";mode=r"; - Bluetooth InputConnection 1.1 inpcon =
Chapter 3
(InputConnection)Connector.open(url); - Before You Get Started
Chapter 4
InputStream in Bluetooth = inpcon.openInputStream(); - Understanding the Java API
Chapter 5
byte[] - Bluetooth withfileAsBytes J2ME MIDP
Chapter 6
in.read(fileAsBytes); - Creating a Bluetooth Print Server with JPS API
Chapter 7
read fully into the port.... "); - JavaSystem.out.println("File and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
-
Chapter 10 Chapter 11 Chapter 12 Appendix A -
= new byte[97];
for(int i =0; i
Appendix B }- javax.obex Appendix C catch(IOException - Java Bluetooth Development e){ on the PalmOS Platform Appendix D - BlipNet 1.1 API System.out.println(e.getMessage()); Index
}
List of Figures catch(ArrayIndexOutOfBoundsException e){ List of Tables
System.out.println(e.getMessage());
} List of Listings List of Sidebars
return ResponseCodes.OBEX_HTTP_OK; } public static void main(String args[]) throws IOException { FTServer server = new FTServer(); LocalDevice localDevice = LocalDevice.getLocalDevice(); SessionNotifier sn = (SessionNotifier)Connector.open("btgoep://localhost:1106;name=FTP"); System.out.println("Waiting for a client connection.... . "); sn.acceptAndOpen(server); System.out.println("A Client now connected.... "); } }
More on Connection URLs and the SDDB
TheConnection URL and the service record attributes in the SDDB are closely related. Although software Bluetooth for Java developers may not care about the inner details of the SDDB, this information will be helpful when searching by remote Bruce Hopkins and for services on devices. In Ranjith the FileAntony Transfer ServerISBN:1590590783 example, the SDDB gets populated with various Apress © 2003 (352 pages) components of the connection URL: Connector.open("btgoep://localhost:1106;name=FTP");. The authors of this text describe how to develop wireless Java applications using for a variety of that platforms. ServiceRecordHandle is aBluetooth 32-bit unsigned integer has anThis attribute ID of 0x0000. This is a unique includes an API of The the Java development of identifier for each service in overview the SDDB. valuelibrary, of ServiceRecordHandle is generated internally and Bluetooth-based services, highlights of security concerns, and remains unique throughout the database. more.
ServiceClassIDList is a data sequence of UUIDs with an attribute ID of 0x0001. The underlying Discovery Protocol (SDP) implementation generates this list with the first element as the UUID given Table Service of Contents in the Connection URL. In this example, the first UUID in this list will be 0x1106. Bluetooth for Java Introduction
ServiceRecordState is a 32-bit unsigned integer that has an attribute ID of 0x0002. The underlying SDP - Introducing Bluetooth implementation automatically generates this attribute and changes its value when any modification occurs Chapter - Bluetooth 1.1 with2 this service record. Chapter 1 Chapter 3
- Before You Get Started ProtocolDescriptorList is a data sequence of UUIDs (with optional parameters or protocol-specific Chapter 4 - Understanding the Java Bluetooth API
values) with an attribute ID of 0x0004. Once again, the SDP implementation automatically generates this Chapter 5 - Bluetooth with J2ME MIDP attribute based on the protocol in Connection URL. If the protocol is btl2cap, then Chapter 6 - Creating a Bluetooth Printdescribed Server with JPS API ProtocolDescriptorList contains one protocol descriptor for L2CAP in addition to its Protocol Service Chapter 7 - Java and OBEX
Multiplexer (PSM) value. If the protocol is btspp, then the ProtocolDescriptorList contains two - Using a Bluetooth Simulator protocols, L2CAP and RFCOMM (in addition to the RFCOMM server channel). If the protocol is btgoep (as Chapter 9 - Bluetooth Security in this example), then the ProtocolDescriptorList contains three protocols: L2CAP, RFCOMM, and Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget GOEP. Chapter 8
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Chapter 12 - Bluetooth and Jini ServiceDatabaseState is a 32-bit unsigned integer with an attribute ID of 0x0201. Every modification to Appendix A - javax.bluetooth the SDDB affects the value of this attribute, and the SDP implementation will automatically take care of this Appendix B - javax.obex for you. Appendix C - Java Bluetooth Development on the PalmOS Platform
ServiceName is the friendly name by which the services are known to the devices in the vicinity. In this example, the service name is FTP.
Appendix D - BlipNet 1.1 API Index
List of Figures List of Tables List of Listings
File Transfer Client
List of Sidebars
Now in order to access the File Transfer server, we must first perform device discovery and service discovery like we always do in Bluetooth applications. In addition to that, in our serviceSearchCompleted() method, we create our Operations and HeaderSets to instruct the OBEX server what we want to do.
The CONNECT Operation The first OBEX operation that needs to be created and sent to the OBEX server is CONNECT. This is accomplished by the following: con = (ClientSession)Connector.open(serviceURL); hdr = con.connect(hdr);
Theconnect() method of this ClientSession instance returns a HeaderSet object where we can inspect and determine if our CONNECT operation was a success.
The GET Operation Now that we have successfully performed our CONNECT operation, we are able to create other operations like GET,PUT, and SETPATH. The code that you would use in order to create and send a GET operation to an OBEX server looks like this:
Bluetooth for Java hdr = con.createHeaderSet(); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony hdr.setHeader(HeaderSet.TYPE," text/plain"); Apress © 2003 (352 pages) hdr.setHeader(HeaderSet.NAME," Hello.txt"); authors of this text describe how to develop wireless Java Operation op The = con.get(hdr); applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and If the operation was successful, then just open up an InputStream, and read the data: more.
InputStream in = op.openInputStream(); Table of Contents Bluetooth for Java Introduction
Now that have an InputStream in hand, you can save your file to disk. Chapter 1 you - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 4
- Understanding the Java Bluetooth API
The DISCONNECT Operation Chapter 3 - Before You Get Started Creating and sending a DISCONNECT operation is pretty simple. All you need to do is call the disconnect() Bluetooth with J2ME MIDP method of-the ClientSession object:
Chapter 5 Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
clientSession.disconnect(null);
Chapter - Wireless Embedded Systems with 7-2. the Micro BlueTarget The full10code for FTClient is show in Listing Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Listing12 7-2: FTClient.java Chapter - Bluetooth and Jini Appendix A - javax.bluetooth Appendix - javax.obex importB java.io.*; Appendix - Java Bluetooth Development on the PalmOS Platform importC java.util.*; Appendix importD javax.microedition.io.*; - BlipNet 1.1 API
import javax.bluetooth.*; Index import javax.obex.*; List of Figures List of Tables
public class FTClient implements DiscoveryListener { List of Listings LocalDevice local = null; List of Sidebars DiscoveryAgent agent = null; int[] attrSet = null; RemoteDevice btDev = null; String serviceURL = null; ClientSession con = null; HeaderSet hdr = null; public FTClient() throws BluetoothStateException{ // initialize the stack, if needed local = LocalDevice.getLocalDevice(); agent = local.getDiscoveryAgent(); agent.startInquiry(DiscoveryAgent.GIAC, this); } public void deviceDiscovered(RemoteDevice btDevice,DeviceClass cod){ btDev = btDevice; System.out.println("Device discovered "+ btDevice.getBluetoothAddress()); } public void servicesDiscovered(int transID, ServiceRecord[] servRecord){ System.out.println("Discovered a service.... ");
for(int i =0; i < servRecord.length; i++){ Bluetooth for Java serviceURL = ISBN:1590590783 by Bruce Hopkins and Ranjith Antony servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, Apress © 2003 (352 pages) true); System.out.println("The service URL is "+ serviceURL); The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This } includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and public void more. serviceSearchCompleted(int transID, int respCode){
}
System.out.println("Service search completed.......... . "); System.out.println("Opening a connection with the server.... "); Table of Contents try{ Bluetooth for Java con = (ClientSession)Connector.open(serviceURL); Introduction hdr = con.connect(hdr); Chapter 1 - Introducing Bluetooth System.out.println("Response code of the server after connect..." + Chapter 2 - Bluetooth hdr.getResponseCode()); 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
//Sending a request to server for file Hello.txt - Bluetooth with J2ME MIDP
Chapter 6
hdr =a con.createHeaderSet(); - Creating Bluetooth Print Server with JPS API
Chapter 7
hdr.setHeader(HeaderSet.TYPE," text/vCard"); - Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
hdr.setHeader(HeaderSet.NAME," Hello.txt"); Operation op = con.get(hdr);
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
//The server is now sending the file InputStream in = op.openInputStream();
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex // Writing the file from server to local file system. Appendix C - Java Bluetooth Development on the StreamConnection filestream = PalmOS Platform Appendix D - BlipNet 1.1 API (StreamConnection)Connector.open("file://name=HelloFile.txt;mode=w"); Index OutputStream out = filestream.openOutputStream(); List of Figures
//read and write the data int data = in.read(); while(data != -1){ List of Sidebars out.write((byte)data); data = in.read(); } // send the DISCONNECT Operation con.disconnect(); List of Tables
List of Listings
// cleanup op.close(); in.close(); out.close(); } catch(IOException e){ System.out.println(e.getMessage()); } } public void inquiryCompleted(int discType){ System.out.println("Inquiry completed..."); UUID[] uuids = new UUID[1]; uuids[0] = new UUID("1106",true); try{ if(btDev == null){
System.out.println("No device has been discovered, "+ Bluetooth fornot Javaworth proceeding, exiting.... "); "hence ISBN:1590590783 by Bruce Hopkins and Ranjith Antony System.exit(1); Apress © 2003 (352 pages) } The authors of this text describe how to develop Java System.out.println("Now searching for wireless services....... . "); applications using Bluetooth for a variety of platforms. This agent.searchServices(attrSet, uuids, btDev, this); includes an API overview of the Java library, development of
} Bluetooth-based services, highlights of security concerns, and catch(BluetoothStateException e) {System.out.println(e.getMessage());} more. } Table of Contents public static void main(String args[]) throws IOException { Bluetooth for Java FTClient client = new FTClient(); Introduction } Chapter 1 }
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP More on Operations
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7 we - Java and OBEX Now that have a full working example of both an OBEX client and an OBEX server, let's look at what it takes Chapter 8 - Using a operations. Bluetooth Simulator to use other OBEX Chapter 9
- Bluetooth Security
The SETPATH Chapter 10 - WirelessOperation Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
TheSETPATH operation allows an OBEX client to make a request to an OBEX server to change its current directory. The server is not required to obey the request, so the server is free to return an error to the client Appendix A - javax.bluetooth indicating that the request was rejected. The exact syntax for ClientSession.setPath() is Chapter 12 - Bluetooth and Jini Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
public HeaderSet setPath(HeaderSet headers, boolean backup, boolean create)
Appendix D - BlipNet 1.1 API Index
List Figures To of specify the name of the directory that you want to navigate to, you must create a HeaderSet with the name List setofasTables a header. If you wanted to set the path to the previous directory (i.e. cd ..) then backup must be set to List of Listings true. If the directory does not exist, but you want it to be created, then you must set create to be true. The List code of Sidebars that follows demonstrates how to create a SETPATH operation:
HeaderSet folderHdr = clientSession.createHeaderSet(); folderHdr.setHeader(HeaderSet.NAME, "temp"); HeaderSet resultHdr = clientSession.setPath(folderHdr, false, true);
The PUT Operation After creating and sending a CONNECT operation, creating a PUT operation is very straightforward as shown in the code presented here: hdr = con.createHeaderSet(); String filename = "resume_cv.txt"; // setting values hdr.setHeader(HeaderSet.NAME, fileName); hdr.setHeader(HeaderSet.TYPE," text/plain"); // creating and sending the PUT Operation Operation op = con.put(hdr);
// sending the BODY for Java OutputStream Bluetooth writeStrm = op.openOutputStream(); ISBN:1590590783 by Bruce Hopkins Ranjith Antony StreamConnection strmCon and = (StreamConnection)Connector.open("file://name=" + Apress © 2003 (352 pages) fileName + ";mode=r"); The authors of text describe how to develop wireless Java InputStream readStrm = this strmCon.openInputStream(); applications using Bluetooth for a variety of platforms. This byte[] block = new byte[512]; includes an API overview of the Java library, development of int dataSize Bluetooth-based = -1; services, highlights of security concerns, and while((dataSize more.= readStrm.read(block))!= -1) { writeStrm.write(block, 0, dataSize); } Table of Contents Bluetooth for Java readStrm.close(); Introduction // setting final bit and Chapter 1 - Introducing Bluetooth // sending the END-OF-BODY-HEADER Chapter writeStrm.close(); 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
OBEX (which stands for©OBject EXchange) is a powerful, transport agnostic, communication protocol that Apress 2003 (352 pages) allows the transmission of objects between clients and The OBEX protocol is an adopted protocol The authors of this text describe how to servers. develop wireless Java in the Bluetooth specification, and originally gets its roots from the IrDA specification. This chapter helped applications using Bluetooth for a variety of platforms. This an API overview of the library,semantics development of you to get familiarincludes with many of the concepts of Java the OBEX including headers, operations, and services, of security concerns, and javax.obex API, and also response codes. Bluetooth-based This chapter gave you anhighlights introduction of the classes in the more. provided a working example on how to send files between wireless devices. OBEX opens the door to a world of powerful wireless applications by providing Bluetooth developers with the ability to send files between devices. In the next chapter, we'll change gears a bit and discuss how to Bluetooth for Java simulate a Bluetooth network.
Table of Contents Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 8: Using a Bluetooth Simulator ISBN:1590590783 by Bruce Hopkins and Ranjith Antony
Overview
Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Okay, we have toincludes admit it:an If you're API overview new toofBluetooth, the Java library, developing development wirelessofclient/server code can Bluetooth-based services, security concerns, (sometimes) be rather inconvenient. After highlights writing theofclient code and thenand the server code, you may have more.
to do a lot of debugging to get things working properly. Maybe your logic is incorrect—perhaps you have a problem with one of your Bluetooth modules (maybe both of them). With so many points of failure, it can be aof real daunting task to debug even the simplest Bluetooth application. However, with the help of a Table Contents Bluetooth network Bluetooth for Java simulator, all of the hardware and its underlying complexities are abstracted, and this will enable you to focus more time and effort to debug your application code. Introduction Chapter 1 A - Introducing Bluetooth Note Bluetooth network simulator can also be helpful if you're on a budget or if you're a student. If Chapter 2 either - Bluetooth case 1.1 applies to you, you certainly don't have a lot of money to buy a test lab full of Chapter 3 Bluetooth - Before You Get Started devices. Chapter 4 - Understanding the Java Bluetooth API
This chapter is all about to MIDP use a Bluetooth network simulator in your application development Chapter 5 - Bluetooth withhow J2ME process. simulator isn't with a panacea Chapter 6 A- Bluetooth Creating anetwork Bluetooth Print Server JPS API for all of your development woes, but it can be a very useful many areas of the wireless application development life cycle. We'll start this chapter off Chapter 7 - tool Javainand OBEX by explaining the difference between a simulator and an emulator, just in case you didn't know that there's - Using a Bluetooth Simulator a difference. Next, we'll take a look at the pros and cons of using a simulator. In the rest of the chapter, Chapter 9 - Bluetooth Security we'll get you up to speed on how to use the first and only Bluetooth network simulator in which you can Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget execute your JSR-82-compatible code: the Rococo Impronto Simulator. Chapter 8
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Chapter 12 This - Bluetooth Jini Note chapterand is intended to provide a brief overview of the concepts of simulation and the Rococo Appendix A software. - javax.bluetooth For more detailed information on how to use the Rococo Impronto Simulator, be sure Appendix B to - javax.obex read the user manual. Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures
Difference Between a Simulator and an Emulator
List of Tables Is there a difference between a simulator and an emulator? Yes, definitely. An emulator is a
software program (or sometimes a hardware device) that emulates the functionality of another List of Listings computer system. Behind the scenes, the emulator translates the instructions of the device List of Sidebars being emulated to the machine code of the foreign system. Essentially, only computers can emulate other computers, and due to the translation process, emulation works best when a faster computer emulates a slower computer. Emulators are handy when you want to run a program, but the computing system for which it was originally designed no longer exists or isn't available. For instance, the Multiple Arcade Machine Emulator (MAME) project is a popular emulator that allows you to play classic arcade games on your desktop computer. PalmSource also makes an emulator that allows you to run different versions of the Palm OS on your desktop computer. This can be useful when testing to see if your code is backward compatible with older versions of the Palm OS. On the other hand, a simulator is something (usually software) that represents the functionality of an entire system. A simulator will mimic the interaction and communication process between devices in the system, and try to display the results as if those occurrences actually happened. For instance, an automotive company can create a crash test simulator. Using this simulator, the automotive engineer can simulate what would happen to the car if it collides with another object like a wall, a deer, or even another car. Now, in order for the simulator to be even remotely useful, formulas must exist that describe the interaction of the objects in the system. If such formulas do not exist, then a lot of mapping and modeling of the objects in the system need to be done ahead of time before the simulator is created. With the use of a Bluetooth network simulator, you can mimic the interaction of multiple Bluetooth devices on your desktop computer as if those occurrences were actually happening
between Bluetooth devices. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth forof Java The Pros and Cons Using a Simulator by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
A Bluetooth simulator can be a(352 useful Apress © 2003 pages)and beneficial tool. One of the major benefits of a Bluetooth network simulatorThe is that it allows you to describe work on how yourtoapplication code without authors of this text develop wireless Java worrying about setting up and administrating your Bluetooth hardware configurations. This enables applications using Bluetooth for a variety of platforms. This you to create quick proof of includesverification. an API overview of the Java library,teams, development concepts and algorithm In larger development the useofof a simulator can greatly Bluetooth-based highlights of security and reduce the expense of creating a services, development environment forconcerns, each developer. Instead of buying more. Bluetooth hardware for each and every individual (which would be used throughout all the phases of the application development life cycle), fewer Bluetooth devices can be purchased and used for only the final phase application development: testing. Table of of Contents Bluetooth for Java
Now, on the other hand, no matter how good a Bluetooth network simulator may claim to be, it is no substitute for scenarios that require the presence of real Bluetooth hardware. For instance, a Bluetooth Chapter 1 - Introducing Bluetooth network simulator isn't capable of telling you what would happen if you ran your file transfer application Chapter 2 - Bluetooth 1.1 code using 3Com or TDK Bluetooth modules. A Bluetooth network simulator is also incapable of telling Chapter 3 your - Before You Getwould Started you how application behave in the presence of other devices that operate in the 2.4 GHz range Chapter 4 Understanding the Javaovens. Bluetooth like WLAN devices or microwave DueAPI to the absence of any Bluetooth hardware, Bluetooth Chapter 5 Bluetooth with J2ME MIDP network simulators are also a poor choice for testing the performance of your application (such as I/O Chapter 6 - Creating a Bluetooth Print Server with JPS API throughput). Introduction
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for from Java Rococo Impronto Simulator by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Rococo Impronto a 100 percent Java application that allows you, the developer, to create JSR-82ApressSimulator © 2003 (352ispages) compliant Bluetooth applications. Using the Impronto Simulator, you canJava create virtual Bluetooth devices using the The authors of this text describe how to develop wireless environment, andapplications deploy yourusing codeBluetooth to those for virtual devices to see how they a variety of platforms. This interact. includes an API overview of the Java library, development of Bluetooth-based services, highlights security concerns, and Note Using the Rococo Impronto Simulator, youofcan create Bluetooth applications for both the J2ME and J2SE more. platforms. Note that J2SE Bluetooth applications will not be JSR-82 compliant until the GCF for J2SE is released. Table of Contents
Product Features
Bluetooth for Java Introduction
The following features are supported by the Rococo Impronto Simulator: Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Provides full support for L2CAP, RFCOMM, OBEX, SDP, and HCI protocols
Chapter 3
- Before You Get Started
Chapter Provides 4 - Understanding a management the console Java Bluetooth for tracking API and controlling the runtime behavior of simulated devices Chapter 5
- Bluetooth with J2ME MIDP
Runs JSR-82 code on simulated Bluetooth devices - Creating a Bluetooth Print Server with JPS API
Chapter 6
Chapter 7 full - Java and capability OBEX Has logging for Bluetooth events, and can capture events for specific devices with event filtering Chapter 8 - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Installation Guide
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth with the Ericsson BlipNet The Impronto Simulator runs onApplications any J2SE environment, including Windows and Linux. You can obtain a free trial of Chapter 12 Bluetooth and Jini the software from the Rococo Web site http://www.rococosoft.com. In order to install the software on Appendix A 2000, - javax.bluetooth Windows just execute simulator.exe. When installing the software on UNIX platforms, you need to execute Appendix B - javax.obex simulator.bin. The Simulator requires at least 64 MB of RAM and 5 MB of free disk space. Figure 8-1 is a screenshot Appendix C - Java Bluetooth of the installation program.Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 8-1: The Rococo Impronto Simulator version 1.1 installation screen In order to verify that your installation went smoothly, you should try to build the example applications that are included with the Impronto Simulator: Echo,Chat, and AirHockey. First, you should open a command prompt and run the setEnvVars script. On Windows platforms, this file is located at {simulator_home}\bin\setEnvVars.bat
On UNIX platforms, the file is located at Bluetooth for Java
by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
{simulator_home}/bin/setEnvVars.sh Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This After the script has executed successfully, navigate to the examples directory and type ant at the command prompt includes an API overview of the Java library, development of to build the examples. Bluetooth-based services, highlights of security concerns, and more.
Note Just in case you didn't notice, the Apache Ant build utility was installed with the Impronto Simulator. The of final step is to start up the Simulator Console. All you need to do is go back to the bin directory and execute Table Contents manager. screenshot of the Simulator Console is shown in Figure 8-2. Bluetooth forAJava Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List ofFigure Tables 8-2: The Rococo Impronto Simulator Console List of Listings List of Sidebars
Working with the Simulator Console The Simulator Console is the control panel to the Impronto Simulator. Using the Simulator Console, you can create and edit simulated Bluetooth devices. The characteristics of each device that you create are stored in an XML file in theconfig directory. For instance, to create a new Bluetooth device, just go to the File menu and select New Device as shown in Figure 8-3.
Figure 8-3: Creating a new Bluetooth device in the Simulator Console is pretty simple. The Impronto Simulator then gives you the option to set other properties for your simulated Bluetooth device such as the address, the connectable mode, the friendly name, and the device class. Figure 8-4 shows a cell phone being
configured in the Simulator Console. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator Figure Configuring Chapter 9 - 8-4: Bluetooth Securitya cell phone in the Simulator environment Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 friendly - Enterprise Bluetooth Applications with the the Ericsson BlipNet Since the name of the device is mydevice, Console will generate a file named mydevice.xml in the Chapter config 12directory. - Bluetooth and Jini Appendix A - javax.bluetooth
The contents of mydevice.xml are shown in Listing 8-1.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Listing 8-1: mydevice.xml
Appendix D - BlipNet 1.1 API Index
<device bluetoothAddress="01234567e012" friendlyName=" mydevice" List of Tables isConnectable=" true" List of Listings deviceClass=" Phone/Cellular" List of Sidebars serviceClasses=" Audio,Telephony" discoveryMode=" Not discoverable" securityMode=" Never enforce security"> List of Figures
Running an Application in the Simulator Okay, now that you've set up your environment, let's see what it takes to get your code running within the Impronto Simulator environment. In order to link your application code to the virtual Bluetooth devices that you've created, you need to specify an improntolocaldevice.friendlyname property for your application. In the J2SE, you can do this by executing the following line of code at runtime: java -Dimprontolocaldevice.friendlyname=TestPDA RemoteControl
That's of course assuming that the name of your application is RemoteControl and the friendly name of your virtual device is TestPDA. You can also specify this property within your Java class itself before calling any JSR-82 code:
System.setProperty("improntolocaldevice.friendlyname", "TestPDA"); Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
2003 (352 pages) If you're creating Apress a J2ME© MIDP application, you can set this property in your MIDlet's Java Application Descriptor (JAD) file. For example, the JAD filetext would contain the line: Java The authors of this describe how to following develop wireless
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of impronto.localdevice.friendlyname: fooof security concerns, and Bluetooth-based services, highlights more.
You must also insert the following code into your MIDlet's constructor so that Impronto Simulator can read the JAD Table of Contents file using the getAppProperty() method of MIDlet: Bluetooth for Java Introduction import com.rococosoft.impronto.configuration.*; Chapter 1 javax.microedition.midlet.*; - Introducing Bluetooth import Chapter 2 class - Bluetooth 1.1 public SomeMIDlet extends MIDlet Chapter 3 - Before You Get Started public SomeMIDlet() { Chapter 4 Configuration.setConfiguration - Understanding the Java Bluetooth API (new MIDPConfigurationImpl(this)); Chapter } 5
- Bluetooth with J2ME MIDP
... 6 Chapter
- Creating a Bluetooth Print Server with JPS API
} Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Note Any application that uses pure JSR-82 code (i.e., no vendor libraries) can run in the simulator as well. The only downside is that the simulator will create generic "dummy" devices.
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Chat Example
Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
The chat example we present here uses the Serial Port Profile to send text messages from one simulated Bluetooth
Appendix - BlipNet In 1.1 API device toDanother. ChatServer.java, the chat server registers its service and waits for a client to connect. After Index a client connects, the server prints the client's message to the command line and prompts the server to respond. In List of Figures ChatClient.java, the client searches for the server and creates a Serial Port Profile connection after obtaining List Tables theofconnection URL. Listing 8-2 shows the code for ChatServer.java and Listing 8-3 shows the code for List ChatClient.java. of Listings List of Sidebars
Listing 8-2: ChatServer.java import java.io.*; import javax.bluetooth.*; import com.rococosoft.io.*; class Server { StreamConnection con = null; StreamConnectionNotifier service= null; InputStream ip = null; OutputStream op = null; String serviceURL = "btspp://localhost:1111;name=ChatServer"; public Server() throws IOException{ //Extends a stream for client to connect service = (StreamConnectionNotifier)Connector.open(serviceURL); //Server waiting for client to connect con = service.acceptAndOpen(); //Open streams for two way communication. ip = con.openInputStream();
op = con.openOutputStream(); Bluetooth forfor Javareading data from inputstream //Starts a new thread by Bruce Hopkins and Ranjith Antony //while the present thread, goes forward and ISBN:1590590783 write data to outputstream Apress © 2003 (352 pages) //thus enabling a two way communication with the client authors=ofnew this text describe how to develop wireless Java ReadThreadTherdthr ReadThread(ip); applications using Bluetooth for a variety of platforms. This rdthr.start(); includes an API overview of the Java library, development of writeData(); Bluetooth-based services, highlights of security concerns, and } more. private void writeData() throws IOException{ int data = 0; Table do{ of Contents Bluetooth for Java try{ Introduction data = System.in.read(); Chapter 1 - Introducing Bluetooth op.write(data); Chapter }catch(IOException 2 - Bluetooth 1.1 e){} }while(true); Chapter 3 - Before You Get Started } 4 - Understanding the Java Bluetooth API Chapter } Chapter 5 - Bluetooth with J2ME MIDP class6 ReadThread extends Thread { JPS API Chapter - Creating a Bluetooth Print Server with InputStream = null; Chapter 7 - Java and ip OBEX public ReadThread(InputStream inp){ Chapter 8 - Using a Bluetooth Simulator ip = inp; Chapter 9 - Bluetooth Security } Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget public void run() { Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet char data; Chapter 12 - Bluetooth and Jini int i = 0; Appendix do{A - javax.bluetooth Appendix B - javax.obex try{ Appendix - Java from Bluetooth Development //ReadC data the stream on the PalmOS Platform Appendix D BlipNet 1.1 API data = (char)ip.read(); IndexSystem.out.print(data); List //This of Figures is a bit sneaky and hard to explain. //comment List of Tables out the following line to see the difference in how //the application behaves. List of Listings List ofif(data Sidebars == 0x0d)System.out.println(); } catch(IOException e){} }while(true); } } public class ChatServer { public static void main(String args[]) throws IOException { System.setProperty("improntolocaldevice.friendlyname", "ChatServer"); Server chatServer = new Server(); } }
Listing 8-3: ChatClient.java import java.io.*; import javax.bluetooth.*; import com.rococosoft.io.*; class Client implements DiscoveryListener{
Bluetooth for Java localDevice = null; private static LocalDevice by Bruce Hopkins and Ranjith Antony = null;ISBN:1590590783 private DiscoveryAgent discoveryAgent Apress © 2003 (352 pages) = null; private String connectionURL private RemoteDevice[] device = null; The authors of this text describe how to develop wireless Java applications usingrecords Bluetooth = for null; a variety of platforms. This private ServiceRecord[] includes an API overview=offalse; the Java library, development of private boolean inquiryCompl Bluetooth-based services, highlights of security concerns, and int count = 0; more. int maxSearches = 10; InputStream ip = null; Table of Contents op = null; OutputStream Bluetooth public for Client() Java throws IOException, InterruptedException{ localDevice = LocalDevice.getLocalDevice(); Introduction discoveryAgent = localDevice.getDiscoveryAgent(); Chapter 1 - Introducing Bluetooth device = new RemoteDevice[10] Chapter 2 - Bluetooth 1.1 // Starts inquiry for devices in the proximity and waits till the Chapter 3 - Before You Get Started //inquiry is completed. Chapter 4 - Understanding the Java Bluetooth API System.out.println("\nSearching for Devices...\n"); Chapter 5 - Bluetooth with J2ME MIDP discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this); Chapter 6 - Creating a Bluetooth Print Server with JPS API synchronized(this){ Chapter 7 - Java and OBEX this.wait(); Chapter 8 - Using a Bluetooth Simulator } Chapter 9
- Bluetooth Security
Chapter 10 the - Wireless Embedded Systems the Micro BlueTarget //Once Device inquiry is with completed it starts searching for the Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet //required service. Service search is done with the given uuid. Chapter 12 -starting Bluetooth and Jini search it waits for the result. If the //After each Appendix A - javax.bluetooth //connectionURL is null, ie, if No service Records are obtained, then Appendix B - javax.obex //it continues search in the next device detected. Appendix C - Java Bluetooth Development on the PalmOS Platform
int[] attrSet = {0,3,4,0x100}; Appendix D - BlipNet 1.1 API IndexUUID[] uuids = new UUID[1];
= new UUID("1111",true); List ofuuids[0] Figures i = 0; i< count;i++) { List offor(int Tables transactionid = discoveryAgent.searchServices List ofint Listings List of Sidebars
(attrSet,uuids,device[i],this);
if(transactionid != -1){ synchronized(this){ this.wait(); } } if(connectionURL != null) break; }// end of forloop //If the URL returned from SPP Server begins with btspp then //we call the getConnection method which //establishes a connection with the SPPServer and returns it. Connection // returned is of type StreamConnection. //A piece of raw data is being sent over RFCOMM. if(connectionURL == null) System.out.println("No service available.......... ."); else if(connectionURL.startsWith("btspp")){ StreamConnection connection = getconnection(); op = connection.openOutputStream(); ip = connection.openInputStream();
} Bluetooth WriteThread wrthr for = Java new WriteThread(op); by Bruce Hopkins and Ranjith Antony wrthr.start(); Apress © 2003 (352 pages) readData();
ISBN:1590590783
The authors of this text describe how to develop wireless Java } using Bluetooth for a variety of platforms. This private void applications readData()throws IOException{ includes an API overview of the Java library, development of char data;Bluetooth-based services, highlights of security concerns, and int i = 0;more. do{ data = (char)ip.read(); Table System.out.print(data); of Contents Bluetooth for Java== 0x0d)System.out.println(); if(data Introduction }while(true); Chapter 1 - Introducing Bluetooth } Chapter 2
- Bluetooth 1.1 //When device it is added to the remote device table. Chapter 3 a- Before Youis Get discovered Started Chapter 4
- Understanding the Java Bluetooth API public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) Chapter 5 synchronized - Bluetooth with J2ME MIDP
{ Chapter 6
- Creating a Bluetooth Print Server with JPS API System.out.println("New Device discovered : "+btDevice.getBluetoothAddress()); Chapter 7 - Java and OBEX
device[count++] = btDevice; - Using a Bluetooth Simulator
Chapter 8
}
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
//When a service is discovered in a particular device // and the connection url is not null //then the thread that Appendix A - javax.bluetooth //is waiting in the main is notified. Chapter 12 - Bluetooth and Jini Appendix B - javax.obex Appendix - Java Bluetooth Development on the PalmOS Platform publicC synchronized void servicesDiscovered(int transID, Appendix D - BlipNet 1.1 API ServiceRecord[] servRecords) { Indexrecords = new ServiceRecord[servRecords.length]; List ofrecords Figures = servRecords;
i=0;i<servRecords.length;i++) { List offor(int Tables List ofint[] Listings atrids = servRecords[i].getAttributeIDs(); List ofString Sidebars servName = (String)((DataElement)
servRecords[i].getAttributeValue(0x100)).getValue(); System.out.println("Service Name : "+servName); connectionURL = servRecords[i].getConnectionURL (ServiceRecord.NOAUTHENTICATE_NOENCRYPT,true); System.out.println("Connection url :" + connectionURL); if(connectionURL != null) { synchronized(this) { this.notify(); } break; } } } //This function notifies the Thread waiting in main if a service search is // terminated, i.e., if the responsecode is SERVICE_SEARCH_COMPLETED or //SERVICE_SEARCH_NO_RECORDS public synchronized void serviceSearchCompleted(int transID, int respCode) { if(respCode==SERVICE_SEARCH_ERROR) System.out.println("\nSERVICE_SEARCH_ERROR\n");
if(respCode==SERVICE_SEARCH_COMPLETED) Bluetooth for Java System.out.println("\nSERVICE_SEARCH_COMPLETED\n"); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony if(respCode==SERVICE_SEARCH_TERMINATED) Apress © 2003 (352 pages) System.out.println("\n SERVICE_SEARCH_TERMINATED\n"); The == authors of this text describe how to develop wireless Java if(respCode SERVICE_SEARCH_NO_RECORDS){ applications using synchronized(this) { Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of this.notify(); Bluetooth-based services, highlights of security concerns, and } more. System.out.println("\n SERVICE_SEARCH_NO_RECORDS\n"); } Table if(respCode of Contents == SERVICE_SEARCH_DEVICE_NOT_REACHABLE) Bluetooth for Java System.out.println("\n SERVICE_SEARCH_DEVICE_NOT_REACHABLE\n"); Introduction } Chapter 1 the - Introducing //Once deviceBluetooth inquiry is completed it notifies the Thread that waits in the Main. Chapter public 2 - Bluetooth synchronized 1.1 void inquiryCompleted(int discType) { this.notify(); Chapter 3 - Before You Get Started } 4 - Understanding the Java Bluetooth API Chapter StreamConnection getconnection() throws IOException { Chapter 5 - Bluetooth with J2ME MIDP return (StreamConnection)Connector.open(connectionURL); Chapter 6 - Creating a Bluetooth Print Server with JPS API } 7 - Java and OBEX Chapter } Chapter 8 - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
class WriteThread extends Thread {
Appendix A - javax.bluetooth OutputStream op = null; Appendix B - javax.obex public WriteThread(OutputStream oup){ Appendix Java Bluetooth Development on the PalmOS Platform op C = -oup; Appendix } D - BlipNet 1.1 API Indexpublic void run() { List ofint Figures data = 0;
i = List ofint Tables
0;
List ofdo{ Listings List oftry{ Sidebars
data = System.in.read(); op.write(data); }catch(IOException e){} }while(true); } } public class ChatClient { public static void main(String args[]) throws IOException,InterruptedException { System.setProperty("improntolocaldevice.friendlyname", "ChatClient"); Client chatClient = new Client(); } }
In order to test the application, you need to set the system properties for each class. Figure 8-5 shows the Impronto Simulator after we ran the ChatServer application.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents
Figure Bluetooth for 8-5: Java The ChatServer Bluetooth device in the Impronto Simulator device list Introduction Chapter 1 the - Introducing Bluetooth Now that server is running, let's open a new command window and run the chat client. Figure 8-6 shows the Chapter 2 Simulator - Bluetoothwith 1.1ChatClient making a connection to ChatServer. Impronto Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
Figure 8-6: The ChatServer interacting with the ChatClient in the Impronto Simulator environment
List of Figures List of Tables
And it! You now have a complete simulated JSR-82 application. Figures 8-7 and 8-8 show the conversation List of that's Listings between the client and the server. List of Sidebars
Figure 8-7: The server has sent a message and the client responds.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for 8-8: Java The client receives a message and sends a reply. Figure Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter gaveApress you an introduction © 2003 (352 pages)to the Rococo Impronto Simulator, the first and only development environment that The allows you to JSR-82-compliant applications using authors of create this text describe how to develop wireless Javasimulated Bluetooth devices. Bluetooth simulators are very useful tools in the application development applications using Bluetooth for a variety of platforms. This process because they allow you includes an API overview of the Java library, of to avoid configuring or debugging Bluetooth devices in your development test environment. Bluetooth-based services, highlights of security concerns, and more. In Chapter 9, we're going to discuss the security measures that are provided by the Bluetooth specification
and the JSR-82 in order to make your applications more secure. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 9: Bluetooth Security by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress ©the 2003 (352 pages) So far, we've discussed benefits and the advantages of using Java and Bluetooth, but we haven't addressed (in The authors of this of text describe how to develop wireless Javaother people from using your Bluetooth any detail) the security implications using this technology. What prevents applications using Bluetooth for a variety of platforms. This devices? What prevents a hacker from intercepting your transmission if you're transmitting sensitive information like includes an API overview of the Java library, development of financial, personal, or medical data? In thishighlights chapter, of we'll take a look at the Bluetooth-based services, security concerns, andsecurity measures built into the Bluetooth specification and more. the JSR-82 API in order to make your wireless applications more secure. We'll wrap things up with a
demonstration of how to use the Mobiwave Bluetooth Protocol Analyzer in order to see "what's in the air" when you're transmitting data between Bluetooth devices.
Table of Contents Bluetooth for Java
Bluetooth Security Measures
Introduction
Chapter 1 - Introducing Bluetooth Data security is an important aspect of any networked application. All data that is in transit is vulnerable to an attack Chapter - Bluetooth 1.1 from an2 eavesdropper (it doesn't matter if the connections are physical or wireless). Developers must realize that there Chapter 3 to - Before You Get Started is no way completely ensure that information transmitted wirelessly will only reach the intended destination. Chapter 4 - Understanding the Java Bluetooth API
Note exceptwith for infrared...but Chapter 5 Well, - Bluetooth J2ME MIDP of course, you already knew that! Chapter 6
- Creating a Bluetooth Print Server with JPS API
For application developers, the Bluetooth specification addresses security in three ways: authentication, authorization, - Java and OBEX and encryption. Let's look at these in more detail.
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Authentication
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Authentication with Bluetooth consists of a simple challenge/response mechanism. The Bluetooth specification does not provide any means to authenticate users; you can only authenticate devices. So, the challenge/response does not Appendix - javax.bluetooth involve aAuser name and password as typical authentication schemes. Authentication with Bluetooth only involves a Appendix B - javax.obex number (PIN). personal identification Chapter 12 - Bluetooth and Jini
Appendix C - Java Bluetooth Development on the PalmOS Platform
During the Appendix D -authentication BlipNet 1.1 APIprocess, the PIN code is never transmitted from the client to the server. In order to authenticate, the client creates a 128-bit shared link key, which is derived from the PIN. If the PIN codes on the client Index andofthe server do not match, then the authentication process fails. List Figures List of Tables
A practical example for the usage of Bluetooth authentication would be a Bluetooth-enabled hotel business center. A hotel that's oriented to business travelers could enable authentication on all of its Bluetooth-enabled devices (like List of Sidebars printers and scanners) in the business center. Upon check-in, a registered guest of the hotel will be given the PIN code in order to access the services in the business center, and this would prevent non-hotel customers from simply walking up and using the services that are reserved for hotel guests. List of Listings
Server Authentication Bluetooth servers can request authentication by adding the authenticate parameter to the connection URL String. The code that follows shows a server using the Serial Port Profile, and requesting authentication: String url = "btspp://localhost:00112233445566778899AABBCCDDEEFF;authenticate=true"
If the authenticate parameter is set to true, then the JSR-82 implementation attempts to enforce authentication when devices connect to the server. Note The key word here is attempt. ABluetoothConnectionException will be thrown if the server does not support authentication, or if there is a conflict with the settings of the BCC. It is ultimately the decision of the BCC to allow authentication or to throw the exception. If the server device has a user interface, then the device may prompt the user to change the device's settings. If the authenticate parameter is set to false, then the implementation does not attempt to authenticate the client.
If the authenticate parameter is not in the URL String at all, then the implementation treats it as false, unless for Java you set encryptBluetooth or authorize to true.
Client
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) Authentication
ISBN:1590590783
The authors of this text describe how to develop wireless Java using the Bluetooth a variety of platforms. Bluetooth clients applications can also require server for to authenticate by settingThis the authenticate parameter to true as includes an API overview of the Java library, development of shown here: Bluetooth-based services, highlights of security concerns, and more.
String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF;authenticate=true" Table of Contents Bluetooth If the authenticate for Java parameter is set to false (or is not in the URL at all), then the client will not require the server Introduction to authenticate. Chapter 1
- Introducing Bluetooth
Chapter 4
- Understanding the Java Bluetooth API
Note Why would the client request the server to authenticate it (especially if the server didn't require Chapter 2 - Bluetooth 1.1 authentication)?Well, since authentication is a requirement for encryption, the client may want to be Chapter 3 - Before You Get Started authenticated to the server in order to send some data securely, even though the server doesn't require it. Chapter 5 you're - Bluetooth with MIDP Whether a client or J2ME a server, you can request authentication even after the connection is established, as shown Chapter 6 Creating a Bluetooth Print Server with JPS API here: Chapter 7
- Java and OBEX
Chapter 8 an - Using a Bluetooth // get instance of Simulator the RemoteDevice if we don't already have it Chapter 9 - Bluetooth Security // assume that we have an active Connection object named "conn" Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget RemoteDevice remoteDevice = RemoteDevice.getRemoteDevice(conn); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet remoteDevice.authenticate(); Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
The JSR-82 API also gives you a method to check to see if your Connection to a RemoteDevice is authenticated. Just call the isAuthenticated() method of RemoteDevice.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Appendix - BlipNet API that in both client and server authentication, the PIN is never specified in the URL (or NoteD Have you1.1 noticed Index anywhere else)? Assigning and entering the PINs on both the client and server are handled by the BCC. List of Figures List of Tables
Bluetooth Server Authorization
List of Listings
List of Sidebars Bluetooth servers can request that only authorized devices connect and use a particular service. These authorized
devices are called trusted devices. Servers can require that clients be authorized by setting the authorize parameter to true in the connection URL, as shown here: String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF;authorize=true"
Authorization requires authentication, so the following line of code is more descriptive of what's actually going on: String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF; authenticate=true;authorize=true"
However, if you explicitly set authenticate to false, and authorize to true, then the system will throw a BluetoothConnectionException. If authorization was not specified in the connection URL, the server can require the client to be authorized by calling the authorize() method of the RemoteDevice class as follows: // get an instance of the RemoteDevice if we don't already have it // assume that we have an active Connection object named "conn"
RemoteDevice remoteDevice = RemoteDevice.getRemoteDevice(conn); Bluetooth for Java remoteDevice.authorize(conn); by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Whether the connection is established not, thehow server can check to see if the client is a trusted device by calling the The authors of this textordescribe to develop wireless Java applications using for a variety class. of platforms. This isTrustedDevice() method of Bluetooth the RemoteDevice includes an API overview of the Java library, development of services, highlights of security concerns, Note There isBluetooth-based no such thing as client authorization. Why? Well, sinceand authorization is not a requirement for more. encryption, it doesn't make sense for a client to request a server to authorize it, if the server does not require it. Table of Contents
A good use of the authorization security measure occurs when you're dealing with personal devices. For instance, if you have a Bluetooth-enabled TV and a Bluetooth-enabled remote control, then you want your TV to only obey Introduction commands coming from your remote, obviously. Otherwise, you'll be vulnerable to common pranksters coming within Chapter 1 - Introducing Bluetooth range of your house, and changing your channels while you're watching TV—or even worse, turning on your TV at a Chapter 2 - Bluetooth 1.1 high volume at 3:00 a.m.! Bluetooth for Java
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Encryption - Bluetooth with J2ME MIDP
Chapter 5
Chapter 6 - Creating a Bluetooth Print Serverif with JPS API Authentication and authorization are good you want to prevent unwanted users from accessing the services of your Chapter 7 Java and OBEX Bluetooth devices. However, neither of those security measures will protect your sensitive data from a hacker who has Chapter 8 tools - Using a Bluetooth Simulator the right to "sniff" your data while it's being transmitted. Encryption, however, is the security measure that you can Chapter Bluetooth Security employ9in -order to protect your sensitive data transmissions. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Now, in11 order to encrypt information (whether you're using Bluetooth Chapter - Enterprise Bluetooth Applications with the Ericsson BlipNet or not), you need an encryption algorithm, an encryption and the information that you want to protect. An encryption algorithm (also called a cipher) is simply a Chapter 12 -key, Bluetooth and Jini
procedure that is followed in order to scramble the data. Some well-know encryption algorithms are Blowfish, Twofish, RC4, DES, TripleDES, IDEA, CAST, and Rijndael. The encryption key is simply a code that is used by the algorithm to Appendix B - javax.obex encrypt the data. In symmetrical encryption, the same key is used to encrypt and decrypt the data. In asymmetrical Appendix C - Java Bluetooth Development on the PalmOS Platform encryption, however, two keys are used to encrypt and decrypt the data. Appendix A - javax.bluetooth
Appendix D - BlipNet 1.1 API
IndexNote We won't talk about asymmetrical encryption any further because Bluetooth uses symmetrical encryption to List of Figures encrypt its data transmissions. List of Tables
Now look at a quick example. Listing 9-1 shows some information that needs to be cryptographically protected if List of let's Listings transmitted from a Bluetooth-enabled cash card.
List of Sidebars
Listing 9-1: Bank Account Information Bank Name: SDH Bank Account Name: Bruce Hopkins Account Number: 123456789 Account Balance: $0.03
Note Of course, we're protecting the bank account number, not the balance! When the encryption key, as shown in Listing 9-2, and the CAST algorithm are applied to the data, then sensitive bank account information will get encrypted, as shown in Listing 9-3. Listing 9-2: A 1024-Bit Encryption Key mQGiBD1ZRx4RBADgiQLiScTmdxd5aMvRIZbcmSsAzwXWtEBwarMO6xR4SDgp/ji0 KaU02yOD08XxMA2k9yvaQXGpKK6JrTeaqMF9vKyy26Sur3eMtjNxbPJok2XWgcZj hFCYZjG1/wRbx60sf/xtWSeuhHyKENGhp352/rByvTF0KSEMf2txYZLOOQCg/0al
rqcZTOQyhOWufgMlEIQ2ldED/A3i5oK+ibyN2t10aJpyxFe/NFL5uwbIjyWAndFN Bluetooth for Java 2rdhOih7fOhNgVVVm6MGuNu/lqD5M576JSEngyQcxaG4G7jCOPElVk79+EJa6eku ISBN:1590590783 by Bruce Hopkins and Ranjith Antony ebAaPeq5osCHUAsbUD31vuxSK8qGsMy1xtOgid2gCuS52HDaUAnvIt9ojpMnOPrZ Apress © 2003 (352 pages) zrgzBACZAnCz0Z+RNkYP50ch/UWFqbo6oPR0Z4Vbi1UFvoZl/B8auxSvYueXjAuC The authors of this text describe how to develop wireless Java bo8YEEjBlpygWCtw8hP0jxFG3L/hWe95Qkgu8kNTX+SX6bthPBWnvZ7vTgstYyAQ applications using Bluetooth for a variety of platforms. This yXLwfLJRYuuT9i8OuqODw3Kc0u3xTwIE4KIIvlHwadYv5z2G+7QhRWR3aW4gSG9w includes an API overview of the Java library, development of a2lucyA8YmhvcGtpbnNAZ2x0Zy5jb20+iQBYBBARAgAYBQI9WUceCAsCAwkIBwEK Bluetooth-based services, highlights of security concerns, and AhkBBRsDAAAAAAoJEJI0N/w1q4wQWDAAnAmrZRbJXWARLbowLBwfTrJmMfhwAJ9V more. l477oH3TB/W2SLbJoSLY9q1CW7kCDQQ9WUceEAgA9kJXtwh/CBdyorrWqULzBej5 UxE5T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1 Table of Contents WV/cdlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01ue Bluetooth for Java jaClcjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJ Introduction I8BD8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaG Chapter 1 - Introducing Bluetooth xAMZyAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwAC Chapter Agf+M1E08J4AnzN20aLhjbO81jrJn5BIVPkHxm6smP5rIHJ4kpmkoLJstXV+P7HD 2 - Bluetooth 1.1 rWaQXBqBzx0wEchZL+S7qazRQA6dQ8e2fSeMOABQgo7pDjDEn1rKitTh5501qFK6 Chapter 3 - Before You Get Started yH+tpEC/C9zkpeLNEODK/v1wKj7Xl+d8gEUYxoDALbQ5rZ5e3eTEu+3WFmAIp6AQ Chapter 4 - Understanding the Java Bluetooth API Z14BKmP4RYw8ij2lLEHPJ+F6aAZAmzp7U/2HEvQH/7ZrZogz0dmOrAIMpRHgPVsI Chapter 5 - Bluetooth with J2ME MIDP uOryEYXSdsG6I3s5xgqY4JR0N96hg38GZjV4/22kt5uncXWbupmOXtyyxBW5roxb Chapter 6 - Creating a Bluetooth Print Server with JPS API W/AS2KMkb6Y5s0sSsfQ63inD8IkATAQYEQIADAUCPVlHHgUbDAAAAAAKCRCSNDf8 Chapter 7 - Java and OBEX NauMECO3AKD1UonZcLkmDx0CGCbJwmp2m0P2jwCg03KNtDRx6FyyZpZc5QRAWbgP Chapter 8 - Using a Bluetooth Simulator P4M= Chapter 9 - Bluetooth Security =trVX Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Listing 9-3: Bank Account Information Encrypted with the CAST Algorithm Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
qANQR1DBwU4DMCkFM4tTfBsQCAC4WJhOUK50sv3gZJ3ivf5BUb+jm9R6n2vKUijp KUzu3B1PSS3ignZ9t1Bvp+HSXuX3lBq8KsoMYYSwj3QLSkKgYJz1PkAyvyR9bXed Index 5agRoFvNdQiGDQEP4GtrIjA8/Y6UFvXskQq4w37vwyUoyvS9ONYxGP0eHEA/Yk0b List of Figures CjA3i6aFIH81Pksb8pNqr+v0mq5XPFSaYbvLveErCQh6wd63cGzKL8Q23St6JkXi List of Tables rBqfFYa7Eu+Vjc78mTe9vVlWIdw6zyhb35bnaybrLEPW7/xp2K6eIsoiiHngL5MK List of Listings M4fqruoPp2k7UOnzw0tf1EojEZ8nyOvJCP0ZARHhzNAonA6zB/0f2ygNnNtsEaId List of Sidebars 1OCiIGKohIMmOa07VTXx7cmXUCToSuorIgF43KNs3wP9nPPvxlV3+MhuG4DHF6Tm oVcR5jdfbFRbbUjzLHVPntP+QS0nE2LAxLsbfMQ6zEkz2F2iJlGbOFy8cjc+eOXJ jnfG1+z4Ti0MtyvA1T6fd9qJP7TYsBmrQyLLF60PCMVQsnE26+mLH9gn4sgPdPhv y8ZHjtSfyon5+vgY6tgrY+OSB6GypgN8b2v/RCi9y5WnsNA010W6Xm/iKowTEQAB j7YxBkoPqC2eOfKwZnAgMcImunFX1767ewIQkcBTiWvOsQ2jQZImD9Fu1xpywdfk 5GLoVny3yXRXHLrAbxysNU+0ylOdRNiPEjvnLG2NpXiCtcWAvuGGw4SID9FIkRiM Dw/D//p4OgrachGmhZ2rwn9HPIkHjvxbTwtm1qRxlt99yBtP6mfDEWkI8QibLVYr 2RUElEF+3Ak/hVd2er82XjeNbqerhbfCS0Ld9w== =rZCL Appendix D - BlipNet 1.1 API
As we stated earlier, Bluetooth uses symmetrical encryption, so there's only one key for encrypting and decrypting information. However, the key is never transmitted from the server to the client. The encryption key is derived from several factors that are known to both the client and server (including the PIN). Now let's take a look at how to encrypt your data transmissions using the JSR-82.
Server Encryption Bluetooth servers can specify that they want their transmissions encrypted by setting the encrypt parameter to true in the connection URL, as follows:
String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF;encrypt=true" Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Encryption requires the following of code wireless is more Java descriptive of what's actually going on: Theauthentication, authors of this so text describe howline to develop applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of String url = Bluetooth-based services, highlights of security concerns, and "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF; more.
authenticate=true;encrypt=true" Table of Contents Bluetooth However,forif you Javaexplicitly set authenticate to false, and encrypt to true, then the system will throw a
BluetoothConnectionException. If encryption was not specified in the connection URL, the server can later Introduction encrypt1the- Introducing transmissionBluetooth by calling the encrypt() method of the RemoteDevice class as shown here: Chapter Chapter 2
- Bluetooth 1.1
Chapter 3 an - Before You Get of Started // get instance the RemoteDevice if we don't already have it Chapter // assume 4 - Understanding that we have the Java an Bluetooth active API Connection object named "conn"
RemoteDevice remoteDevice Chapter 5 - Bluetooth with J2ME MIDP= RemoteDevice.getRemoteDevice(conn); remoteDevice.encrypt(conn, true); Chapter 6 - Creating a Bluetooth Print Server with JPS API // now sensitive information has been Chapter 7 that - Java the and OBEX // transmitted, turn off encryption and send the Chapter 8 - Using a Bluetooth Simulator // rest the data unencrypted for better performance Chapter 9 -of Bluetooth Security remoteDevice.encrypt(conn, false);
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Client Encryption
Appendix A - javax.bluetooth Appendix B clients - javax.obex Bluetooth can also require that their communication with their servers be encrypted by setting the encrypt Appendix C -to Java Bluetooth Development on the PalmOS parameter true in the URL as demonstrated here: Platform Appendix D - BlipNet 1.1 API Index String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF;encrypt=true" List of Figures List of Tables
The List of following Listings line of code is also harmless: List of Sidebars
String url = "btspp://02AB45AC35DF:00112233445566778899AABBCCDDEEFF; authenticate=true;encrypt=true"
If the encrypt parameter is set to false (or is not in the URL at all) then the transmissions between the client and server are not encrypted. After the connection has been established, both the server and the client can check to see if the transmission is encrypted by calling the isEncrypted() method of the RemoteDevice class. If all of this sounds really complex to you, don't worry; the encryption/ decryption process is all done behind the scenes by your underlying JSR-82 implementation, so you don't have to worry about ciphers, keys, and other cryptographic elements.
Bluetooth for Java Security Example by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Now let's take a look at © a 2003 practical demonstration of the security measures that are provided to us by Bluetooth Apress (352 pages) and the JSR-82. The In this example, the client uses how authentication authorization over an L2CAP connection to authors of this text describe to develop and wireless Java send a simple message to the server. Initially, encryption is not enabled so that we can demonstrate how easily applications using Bluetooth for a variety of platforms. This includes your an API overview of transmissions the Java library, of When running the example, we a third party can capture wireless data if development left unprotected. highlights of security concerns, andThe BPA-D10 is a noninstructive used some of theBluetooth-based many features services, of Mobiwave BPA-D10 Protocol Analyzer. more. Bluetooth Protocol Analyzer that allows the realtime capturing, logging, decoding, and displaying of the Bluetooth data transmissions. The BPA-D10 is capable of capturing protocol information over the air and relaying the data to a host desktop computer through an Ethernet connection. This allows remote data logging Table of Contents and unlimited storage capability. Figure 9-1 shows a picture of the device. Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - 9-1: Enterprise Bluetooth BPA-D10 Applications with the Protocol Ericsson BlipNet Figure The Mobiwave Bluetooth Analyzer Chapter 12 - Bluetooth and Jini
Listing 9-4 the server code for our security example. Appendix A -presents javax.bluetooth Appendix B - javax.obex
Listing 9-4: ServerApp.java
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
import java.io.*; Index import javax.bluetooth.*; List of Figures import com.atinav.standardedition.io.*; List of Tables public class ServerApp { List of Listings List of Sidebars
public static void main(String args[]){ ServerApp a = new ServerApp(); L2CAPConnection con = null; L2CAPConnectionNotifier service = null; InputStream in = null; OutputStream out = null; String serviceURL = "btl2cap://localhost:1111;name=ATINAV;" + "authorize=true;authenticate=true;encrypt=false"; LocalDevice local = null; try { local = LocalDevice.getLocalDevice(); System.out.println("\n Atinav aveLink Bluetooth Server Application \n"); System.out.println("__________________________________________\n"); System.out.println("My BDAddress: "+ local.getBluetoothAddress()); System.out.println("__________________________________________\n"); service = (L2CAPConnectionNotifier)Connector.open(serviceURL); // // Add the service record to the SDDB and // accept a client Connection
// Bluetooth for Java ISBN:1590590783 Hopkins and Ranjith Antony con by = Bruce service.acceptAndOpen(); Apress © 2003 (352 pages) System.out.println("\nConnection established to the remote device\n");
The authors of this text describe how to develop wireless Java applications Bluetooth for a variety of platforms. This byte[] data using = new byte[1000]; includes an API overview of the Java library, development of while (!con.ready()){ Bluetooth-based services, highlights of security concerns, and try{ more.
Thread.sleep(1); }catch(InterruptedException ie){} Table of Contents } Bluetooth for Java con.receive(data); Introduction System.out.println("Data received at the Server Side "+ Chapter 1 - Introducing Bluetooth new String(data)); Chapter 2
- Bluetooth 1.1
Chapter 3
String - Before YoustrData= Get Started "This is the Data From the Server Application to "+
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
" the Client Application"; - Bluetooth with J2ME MIDP
Chapter 6
byte[]datax = strData.getBytes(); - Creating a Bluetooth Print Server with JPS API
Chapter 7
con.send(datax); - Java and OBEX
//System.out.println("Data sent from the server side." + strData); try{ Chapter 9 - Bluetooth Security Thread.sleep(10); Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget }catch(Exception e){} Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet }catch(Exception e){ Chapter 12 - Bluetooth and Jini e.printStackTrace(); Appendix A } - javax.bluetooth Chapter 8
- Using a Bluetooth Simulator
Appendix B - javax.obex Appendix } C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API } Index List of Figures List of Tables
Listing 9-5 shows the client code for our security demonstration. List of Listings List of Sidebars
Listing 9-5: ClientApp.java import java.io.*; import javax.bluetooth.*; import com.atinav.standardedition.io.*; public class ClientApp implements DiscoveryListener{ private static LocalDevice localDevice = null; private DiscoveryAgent discoveryAgent = null; private String connectionURL = null; private RemoteDevice[] device = null; private ServiceRecord[] records = null; private boolean inquiryCompl = false; int count = 0; int maxSearches = 10;
public ClientApp(){
System.out.println("\n Atinav aveLink Bluetooth Client Application \n"); Bluetooth for Java System.out.println("________________________________________\n"); by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
try{ The authors of text describe how to develop wireless Java localDevice = this LocalDevice.getLocalDevice(); applications using Bluetooth for a variety of platforms. This discoveryAgent = localDevice.getDiscoveryAgent(); includes an API overview of the Java library, development of device = new RemoteDevice[10]; Bluetooth-based services, highlights of security concerns, and System.out.println("_______________________________________\n"); more. System.out.println("My BDAddress: "+ localDevice.getBluetoothAddress()); Table of Contents System.out.println("____________________________________\n"); Bluetooth Java // for Starts inquiry for devices in the proximity and waits till the Introduction // inquiry is completed. Chapter 1
- Introducing Bluetooth
ChapterSystem.out.println("\nSearching 2 - Bluetooth 1.1 for Devices...\n"); ChapterdiscoveryAgent.startInquiry(DiscoveryAgent.GIAC,this); 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chaptersynchronized(this){ 5 - Bluetooth with J2ME MIDP Chapter 6 this.wait(); - Creating a Bluetooth Print Server with JPS API Chapter}7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
// Once the Device inquiry is completed it starts searching for the - Bluetooth Security // required service. Service search is done with the given uuid. After Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget // starting each search it waits for the result. Chapter 9
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
// If the connection URL is null, i.e., if No service Records obtained,
Appendix - javax.bluetooth //A then it continues search in the next device detected. Appendix B - javax.obex Appendix C - Java Bluetooth=Development on the PalmOS Platform int[] attrSet {0,3,4,0x100}; Appendix D - BlipNet 1.1 API UUID[] uuids = new UUID[1]; Index uuids[0] = new UUID("1111",true); List of Figures System.out.println("\nSearching for Service...\n"); List of Tables
for(int i = 0; i< count; i++){ List of Listings List of Sidebars
int transactionid = discoveryAgent.searchServices(attrSet,uuids,device[i],this); if(transactionid != -1){ synchronized(this){ this.wait(); } } if(connectionURL != null) break; } }catch(Exception ie){ ie.printStackTrace(); } // If the URL of the device begins with btl2cap, then we call the // getConnection method which establishes a connection with the L2CAPServer // and returns it. // Connection returned is of type L2CAPConnection. A piece of raw data is // being sent over L2CAP.
Bluetooth for Java
if(connectionURL ==Hopkins null)and Ranjith Antony ISBN:1590590783 by Bruce System.out.println("No service available.......... ."); Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java
else if(connectionURL.startsWith("btl2cap")){ applications using Bluetooth for a variety of platforms. This try{ includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and L2CAPConnection connection = getconnection(); more.
System.out.println("\nConnection established to the remote device\n"); String strData = "This is the Data From Client Application "+ Table of Contents "to Server Application"; Bluetooth for Java byte[] data = strData.getBytes(); Introduction connection.send(data); Chapter 1 - Introducing Bluetooth try{ Chapter 2 - Bluetooth 1.1 Thread.sleep(10); Chapter 3 - Before You Get Started }catch(Exception e){} Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 while(true){ - Bluetooth with J2ME MIDP Chapter 6 - Creating Bluetooth=Print with JPS API byte[]a datax newServer byte[1000]; Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator while (!connection.ready()){
Chapter 9
- Bluetooth try{Security
Thread.sleep(1); Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget }catch(InterruptedException ie){} Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet } Chapter 12 - Bluetooth and Jini connection.receive(datax); Appendix A - javax.bluetooth System.out.println("Data received at the Client Side "+ Appendix B - javax.obex new String(datax));
Appendix C - Java Bluetooth Development on the PalmOS Platform
} Appendix D - BlipNet 1.1 API // connection.close(); Index
List of Figures
}catch(Exception ioe){ ioe.printStackTrace(); List of}Listings List of}// Sidebars end of else if List of Tables
}
// // When a device is discovered it is added to the remote device table. // public synchronized void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod){ device[count++] = btDevice; System.out.println("New Device discovered : "+ btDevice.getBluetoothAddress()); } // // When a service is discovered in a particular device and the connection URL // is not null then the thread that is waiting in the main is notified. // public synchronized void servicesDiscovered(int transID, ServiceRecord[] servRecords){
records = new ServiceRecord[servRecords.length]; for Java records = Bluetooth servRecords; ISBN:1590590783 by Bruce Hopkins and Ranjith Antony for(int i=0;i<servRecords.length;i++){ Apress © 2003 (352 pages) The authors this text describe how to develop wireless Java int[] atrids = of servRecords[i].getAttributeIDs(); applications using String servName = Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of (String)((DataElement)servRecords[i].getAttributeValue(0x100)).getValue(); Bluetooth-based services, highlights of security concerns, and System.out.println("Service Name : "+ servName); more. connectionURL = servRecords[i].getConnectionURL(1,true); System.out.println("Connection url :" + connectionURL); Table of Contents if(connectionURL != null){ Bluetooth for Java synchronized(this){ Introduction this.notify(); Chapter 1 - Introducing Bluetooth } Chapter 2 break; - Bluetooth 1.1 Chapter 3 } - Before You Get Started } 4 - Understanding the Java Bluetooth API Chapter } Chapter 5 - Bluetooth with J2ME MIDP // Chapter 6 - Creating a Bluetooth Print Server with JPS API // This notifies the Thread waiting in main if a service Chapter 7 -function Java and OBEX // search is terminated,ie,ig the responsecode Chapter 8 - Using a Bluetooth Simulator // is SERVICE_SEARCH_COMPLETED or SERVICE_SEARCH_NO_RECORDS Chapter 9 - Bluetooth Security // Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget public synchronized void serviceSearchCompleted(int transID, int respCode){ Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
if(respCode==SERVICE_SEARCH_ERROR)
Appendix A System.out.println("\nSERVICE_SEARCH_ERROR\n"); - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform if(respCode==SERVICE_SEARCH_COMPLETED) Appendix D System.out.println("\nSERVICE_SEARCH_COMPLETED\n"); - BlipNet 1.1 API Index List ofif(respCode==SERVICE_SEARCH_TERMINATED) Figures
System.out.println("\n SERVICE_SEARCH_TERMINATED\n"); List of Tables List of Listings
== SERVICE_SEARCH_NO_RECORDS){ List ofif(respCode Sidebars synchronized(this){ this.notify(); } System.out.println("\n SERVICE_SEARCH_NO_RECORDS\n"); } if(respCode == SERVICE_SEARCH_DEVICE_NOT_REACHABLE) System.out.println("\n SERVICE_SEARCH_DEVICE_NOT_REACHABLE\n"); } // // Once the device inquiry is completed it notifies the Thread // that waits in the Main. // public synchronized void inquiryCompleted(int discType){ this.notify(); }
// // Opens the connection to the Server.
// Bluetooth for Java L2CAPConnection getconnection() throws IOException{ ISBN:1590590783 by Bruce Hopkins and Ranjith Antony return (L2CAPConnection)Connector.open(connectionURL); Apress © 2003 (352 pages) } The authors this text describe how to develop wireless Java public static voidofmain(String[] args){ applications using Bluetooth for a variety ClientApp client = new ClientApp();of platforms. This includes an API overview of the Java library, development of } Bluetooth-based services, highlights of security concerns, and } more. Table of Contents Bluetooth for Java
Running the Security Example
Introduction Chapter 1
- Introducing Bluetooth
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Now let's see what happens when we run the example. Figure 9-2 shows our security server waiting for a client Chapter 2 - Bluetooth 1.1 to connect.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Figure security server is waiting the client to connect. Appendix C - 9-2: Java The Bluetooth Development on the for PalmOS Platform Appendix D - BlipNet 1.1 API
Figure 9-3 shows the security client attempting to connect to the server.
Index
List of Figures List of Tables List of Listings List of Sidebars
Figure 9-3: The security client is attempting to connect to the server. The security server requires all clients to authenticate, so the Atinav stack prompts the user to enter a PIN code as shown in Figure 9-4.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4 - 9-4: Understanding the server Java Bluetooth Figure The security promptsAPI the user to enter a PIN for the application. Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Note This of course, is a part of Atinav's implementation of the BCC for their stack. Other JSR-82 - Java and OBEX implementations may allow you to enter the PIN for your server prior to runtime.
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9 the - Bluetooth Similarly, client is Security also prompted to enter a PIN. Of course, if the client enters an incorrect PIN, then the Chapter authentication 10 - Wireless process Embedded will fail. Systems Figure 9-5 with shows the Micro that the BlueTarget authentication process is a success. Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 9-5: The authentication process has succeeded. In this example, the encrypt parameter in the connection URL was initially set to false in order to show you how easy it is to capture unencrypted data while in transit. Figure 9-6 shows the Mobiwave BPA-D10 sniffing the data transmission.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Figure 9-6: You need to be very careful if you're sending sensitive data unencrypted between Bluetooth - Understanding the Java Bluetooth API devices because it can be captured by a third party using a Bluetooth Protocol Analyzer.
Chapter 4 Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API Now let's what Chapter 7 see - Java andhappens OBEX when we set the encrypt parameter to true in the connection URL. The results
are shown Figure 9-7. Chapter 8 -in Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 9-7: With encryption enabled, the Protocol Analyzer is still able to capture the data transmission; however, the data is corrupted. More on Mobiwave BPA-D10 Given sufficient information, the Mobiwave Protocol Analyzer could decrypt those encrypted packets over the air. The Mobiwave Protocol Analyzer is equipped with a feature called SmartDecrypt. SmartDecrypt was designed to tackle the noisy RF environment so that all the seven client/slave sessions could be decrypted in real time. Here's what you need to do in order to enable SmartDecrypt on the Mobiwave BPA-D10. The first thing that you need to do is to add the slave devices to the list of known slave devices. From the BPA-D10 main menu, select Decryption and then select Decryption Setup. This brings up the slave list dialog box, shown here:
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1 Add - Introducing Bluetooth Click to bring up the Add New Slave dialog box as shown here: Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix - Java Bluetooth Development the PalmOS Platform If theC PIN is not available or defined,onenter HEX "00"(this is the default PIN). If the current link key is known, Appendix D BlipNet 1.1 API you can enter it, else leave this field blank. Click OK when you are done. The current link key, if not Indexspecified, will be automatically generated during the capture of a good pairing or bonding session between List ofthe Figures two Bluetooth devices. List of Tables
let's run the security sample application again with the encrypt parameter set to true. Remember to List ofNow Listings the same PIN code you used to configure your slave device in the BPA-D10. The following figure List ofset Sidebars illustrates how the Mobiwave Protocol Analyzer intelligently decrypted data packets on the fly:
Please note that the SmartDecrypt feature of the BPA-D10 does not illustrate any of the limitations or shortcomings of Bluetooth's wireless encryption capabilities. Prior to decrypting the Bluetooth-encrypted packets successfully, the following information must be available:
The slave or client BD address that is involved Bluetooth for Java
ISBN:1590590783 Bruce Hopkins and The PIN by that is used during theRanjith pairingAntony or bonding session
Apress © 2003 (352 pages)
When the pairing or bonding session is carried out The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This
Confirmation includes of aan good API capture overviewof ofthe thepairing Java library, or bonding development sessionof Bluetooth-based services, highlights of security concerns, and more. If any of this information is missing or incomplete, the decryption will not be successful. Information such as when a pairing or bonding session is made is a rare and random event. Furthermore, during the capturing of a pairing or bonding session, many things could go wrong due to interference over the air or Bluetooth Table of Contents devices being out of range. Bluetooth's encryption mechanism is not easily breached or compromised. Bluetooth for Java
Introduction Java developers can further mitigate this risk by creating their own symmetric or asymmetric encryption Chapter 1 - Introducing Bluetooth routines by using the libraries from the JCE (Java Cryptography Extension) or from the Bouncy Castle at
http://www.bouncycastle.org. Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter introduced thepages) security measures that you can employ to make your Bluetooth Apress ©you 2003to(352 applications with The the JSR-82 more You learned about how to use the APIs in the JSR-82 in order authors of this secure. text describe how to develop wireless Java to enable authentication, authorization, and encryption in your Bluetooth applications. This chapter also applications using Bluetooth for a variety of platforms. This includes to anthe APIMobiwave overview of the Java Protocol library, development gave you an introduction BPA-D10 Analyzer. of Bluetooth-based services, highlights of security concerns, and more.the JSR-82 in order to make client-server, peer-to-peer, and cable replacement So far, we have used
wireless applications. In the next chapter, we'll take a look at the SND Micro BlueTarget in order to make fixed-wireless applications using the JSR-82. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 10: Wireless EmbeddedISBN:1590590783 Systems with the by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) Micro BlueTarget The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. Thisand rightfully so since the JSR-82 So far, this book has taken mainly a software-based approach to things, includes an API overview of the Java library, development of is a software specification about controlling Bluetooth devices with the Java language. In the past, Bluetooth-based services, highlights of security concerns, and Bluetooth device more. manufacturers envisioned their devices to be programmed in a native language like assembly or C, and making a Java interface to their devices was pretty much an afterthought. In this chapter, we're going to take a look at a device that was developed with the JSR-82 in mind: the Micro Table of Contents BlueTarget from Smart Network Devices (http://www.smartnd.com). Bluetooth for Java Introduction
What Is the Micro BlueTarget?
Chapter 1
- Introducing Bluetooth
Chapter 2 is-the Bluetooth 1.1 So what Micro BlueTarget and what can it do? The Micro BlueTarget is a fully self-contained Chapter 3 that - Before You Get Started radio, a Bluetooth stack, Bluetooth profiles, an operating system, a computer includes a Bluetooth Chapter J2ME VM, 4 -and Understanding the JSR-82the libraries. Java Bluetooth Figure 10-1 API shows the Micro BlueTarget standard version, and Figure
10-2 shows the Microwith BlueTarget Starter Kit. Chapter 5 - Bluetooth J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List ofFigure Sidebars 10-1: The Micro BlueTarget standard version is a small form factor embedded system with a
board outline of just 3.25.9 cm! This is a great solution for OEMs that want to make their devices Bluetooth enabled.
Figure 10-2: The Micro BlueTarget Starter Kit uses a standard Micro BlueTarget and adds RS-232 and Ethernet ports, which is ideal for developers who need to create quick prototypes and proofs of
concepts.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Micro BlueTarget been to meet typical requirements of fixed-wireless infrastructure Apresshas © 2003 (352designed pages) components. What's a fixed-wireless device? A fixed-wireless is Java typically a large, stationary device The authors of this text describe how to developsystem wireless that is capable ofapplications wireless communication. Consumer-oriented fixed-wireless systems are things like using Bluetooth for a variety of platforms. This includes an API overview the vending Java library, development of network access points, information kiosks,ofand machines (see Figure 10-3). On the other hand, a Bluetooth-based of security typical example of a fixed-wirelessservices, system highlights for commercial use concerns, would be and a large machine in a more. manufacturing center (see Figure 10-4). Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator Figure A Bluetooth Chapter 9 - 10-3: Bluetooth Security phone utilizing the services of a fixed-wireless consumer system— a
Bluetooth-enabled vendingSystems machinewith the Micro BlueTarget Chapter 10 - Wireless Embedded Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings
10-4: A Bluetooth PDA receiving the status from a fixed-wireless commercial system— a List ofFigure Sidebars Bluetooth-enabled machine in a manufacturing facility In the rest of this chapter, we'll take a look at the physical aspects of Micro BlueTarget, starting off with its hardware configuration. Next, we'll add a brief discussion about its software configuration by looking at the operating system and its Java implementation. Finally, we'll round up the chapter with some information on how to start the development process with this device by providing some example code.
Bluetooth for Java The Micro BlueTarget Hardware Configuration by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Figure 10-5 is a block diagram that describes the interrelationship of the hardware components that Apress © 2003 (352 pages) comprise the Micro BlueTarget. The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Figure 10-5: A block diagram of the Micro BlueTarget hardware components
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Index The Micro BlueTarget is based upon the 32-bit RISC/DSP embedded micro-processor architecture from
Hyperstone List of FiguresAG (http://www.hyperstone.com). Smart Network Devices chose this architecture primarily because of its extremely low gate count (the CPU itself consists of only just 35,000 gates), which List of Tables equates to its low power consumption. In the future, this opens the door for the possibility of smaller form List of Listings factor solutions, even System-on-Chip (SoC) architectures. List of Sidebars The Bluetooth baseband controller is a BlueCore 01b from CSR (see Figure 2-2), which is interfaced through a standard 16550-compatible UART device. By using a dual UART module (the 16752 chip) in the device, one UART is still free for external serial communication. Note The Micro BlueTarget Starter Kit connects the available UART to the RS-232 port. This allows developers who don't have a lot of hardware experience to quickly utilize the Micro BlueTarget for external serial communication. Note As an option, the dual UART device can be substituted by one of the many PIC family microcontrollers. This will enable the Micro BlueTarget to externally communicate via other protocols such as SPI, I2C, and GPIO. Some PIC chips will even enable the Micro BlueTarget to have a CAN bus interface or perform A/D conversion. Here's a quick synopsis of the hardware details of the Micro BlueTarget: 120 MHz, 32-bit RISC/DSP Hyperstone E1-16XS CPU 3.3 VDC (@ 250 mA) 8MB SDRAM memory 2+1MB flash memory
10/100 Mb/s Ethernet interface
Bluetooth for Java
ISBN:1590590783 by Bruce Hopkinsradio and Ranjith Antony radio range) Integrated Class 2 Bluetooth (10m nominal
Apress © 2003 (352 pages)
Available serial portdescribe (UART with to 3 Mb/s transfer rate) Thecommunication authors of this text how up to develop wireless Java applications using Bluetooth for a variety of platforms. This
Peripheral I/O bus connector (addresses, RD/WR, chip selects, interrupts) includes an API overview of the8-bit Javadata, library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java The Micro BlueTarget Software Configuration by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Micro BlueTarget the HyNetOS, SND's specialized operating system for the Hyperstone Apressboard © 2003runs (352 pages) RISC/DSP CPU architecture. The washow created for primarily two reasons. The first reason was to The authors of thisHyNetOS text describe to develop wireless Java have the smallestapplications possible memory footprint in order to match internal memory sizes of future Systemsusing Bluetooth for a variety of platforms. This includes an API overview the Java library, development on-Chip (SoC) architectures. The memoryoffootprints for Embedded Linuxofand Embedded Windows (also Bluetooth-based services, concerns, and Secondly, by creating their known as Windows CE .NET) were simplyhighlights too large of tosecurity even think about SoC. more. own OS, Smart Network Devices can have a highly efficient network and data communication architecture, which is optimized for the underlying platform. All interprocess communication is event driven and takes place an internal message system. Table ofthrough Contents Bluetooth for Java
The HyNetOS is based upon a highly efficient multitasking real-time kernel (only 16kB in size) and is written entirely in Hyperstone assembler. On top of the kernel is a complete operating environment that Chapter 1 - Introducing Bluetooth consists of following components: Introduction Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Get Started Device manager Chapter 4
- Understanding the Java Bluetooth API
Protocol managerwith J2ME MIDP Chapter 5 - Bluetooth Chapter 6
- Creating a Bluetooth Print Server with JPS API File manager
Chapter 7
- Java and OBEX
Chapter Java 8 Virtual - UsingMachine a Bluetooth Simulator Chapter 9
- Bluetooth Security
The device manager is simply a layer that abstracts the underlying hardware, and the protocol manager is a layer that implements the TCP/IP and Bluetooth protocol stacks. The multifaceted file manager can Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet handle different file systems, including RAM disk and flash disk, as well as external memory cards (we'll Chapter 12 - Bluetooth and Jini cover the details of the JVM in the next section).Figure 10-6 gives an illustration of the overall structure of Appendix A - javax.bluetooth the HyNetOS. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 10-6: A structural overview of the HyNetOS for the Micro BlueTarget
The Java Implementation
The Java Virtual Machine forfor theJava Micro BlueTarget is an implementation of the Sun Microsystems Java 2 Bluetooth Micro Edition (J2ME) KVM/CLDC V1.0.3 and has passed the CLDC Technology Compatibility Kit (TCK). In ISBN:1590590783 by Bruce Hopkins and Ranjith Antony addition to providing the JSR-82 APIs, Smart Network Devices has provided additional libraries for Micro Apress © 2003 (352 pages) BlueTarget development, such as The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This UDP (datagram) socket communication includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TCP (stream)more. socket communication
HTTP 1.1 libraries Table of Contents
RS-232 serial communication (you can address ports COM1-COM5)
Bluetooth for Java
Introduction Graphics library for monochrome LCD (12864 pixel) Chapter 1 - Introducing Bluetooth
Java to 1.1 ITU-style keypad (keys: 0–9,*,#) Chapter 2 interface - Bluetooth Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
File I/O library
Chapter 5 - Bluetooth with J2ME MIDP For performance reasons and memory footprint size, the TCP/IP and the Bluetooth stacks were written in Chapter 6 Creating a Bluetooth Print Server native with JPS API C and were implemented as asynchronous processes. The Java VM, which exists as a native Chapter 7 executable, - Java and OBEX HyNetOS has its own internal thread scheduler. A second process, called the asynchronous Chapter event handler, 8 - Using interfaces a Bluetooth the asynchronous Simulator protocol software to the synchronous Java VM task. So what
does all9 this mean? Once a Java thread makes a blocking I/O call (while waiting to receive data), not only Chapter - Bluetooth Security will all other native OS tasks beSystems scheduled the CPU, but all other Java threads as well. This approach Chapter 10 - Wireless Embedded withon the Micro BlueTarget ensures11the best possible matchApplications of synchronous andEricsson asynchronous Chapter - Enterprise Bluetooth with the BlipNet computing architectures in order to achieve12the best optimum system performance. Chapter - Bluetooth and Jini Appendix A - javax.bluetooth
The Bluetooth Implementation
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
On the Bluetooth things, the CSR baseband controller handles all low-level Bluetooth protocols up Appendix D - BlipNetside 1.1 of API to the HCI interface. The corresponding firmware is located in a separate flash memory (refer back to Index
Figure 10-5), which can be updated dynamically through the HyNetOS host system. An HCI driver, L2CAP, RFCOMM, SDP, and some of the basic profiles like General Access Profile, Serial Port Profile, LAN List of Tables Access Profile, and Service Discovery Application Profile comprise the Bluetooth portion of the HyNetOS List of Listings protocol manager. List of Figures
List of Sidebars
Now that you have a general overview of the underlying hardware implementation of the Micro BlueTarget, let's take a look at the OS and included software for this device.
for Java ApplicationBluetooth Development on the Micro BlueTarget Platform by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The core HyNetOS system is contained Apress © 2003 (352 pages) in a single file, named PROJECT.HEX. Figure 10-7 is a diagram of the memory map of the MicroThe BlueTarget's flashdescribe memory module. authors of 2MB this text how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - 10-7: Wireless Embedded withMicro the Micro BlueTarget Figure The memory Systems map of the BlueTarget. End user applications have about 1.5MB of space on the Chapter flash 11 disk. - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Apart from the bootloader section (also called the ROM section), the remaining flash memory space is organized as a large solid-state disk. Since HyNetOS comes built-in with an FTP server, this flash disk can easily be administrated Appendix C -FTP Java Bluetooth Development on the PalmOS Platform using any client program. Appendix B - javax.obex
Appendix D - BlipNet 1.1 API
In order to specify device drivers or interfaces that you would like to see started with HyNetOS after a system reset, you Index need to edit a configuration file named JSTARTUP.INI. This file can also be used to designate the class files that you List of Figures want be executed at boot time. A typical JSTARTUP.INI would look like this: List of Tables List of Listings
[devices] List of Sidebars COM1 COM2 ETHSMSC111 LCD12864 KEYPAD BLUETOOTH [protocols] TCP/IP BLUETOOTH [applications] myapp.class
Operating System Tools Several tools are provided to the user in order to perform common sysadmin tasks on the Micro BlueTarget. You can do things like load a new OS, reboot the system, format the flash disk, and trace the application code. All these tools are Java desk-top applications (J2SE), and can be executed on any Java-enabled platform.
HYFLASH
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
HYFLASH is an administration toolpages) for the Micro BlueTarget's flash memory (the flash disk). It can check and update Apress © 2003 (352 the ROM section,The format the flash disk, upload fromwireless any directory authors of this text and describe howcontent to develop Java on your PC to the target system. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more. OS loader. If the HyNetOS is already stored on the flash disk, the bootloader will HYLOAD is the dynamic
HYLOAD
automatically boot the system after a system reset. At runtime, however, an OS restart can always be triggered using HYLOAD while dynamically uploading a newer version of the OS. Table of Contents Bluetooth for Java
HYMON
Introduction Chapter 1 is-the Introducing Bluetooth system monitor console. On the PC, this text-based monitor can be used to check HYMON Micro BlueTarget's Chapter - Bluetooth 1.1 the file 2system, display directories, and set network settings (such as the IP address, netmask, gateway, etc.). The Chapter 3 utility - Before HYMON can You alsoGet be Started used to start Java applications on the device. At the system prompt, simply type Chapter 4 - Understanding the Java Bluetooth API Chapter 5 - Bluetooth with J2ME MIDP kvm myapp Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
to start 8up -myapp.class on Simulator the device. Chapter Using a Bluetooth Chapter 9
- Bluetooth Security
HYTRACE
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
HYTRACE is the Micro BlueTarget's system trace window. Stacktrace messages and output from your
Chapter 12 - Bluetooth and Jinistatements in your Java code will appear here. System.out.println() Appendix A - javax.bluetooth Appendix B - javax.obex
Programming the Micro BlueTarget
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix BlipNet 1.1 API wireless applications for the Micro BlueTarget, you first need to set up your development In order Dto-start developing Index environment. Here are the steps that are involved: List of Figures
1. Connect your Micro BlueTarget board to your PC using a crossover Ethernet cable.
List of Tables
List of 2.Listings Configure your Micro BlueTarget's IP network parameters using the HYMON utility. List of Sidebars
3. Format the Micro BlueTarget's flash disk using the HYFLASH utility. 4. Create the necessary configuration files and transfer them to the Micro BlueTarget's flash disk. These steps are all explained in detail in the Micro BlueTarget Starter Kit documentation. After you compile and preverify your code, just FTP the corresponding class files for your application to the Micro BlueTarget and hit the reset button. If your app is specified in the JSTARTUP.INI file, then it will automatically start up; otherwise, just start your application manually using the HYMON utility. Note The HyNetOS is a multilanguage, multitasking embedded operating system that can run native C applications and Java apps at the same time. In order to resolve conflicting requests between native and Java applications that want to utilize the Bluetooth stack and radio, Smart Network Devices created a centralized entity called the Bluetooth Service. The Bluetooth Service in JSR-82 vernacular is called the Bluetooth Control Center (BCC). As mentioned in Chapter 4, the Bluetooth Control Center doesn't necessarily have to be a Java application, and in the case of the Micro BlueTarget, the Bluetooth Control Center is a native application. For the Micro BlueTarget, you can initialize and control the Bluetooth Control Center via configuration files.
The Wireless Network Access Point Let's say that you have a Bluetooth-enabled device like a PDA or laptop, and want to use it to access the Internet via a traditional LAN access point (refer to Figure 10-8). With the Micro BlueTarget, you're already halfway there, and no
Java coding is needed!
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Figure 10-8:Bluetooth-based Using the built-in functionality of the BlueTarget, services, highlights ofMicro security concerns, you and can have any Bluetooth device with the LAN Access more. Profile access the Internet (or any other Ethernet-based network).
So, in to accomplish this with the HyNetOS, all you need to do is to edit the parameters in a configuration named Table oforder Contents BTAUTOLAN.CFG. The contents of the file would look something like this: Bluetooth for Java Introduction
[BT LAN Chapter 1 -ACCESS] Introducing Bluetooth MODE=automatic Chapter 2 - Bluetooth 1.1 IP-ASSIGNMENT=automatic Chapter 3 - Before You Get Started INQUIRY-CYCLE=15 ; in Chapter 4 - Understanding the Java Bluetooth APIseconds Chapter 5
- Bluetooth with J2ME MIDP
[PPP] - Creating a Bluetooth Print Server with JPS API USER-ID=myName Chapter 7 - Java and OBEX PASSWORD=myPassword Chapter 8 - Using a Bluetooth Simulator AUTHENTICATION=PAP,CHAP ; preferred methods Chapter 6
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 -BlueTarget Enterprise Bluetooth Applications the Ericsson BlipNet The Micro would then constantlywith search (in this case, every 15 seconds) for appropriate devices and Chapter provide12 them - Bluetooth with network and Jini access. Appendix A - javax.bluetooth
Note Now, it's nice to know that the Micro BlueTarget has the built-in capability to function as a wireless network access point, but what type of effort would be involved if you wanted to develop that functionality yourself? Appendix C - Java Bluetooth Development on the PalmOS Platform First of all, since the JSR-82 doesn't provide any foundational classes to write apps according to the LAN Appendix D - BlipNet 1.1 API Access Profile, then you'll need to implement it on your own. According to the LAN Access Profile portion of Index the Bluetooth specification, data terminals (i.e., phones, PDAs, etc.) are supposed to authenticate with the List of Figures LAN access point using the PPP protocol. After that, the data terminal will be assigned a dynamic IP List of Tables address, an IP gateway, and a DNS server for Internet name resolution.You're not out of the woods yet, but List of Listings that's where a majority of the effort should exist. Appendix B - javax.obex
List of Sidebars
L2CAPEcho Example L2CAPEcho is a very simple example that will demonstrate communication between two Micro BlueTarget devices. This is the first example involving two Micro BlueTarget devices, and this is the kind of example that you want to run just to make sure you can get two devices talking to each other. If this example doesn't work, then you need to troubleshoot your setup and configuration. So how does it work? Well, as shown in Figure 10-9, one board is offering an "echo service" to the public. The other board is the client that is using that service and is sending messages to the server.
Figure 10-9: The L2CAPEcho Service Since this example contains most of the foundational elements that were described previously in this book, we won't go into further explanation other than the fact that the client sends a message once per second to the server. The server reads the message from the InputStream and writes it back to the OutputStream, and the client gets the message back as an echo. Listing 10-1 shows the code for the L2CAPEchoServer.
Listing 10-1: L2CAPEchoServer.java Bluetooth for Java
by Bruce Hopkins and Ranjith Antony
import import import import
ISBN:1590590783
java.lang.*; Apress © 2003 (352 pages) java.io.*; The authors of this text describe how to develop wireless Java javax.microedition.io.*; applications using Bluetooth for a variety of platforms. This javax.bluetooth.*; includes an API overview of the Java library, development of
Bluetooth-based services, highlights of security concerns, and public class more. L2CAPEchoServer
{ static ClientProcess Client = null; Table of Contents Bluetooth for Java
public static void main(String[] args) { Chapter 1 - Introducing Bluetooth L2CAPConnectionNotifier Server = null; Introduction Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
-{Understanding the Java Bluetooth API
Chapter 5 Chapter 6
- Bluetooth with J2ME MIDP LocalDevice local = LocalDevice.getLocalDevice(); - Creating a Bluetooth Print Server with DiscoveryAgent.GIAC JPS API local.setDiscoverable( );
Chapter 7
-}Java and OBEX
Chapter 8
-catch Using a (BluetoothStateException Bluetooth Simulator e) -{Bluetooth Security
Chapter 9
try
System.err.println( to start service" ); Chapter 10 - Wireless Embedded Systems with "Failed the Micro BlueTarget System.err.println("BluetoothStateException: " + e.getMessage() ); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet return; Chapter 12 - Bluetooth and Jini Appendix A -}javax.bluetooth Appendix B - javax.obex
try
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
{
List of Figures List of Tables
// start the echo server (with a fictional UUID) String url = "btl2cap://localhost:00112233445566778899AABBCCDDEEFF"; Server = (L2CAPConnectionNotifier)Connector.open(url);
List of Listings } List of Sidebars catch (IOException e)
{ System.err.println( "Failed to start service" ); System.err.println( "IOException: " + e.getMessage() ); return; } System.out.println( "Starting L2CAP Echo Server" ); // This server actually runs forever. However, it can be stopped // by terminating the KVM from the command line // The server can terminate client connections by // setting the client connections public variable "end" to "true" // like: L2CAPEchoServer.Client.end = true; while( true ) { L2CAPConnection conn = null; try { // wait for incoming client connections (blocking method)
conn = Server.acceptAndOpen(); Bluetooth for Java by Bruce and Ranjith // Hopkins here we've got Antony one, start ISBN:1590590783 it in a separate thread Apress © 2003 (352 pages) L2CAPEchoServer.Client = new ClientProcess(conn); The authors of this text describe how to develop wireless Java L2CAPEchoServer.Client.start(); applications using Bluetooth for a variety of platforms. This } includes an API overview of the Java library, development of catch (IOException e) Bluetooth-based services, highlights of security concerns, and {more.
System.out.println("IOException: " + e.getMessage()); } Table of Contents } Bluetooth } for Java Introduction } Chapter 1
- Introducing Bluetooth
Chapter class2 ClientProcess - Bluetooth 1.1 extends Thread
{ Chapter 3
- Before You Get Started
L2CAPConnection clientconn; Chapterstatic 4 - Understanding the Java Bluetooth API boolean Chapterpublic 5 - Bluetooth with J2ME MIDP Chapter 6
end;
- Creating a Bluetooth Print Server with JPS API
Chapter// 7 the - Javaconstructor and OBEX
ClientProcess( L2CAPConnection conn ) - Using a Bluetooth Simulator { Chapter 9 - Bluetooth Security this.clientconn = conn; Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget this.end = false; Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet } Chapter 8
Chapter 12 - Bluetooth and Jini
Appendix - javax.bluetooth //A start the communication with the client Appendix B - javax.obex public void run() Appendix { C - Java Bluetooth Development on the PalmOS Platform Appendix D -byte[] BlipNet 1.1 API = null; data Index int length; List of Figures List of TablesSystem.out.println( "Client is connected" ); List of Listings
while( !end ) List of Sidebars { try { // prepare a receive buffer length = clientconn.getReceiveMTU(); data = new byte[length];
// read in the data sent by the client (method blocks!) length = clientconn.receive(data); System.out.println( "Received " + length + " bytes from client" ); // and immediately send it back on the same connection (echo) clientconn.send(data); } catch( IOException e ) { System.out.println("IOException: " + e.getMessage()); } } try
{ Bluetooth for Java clientconn.close(); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony } Apress © 2003 (352 pages) catch( IOException e ) The authors of this text describe how to develop wireless Java { applications using Bluetooth for a variety of platforms. This System.out.println("IOException: " + e.getMessage()); includes an API overview of the Java library, development of } Bluetooth-based services, highlights of security concerns, and
}
more.
} Table of Contents Bluetooth for Java Introduction Listing 10-2 shows the code for the L2CAPEchoClient. Chapter 1 - Introducing Bluetooth
Listing210-2: L2CAPEchoClient.java Chapter - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter import 4 java.lang.*; - Understanding the Java Bluetooth API
import Chapter 5 java.io.*; - Bluetooth with J2ME MIDP import Chapter 6 java.util.*; - Creating a Bluetooth Print Server with JPS API import Chapter 7 javax.microedition.io.*; - Java and OBEX import Chapter 8 javax.bluetooth.*; - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
public class L2CAPEchoClient implements DiscoveryListener { Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet // The DiscoveryAgent for the local Bluetooth device. Chapter 12 - Bluetooth and Jini private DiscoveryAgent agent; Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix A - javax.bluetooth Appendix B - javax.obex
// The max number of service searches that can occur at any one time.
Appendix C - Java int Bluetooth Development on the PalmOS private maxServiceSearches = 0; Platform Appendix D - BlipNet 1.1 API Index // The number of service searches that are presently in progress. List of Figures private int serviceSearchCount; List of Tables List of Listings // Keeps track of the transaction IDs returned from searchServices.
private int transactionID[]; List of Sidebars // The service record to an echo server that can reply to the message // provided at the command line. private ServiceRecord record; // Keeps track of the devices found during an inquiry. private Vector deviceList; // The constructor: creates an L2CAPEchoClient object and prepares the object // for device discovery and service searching. public L2CAPEchoClient() throws BluetoothStateException { // Retrieve the local Bluetooth device object. LocalDevice local = LocalDevice.getLocalDevice(); // Retrieve the DiscoveryAgent object that allows us to perform device // and service discovery. agent = local.getDiscoveryAgent(); // Retrieve the max number of concurrent service searches that can // exist at any one time.
try Bluetooth for Java { ISBN:1590590783 by Bruce Hopkins and Ranjith maxServiceSearches = Antony Apress © 2003 (352 pages) Integer.parseInt( LocalDevice.getProperty("bluetooth.sd.trans.max") ); The authors of this text describe how to develop wireless Java } applications using Bluetooth for a variety catch( NumberFormatException e ) of platforms. This includes an API overview of the Java library, development of { Bluetooth-based services, highlights of security concerns, and System.out.println( "General Application Error" ); more. System.out.println( "NumberFormatException: " + e.getMessage() ); } Table of Contents Bluetooth fortransactionID Java = new int[maxServiceSearches]; Introduction Chapter 1 Chapter 2
-// Introducing Bluetooth Initialize the transaction list -for( Bluetooth int1.1i=0; i<maxServiceSearches; i++ )
Chapter 3
-{Before You Get Started
Chapter 4
transactionID[i] = -1; - Understanding the Java Bluetooth API
Chapter 5
-}Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
null; -record Java and = OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
}
deviceList = new Vector();
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
// Adds the transaction table with the transaction ID provided. private void addToTransactionTable( int trans ) Chapter 12 - Bluetooth and Jini { Appendix A -for( javax.bluetooth int i=0; i
// Removes the transaction from the transaction ID table. private void removeFromTransactionTable( int trans ) { for( int i=0; i
// Add the UUID for L2CAP to make sure that the service record Bluetooth forsupport Java // found will L2CAP. This value is defined in the ISBN:1590590783 by Bruce Hopkins and Ranjith Antony document. // Bluetooth Assigned Numbers Apress © 2003 (352 pages) searchList[0] = new UUID(0x0100); The authors of this text describe how to develop wireless Java applications usingfor Bluetooth for a variety of platforms. This are going to use to // Add the UUID the echo service that we includes an API overview of the Java library, development of // the list of UUIDs tohighlights searchof for. (aconcerns, fictional echo service UUID) Bluetooth-based services, security and searchList[1] = new UUID( "00112233445566778899AABBCCDDEEFF", false ); more.
// Start a search on as many devices as the system can support. Table of Contents for( int i=0; i<devList.length; i++ ) Bluetooth for{Java Introduction
System.out.println( "Length = " + devList.length );
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth // If 1.1 we found a service record for the echo service, then
Chapter 3
//You weGetcan end the search. - Before Started
Chapter 4
if( record != Bluetooth null ) API - Understanding the Java
Chapter 5
{ - Bluetooth with J2ME MIDP
Chapter 6
"Record is not null" ); - Creating a System.out.println( Bluetooth Print Server with JPS API
Chapter 7
return true; - Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
}
try {
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
System.out.println( "Starting Service Search on " + devList[i].getBluetoothAddress() ); Appendix A - javax.bluetooth int trans = Appendix B - javax.obex agent.searchServices( null, searchList, devList[i], this ); Chapter 12 - Bluetooth and Jini
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1System.out.println( API "Starting Service Search " + trans ); Index addToTransactionTable( trans ); List of Figures List of Tables List of Listings List of Sidebars
} catch( BluetoothStateException e ) { // Failed to start the search on this device, try another device. System.out.println( "BluetoothStateException: " + e.getMessage() ); } // Determine if another search can be started. If not, wait for // a service search to end. synchronized( this ) { serviceSearchCount++; System.out.println( "maxServiceSearches = " + maxServiceSearches ); System.out.println( "serviceSearchCount = " + serviceSearchCount ); if( serviceSearchCount == maxServiceSearches ) { System.out.println( "Waiting" ); try { this.wait(); } catch( Exception e ) {} } System.out.println( "Done Waiting " + serviceSearchCount ); }
} Bluetooth forall Javathe service searches have completed. // Wait until ISBN:1590590783 by Bruce Hopkins and Ranjith Antony while( serviceSearchCount > 0 ) Apress © 2003 (352 pages) { The authors of this(this) text describe how to develop wireless Java synchronized applications using Bluetooth for a variety of platforms. This { includes an API overview of the Java library, development of try Bluetooth-based services, highlights of security concerns, and more.{ this.wait(); } Table of Contents catch (Exception e) {} Bluetooth for Java } Introduction } Chapter 1
- Introducing Bluetooth
Chapter 2
-if( Bluetooth record 1.1 != null )
Chapter 3
-{Before You Get Started
Chapter 4
System.out.println( is not null" ); - Understanding the Java Bluetooth "Record API
Chapter 5
return true; - Bluetooth with J2ME MIDP
Chapter 6
-}Creating a Bluetooth Print Server with JPS API
Chapter 7
-else Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
{
System.out.println( "Record is null" ); return false;
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
}
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
}
Chapter 12 - Bluetooth and Jini Appendix - javax.bluetooth //A Finds the first echo server that is available to send messages to. Appendix B - javax.obex public ServiceRecord findEchoServer() Appendix { C - Java Bluetooth Development on the PalmOS Platform Appendix D -// BlipNet API are any devices that have been found by a recent inquiry, If 1.1 there Index // we don't need to spend the time to complete an inquiry. List of Figures RemoteDevice[] devList = agent.retrieveDevices( DiscoveryAgent.CACHED ); List of Tablesif( devList != null )
{ List of Listings List of Sidebars
if( searchServices(devList) ) { return record; }
} // Did not find any echo servers from the list of cached devices. // Will try to find an echo server in the list of pre-known devices. devList = agent.retrieveDevices( DiscoveryAgent.PREKNOWN ); if( devList != null ) { if( searchServices(devList) ) { return record; } } // Did not find an echo server in the list of pre-known or cached // devices. So start an inquiry to find all devices that could be // an echo server and do a search on those devices. try {
agent.startInquiry(DiscoveryAgent.GIAC, this); Bluetooth for Java by Bruce Ranjith // WaitHopkins untiland all the Antony devices areISBN:1590590783 found before trying to start the Apress © 2003 (352 pages) // service search. The authors of this text describe how to develop wireless Java synchronized(this) {applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of try Bluetooth-based services, highlights of security concerns, and more.{ this.wait(); } Table of Contents catch (Exception e) {} Bluetooth for Java } Introduction } Chapter 1 -catch( Introducing Bluetooth BluetoothStateException e ) Chapter 2 -{Bluetooth 1.1 System.out.println( "Unable to find devices to search" ); Chapter 3 - Before You Get Started Chapter 4 -}Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
deviceList.size() > with 0 ) JPS API -if( Creating a Bluetooth Print Server
Chapter 7
-{Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9 Chapter 10 Chapter 11 Chapter 12 Appendix A
devList = new RemoteDevice[deviceList.size()]; deviceList.copyInto( devList ); - Bluetooth Security if( searchServices(devList) ) - Wireless Embedded Systems with the Micro BlueTarget { - Enterprise Bluetooth Applications with the Ericsson BlipNet return record; - Bluetooth and Jini } -}javax.bluetooth
Appendix B - javax.obex Appendix C -return Java Bluetooth Development on the PalmOS Platform null; Appendix D BlipNet 1.1 API } Index // This is the main method of this application. List of Figures public static void main(String[] args)
{ List of Tables L2CAPEchoClient client = null; List of Listings List of Sidebars
// Validate the proper number of arguments exist when starting this // application. if( (args == null) || (args.length != 1) ) { System.out.println( "usage: java L2CAPEchoClient <message>" ); return; } // Create a new EchoClient object. try { client = new L2CAPEchoClient(); } catch( BluetoothStateException e ) { System.out.println( "Failed to start Bluetooth System" ); System.out.println( "BluetoothStateException: " + e.getMessage() ); } // Find an Echo Server in the local area ServiceRecord echoService = client.findEchoServer();
if(echoService != null ) Bluetooth for Java { ISBN:1590590783 by Bruce Hopkins and Ranjith Antony // retrieve Apress © 2003 (352the pages)connection URL string String conURL = The authors of this text describe how to develop wireless Java echoService.getConnectionURL( false ); applications using Bluetooth for ServiceRecord.NOAUTHENTICATE_NOENCRYPT, a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based highlights of security concerns, and // create a services, new client instance more. EchoClient echoClient = new EchoClient( conURL ); Table of Contents // and send the message give on the command line
echoClient.sendMessage( args[0] ); } Introduction else Chapter 1 - Introducing Bluetooth { Chapter 2 - Bluetooth 1.1 System.out.println( "No Echo Server was found" ); Chapter 3 - Before You Get Started } Chapter 4 - Understanding the Java Bluetooth API } Bluetooth for Java
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6 - Creating withduring JPS API an inquiry. An inquiry // Called when aaBluetooth device Print wasServer found Chapter 7 Java and OBEX // searches for devices that are discoverable. The same device may Chapter - Using a Bluetooth Simulator // be8 returned multiple times. Chapter public 9 void - Bluetooth deviceDiscovered( Security RemoteDevice btDevice, DeviceClass cod )
{ Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget "Found device = " + BlipNet btDevice.getBluetoothAddress() ); ChapterSystem.out.println( 11 - Enterprise Bluetooth Applications with the Ericsson btDevice ); ChapterdeviceList.addElement( 12 - Bluetooth and Jini } Appendix A - javax.bluetooth Appendix B - javax.obex
// The following method is called when a service search is completed or // was terminated because of an error. Legal values include: Appendix D - BlipNet 1.1 API // SERVICE_SEARCH_COMPLETED, SERVICE_SEARCH_TERMINATED, Index // SERVICE_SEARCH_ERROR, SERVICE_SEARCH_DEVICE_NOT_REACHABLE List of Figures // and SERVICE_SEARCH_NO_RECORDS List of Tables public void serviceSearchCompleted( int transID, int respCode ) List { of Listings List of Sidebars System.out.println( "serviceSearchCompleted(" + transID + ", "+ respCode + ")" ); Appendix C - Java Bluetooth Development on the PalmOS Platform
// Removes the transaction ID from the transaction table. removeFromTransactionTable( transID ); serviceSearchCount—; synchronized( this ) { this.notifyAll(); } } // Called when service(s) are found during a service search. // This method provides the array of services that have been found. public void servicesDiscovered( int transID, ServiceRecord[] servRecord ) { // If this is the first record found, then store this record // and cancel the remaining searches. if( record == null ) {
System.out.println( "Found a service " + transID ); Bluetooth for Java "Length of array = " + servRecord.length ); System.out.println( ISBN:1590590783 by Bruce Hopkins and if( servRecord[0] ==Ranjith null Antony ) Apress © 2003 (352 pages) { The authors of this text describe how to developrecord wireless Java System.out.println( "The service is null" ); applications using Bluetooth for a variety of platforms. This } includes an API overview of the Java library, development of record = servRecord[0]; Bluetooth-based services, highlights of security concerns, and if( record == null ) more. { System.out.println( "The second try was null" ); Table of Contents } Bluetooth for Java Introduction // Cancel all the service searches that are presently Chapter 1 -// Introducing being Bluetooth performed. Chapter 2
-for( Bluetooth int1.1i=0; i
Chapter 3
-{Before You Get Started
Chapter 4
if( transactionID[i] != -1 ) - Understanding the Java Bluetooth API
Chapter 5
{ - Bluetooth with J2ME MIDP
Chapter 6
System.out.println(agent.cancelServiceSearch(transactionID[i])); - Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
}
}
}
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
}
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
// Called when a device discovery transaction is
Appendix A - javax.bluetooth // completed. The discType
will be Appendix B - javax.obex // INQUIRY_COMPLETED if the device discovery transaction ended normally, Appendix C - Java Bluetooth on the PalmOS Platform // INQUIRY_ERROR if Development the device discovery transaction failed Appendix - BlipNet 1.1 API // to D complete normally, Index // INQUIRY_TERMINATED if the device discovery transaction List //ofwas Figures canceled by calling
//ofDiscoveryAgent.cancelInquiry(). List Tables public void inquiryCompleted(int discType) List of Listings { of Sidebars List synchronized(this) { try { this.notifyAll(); } catch (Exception e) {} } } } // The EchoClient will make a connection using the connection string // provided and send a message to the server to print the data sent. class EchoClient { // Keeps the connection string in case the application would like to make // multiple connections to an echo server. private String serverConnectionString; // The constructor: creates an EchoClient object that will allow an // application to send multiple messages to an echo server.
EchoClient( String server ) Bluetooth for Java { by Bruce Hopkins and Ranjith Antony serverConnectionString = server; Apress © 2003 (352 pages) }
ISBN:1590590783
The authors of this text describe how to develop wireless Java using for a variety of platforms. This // Sends applications a message toBluetooth the server. includes an API overview of the Java library, development of public boolean sendMessage( Stringof msg ) concerns, and Bluetooth-based services, highlights security { more.
L2CAPConnection con = null; byte[] data = null; Table of Contents int index = 0; Bluetooth forbyte[] Java temp = null; Introduction Chapter 1
-try Introducing Bluetooth
Chapter 2
-{Bluetooth 1.1
Chapter 3
//You Create a connection to the server - Before Get Started
Chapter 4
con = (L2CAPConnection)Connector.open( serverConnectionString ); - Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
// aDetermine the maximum of data I can send to the server. - Creating Bluetooth Print Server with JPSamount API
Chapter 7
MaxOutBufSize = con.getTransmitMTU(); - Java int and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
temp = new byte[MaxOutBufSize];
// Send as many packets as are needed to send the data data = msg.getBytes(); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet while( index < data.length ) Chapter 12 - Bluetooth and Jini { Appendix A - javax.bluetooth // Determine if this is the last packet to send or if there Appendix B - javax.obex // will be additional packets Appendix C - Java Bluetooth on the-PalmOS Platform if( Development (data.length index) < MaxOutBufSize ) Appendix D - BlipNet 1.1{API Index temp = new byte[data.length - index]; List of Figures System.arraycopy( data, index, temp, 0, data.length-index ); } List of Tables else List of Listings { List of Sidebars temp = new byte[MaxOutBufSize]; System.arraycopy( data, index, temp, 0, MaxOutBufSize ); } con.send(temp); index += MaxOutBufSize; } Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
// Prepare a receive buffer int rxlen = con.getReceiveMTU(); byte[] rxdata = new byte[rxlen]; // Wait to receive the server's reply (method blocks!) rxlen = con.receive( rxdata ); // Here, we've got it String message = new String( rxdata, 0, rxlen ); System.out.println( "Server replied: " + message ); // Close the connection to the server con.close(); }
catch( BluetoothConnectionException e ) Bluetooth for Java { ISBN:1590590783 by Bruce Hopkins and Ranjith"Failed Antony to send System.out.println( the message" ); Apress © 2003 (352 pages) System.out.println( "BluetoothConnectionException: " + The authors of this text describe how to develop wireless e.getMessage() ); Java applications using Bluetooth for a variety of platforms. This System.out.println( "Status: " + e.getStatus() ); includes an API overview of the Java library, development of } Bluetooth-based services, highlights of security concerns, and catch( IOException e ) more. { System.out.println( "Failed to send the message" ); Table of Contents System.out.println( "IOException: " + e.getMessage() ); Bluetooth for Java return false; Introduction } Chapter 1
- Introducing Bluetooth
Chapter 2
-return Bluetoothtrue; 1.1
Chapter}3
- Before You Get Started
} Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 9
- Bluetooth Security
Wireless System Monitor Example Chapter 8 - Using a Bluetooth Simulator In the Wireless System Monitor example, we're going to look at an industrial device that is in great need of wireless communication: the Programmable Logic Controller (PLC). PLCs are industrial control devices that programmatically Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet control large machinery. They are widely used with manufacturing facilities to control relays, switches, motors, sensors, Chapter 12 - Bluetooth and Jini test chambers, assembly lines, robotic arms—the list goes on and on. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix A - javax.bluetooth
Now a large manufacturing facility is very likely to have a considerable number of PLCs, each doing a particular task. Appendix B - javax.obex Now, if you want Bluetooth to monitorDevelopment the status ofon a particular PLC, you typically would have to walk over to the machine that Appendix C - Java the PalmOS Platform you wantDto inquire 1.1 about, Appendix - BlipNet API and hook up a portable computer to the PLC's RS-232 interface. You would then run some program on the computer that would read the data coming from the serial port of the PLC. Index List of Figures
This in itself can become a tedious process, especially if you're the guy who has to check the status on the PLCs. Sometimes, the hardest part of the job is trying to hook up the serial cable. We're not kidding here; in some industrial List of Listings the PLC may be located in a hard to reach area, and the communication ports may be even harder to environments, List of Sidebars reach. As you can see, PLCs make good candidates to be converted into fixed-wireless systems. List of Tables
As shown in Figure 10-10, with the addition of a Micro BlueTarget, a PLC can instantly become a fixed-wireless system. The Micro BlueTarget will read the data from the RS-232 interface and transmit the data wirelessly with the Serial Port Profile. All a status technician needs to do is to come within range of the PLC to gather the data.
Figure 10-10: Using the Micro BlueTarget to create a fixed-wireless system SPP2COMM.java is a dual-purpose application that you could run on a Micro BlueTarget in order to read the data from its serial port and transmit it wirelessly. When the Micro BlueTarget receives data coming in from its COMM port, it will go into "server mode" and create a Serial Port Profile server and pipe the data from the COMM port to its Serial Port Profile "port." This same code could also be run on a JSR-82-enabled client in order to collect the data from the Micro BlueTarget. Since the client isn't collecting data from its serial port, it will automatically go into "client mode" and create a Serial
Port Profile client. When the client receives data, it will try to pipe the data to its native serial port. The code for forListing Java 10-3. SPP2COMM.javaBluetooth is shown in by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages) Listing 10-3: SPP2COMM.java The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This import java.lang.*; includes an API overview of the Java library, development of import java.io.*; Bluetooth-based services, highlights of security concerns, and more. import java.util.*;
import javax.microedition.io.*; import javax.bluetooth.*;
Table of Contents Bluetooth for Java
public class SPP2COMM implements DiscoveryListener { Chapter// 1 The - Introducing Bluetooth connection to the serial port Chapterstatic 2 - Bluetooth 1.1 StreamConnection serialport = null; Introduction
Chapter 3
- Before You Get Started
Chapter// 4 The - Understanding the Java Bluetooth to API the local serial port Input/Output streams Chapterstatic 5 - Bluetooth with J2ME MIDP OutputStream ser_out = null; Chapterstatic 6 - Creating InputStream a Bluetooth ser_in Print Server = with null; JPS API Chapter 7
- Java and OBEX
Bluetooth to the peer device Chapter// 8 The - Using a Bluetooth connection Simulator static StreamConnection bluetoothport = null; Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Input/Output streams with to the Bluetooth Chapter// 11 The - Enterprise Bluetooth Applications the Ericsson BlipNet connection static OutputStream bt_out = null; static InputStream bt_in = null;
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
// The DiscoveryAgent for the local Bluetooth device. private DiscoveryAgent agent;
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Index // The max number of service searches that can occur at any one time. List of Figures private int maxServiceSearches = 0; List of Tables List of Listings // The number of service searches that are presently in progress. List of Sidebars private int serviceSearchCount;
// Keeps track of the transaction IDs returned from searchServices. private int transactionID[]; // The service record to a cable replacement service private ServiceRecord record; // Keeps track of the devices found during an inquiry. private Vector deviceList; // The constructor: creates an SPP2COMM and prepares the object // for device discovery and service searching. public SPP2COMM() throws BluetoothStateException { // Retrieve the local Bluetooth device object. LocalDevice local = LocalDevice.getLocalDevice(); // Retrieve the DiscoveryAgent object that allows us to perform device // and service discovery. agent = local.getDiscoveryAgent(); // Retrieve the max number of concurrent service searches that can
// exist at any one time. try Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony { Apress © 2003 (352 pages) maxServiceSearches = The authors of this text describe how to develop wireless Java Integer.parseInt( LocalDevice.getProperty("bluetooth.sd.trans.max")); applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of } Bluetooth-based services, highlights of security concerns, and catch( NumberFormatException e ) more.
{ System.out.println( "General Application Error" ); Table of Contents System.out.println( "NumberFormatException: " + e.getMessage() ); Bluetooth for}Java Introduction Chapter 1 Chapter 2
-transactionID Introducing Bluetooth = new int[maxServiceSearches]; - Bluetooth 1.1
Chapter 3
Initialize the transaction list -// Before You Get Started
Chapter 4
int i=0; i<maxServiceSearches; i++ ) -for( Understanding the Java Bluetooth API
Chapter 5
-{Bluetooth with J2ME MIDP
Chapter 6
transactionID[i] = -1; - Creating a Bluetooth Print Server with JPS API
Chapter 7
-}Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
}
record = null; deviceList = new Vector();
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
// Adds the transaction table with the transaction ID provided. private void addToTransactionTable( int trans ) Appendix { A - javax.bluetooth Appendix B -for( javax.obex int i=0; i
// Removes the transaction from the transaction ID table. private void removeFromTransactionTable( int trans ) { for( int i=0; i
// Add the UUID for L2CAP to make sure that the service record Bluetooth for Java // found will support L2CAP. is defined in the ISBN:1590590783 by Bruce Hopkins and Ranjith Antony This value // Bluetooth Assigned Numbers document. Apress © 2003 (352 pages) searchList[0] = new UUID(0x0100); The authors of this text describe how to develop wireless Java // Add the UUID the cable replacement that we are going applications usingfor Bluetooth for a variety of platforms. service This // toincludes use to theoverview list of ofthe UUIDs to search for.of an API Java library, development Bluetooth-based services, highlights of security concerns, and // This is a fictional cable replacement service UUID more. searchList[1] = new UUID( "FFEEDDCCBBAA998877665544332211", false ); // Start a search on as many devices as the system can support. Table of Contents for (int i = 0; i < devList.length; i++) { Introduction System.out.println( "Length = " + devList.length ); Bluetooth for Java Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
-
Chapter 5
-
Chapter 6
-
Chapter 7
-
Chapter 8
-
Chapter 9
- Bluetooth Security
// If we found a service record for the cable replacement service, then // we can end the search. Understanding the Java Bluetooth if (record != null) API Bluetooth with J2ME MIDP { Creating a Bluetooth Print Server with JPS"Record API System.out.println( is not null" ); Java and OBEX return true; Using a}Bluetooth Simulator
try Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget { Bluetooth Applications with the Ericsson BlipNet Chapter 11 - Enterprise System.out.println( "Starting Service Search on " + Chapter 12 - Bluetooth and Jini devList[i].getBluetoothAddress() ); int trans = agent.searchServices(null, searchList, devList[i], this ); Appendix B - javax.obex System.out.println( "Starting Service Search " + trans ); Appendix C - Java Bluetooth Development on the PalmOS Platform addToTransactionTable( trans ); Appendix D - BlipNet 1.1 API } Index catch (BluetoothStateException e) List of Figures { List of Tables // Failed to start the search on this device, try another device. List of Listings System.out.println( "BluetoothStateException: " + e.getMessage() ); List of Sidebars } Appendix A - javax.bluetooth
// Determine if another search can be started. If not, wait for // a service search to end. synchronized(this) { serviceSearchCount++; System.out.println( "maxServiceSearches = " + maxServiceSearches ); System.out.println( "serviceSearchCount = " + serviceSearchCount ); if( serviceSearchCount == maxServiceSearches ) { System.out.println( "Waiting" ); try { this.wait(); } catch(Exception e) {} } System.out.println( "Done Waiting " + serviceSearchCount ); } }
// Wait until all the service searches have completed. Bluetooth for Java while(serviceSearchCount > 0) ISBN:1590590783 by Bruce Hopkins and Ranjith Antony { Apress © 2003 (352 pages) synchronized (this) {The authors of this text describe how to develop wireless Java applications try using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of { Bluetooth-based services, highlights of security concerns, and this.wait(); more. } catch (Exception e) {} Table of Contents } Bluetooth for}Java Introduction Chapter 1 Chapter 2
-if( Introducing Bluetooth record != null ) -{Bluetooth 1.1
Chapter 3
System.out.println( "Record is not null" ); - Before You Get Started
Chapter 4
return the true; - Understanding Java Bluetooth API
Chapter 5
-}Bluetooth with J2ME MIDP
Chapter 6
-else Creating a Bluetooth Print Server with JPS API
Chapter 7
-{Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
System.out.println( "Record is null" ); return false;
}
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
}
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
// Finds the first cable replacement peer that is available to connect to.
Appendix A - javax.bluetooth public ServiceRecord findCableReplacementService() Appendix B { - javax.obex Appendix C -// JavaIf Bluetooth on the PalmOS there Development are any devices thatPlatform have been found by a recent inquiry, Appendix D -// BlipNet 1.1 API we don't need to spend the time to complete an inquiry. Index
RemoteDevice[] devList = agent.retrieveDevices(DiscoveryAgent.CACHED);
List of Figures if( devList != null ) List of Tables{ List of Listings List of Sidebars
if( searchServices(devList) ) { return record; }
} // Did not find any cable replacement peer from the list of cached devices. // Will try to find a cable replacement peer in the list of // pre-known devices. devList = agent.retrieveDevices( DiscoveryAgent.PREKNOWN ); if( devList != null ) { if( searchServices(devList) ) { return record; } } // Did not find a cable replacement peer in the list of pre-known or // cached devices. So start an inquiry to find all devices that could be // a cable replacement peer and do a search on those devices. try {
agent.startInquiry(DiscoveryAgent.GIAC, this); Bluetooth for Java by Bruce Ranjith // WaitHopkins untiland all the Antony devices areISBN:1590590783 found before trying to start the Apress © 2003 (352 pages) // service search. The authors of this text describe how to develop wireless Java synchronized(this) {applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of try Bluetooth-based services, highlights of security concerns, and more.{ this.wait(); } Table of Contents catch (Exception e) {} Bluetooth for Java } Introduction } Chapter 1 -catch( Introducing Bluetooth BluetoothStateException e ) Chapter 2 -{Bluetooth 1.1 System.out.println( "Unable to find devices to search" ); Chapter 3 - Before You Get Started Chapter 4 -}Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
deviceList.size() > with 0 ) JPS API -if( Creating a Bluetooth Print Server
Chapter 7
-{Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9 Chapter 10 Chapter 11 Chapter 12 Appendix A
devList = new RemoteDevice[deviceList.size()]; deviceList.copyInto( devList ); - Bluetooth Security if( searchServices(devList) ) - Wireless Embedded Systems with the Micro BlueTarget { - Enterprise Bluetooth Applications with the Ericsson BlipNet return record; - Bluetooth and Jini } -}javax.bluetooth
Appendix B - javax.obex Appendix C -return Java Bluetooth Development on the PalmOS Platform null; Appendix D BlipNet 1.1 API } Index List of Figures // This is the main method of this application.
public static void main(String[] args) List of Tables { List of Listings SPP2COMM client = null; List of Sidebars SppServerProcess server = null; int baudrate; // Validate the proper number of arguments exist when starting // this application. if( (args == null) || (args.length != 1) ) { System.out.println( "usage: java SPP2COMM " ); return; } // Create a new SPP2COMM object. try { client = new SPP2COMM(); } catch( BluetoothStateException e ) { System.out.println( "Failed to start Bluetooth System" ); System.out.println( "BluetoothStateException: " + e.getMessage() ); }
// get the baudrate Bluetooth for Java for the serial port from the command line baudrate = Integer.parseInt( args[0] ISBN:1590590783 ); by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
// make the connection to the serial port The authors of this text describe how to develop wireless Java try {applications using Bluetooth for a variety of platforms. This // get an the includes API connection overview of the Java library, development of Bluetooth-based=services, highlights of security concerns, and serialport (StreamConnection)Connector.open( "comm:1;baudrate=" + more. baudrate, Connector.READ_WRITE, true ); } catch( Exception e ) Table of Contents { Bluetooth for Java System.out.println( "serial port open exception: " + e ); Introduction System.exit( 0 ); Chapter 1 - Introducing Bluetooth } Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
-try Understanding the Java Bluetooth API
Chapter 5
-{Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API ser_out = serialport.openOutputStream();
Chapter 7
-}Java and OBEX
Chapter 8
-catch( Using a Bluetooth Simulator Exception e )
// open the serial port's output stream
Chapter 9
-{Bluetooth Security System.out.println( output stream open exception: " + e ); Chapter 10 - Wireless Embedded Systems with "serial the Micro BlueTarget
System.exit( 0 ); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 -}Bluetooth and Jini Appendix A - javax.bluetooth
open the serial port's input stream Appendix B -// javax.obex try {
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of List of List of List of
ser_in = serialport.openInputStream(); } Figures catch( Exception e ) Tables { Listings System.out.println( "serial input stream open exception: " + e ); Sidebars System.exit( 0 ); } // Create a new SPP server object. try { server = new SppServerProcess(); server.start(); } catch( Exception e ) { System.out.println( "Failed to start Spp Server" + e ); System.exit( 0 ); } // the main loop runs forever. However, it can be stopped // by terminating the KVM from the command line while( true ) { // Create buffer to receive data from the serial port byte[] rxdata = new byte[64]; int rxlen=0;
int
data;
Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony try Apress © 2003 (352 pages) { The authors of this how to develop Java port // read intext asdescribe many bytes from wireless the serial applications using Bluetooth for a variety of platforms. This // as currently available but do not exceed the includes an API overview of the Java library, development of // current buffer length. Bluetooth-based services, highlights of security concerns, and more.// The read() method blocks but is periodically released // by an InterruptedIOException in order to allow other // things to happen meanwhile Table of Contents while( true ) Bluetooth for Java { Introduction data = ser_in.read(); Chapter 1 - Introducing Bluetooth rxdata[rxlen] = (byte)data; Chapter 2 - Bluetooth 1.1 rxlen++; if( rxlen >= 64 || data == -1 ) Chapter 3 - Before You Get Started break; Chapter 4 - Understanding the Java Bluetooth API } J2ME MIDP Chapter 5 - Bluetooth with "data Chapter 6 - Creating a System.out.println( Bluetooth Print Server with JPS API received from serial port, len=" + rxlen ); Chapter 7 - Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 Chapter 11 Chapter 12 Appendix A Appendix B Appendix C Appendix D -
} catch( InterruptedIOException e ) Wireless Embedded Systems with the Micro BlueTarget { Enterprise Bluetooth Applications with the Ericsson BlipNet System.out.println( "serial port receive timeout: " + e ); Bluetooth and Jini } javax.bluetooth catch( Exception e ) javax.obex { Java Bluetooth Development on the PalmOS Platform System.out.println( "serial port receive exception: " + e ); BlipNet 1.1 API }
Index List of Figures
// Did we get any data from the serial port? if( rxlen > 0 ) { List of Listings // Do we have a Bluetooth connection already? List of Sidebars if( bluetoothport != null ) { // Do we have an OutputStream on the BT connection already? if( bt_out == null ) { // no, then create one try { bt_out = bluetoothport.openOutputStream(); } catch( Exception e ) { System.out.println( "Bluetooth output stream open exception: " + e ); List of Tables
} } System.out.println( "send serial data on Bluetooth link" ); try { bt_out.write( rxdata ); bt_out.flush();
} Bluetooth for Java catch( Exception e ) ISBN:1590590783 by Bruce Hopkins and Ranjith Antony { Apress © 2003 (352 pages) System.out.println("Bluetooth output stream write exception: " + e); The authors of this text describe how to develop wireless Java } applications using Bluetooth for a variety of platforms. This } includes an API overview of the Java library, development of else Bluetooth-based services, highlights of security concerns, and {more.
System.out.println( "No Bluetooth link: try to establish one..." ); Table of Contents Bluetooth for Java Introduction
// Find a cable replacement service in the local area ServiceRecord cableReplacementService = client.findCableReplacementService();
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1 if( cableReplacementService != null )
Chapter 3
- Before You{Get Started
Chapter 4
//Java retrieve - Understanding the Bluetooth the API connection URL string
Chapter 5
String - Bluetooth with J2ME MIDP conURL =
Chapter 6
cableReplacementService.getConnectionURL( - Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false ); try {
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
// Create a connection to the SPP peer bluetoothport = (StreamConnection)Connector.open( conURL );
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Appendix A - javax.bluetooth } Appendix B - javax.obex catch(Exception e) Appendix C - Java Bluetooth Development on the PalmOS Platform { Appendix D -System.out.println( BlipNet 1.1 API "Failed to establish Bluetooth link: " + e ); Index } List of Figures
if( bluetoothport != null ) { try List of Sidebars { // open an OutputStream on the Bluetooth connection bt_out = bluetoothport.openOutputStream(); } catch( Exception e ) { System.out.println( "Bluetooth output stream open exception: " + e ); } List of Tables
List of Listings
// and send the data from the serial port System.out.println( "send serial data on Bluetooth link" ); try { bt_out.write( rxdata ); bt_out.flush(); } catch( Exception e ) { System.out.println( "Bluetooth output stream write exception: " + e ); } }
} Bluetooth else for Java
}
ISBN:1590590783 by Bruce { Hopkins and Ranjith Antony Apress © 2003 (352 pages) System.out.println( "No SPP peer found" ); The authors of this text describe how to develop wireless Java } applications using Bluetooth for a variety of platforms. This } includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
// do we have a Bluetooth connection already? if( bluetoothport != null ) Table of Contents { Bluetooth for Java // do we have an InputStream on the Bluetooth connection already? Introduction if( bt_in == null ) Chapter 1 - Introducing Bluetooth { Chapter 2 - Bluetooth //1.1no, then create one tryGet Started Chapter 3 - Before You { Chapter 4 - Understanding the Java Bluetooth API = bluetoothport.openInputStream(); Chapter 5 - Bluetooth withbt_in J2ME MIDP Chapter 6 - Creating}a Bluetooth Print Server with JPS API Exception e ) Chapter 7 - Java andcatch( OBEX { Chapter 8 - Using a Bluetooth Simulator System.out.println("Bluetooth output stream open exception: " + e ); Chapter 9 - Bluetooth Security } Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget } Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
// listen on the bluetooth connection
Appendix A - javax.bluetooth rxlen = 0; Appendix B - javax.obex try Appendix C - Java { Bluetooth Development on the PalmOS Platform Appendix D - BlipNet// 1.1read API in as many bytes from the serial port Index // as currently available but do not exceed the List of Figures
// current buffer length. // The read() method blocks but is periodically released // by an InterruptedIOException in order to allow other List of Listings // things to happen meanwhile List of Sidebars while( true ) { data = bt_in.read(); rxdata[rxlen] = (byte)data; rxlen++; if( rxlen >= 64 || data == -1 ) break; } System.out.println( "data received from bluetooth port, len=" + rxlen ); List of Tables
} catch( InterruptedIOException e ) { System.out.println( "Bluetooth port receive timeout: " + e ); } catch( Exception e ) { System.out.println( "Bluetooth port receive exception: " + e ); } try {
System.out.println( "send Bluetooth data on serial link" ); Bluetooth for Java ser_out.write( rxdata ); ISBN:1590590783 by Bruce Hopkins and Ranjith Antony ser_out.flush(); Apress } © 2003 (352 pages) The authors of this text describeehow catch( Exception ) to develop wireless Java applications using Bluetooth for a variety of platforms. This { includes an API overview of the Java library, development of System.out.println( "Bluetooth stream and write exception: " + e ); Bluetooth-based services, highlights of output security concerns, more. }
} } Table of } Contents Bluetooth for Java Introduction // Called when a device was found during an inquiry. An inquiry Chapter// 1 searches - Introducingfor Bluetooth devices that are discoverable. The same device may Chapter// 2 be - Bluetooth returned 1.1 multiple times.
void btDevice, DeviceClass cod) Chapterpublic 3 - Before YoudeviceDiscovered(RemoteDevice Get Started Chapter{4
- Understanding the Java Bluetooth API
Chapter 5
-System.out.println( Bluetooth with J2ME MIDP "Found device = " + btDevice.getBluetoothAddress() );
Chapter 6
-deviceList.addElement( Creating a Bluetooth Print ServerbtDevice with JPS API);
Chapter}7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
// The following method is called when a service search is completed or - Bluetooth Security // was terminated because of an error. Legal values include: Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget // SERVICE_SEARCH_COMPLETED, SERVICE_SEARCH_TERMINATED, Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet // SERVICE_SEARCH_ERROR, SERVICE_SEARCH_DEVICE_NOT_REACHABLE Chapter 12 - Bluetooth and Jini // and SERVICE_SEARCH_NO_RECORDS Appendix A - javax.bluetooth public void serviceSearchCompleted( int transID, int respCode ) Appendix B { - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform + transID + System.out.println( "serviceSearchCompleted(" Appendix D - BlipNet 1.1 API ", " + respCode + ")" ); Chapter 9
Index List of Figures // Removes the transaction ID from the transaction table. List of TablesremoveFromTransactionTable( transID ); List of Listings
serviceSearchCount—; List of Sidebars synchronized(this) { this.notifyAll(); } } // Called when service(s) are found during a service search. // This method provides the array of services that have been found. public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { // If this is the first record found, then store this record // and cancel the remaining searches. if( record == null ) { System.out.println( "Found a service " + transID ); System.out.println( "Length of array = " + servRecord.length ); if( servRecord[0] == null ) { System.out.println( "The service record is null" ); } record = servRecord[0];
System.out.println( "After this" ); Bluetooth for Java if( record == null ) ISBN:1590590783 by Bruce Hopkins and Ranjith Antony { Apress System.out.println( © 2003 (352 pages) "The Second try was null" ); The } authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of // Cancel all the highlights serviceof searches that and are presently Bluetooth-based services, security concerns, // being performed. more.
for( int i=0; i
- Bluetooth 1.1 }
Chapter 3
- Before }You Get Started
Chapter 4
} - Understanding the Java Bluetooth API
Chapter}5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API Chapter// 7 Called - Java andwhen OBEX a device discovery transaction is
// completed. The discType
will be - Using a Bluetooth Simulator // INQUIRY_COMPLETED if the device discovery transactions ended normally, Chapter 9 - Bluetooth Security // INQUIRY_ERROR if the device discovery transaction failed Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget // to complete normally, Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet // INQUIRY_TERMINATED if the device discovery transaction was canceled Chapter 12 - Bluetooth and Jini // by calling DiscoveryAgent.cancelInquiry(). Appendix A - javax.bluetooth public void inquiryCompleted( int discType ) Appendix B { - javax.obex Appendix C -synchronized( Java Bluetooth Development this ) on the PalmOS Platform Appendix D -{BlipNet 1.1 API Index try List of Figures { this.notifyAll(); List of Tables } List of Listings catch (Exception e) {} List of Sidebars } } } Chapter 8
class SppServerProcess extends Thread { /* the constructor */ SppServerProcess() { } public void run() { StreamConnectionNotifier Server = null; try { LocalDevice local = LocalDevice.getLocalDevice(); local.setDiscoverable( DiscoveryAgent.GIAC ); } catch( BluetoothStateException e )
{ Bluetooth for Java System.err.println( "Failed to start service" ); ISBN:1590590783 by Bruce Hopkins and Ranjith"BluetoothStateException: Antony System.err.println( " + e.getMessage() ); Apress © 2003 (352 pages) return; The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of try Bluetooth-based services, highlights of security concerns, and { more.
}
// start the SPP server (with a fictional UUID) Server = (StreamConnectionNotifier)Connector.open( Table of Contents "btspp://localhost:FFEEDDCCBBAA99887766554433221100" ); Bluetooth for}Java Introduction catch( IOException e ) Chapter 1 -{Introducing Bluetooth Chapter 2 - Bluetooth System.err.println( 1.1 "Failed to start service" ); System.err.println( "IOException: " + e.getMessage() ); Chapter 3 - Before You Get Started return;the Java Bluetooth API Chapter 4 - Understanding Chapter 5 -}Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
SPP Server"); -System.out.println("Starting Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
while( true ) { Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget // accept connections only if we are not yet connected Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet if( SPP2COMM.bluetoothport == null ) Chapter 12 - Bluetooth and Jini { Appendix A - javax.bluetooth try Appendix B - javax.obex { Appendix C - Java Bluetooth Development on the PalmOS Platform // wait for incoming client connections (blocking method) Appendix D - BlipNet 1.1 API SPP2COMM.bluetoothport = Server.acceptAndOpen(); Index } List of Figures catch( IOException e ) { List of Tables System.out.println("IOException: "+ e.getMessage()); List of Listings } List of Sidebars } try { Thread.sleep( 1000 ); } catch( Exception e ) { } } } }
Client Options Once you get data feeding the Micro BlueTarget and have SPP2COMM running on it, then you're all set from the server's point of view; you have created a fixed-wireless system. Now on the client side of things, you have a few options. Let's say that the vendor of the PLC makes a program to read and interpret the data from the PLC (when connected serially, of course). You really don't need to use the SPP2COMM in client mode at all; all you need to do is Bluetooth-enable your laptop and pair it with the Micro BlueTarget. The vendor's program will read the data from the PLC (via the Micro BlueTarget) through COMM7 or COMM8 (which are typical Serial Port Profile ports) instead of COMM1 or COMM2.
Now let's say that all the preceding conditions exist, but for some reason you can't Bluetooth-enable the laptop that will Bluetooth for Java read the data from the PLC. Don't worry, there's hope for you too! All you need to do is attach another Micro by non-Bluetooth-enabled Bruce Hopkins and Ranjith Antony BlueTarget to your laptop and run the ISBN:1590590783 SPP2COMM program. Since this Micro BlueTarget is not Apress © 2003 (352 pages) collecting data over its serial port, it will automatically run in client mode and look for a Serial Port Profile server. It will The authors of thisPort textProfile describe how to develop wireless then read the data from the Serial server, and pipe that dataJava to its own serial port. Your laptop can then use applications using Bluetooth for a variety of platforms. This the vendor program to read and interpret the PLC data (this time via two Micro BlueTargets) through a traditional serial includes an API overview of the Java library, development of port like COMM1Bluetooth-based or COMM2. In this case, highlights you have made a serial-to-wireless services, of security concerns, and bridge. more.
Now let's say that you're in a very special situation in that the vendor doesn't make a program to read and interpret the data from the PLC. Now, you can be really creative and just make your own! In this case all you need is a JSR-82Table of Contents enabled client device (like a PDA or laptop), and you have to make a slight modification to SPP2COMM program. For Bluetooth Javapart of it, instead of sending the data to the COMM port, just interpret, display, or process it. the clientfor mode Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
In this chapter, you were©introduced to one of the first fully functional computing systems that is JSR-82 Apress 2003 (352 pages) compliant: the Micro BlueTarget. You should be fully aware of its physical aspects for computational The authors of this text describe how to develop wireless Java power, data connectivity, and wireless communication. You should also be applications using Bluetooth for a variety of platforms. This familiar with HyNetOS, the an APIBlueTarget. overview of the Java library, development of operating systemincludes for the Micro Bluetooth-based services, highlights of security concerns, and more. Due to its small form factor, low power requirements, and extensibility, the Micro BlueTarget is a great
device to create fixed-wireless systems and proofs of concepts for wireless applications. In Chapter 11, we'll explore what it takes to create scalable and robust wireless applications in Bluetooth that can handle Table of Contents more than just seven concurrent users. Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 11: Enterprise Bluetooth Applications with ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) the Ericsson BlipNet The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and As you have seenmore. in the previous chapters of this book, the JSR-82 is a great API for creating Bluetooth
Overview
applications with the Java language. With any vendor implementation of the JSR-82, you can create hundreds of client-server, peer-to-peer, cable replacement, and fixed-wireless Bluetooth applications. Table of Contents However, this API falls short when you need to create enterprise Bluetooth applications. So what's an Bluetooth for Java enterprise Bluetooth application? Well, here are the major qualifications of an enterprise Bluetooth Introduction application: Chapter 1
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1 more than just seven active connections Capability to handle Chapter 3 - Before You Get Started
A connection range greater than just 30 API or 300 ft Chapter 4 - Understanding the Java Bluetooth Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Centralized communication to the devices (also called nodes) that comprise your network
Chapter 7 - Java OBEX groups of nodes A means forand managing Chapter 8 - Using a Bluetooth Simulator
A means for session management when clients move between nodes Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Note Of course, Class 1 Bluetooth devices have a range of 300 ft, but you must realize that if the
Chapter 11 client - Enterprise Bluetooth Applications with themost Ericsson BlipNet is a Class 2 or Class 3 device (like mobile phones and PDAs), then it doesn't matter Chapter 12 if- the Bluetooth and Jini server is a Class 1 device (like some LAN access points). Appendix A - javax.bluetooth
The JSR-82 was not created to handle enterprise Bluetooth applications, and doesn't provide any way to Appendix B - javax.obex address Cthe problems thatDevelopment enterprise Bluetooth applications can solve. Appendix - Java Bluetooth on the PalmOS Platform Appendix D - BlipNet 1.1 API
Consider the locations where Bluetooth applications will be widely deployed, like shopping malls, airports, museums, office buildings, and grocery stores. At a mall, for instance, the scaling issue is very important. List of Figures It's not practical to create a Bluetooth-enabled information kiosk at a mall without being able to scale up to List of Tables handle more than just seven active connections. In order to accomplish this, your enterprise Bluetooth List of Listings will contain more than a single Bluetooth-enabled node. applications Index
List of Sidebars
Centralized communication is an important feature in enterprise Bluetooth applications because there's no way to implement group management or session management without it. For instance, in a Bluetoothenabled museum exhibit, there should be a way to activate or deactivate a group of nodes without disturbing the other nodes on the network. Session management comes into play in a Bluetooth-enabled retail location like a grocery store. Without session management, a customer may be offered the same ecoupon multiple times when passing by a different node in a grocery store. In an office building, providing wireless network access to Bluetooth-enabled clients is a common enterprise Bluetooth application. Session management in this scenario is also important so that clients can freely roam around the building without having to reauthenticate when they go in and out of range of different nodes. In order to create enterprise Bluetooth applications, you need more than just a single Bluetooth device and an API. Enterprise Bluetooth applications also require an infrastructure to be in place that will allow your system to be scalable and robust.
Bluetooth for Java The Ericsson BlipNet by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The Ericsson BlipNet contains thepages) infrastructure, functionality, and scalability that will allow developers to Apress © 2003 (352 create enterpriseThe Bluetooth applications using thehow Java language. An architecture diagram of the Ericsson authors of this text describe to develop wireless Java BlipNet is shown applications in Figure 11-1. using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9 - 11-1: Bluetooth Security Figure An architecture diagram of the Ericsson BlipNet Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Note Although the Ericsson BlipNet allows you to create enterprise Bluetooth applications in Java, it does not support the JSR-82. The JSR-82 is oriented toward creating applications where a Appendix A - javax.bluetooth single Bluetooth device communicates to other devices in a piconet. The BlipNet API is oriented Appendix B - javax.obex toward managing a network of Bluetooth-enabled nodes, where each node has the capability to Appendix C - Java Bluetooth Development on the PalmOS Platform interact with Bluetooth-enabled clients. Chapter 12 - Bluetooth and Jini
Appendix D - BlipNet 1.1 API Index
BlipNet Architecture
List of Figures List of Tables
The core part of the BlipNet system is the BlipServer. The BlipServer itself is not Bluetooth enabled at all. It does, however, have a direct TCP/IP connection to each of the BlipNodes (which are Bluetooth enabled) List Sidebarsthem via Java RMI. In order to create your enterprise Bluetooth applications, you write J2SE andofcontrols classes that interface with the BlipNet API. Now, since you're writing J2SE code here, you may realize that there's nothing preventing you from accessing external resources on behalf of your Bluetooth-enabled clients. In fact, that's the whole point of it. Using the Ericsson BlipNet, external resources such as databases, LDAP directories, Web servers, and e-mail servers are all available at your client's disposal (as long as you can access them via a Java API). This is reflected in Figure 11-2. List of Listings
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
Understanding the Java Bluetooth API Figure- 11-2: You can use the BlipNet API and custom J2SE code to access external resources like
Chapter 5 - Bluetooth with J2ME databases, directories, and MIDP e-mail servers. Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
BlipServer Chapter 8 - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
The BlipServer does not require any specialized hardware and can run on either Windows or Linux operating systems. The statistics on the BlipServer are pretty impressive: a Pentium 400 MHz computer Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet with 256MB of RAM can manage 200 BlipNodes! Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth BlipNodes Appendix B - javax.obex Appendix In an enterprise C - Java Bluetooth Bluetooth Development application, the on BlipServer the PalmOScannot Platform directly communicate to your Bluetooth-
enabledDclients; it has interface with the BlipNodes. Each BlipNode is capable of multipoint Appendix - BlipNet 1.1 to API communication and includes the following profiles to interact with clients: Index List of Figures
Generic Access Profile
List of Tables
List ofService Listings Discovery Application Profile List of Sidebars
LAN Access Profile Object Push Profile Note The BlipNodes also conform to the WAP over Bluetooth interoperability requirements as defined in the Bluetooth specification. Your enterprise Bluetooth application will listen for events from the BlipNodes and act accordingly. For instance, let's say that you want to track where employees are in the building (assuming, of course, that they are wearing Bluetooth-enabled ID badges). When users come within range of a BlipNode, your application will listen to device-discovered events via the Generic Access Profile. The BlipNet system is sophisticated enough to let you know which BlipNode detected a user, so all you need to do is store that data in a database, and create another application to view the results. Now let's say that you're the manager of a hotel, and you want to allow your customers with Bluetoothenabled devices to send e-mails wirelessly from within the conference rooms. At these "e-mail stations," the BlipNodes will use the Object Push Profile to send clients the custom e-mail application (of course, this works well if the app is a JSR-82 application). Clients compose their e-mail using the custom application, and when they are ready to send the e-mail, they simply come within range of an e-mail station and push the e-mail OBEX object to the BlipNode. On the BlipServer, your enterprise Bluetooth application will be listening for an Object Push event, and will connect to an e-mail server to send the e-mail on behalf of the hotel guest.
Bluetooth for Java Note This might be a perfect time for you to try creating custom headers for your OBEX e-mail object. Bruce Hopkins Antony a customISBN:1590590783 There'sby nothing stoppingand youRanjith from defining header for the "to", "from", and "subject" Apress © 2003 (352 pages) fields for the e-mail. The authors of this text describe how to develop wireless Java
As you can see, the wireless using e-mailBluetooth station scenario clearly demonstrates applications for a variety of platforms. This the difference between the includes an API JSR-82 overviewand of the library, development of you can create the client app programming paradigms of the theJava BlipNet. Using the JSR-82, Bluetooth-based services, highlights concerns, and that generates the e-mail OBEX object and pushes itoftosecurity the server. One of the major drawbacks, however, more. is that you need to implement the Object Push Profile in your application code (which may be an inconvenience for inexperienced developers). On the other hand, the Object Push Profile is already defined within the BlipNet API, so all you need to do is write the event handling code when your object Table of Contents arrives from your Bluetooth-enabled clients. Bluetooth for Java Introduction
BlipNode Installation - Introducing Bluetooth
Chapter 1
Chapter 2 - of Bluetooth 1.1 is pretty simple. All you need to do is supply the Ethernet connection and power. Installation a BlipNode Chapter 3 - will Before You Get Started The device then register itself to the BlipNet. Figure 11-3 is a picture of a single BlipNode unit. Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings
11-3: A single BlipNode List ofFigure Sidebars
BlipManager Application The BlipManager tool is used to configure and administer the BlipNet system. As shown in Figure 11-4, the BlipManager gives you a visual representation of all the BlipNodes on your network.
Figure 11-4: The BlipManager application
Out of the box, the BlipManager comes with the following features: Bluetooth for Java by Bruce Hopkins and Ranjith Antony Device filtering
ISBN:1590590783
Apress © 2003 (352 pages)
Security administration The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Node administration Bluetooth-based services, highlights of security concerns, and more. feature, you can block certain Bluetooth devices from using the BlipNet. You can With the device filtering create this filter based upon the client device's address or the device's class (i.e., laptop, cell phone, headset), or based upon the available services on the device. The security administration feature allows Table of Contents you to assign PINs for individual nodes, or for the entire BlipNet. Using the node administration features of Bluetooth for Java the BlipManager, you can administer an individual node or create a group of nodes and administer them Introduction collectively. The node administration features also give you the ability to activate and deactivate the Chapter 1 - Introducing Bluetooth profiles on your nodes. Using this feature, it is very easy to configure multiple enterprise Bluetooth Chapter 2 - Bluetooth 1.1 BlipNet network. For instance, in a grade school environment, all the BlipNodes applications on the same Chapter 3 - Before Youschool Get Started at the entrance of the can be configured to use only the Object Push Profile so that parents and Chapter Understanding the Java Bluetooth API the school. However, in the teacher's lounge, the visitors 4are- greeted with some information about Chapter 5 -can Bluetooth with J2ME BlipNodes be connected to MIDP the same network, but have only the LAN Access Profile activated so that Chapter 6 can - Creating a Bluetooth Print Server with JPS API teachers get wireless Internet access. Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java BlipNet APIBluetooth Overview by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The BlipNet 1.1 API consists 6 packages and 40 classes and interfaces that allow you to create Apress © 2003of (352 pages) enterprise Bluetooth applications. Here's a list of how the BlipNet packages: The authors of this text describe to develop wireless Java applications using Bluetooth for a variety of platforms. This
com.ericsson.blipnet.api.blipnode includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
com.ericsson.blipnet.api.blipserver more. com.ericsson.blipnet.api.bluetooth Table of Contents
com.ericsson.blipnet.api.event Bluetooth for Java Introduction
com.ericsson.blipnet.api.obex.pushobjects
Chapter 1
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1 com.ericsson.blipnet.api.util Chapter 3
- Before You Get Started Thecom.ericsson.blipnet.api.blipnode Chapter 4 - Understanding the Java Bluetooth API package contains classes that deal directly with
individual BlipNodes, like BlipNodeHandle. Conversely, the package - Bluetooth with J2ME MIDP com.ericsson.blipnet.api.blipserver contains classes that deal with the BlipServer such as Chapter 6 - Creating a Bluetooth Print Server with JPS API BlipServer and BlipServerConnection. If you are looking for classes that pertain to BluetoothChapter 7 - Java and OBEX specific things like BluetoothAddress and ClassOfDevice, then they are found in the package Chapter 8 - Using a Bluetooth Simulator com.ericsson.blipnet.api.bluetooth. Chapter 5
Chapter 9
- Bluetooth Security
Chapter - Wireless Embedded Systems the BlueTargetcontained in the Almost10 every application will use one orwith more ofMicro the interfaces Chapter com.ericsson.blipnet.api.event 11 - Enterprise Bluetooth Applications package. with the This Ericsson package BlipNet contains all the interfaces for listeners
and events the and BlipNet. Chapter 12 - within Bluetooth Jini For instance, if you implement the BlipServerEventListener interface, then youAcan receive callbacks from the JVM when BlipNodeEvents,ConnectionEvents, and Appendix - javax.bluetooth ObexEvents are occurring. The com.ericsson.blipnet.api.event package also includes the Appendix B - javax.obex ObexProgressListener interface, which you can use to determine the progress of an OBEX object Appendix C - Java Bluetooth Development on the PalmOS Platform transfer.D - BlipNet 1.1 API Appendix Index
When dealing with clients that support the Object Push Profile, the classes that form the
List of Figures com.ericsson.blipnet.api.obex.pushobjects package come in handy. This package contains List of Tables classes such as ObexFile and ObexGenericObject that help you when you're sending or receiving List of Listings OBEX objects. For obvious reasons the com.ericsson.blipnet.api.util was designed to be a List of Sidebars utility package, but at the moment it only contains a single class for icons: BlipNetIcons.
CROSSREFERENCE
See Appendix D for a complete list (with descriptions) of all the classes and interfaces of the BlipNet 1.1 API.
Now that you have a good understanding of the BlipNet architecture and its APIs, let's look at an example demonstrating how to create an enterprise Bluetooth application using the Ericsson BlipNet.
Bluetooth for Java The Bluetooth Device Tracker by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
A Bluetooth device tracker is an extremely useful enterprise Bluetooth application, but it's really an invaluable tool Apress © 2003 (352 pages) to anyone in the retail business. Why? Have you how ever to been to a wireless grocery Java store where the peanut butter is in aisle The authors of this text describe develop two, but the jelly is located in aisle twelve? Or even worse, the coffee and applications using Bluetooth for a variety of platforms. This the cream are eight aisles apart. includes an API overview of the Java library, development of services, highlights security concerns, In the near future,Bluetooth-based almost every mobile phone will beofBluetooth enabled, and so a Bluetooth device tracker will help a more. grocery store manager to answer the following questions:
Are customers wandering around aimlessly?
Table of Contents
Bluetooth for Java buying patterns exist? Do consistent Introduction
Which the frequently traveled aisles? Chapter 1 - are Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Are the aisles arranged properly?
Chapter 3
- Before You Get Started
Chapter How 4 long - Understanding are customers the in Java theBluetooth store? API Chapter 5
- Bluetooth with J2ME MIDP
All these factors impact customer satisfaction and directly affect whether or not if the customer will return. - Creating a Bluetooth Print Server with JPS API
Chapter 6
Chapter 7 - Java and Tracking.java is OBEX a simple enterprise Bluetooth application that allows you to track Bluetooth devices using the Chapter 8 BlipNet. - Using a Simulator Ericsson OfBluetooth course, before you run Tracking.java, you have to have at least two BlipNodes connected Chapter - Bluetooth Security it would be pointless to track devices with only a single node). Another prerequisite is to your 9BlipServer (otherwise, Chapter 10 - name Wireless with the Micro that a user andEmbedded passwordSystems to the BlipServer mustBlueTarget already be created. In this example, the user name is Chapter Tracking 11 - and Enterprise the password Bluetooth is Applications Tracy. Youwith alsothe need Ericsson to assign BlipNet the BlipNodes that you want to perform device
tracking12to-aBluetooth group. Inand thisJini example the group is called First_Floor. Chapter Appendix A - javax.bluetooth
Note Of course, you can create user names, passwords, and groups using the BlipManager application.
Appendix B - javax.obex
Appendix Java Bluetooth Development on the PalmOS Platform Bluetooth device), just execute the following In order Cto-run the application (and to track every discoverable Appendix D BlipNet 1.1 API statement, at the command line: Index List of Figures
java Tracking First_Floor
List of Tables List of Listings List If you of Sidebars want to track specific Bluetooth clients, then you need to provide their Bluetooth address at the command
line, separated by spaces: java Tracking First_Floor 001122334455 007e3ba4780f 0065ca98bd2e
This application starts off by calling the method initBlipServerConnection()in the constructor. In turn, initBlipServerConnection() obtains a BlipServerConnection object by calling the static method getConnection() from the BlipServer class. The parameters to this method include the user name and password that you've created, as well as the hostname of the BlipServer: BlipServer.getConnection("Tracking", "Tracy", "localhost");
Afterwards, a BlipServerEventFilter is created by calling the getEventFilter() method: BlipServerEventFilter blipServerEventFilter = getEventFilter(discoverBlipNodeGroup, terminalsToTrack);
Finally, we're going to add an event listener to the BlipServerConnectioninstance by calling its addEventListener() method.
Bluetooth for Java blipServerConnection.addEventListener(new TrackingEventListener(), ISBN:1590590783 by Bruce Hopkins and Ranjith Antony blipServerEventFilter); Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java applications using Bluetooth foraaBlipServerEventListener variety of platforms. This TheaddEventListener() method requires and (optionally) a includes an API ofwe thealready Java library, of a BlipServerEventFilter on BlipServerEventFilter. Atoverview this point, have development an instance of Bluetooth-based services, highlights of security concerns, and hand, so we create a new instance of our inner class TrackingEventListener.TrackingEventListener is more. a subclass of BlipServerEventAdapter, which, in turn, is an implementation of BlipServerEventListener. Table of Contents
When Bluetooth Bluetooth for Java devices are detected, the events are passed to the inner class, and the inner class then prints out on the command line what's going on. The code for Tracking.java is shown in Listing 11-1. Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Listing 11-1: Tracking.java
package Chapter 4 -com.ericsson.blipnet.samples; Understanding the Java Bluetooth API Chapter 5
import import Chapter 7 import Chapter 8 import Chapter 6
Chapter 9
- Bluetooth with J2ME MIDP
com.ericsson.blipnet.api.event.*; - Creating a Bluetooth Print Server with JPS API com.ericsson.blipnet.api.blipserver.*; - Java and OBEX com.ericsson.blipnet.api.bluetooth.BluetoothAddress; - Using a Bluetooth Simulator com.ericsson.blipnet.api.blipserver.BlipNode; - Bluetooth Security
Chapter 10 java.util.Hashtable; - Wireless Embedded Systems with the Micro BlueTarget import Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 class - Bluetooth and Jini { public Tracking Appendix A - javax.bluetooth private BlipServerConnection blipServerConnection; Appendix B - javax.obex private Hashtable terminalLastSeenOnThisBlipNode = new Hashtable(); Appendix C - Java Bluetooth Development on the PalmOS Platform
public Tracking(String discoverBlipNodeGroup, Appendix D - BlipNet 1.1 API BluetoothAddress[] terminalsToTrack) {
Index List of Figures
List of Tables// Get a connection to the server
initBlipServerConnection(); List of Listings List of Sidebars
BlipServerEventFilter blipServerEventFilter = getEventFilter(discoverBlipNodeGroup, terminalsToTrack);
try { // Register the event Listener with the generated filter blipServerConnection.addEventListener(new TrackingEventListener(), blipServerEventFilter); } catch (BlipServerConnectionException e) { System.out.println("Error attaching listener"); e.printStackTrace(); System.exit(-1); } } private void initBlipServerConnection() { try { blipServerConnection = BlipServer.getConnection("Tracking", "Tracy", "localhost"); } catch (BlipServerConnectionException e) { System.out.println("Error connecting to server");
e.printStackTrace(); Bluetooth for Java System.exit(-1); by Bruce Hopkins and Ranjith Antony } catch (BlipServerAccessException e)ISBN:1590590783 { Apress © 2003 (352 pages) e.printStackTrace(); The authors of this text describe how registering to develop wireless Java- Have You created "+ System.out.println("Error user applications using Bluetooth for a variety of platforms. This "a username/password for this application in BlipManager?"); includes an API overview of the Java library, development of System.exit(-1); Bluetooth-based services, highlights of security concerns, and } more. } Table of Contents BlipServerEventFilter getEventFilter(String discoverBlipNodeGroup, private Bluetooth for Java BluetoothAddress[] terminals) { Introduction // List of BlipNodeIds used for tracking - is built from input Chapter 1 Chapter 2
-// Introducing Bluetooth in-line parameters entered at start up of Tracking application. -BluetoothAddress[] Bluetooth 1.1 blipNodeAddressList = null;
Chapter 3
- Before You Get Started
Chapter 4
inquiryOnlyBlipNodes = null; -BlipNode[] Understanding the Java Bluetooth API
Chapter 5
{ -try Bluetooth with J2ME MIDP
Chapter 6
inquiryOnlyBlipNodes = blipServerConnection.getBlipNodes - Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8 Chapter 9 Chapter 10 Chapter 11
(discoverBlipNodeGroup, "Discover Devices", false, false); } catch (BlipServerConnectionException e) { - Using a Bluetooth Simulator System.out.println("Could not get BlipNode handles "+ - Bluetooth Security "for the BlipNode Group: "+ discoverBlipNodeGroup + "\n" + e); - Wireless Embedded Systems with the Micro BlueTarget System.exit(-1); - Enterprise Bluetooth Applications with the Ericsson BlipNet }
Chapter 12 - Bluetooth and Jini
Appendix A -// javax.bluetooth Are there any BlipNodes in the specified group ? Appendix B -if javax.obex (inquiryOnlyBlipNodes.length > 1) { Appendix C - Java blipNodeAddressList Bluetooth Development on the = PalmOS Platform Appendix D - BlipNet 1.1 API new BluetoothAddress[inquiryOnlyBlipNodes.length]; Index
for (int i = 0; i < blipNodeAddressList.length; i++) { blipNodeAddressList[i] = inquiryOnlyBlipNodes[i].getBlipNodeID(); List of Tables } List of Listings } else { List of Sidebars System.out.println("Have You inserted at least 2 BlipNodes " + "in the group (" + discoverBlipNodeGroup + ") ?"); usage(); } List of Figures
System.out.println("BlipNodes used for tracking (from group '"+ discoverBlipNodeGroup + "'):"); for (int i=0; i
System.out.println("-----------------\n"); Bluetooth for Java ISBN:1590590783 by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages) return new BlipServerEventFilter(null,
}
The authors of this text describe how to develop wireless Java new int[] {Event.TERMINAL_DETECTED}, applications using Bluetooth for a variety of platforms. This blipNodeAddressList, terminals); includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
private class TrackingEventListener extends BlipServerEventAdapter { public void handleConnectionEvent(ConnectionEvent e) { Table of Contents switch (e.getEventID()) { Bluetooth for Java case Event.TERMINAL_DETECTED: Introduction BluetoothAddress terminalID = e.getTerminalID(); Chapter 1 - Introducing Bluetooth BluetoothAddress blipNodeID = e.getBlipNodeID(); Chapter 2 - Bluetooth 1.1 if (terminalLastSeenOnThisBlipNode.containsKey(terminalID)) { Chapter 3 - Before You Get Started // Terminal has already been discovered before, // so has Chapter 4 - Understanding the Java Bluetooth API it moved? Chapter 5 - Bluetooth with J2ME MIDPif (!terminalLastSeenOnThisBlipNode. get(terminalID).equals(blipNodeID)) { Chapter 6 - Creating a Bluetooth Print Server with JPS API System.out.println("Terminal: " + terminalID + " (" + Chapter 7 - Java and OBEX e.getTerminalFriendlyName() + Chapter 8 - Using a Bluetooth Simulator ") moved from BlipNode: " + Chapter 9 - Bluetooth Security ((BluetoothAddress) terminalLastSeenOnThisBlipNode.remove(terminalID)) + Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget " to BlipNode:" + blipNodeID); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet terminalLastSeenOnThisBlipNode.put(terminalID, Chapter 12 - Bluetooth and Jini blipNodeID); Appendix A - javax.bluetooth } else { Appendix B - javax.obex // Terminal stays on the same BlipNode. Appendix C - Java Bluetooth Development on Platform //the DoPalmOS not do anything. Appendix D - BlipNet 1.1 API } Index } else { List of Figures // This is the first this terminal is seen on the system System.out.println("Terminal: " + terminalID + " (" + List of Tables e.getTerminalFriendlyName() + List of Listings ") discovered for the first time on" + List of Sidebars " BlipNode: " + blipNodeID); terminalLastSeenOnThisBlipNode.put(terminalID, blipNodeID); } break; default: System.out.println("Error - only TERMINAL_DETECTED " + "events should be received! \nReceived " + "event:" + Event.FRIENDLY_NAMES[e.getEventID()]); } } } private static BluetoothAddress[] parseTerminalList(final String[] args) { int numberOfTerminals = args.length - 1; // List of BlipNodeIds used for tracking - is built from // input in-line parameters entered at start up of Tracking application. BluetoothAddress[] trackTheseTerminals = null;
if (numberOfTerminals > 0) { Bluetooth for Java trackTheseTerminals = new BluetoothAddress[numberOfTerminals]; ISBN:1590590783 by Bruce Hopkins and Ranjith Antony for (int inputParameterCount=0; inputParameterCount < Apress © 2003 (352 pages) numberOfTerminals; inputParameterCount++) { The authors try {of this text describe how to develop wireless Java applications// using Bluetooth platforms. This Make sure for ita variety is a of valid TerminalID (BluetoothAddress) includes an API overview of the Java library, development of trackTheseTerminals[inputParameterCount] = Bluetooth-based services, highlights of security concerns, and new BluetoothAddress(args[inputParameterCount+1]); more. } catch (IllegalArgumentException iae) { System.out.println("TerminalId: " + Table of Contents args[inputParameterCount] + Bluetooth for Java " is invalid. A valid id, e.g. " + Introduction "112233445566\n" + iae); Chapter 1 - Introducing Bluetooth usage(); Chapter 2 - Bluetooth 1.1 } } You Get Started Chapter 3 - Before Chapter 4 -}Understanding the Java Bluetooth API Chapter 5 -return BluetoothtrackTheseTerminals; with J2ME MIDP Chapter}6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
private static void usage() { Chapter 8 - Using a Bluetooth Simulator System.out.println("The tracking application requires at least 2 " + Chapter 9 - Bluetooth Security "BlipNodes, please use BlipManager to specify the " + Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget "BlipNodeIds in the group."); Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet System.out.println("Specify the group name as first input parameter:"); Chapter 12 - Bluetooth and Jini System.out.println("> Tracking MyGroup"); Appendix A - javax.bluetooth System.out.println("Thereby the BlipNodes (specified in the " + Appendix B - javax.obex "BlipManager) in the group 'MyGroup' will be used. " + Appendix C - Java Bluetooth Development on"These the PalmOS Platform must be"); BlipNodes Appendix D - BlipNet 1.1 API System.out.println("configured as 'Inquiry Only' BlipNodes. Use at " + Index "least two BlipNodes in the group."); List of Figures System.out.println("When no Terminal Ids are specified all " + "discoverable devices will be tracked."); List of Tables List of Listings System.out.println("-------------------"); List of SidebarsSystem.out.println("If only specific terminal is to be tracked, the " + "Terminal Ids can be specified after the group " + "name, e.g.:"); System.out.println("> Tracking MyGroup 001122334455 000102030405"); System.out.println("Thereby the same BlipNodes as above be used " + "for tracking,"); System.out.println("and only the terminals with Ids 001122334455 " + "000102030405 will be tracked (terminal list can " + "be continued)."); System.out.println("-------------------"); System.out.println("In BlipManager a username/password pair must be " + "defined for the Tracking-application. Under " + "'BlipServer Properties',"); System.out.println("'Applications'; Create a new user with "+ "username/password: Tracking/Tracking."); System.exit(-1); } public static void main(String[] args) { // Must specify at least a BlipNode Group if (args.length<1) { usage();
} Bluetooth for Java ISBN:1590590783 by Bruce Hopkins andtrackTheseTerminals Ranjith Antony BluetoothAddress[] = parseTerminalList(args);
Apress © 2003 (352 pages) The authors of this text describe how to Tracking develop wireless Java System.out.println("** Starting application **"); applications using Bluetooth for a variety of platforms. This System.out.println("------------------");
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Tracking more. tracker = new Tracking(args[0], trackTheseTerminals);
System.out.println("Tracking application started"); Table of Contents Bluetooth } for Java Introduction Chapter 1 }
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP Note seea the Tracker.java example theAPI "examples" directory of the BlipNet SDK for a more detailed Chapter 6 Please - Creating Bluetooth Print Server within JPS Chapter 7
code explanation of the Tracker example. - Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
This chapter gaveApress you an introduction © 2003 (352 pages)to the concept of enterprise Bluetooth applications. At this point, you should understand the scenarios where enterprise Bluetooth applications are best suited and the The authors of this text describe how to develop wireless Java components that applications are neededusing to create them. As you have seen, enterprise Bluetooth for a variety of platforms. This Bluetooth applications cannot an API overview thean Java library, development of be built with just aincludes single Bluetooth deviceofand API. Bluetooth-based services, highlights of security concerns, and more. Using the Ericsson BlipNet, developers have the API, tools, and infrastructure in place in order to create
scalable and robust enterprise Bluetooth applications. In the final chapter of this book, we'll examine how to network Bluetooth devices in a decentralized manner and create a Jini federations among Bluetooth Table of Contents devices. Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java Chapter Bluetooth 12: Bluetooth and Jini by Bruce Hopkins and Ranjith Antony
Overview
ISBN:1590590783
Apress © 2003 (352 pages)
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Well, you've made includes it to the anlast APIchapter overview ofof the the book. Java By library, now,development you should be of fully aware of the capabilities of Bluetooth-based of security concerns, Bluetooth technology with respectservices, to Java.highlights As we stated in Chapter 4, theand basics of any Bluetooth more.
application consist of
Stack initialization
Table of Contents
Bluetooth for management Java Device Introduction
Device discovery Bluetooth Chapter 1 - Introducing Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Service discovery
Chapter 4 - Understanding Service registration the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Communication Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 9
- Bluetooth Security
CROSSSeeChapter 4 for more details on the basics of a Bluetooth application. Chapter 8 - Using a Bluetooth Simulator REFERENCE Chapter Now perhaps 10 - Wireless you've Embedded heard of Jini Systems as well. with If you the Micro haven't BlueTarget used it before, then you should be at least aware
that it's11 a networking Jini also happens be a service-oriented technology like Bluetooth (i.e., Chapter - Enterprisetechnology. Bluetooth Applications with thetoEricsson BlipNet after you the network, you are able to consume or provide services). Chapter 12join - Bluetooth and Jini Appendix A - javax.bluetooth
So, if you want to know how to use Bluetooth and Jini together, then this is the chapter for you! Before we go any further, let's first clearly define the following:
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D -isBlipNet What Jini? 1.1 API Index
does Jini work? List ofHow Figures List of Tables
After we answer those two questions, we can look at what it'll take to combine Jini and Bluetooth together. We'll also look at a device that already integrates Bluetooth and Jini together: the PsiNaptic PsiNode.
List of Listings
List of Sidebars
for Java What Is JiniBluetooth Network Technology? by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Jini network technology by Sun Microsystems to enable networked devices to communicate Apress ©was 2003created (352 pages) and share services with little or no human intervention. part, this was inJava response to their (correct) The authors of this text describe how to In develop wireless perception that the rapidly increasing complexity of the network environment would cause current applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, of following problems with practices in network management to fail completely. Jini setdevelopment out to solve the Bluetooth-based services, highlights of security concerns, and distributed computing: more.
Networks are unreliable. Connections to other computers may disappear unexpectedly. Table of Contents
The latency of a network is variable. Delays in sending and receiving information are dependent on
Bluetooth for such Java as the physical medium, traffic on the network, and information routing algorithms. factors Introduction
Bandwidth is not constant. Like latency, there is often no guarantee of transmission capacity. Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Networks are insecure. This is especially true of heterogeneous networks where the devices - Before You Get Started exchanging information cannot control the path that the information takes.
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP This is most obvious in mobile networks when devices move between Network topologies are variable. Chapter 6 Creating a Bluetooth with future, JPS APImultimode devices will move between network network access points. NowPrint and Server in the near Chapter 7 -(e.g., Java from and OBEX types a cellular network to a wireless local area network to a wired desktop network). Chapter 8 - Using a Bluetooth Simulator
Administration of Security networks is not uniform. Multiple networks provide their own sets of rules, protocols, Chapter 9 - Bluetooth
access, authorization, and security protocols, all controlled by different organizations and individuals. Accessing and securing resources across these networks will be complicated because of inconsistent Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet administration practices. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 12 - Bluetooth and Jini
Appendix A - javax.bluetooth Access and transportation costs are variable. Appendix B - javax.obex
Many devicesDevelopment with differentonconfigurations, capabilities, and operating systems will participate Appendix C -different Java Bluetooth the PalmOS Platform in the Appendix D -network. BlipNet 1.1 API Index
Jini federations are agnostic to the type of connection between the devices participating in the network. It doesn't matter if the participants are connected physically or wirelessly; the only requirement is that the List of Tables are TCP/IP based. connections List of Figures
List of Listings
Jini also supports members in a federation with non-TCP/IP-based connections through List ofNote Sidebars surrogates. The functionality of members in a Jini federation can be summarized in six mechanisms: Lookup Discovery Join Leasing Transactions Events
Lookup Lookup is a Jini service that acts much like a directory. For instance, if a printer wants to provide printer services to a Jini federation, then it must register that service with a Lookup Service. Conversely, if you are participating in a Jini federation, and you want to print, you must check the Lookup Service to see if any printer services are available.
for Java Note As you Bluetooth can see, finding services in Jini has a centralized approach by going through a Lookup ISBN:1590590783 Bruce Hopkins Ranjith Antony Service.byBluetooth has aand decentralized approach to finding services since you need to perform a © 2003 (352in pages) search Apress on each device your piconet to find what services are available. The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and The process of finding more. a suitable Lookup Service in a Jini federation is referred to as discovery.
Discovery
Note The concept of discovery in Jini is radically different compared to that in Bluetooth. In Jini, Table of Contents discovery is simply finding a Lookup Service. In Bluetooth, discovery allows you to find Bluetooth Bluetooth for devices Java as well as the services that they offer. Introduction
Join
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter Once a3Lookup - Before Service You Get has Started been found, a service may join that Lookup Service by providing one or more
Java objects. The Join protocol defines the mechanism to accomplish this. Chapter 4 - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
- Creating a Bluetooth Print Server with JPS API Leasing
Chapter 6 Chapter 7
- Java and OBEX
The use resource in a Jini federation is granted for a specific amount of time. This concept is known Chapter 8 of- aUsing a Bluetooth Simulator as a lease. The duration of the Chapter 9 - Bluetooth Security lease may be fixed by the grantor or negotiated. To maintain the use of a service10 (including services joined to Lookup the lease must be renewed periodically. This allows Chapter - Wireless Embedded Systems with Services), the Micro BlueTarget for the expiration and cleanup of services that are no longer Chapter 11 - Enterprise Bluetooth Applications with the Ericsson required, BlipNet or whose owners have left the federation. Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Transactions
Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
Atransaction allows1.1 a set Appendix D - BlipNet APIof operations to be grouped in such a way that they either all succeed or all fail.
To the members of the federation, the group of operations in the transaction appear to function as a single unit.
Index
List of Figures List of Tables
Events
List of Listings List of Sidebars
An object residing on a device may register an interest in an event occurring in another object residing on a different device in the federation and receive notification when the event occurs. Thus, events provide a mechanism for maintaining consistency of state information in the federation.
Bluetooth for Java How Jini Works by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
So, let's first define a Jini© ServiceItem. A ServiceItem is comprised of a service object and some Apress 2003 (352 pages) attributes. The only real restriction on ServiceItem objects is wireless that theyJava be serializable. The authors of this text describe how to develop applications using Bluetooth for a variety of platforms. This
There are typically three entities involved of in athe Jini federation: includes an API overview Java library, development of Bluetooth-based services, highlights of security concerns, and
Service Providers more. are the entities that provide a Java-based software service. The service can be pretty much anything and doesn't necessarily have anything to do with the device that hosts the provider. For instance, a Jini-enabled printer can provide a printer service in a Jini federation, but Table of Contents there's nothing stopping it from providing a random number generator service to the federation as Bluetooth well.for Java Introduction
Service ConsumersBluetooth are clearly the entities that have an interest in using the services that are available Chapter 1 - Introducing in the federation. Chapter 2 -Jini Bluetooth 1.1 Chapter 3
- Before You Get Started
Lookup Services (LUS) are the Jini services that act on behalf of Service Providers to host their - Understanding the Java Bluetooth API services. This is also the "directory" that Service Consumers use in order to find services in the Chapter 5 - Bluetooth with J2ME MIDP federation. Chapter 4 Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter Java and OBEX Before 7the-federation is formed, these entities must exist (see Figure 12-1). Chapter 8 - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List ofFigure Listings12-1: These three entities must exist before a Jini federation is established. The federation List ofitself Sidebars hasn't been formed because the entities don't know anything about each other yet.
Discovering a Lookup Service In order to get the ball rolling, the clients (Service Providers or Service Consumers) must discover a Lookup Service. Note A Jini federation can have more than one Lookup Service. Jini defines three discovery mechanisms: Multicast announcement from a Lookup Service Multicast request from a client Unicast request from a client A Lookup Service can use multicast announcements periodically to advertise its presence on the network. Interested clients, Service Providers or Service Consumers in particular, can use the information provided in an announcement to communicate with the Lookup Service. Clients use multicast requests to discover a Lookup Service. A Lookup Service receiving a request responds directly to that client. Once the address of a Lookup Service is known, a client sends a unicast
request directly to the Lookup Service. Bluetooth for Java
Hopkins and Ranjith Antony The LifecyclebyofBruce a Service Provider
ISBN:1590590783
Apress © 2003 (352 pages)
Now, let's assume that a Lookup Service is making multicast announcements. A Service Provider The authors of this text describe howperiodic to develop wireless Java applications Bluetooth variety of platforms. This hears an announcement, andusing receives from for theaLookup Service its ServiceRegistrar. A includes API overview of is the Java library, development of the Lookup Service. It allows a ServiceRegistrar is aanJava object that simply the public interface to Bluetooth-based services, highlights of security concerns, and client to register services, look up services, and request notification of changes in the Lookup Service. This more. interaction is shown in Figure 12-2. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9 - 12-2: Bluetooth Figure TheSecurity Service Provider discovers the Lookup Service and receives its Chapter 10 Wireless Embedded Systems with the Micro BlueTarget ServiceRegistrar object. The ServiceRegistrar is used to interact with the Lookup Service Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet via its public methods. Chapter 12 - Bluetooth and Jini
In the final of the discovery process, the Service Provider receives the ServiceRegistrar object, Appendix A -step javax.bluetooth which it can use to register its ServiceItem with the Lookup Service. Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
Leasing a ServiceItem and Joining a Federation
Appendix D - BlipNet 1.1 API
Index When a Service Provider registers its ServiceItem as shown in Figure 12-3, it also specifies a lease List of Figures duration for the service. If the registration is successful, the Lookup Service will keep the service registered List for of atTables least that length of the lease requested, or provide a duration of its own. It's up to the Service Provider to renew the lease as required. After the ServiceItem is registered with the Lookup Service, the List of Listings
Service Provider has joined the federation. List of Sidebars
Figure 12-3: The Service Provider registers its ServiceItem with the Lookup Service. Note The leasing mechanism is an important part of Jini technology because it allows devices to clean up unused resources. If a lease expires (or if it can't be renewed because the lease grantor or holder has left the federation), the associated resource can be released. Now that we have a federation with a Service Provider in it, it's time to look at things from the Service Consumer's perspective.
The LifecycleBluetooth of a Service Consumer for Java by Bruce Hopkins Ranjith The Service Consumer also starts and its life cycleAntony by discovering aISBN:1590590783 Lookup Service. It uses the same Apress © 2003 (352 pages) discovery mechanisms that a Service Provider uses. The Service Consumer can use any of the three The authors thisscenario, text describe to develop wireless Java discovery mechanisms, but inofthis let's how say that the Service Consumer is using a multicast applications using Bluetooth for a variety of platforms. This request to find a Lookup Service. This is illustrated in Figure 12-4. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API Figure TheOBEX Lookup Service receives a multicast request from the Service Consumer and Chapter 7 - 12-4: Java and
responds with a unicast message containing the ServiceRegistrar object. - Using a Bluetooth Simulator
Chapter 8 Chapter 9
- Bluetooth Security The Service Consumer device makes a number of periodic multicast requests. When a Lookup Service
Chapter 10a-request, Wireless itEmbedded with the Micro BlueTarget receives responds Systems with a simple message that contains its ServiceRegistrar object. At Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet this point the Service Consumer is part of the federation. Chapter 12 - Bluetooth and Jini
With theAServiceRegistrar in hand, the Service Consumer can use its lookupmethods to look for Appendix - javax.bluetooth useful services. Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
Thelookup methods of the ServiceRegistrar object require a ServiceTemplate object as an argument. This template may contain nothing more than an array of class types. It's that simple! You get Index back either the service object itself, or a special object (ServiceMatches) containing all the services that List of Figures matched your template. This process is illustrated in Figures 12-5 and 12-6. Appendix D - BlipNet 1.1 API
List of Tables List of Listings List of Sidebars
Figure 12-5: The Service Consumer uses the local ServiceRegistrar object to look up services that are registered in the Lookup Service.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java
Figure 12-6: The ServiceItem requested is returned to the Service Consumer and can be used locally.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1 Note to understanding how the Service Consumer gets a service, it's useful to Chapter 3 Though - Before not Youcrucial Get Started
that a requested service is marshalled on the Lookup Service before being passed to the Chapter 4 know - Understanding the Java Bluetooth API Consumer. Basically, the service object is flattened and serialized, and then served as a Chapter 5 Service - Bluetooth with J2ME MIDP to the Service Consumer. Oncewith received, Chapter 6 file - Creating a Bluetooth Print Server JPS APIthe Service Consumer's JVM unmarshalls the Chapter 7
object into an instantiation of the service object. - Java and OBEX
Chapter 8 Service - Using aConsumer Bluetooth has Simulator Once the the desired ServiceItem, it can use the service locally. "Under the Chapter 9 Bluetooth Security covers" the service may communicate back to the Service Provider as shown in Figure 12-7. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 12-7: Once activated on the Service Consumer, the Service Provider's service may communicate directly with the Service Provider device as part of the service offered.
for Bluetooth Java IntegratingBluetooth Jini and by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Now that you have a clear understanding of the basics of a Jini federation, let's examine the possible Apress © 2003 (352 pages) scenarios of what's involved when integrating Jinihow andtoBluetooth together. The authors of this text describe develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
All-Bluetooth Jini Federation
As the name implies, in an all-Bluetooth Jini federation, all the devices participating in the federation are Bluetooth enabled. For such a scenario to take place, the Bluetooth devices must discover each other and Table formof a Contents piconet. Since a requirement of a Jini federation is that the connections between the devices be Bluetooth for Javathe Bluetooth devices in an all-Bluetooth Jini federation would be connecting with either of TCP/IP based, Introduction the following TCP/IP-based Bluetooth profiles: Chapter 1
- Introducing Bluetooth
Dial-Up Networking Profile Chapter 2 - Bluetooth 1.1
Chapter 3 Access - BeforeProfile You Get Started LAN Chapter 4
- Understanding the Java Bluetooth API
Personal Area Networking Chapter 5 - Bluetooth with J2ME Profile MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Note Invariably, a manufacturer could make an all-Bluetooth Jini device without providing any of the - Java and OBEX preceding Bluetooth profiles in its product. For instance, the manufacturer can satisfy the TCP/IP Chapter 8 - Using a Bluetooth Simulator requirement by simply implementing the BNEP protocol. The major drawback, however, is that Chapter 9 - Bluetooth Security those devices will be totally incompatible with devices from other manufacturers. Chapter 7
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11piconet - Enterprise Bluetooth Applications withIPthe Ericsson BlipNet After the has been established and the addresses have been assigned, the Jini federation can Chapter be formed. 12 - At Bluetooth this point, andthis Jinifederation is just like any other Jini federation. If other Bluetooth devices want
to join the they must first join the piconet, obtain an IP, and then join the Jini federation. Since Appendix A -federation, javax.bluetooth the IP network is running over Bluetooth, this federation is wireless. An example of an all-Bluetooth Jini Appendix B - javax.obex federation shown in Figure 12-8. Appendix C -isJava Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure 12-8: In an all-Bluetooth Jini federation, all the devices participating in the federation must be Bluetooth enabled. This federation is wireless.
Hybrid Bluetooth Jini Federation In a hybrid Bluetooth Jini federation, one or more devices are Bluetooth enabled. Note however that all the devices are physically connected by traditional TCP/IP connections, and the federation is not wireless (unless the TCP/IP network is WLAN). There are no special precautions that need to be taken care of, so this federation is formed in the usual manner. Any of the devices in the federation can be Bluetooth enabled, but it makes sense that either the Service Provider or the Service Consumer have Bluetooth capability so it can act as a bridge between the Jini federation and an outside Bluetooth piconet elsewhere. A hybrid Bluetooth Jini federation is shown in Figure 12-9.
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4 - 12-9: Understanding theBluetooth Java Bluetooth API Figure In a hybrid Jini federation, at least one of the devices participating in the Chapter 5 Bluetooth with J2ME MIDP federation must be Bluetooth enabled. This federation is not (necessarily) wireless, and the JiniChapter 6 - Creating a Bluetooth Print withbetween JPS API the Jini federation and an external Bluetooth Bluetooth-enabled device acts asServer a bridge Chapter 7 Java and OBEX piconet. Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java A Jini-Bluetooth-Enabled Device: The PsiNaptic PsiNode by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Dallas Semiconductor a product line of sensors that can be connected to a two-wire bus (power and Apresshas © 2003 (352 pages) ground) called 1-Wire. They have a Java development and reference design called Tiny Internet The authors of this text describe how to platform develop wireless Java Interface (TINI) that includes a 1-Wire interface. PsiNaptic Inc. has combined the TINI chipset with an applications using Bluetooth for a variety of platforms. This includes anin API overview of the Java library,that development Ericsson Bluetooth module a reference design platform they have of named, PsiNode. The PsiNode Bluetooth-based highlights of host security andsolution for creating a low-cost, platform is capable of acting as aservices, Jini Lookup Service andconcerns, is a perfect more. small-footprint, remote 1-Wire sensor/controller. A picture of the PsiNode is shown in Figure 12-10. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 9
- Bluetooth Security
Figure 12-10: The PsiNode development platform. The Ericsson Bluetooth module is covered by two Chapter 8 - Using a Bluetooth Simulator metal plates, and is connected to the Dallas Semiconductor TINI microcontroller. Chapter 10 Any - Wireless Embedded Systems the Micro BlueTarget TINI) can function as a Jini Lookup Note ordinary TINI device (i.e., with a non-Bluetooth-enabled Chapter 11 Service - Enterprise Applications withalso the makes Ericssonsoftware BlipNet for this purpose (called JMatos), and in a Bluetooth Jini federation. PsiNaptic Chapter 12 you - Bluetooth can getand it from Jini their Web site (http://www.psinaptic.com). Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java The Benefits of Bluetooth and Jini by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
So what are the advantages integrating Bluetooth and Jini into devices? In the case of mobile devices, Apress © 2003of(352 pages) an all-Bluetooth Jini federation allows devices to how formto"smarter" networks. A Jini federation allows The authors of this text describe develop wireless Java Bluetooth devicesapplications to interoperate with more flexibility, without being constrained by the limits of Bluetooth using Bluetooth for a variety of platforms. This includes an ofbrings the Java development of of events, transactions, and profiles. More importantly, a API Jini overview federation to library, the table the concepts Bluetooth-based services, highlights of security concerns, and leasing, which allows for more fault-tolerant and robust Bluetooth applications. more.
In a hybrid Bluetooth Jini federation, Bluetooth devices that are not capable of joining the federation and using its services can interact with the bridge device and consume the services of the federation. Table of Contents Conversely, the bridge device can provide wireless services to the Jini federation by interacting with an Bluetooth for Java external Bluetooth piconet. Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Summary
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
In this chapter, we gave ©you overview Apress 2003an (352 pages) of the principles and concepts of Jini network technology. We also presented anThe overview of the and "whys" fordevelop integrating Bluetooth authors of this"hows" text describe how to wireless Java and Jini together in order to create some really cool wireless applications. Both Jini and Bluetooth complement each other for creating applications using Bluetooth for a variety of platforms. This includesJini an brings API overview of theadvanced Java library, development of networked applications. to the table networking capabilities such as leasing and Bluetooth-based highlights of security concerns, distributed events, while Bluetoothservices, allows the members of the network toand be small, power efficient, and more. wireless. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java AppendixBluetooth A: javax.bluetooth by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress all © 2003 pages) This appendix contains the (352 fields and method signatures of the classes, interfaces, and exceptions that The authors of this text describe how to develop comprise the javax.bluetooth package of the JSR-82 API. wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Class BluetoothConnectionException // fields Table static of Contents int FAILED_NOINFO
static for int Bluetooth JavaNO_RESOURCES static int SECURITY_BLOCK Introduction static TIMEOUT Chapter 1 int - Introducing Bluetooth static UNACCEPTABLE_PARAMS Chapter 2 int - Bluetooth 1.1 static UNKNOWN_PSM Chapter 3 int - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
// constructors - Bluetooth with J2ME MIDP BluetoothConnectionException(int error) Chapter 6 - Creating a Bluetooth Print Server with JPS API BluetoothConnectionException(int error, java.lang.String msg) Chapter 5 Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator // methods
Chapter 9 - Bluetooth Security int getStatus() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BluetoothStateException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructors The authors of this text describe how to develop wireless Java BluetoothStateException() applications using Bluetooth for a variety of platforms. This BluetoothStateException(java.lang.String msg) includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class DataElement by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int BOOL applications using Bluetooth for a variety of platforms. This static int DATALT includes an API overview of the Java library, development of static int DATSEQ Bluetooth-based services, highlights of security concerns, and static int INT_1 more. static int INT_16 static int INT_2 Table of Contents static int INT_4 Bluetooth JavaINT_8 static for int Introduction static int NULL Chapter 1 int - Introducing static STRINGBluetooth Chapter 2 int - Bluetooth 1.1 static U_INT_1 Chapter 3 int - Before You Get Started static U_INT_16 Chapter static 4 int - Understanding U_INT_2 the Java Bluetooth API static U_INT_4 Chapter 5 int - Bluetooth with J2ME MIDP static U_INT_8 Chapter 6 int - Creating a Bluetooth Print Server with JPS API static Chapter 7 int - JavaURL and OBEX static int UUID Chapter 8 - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
// constructors DataElement(boolean bool) Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet DataElement(int valueType) Chapter 12 - Bluetooth and Jini DataElement(int valueType, long value) Appendix A - javax.bluetooth DataElement(int valueType, java.lang.Object value) Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform // methods Appendix D - BlipNet 1.1 API void addElement(DataElement elem) Index boolean getBoolean() List of Figures int getDataType() List of Tables long getLong() List int of Listings getSize()
java.lang.Object getValue() List of Sidebars void insertElementAt(DataElement elem, int index) boolean removeElement(DataElement elem)
Bluetooth for Java Class DeviceClass by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructors The authors of this text describe how to develop wireless Java DeviceClass(int record) applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of // methods Bluetooth-based services, highlights of security concerns, and int getMajorDeviceClass() more.
int getMinorDeviceClass() int getServiceClasses()
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class DiscoveryAgent
// fields static int static int static int static int static int
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java CACHED applications using Bluetooth for a variety of platforms. This GIAC includes an API overview of the Java library, development of LIAC Bluetooth-based services, highlights of security concerns, and NOT_DISCOVERABLE more. PREKNOWN
Table of Contents
// methods
Bluetooth forcancelInquiry(DiscoveryListener Java boolean listener) Introduction boolean cancelServiceSearch(int transID) Chapter 1 - Introducing Bluetooth RemoteDevice[] retrieveDevices(int option) Chapter 2 - Bluetooth 1.1 int searchServices(int[] attrSet, UUID[] uuidSet, RemoteDevice btDev, Chapter 3 - Before You Get Started DiscoveryListener discListener) Chapter java.lang.String 4 - Understanding selectService(UUID the Java Bluetooth API uuid, int security, boolean master)
boolean accessCode, DiscoveryListener listener) Chapter 5 -startInquiry(int Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface DiscoveryListener by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int INQUIRY_COMPLETED applications using Bluetooth for a variety of platforms. This static int INQUIRY_ERROR includes an API overview of the Java library, development of static int INQUIRY_TERMINATED Bluetooth-based services, highlights of security concerns, and static int SERVICE_SEARCH_COMPLETED more. static int SERVICE_SEARCH_DEVICE_NOT_REACHABLE static int SERVICE_SEARCH_ERROR Table of Contents static int SERVICE_SEARCH_NO_RECORDS Bluetooth JavaSERVICE_SEARCH_TERMINATED static for int Introduction // methods Chapter 1 - Introducing Bluetooth void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) Chapter 2 - Bluetooth 1.1 void inquiryCompleted(int discType) Chapter 3 - Before You Get Started void servicesDiscovered(int transID, ServiceRecord[] servRecord) Chapter void serviceSearchCompleted(int 4 - Understanding the Java Bluetooth transID, API int respCode) Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface L2CAPConnection by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int DEFAULT_MTU applications using Bluetooth for a variety of platforms. This static int MINIMUM_MTU includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
// methods more. int getReceiveMTU() int getTransmitMTU() Table of Contents boolean ready() Bluetooth for Java int receive(byte[] inBuf) Introduction void send(byte[] data) Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface L2CAPConnectionNotifier by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// method The authors of this text describe how to develop wireless Java L2CAPConnection acceptAndOpen() applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class LocalDevice by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// methods The authors of this text describe how to develop wireless Java java.lang.String getBluetoothAddress() applications using Bluetooth for a variety of platforms. This DeviceClass getDeviceClass() includes an API overview of the Java library, development of int getDiscoverable() Bluetooth-based services, highlights of security concerns, and DiscoveryAgent more. getDiscoveryAgent() java.lang.String getFriendlyName() static LocalDevice getLocalDevice() Table of Contents static java.lang.String getProperty(java.lang.String property) Bluetooth for Java ServiceRecord getRecord(javax.microedition.io.Connection notifier) Introduction boolean setDiscoverable(int mode) Chapter 1 - Introducing Bluetooth void updateRecord(ServiceRecord srvRecord) Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class RemoteDevice by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructor The authors of this text describe how to address) develop wireless Java protected RemoteDevice(java.lang.String applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of // methods Bluetooth-based services, highlights of security concerns, and boolean authenticate() more.
boolean authorize(javax.microedition.io.Connection conn) boolean encrypt(javax.microedition.io.Connection conn, boolean on) Table of Contents boolean equals(java.lang.Object obj) Bluetooth for Java java.lang.String getBluetoothAddress() Introduction java.lang.String getFriendlyName(boolean alwaysAsk) Chapter 1 RemoteDevice - Introducing Bluetooth static getRemoteDevice(javax.microedition.io.Connection conn) Chapter 2 - Bluetooth 1.1 int hashCode() Chapter 3 -isAuthenticated() Before You Get Started boolean Chapter boolean 4 -isAuthorized(javax.microedition.io.Connection Understanding the Java Bluetooth API conn) boolean Chapter 5 -isTrustedDevice() Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ServiceRecord by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int AUTHENTICATE_ENCRYPT applications using Bluetooth for a variety of platforms. This static int AUTHENTICATE_NOENCRYPT includes an API overview of the Java library, development of static int NOAUTHENTICATE_NOENCRYPT Bluetooth-based services, highlights of security concerns, and more.
// methods int[] getAttributeIDs() Table of Contents DataElement getAttributeValue(int attrID) Bluetooth for Java java.lang.String getConnectionURL(int requiredSecurity, boolean mustBeMaster) Introduction RemoteDevice getHostDevice() Chapter 1 -populateRecord(int[] Introducing Bluetooth boolean attrIDs) Chapter 2 -setAttributeValue(int Bluetooth 1.1 boolean attrID, DataElement attrValue) Chapter 3 - Before You Get Started void setDeviceServiceClasses(int classes) Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class ServiceRegistrationException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructors The authors of this text describe how to develop wireless Java ServiceRegistrationException() applications using Bluetooth for a variety of platforms. This ServiceRegistrationException(java.lang.String msg) includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Class UUIDBluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructors The authors of this text describe how to develop wireless Java UUID(long uuidValue) applications using Bluetooth for a variety of platforms. This UUID(java.lang.String uuidValue, boolean shortUUID) includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and
// methods more. boolean equals(java.lang.Object value) int hashCode() Table of Contents java.lang.String toString() Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java AppendixBluetooth B: javax.obex by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress all © 2003 pages) This appendix contains the (352 fields and method signatures of the classes, interfaces, and exceptions that The authors of this howAPI. to develop wireless Java comprise the javax.obex packagetext of describe the JSR-82 applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Interface Authenticator // methods
Table PasswordAuthentication of Contents onAuthenticationChallenge(java.lang.String description, Bluetooth for Java
boolean isUserIdRequired, boolean isFullAccess)
byte[] onAuthenticationResponse(byte[] userName) Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ClientSession by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// methods The authors of this textheaders) describe how to develop wireless Java HeaderSet connect(HeaderSet applications using Bluetooth for a variety of platforms. This HeaderSet createHeaderSet() includes an API overview of the Java library, development of HeaderSet delete(HeaderSet headers) Bluetooth-based services, highlights of security concerns, and HeaderSet disconnect(HeaderSet more. headers) Operation get(HeaderSet headers) long getConnectionID() Table of Contents Operation put(HeaderSet headers) Bluetooth for Java void setAuthenticator(Authenticator auth) Introduction void setConnectionID(long id) Chapter 1 - Introducing Bluetooth HeaderSet setPath(HeaderSet headers, boolean backup, boolean create) Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface HeaderSet by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int APPLICATION_PARAMETER applications using Bluetooth for a variety of platforms. This static int COUNT includes an API overview of the Java library, development of static int DESCRIPTION Bluetooth-based services, highlights of security concerns, and static int HTTP more. static int LENGTH static int NAME Table of Contents static int OBJECT_CLASS Bluetooth JavaTARGET static for int Introduction static int TIME_4_BYTE Chapter 1 int - Introducing Bluetooth static TIME_ISO_8601 Chapter 2 int - Bluetooth static TYPE 1.1 Chapter 3 int - Before static WHOYou Get Started Chapter 4
- Understanding the Java Bluetooth API
// methods Chapter 5 - Bluetooth with J2ME MIDP void createAuthenticationChallenge(java.lang.String realm, boolean userID, Chapter 6 - Creating a Bluetooth Print Server with JPS API boolean access) - Java and OBEX java.lang.Object getHeader(int headerID) Chapter 8 - Using a Bluetooth Simulator int[]9 getHeaderList() Chapter - Bluetooth Security int getResponseCode() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget void setHeader(int headerID, java.lang.Object headerValue) Chapter 7
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface Operation by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// methods void abort() The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This HeaderSet getReceivedHeaders() includes an API overview of the Java library, development of int getResponseCode() Bluetooth-based services, highlights of security concerns, and int getResponseCode() more. Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class PasswordAuthentication by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructor The authors of this text describe how to byte[] develop wireless Java PasswordAuthentication(byte[] userName, password) applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of // methods Bluetooth-based services, highlights of security concerns, and byte[] getPassword() more.
byte[] getUserName() Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class ResponseCodes by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// fields The authors of this text describe how to develop wireless Java static int OBEX_DATABASE_FULL applications using Bluetooth for a variety of platforms. This static int OBEX_DATABASE_LOCKED includes an API overview of the Java library, development of static int OBEX_HTTP_ACCEPTED Bluetooth-based services, highlights of security concerns, and static int OBEX_HTTP_BAD_GATEWAY more. static int OBEX_HTTP_BAD_METHOD static int OBEX_HTTP_BAD_REQUEST Table of Contents static int OBEX_HTTP_CONFLICT Bluetooth JavaOBEX_HTTP_CREATED static for int Introduction static int OBEX_HTTP_ENTITY_TOO_LARGE Chapter 1 int - Introducing Bluetooth static OBEX_HTTP_FORBIDDEN Chapter 2 int - Bluetooth 1.1 static OBEX_HTTP_GATEWAY_TIMEOUT Chapter 3 int - Before You Get Started static OBEX_HTTP_GONE Chapter static 4 int - Understanding OBEX_HTTP_INTERNAL_ERROR the Java Bluetooth API static OBEX_HTTP_LENGTH_REQUIRED Chapter 5 int - Bluetooth with J2ME MIDP static OBEX_HTTP_MOVED_PERM Chapter 6 int - Creating a Bluetooth Print Server with JPS API static Chapter 7 int - JavaOBEX_HTTP_MOVED_TEMP and OBEX static OBEX_HTTP_MULT_CHOICE Chapter 8 int - Using a Bluetooth Simulator static int OBEX_HTTP_NO_CONTENT Chapter 9 - Bluetooth Security static int OBEX_HTTP_NOT_ACCEPTABLE Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget static int OBEX_HTTP_NOT_AUTHORITATIVE Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet static int OBEX_HTTP_NOT_FOUND Chapter 12 - Bluetooth and Jini static int OBEX_HTTP_NOT_IMPLEMENTED Appendix A - javax.bluetooth static int OBEX_HTTP_NOT_MODIFIED Appendix B - javax.obex static int OBEX_HTTP_OK Appendix - JavaOBEX_HTTP_PARTIAL Bluetooth Development on the PalmOS Platform staticC int Appendix D BlipNet 1.1 API static int OBEX_HTTP_PAYMENT_REQUIRED Index static int OBEX_HTTP_PRECON_FAILED List of Figures static int OBEX_HTTP_PROXY_AUTH List of Tables static int OBEX_HTTP_REQ_TOO_LARGE List static of Listings int OBEX_HTTP_RESET static int OBEX_HTTP_SEE_OTHER List of Sidebars static int OBEX_HTTP_TIMEOUT static int OBEX_HTTP_UNAUTHORIZED static int OBEX_HTTP_UNAVAILABLE static int OBEX_HTTP_UNSUPPORTED_TYPE static int OBEX_HTTP_USE_PROXY static int OBEX_HTTP_VERSION
Bluetooth for Java Class ServerRequestHandler by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// constructor The authors of this text describe how to develop wireless Java protected ServerRequestHandler() applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of // methods Bluetooth-based services, highlights of security concerns, and HeaderSet createHeaderSet() more.
long getConnectionID() void onAuthenticationFailure(byte[] userName) Table of Contents int onConnect(HeaderSet request, HeaderSet reply) Bluetooth for Java int onDelete(HeaderSet request, HeaderSet reply) Introduction void onDisconnect(HeaderSet request, HeaderSet reply) Chapter 1 - Introducing Bluetooth int onGet(Operation op) Chapter 2 - Bluetooth 1.1 int onPut(Operation op) Chapter 3 - Before You Get Startedrequest, HeaderSet reply, boolean backup, boolean create) int onSetPath(HeaderSet Chapter void setConnectionID(long 4 - Understanding the Java Bluetooth id) API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface SessionNotifier by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
// methods The authors of this text describe how to develop wireless Java javax.microedition.io.Connection acceptAndOpen(ServerRequestHandler handler) applications using Bluetooth for a variety of platforms. This javax.microedition.io.Connection acceptAndOpen(ServerRequestHandler handler, includes an API overview of the Java library, development of Authenticator auth) Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
for Java AppendixBluetooth C: Java Bluetooth Development on the ISBN:1590590783 by Bruce Hopkins and Ranjith Antony © 2003 (352 pages) PalmOS Apress Platform The authors of this text describe how to develop wireless Java applications Bluetooth for a variety of started platforms. Thisthe Impronto Developer Kit 1.0 for The purpose of this appendixusing is to demonstrate how to get using includes an API overview of the Java library, development of PalmOS (the Palm DK). Bluetooth-based services, highlights of security concerns, and more.
Note For more updated information, please consult the Palm DK user guides.
Supported Bluetooth Protocols
Table of Contents Bluetooth for Java
Introduction The Palm DK supports the following Bluetooth protocols: Chapter 1
- Introducing Bluetooth
RFCOMM Chapter 2 - Bluetooth 1.1
Chapter 3 - Before You Get Started L2CAP Chapter 4
- Understanding the Java Bluetooth API
SDP Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
OBEX
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java System Requirements by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Here are the system requirements for the Palm DK: Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java
Pentium-based PC with at least 64MB offor RAM applications using Bluetooth a variety of platforms. This
includes an API overview of the Java library, development of
Microsoft Windows 2000 service packhighlights 1 (or higher) Bluetooth-based services, of security concerns, and more.
Minimum 35MB of free disk space JDK 1.3.1 Table of Contents Bluetooth for Java
PalmOS device with PalmOS 4.0 (or higher)
Introduction
Chapter 1 Bluetooth - Introducing Bluetooth Palm SDIO card (or) Sony Bluetooth Memory Stick Chapter 2 - Bluetooth 1.1
Now, developing stand-alone Java applications on the PalmOS can be a little cumbersome Chapter 3 - Beforeordinary, You Get Started because need to create compile it, build a PRC, and deploy (i.e., HotSync) it on the Chapter 4 you - Understanding theyour Javaapplication, Bluetooth API PDA. It5gets even more cumbersome Chapter - Bluetooth with J2ME MIDP if you develop wireless Java applications because you'll need to create two-applications (client and server code) and deploy to two PDAs. Because of this, it is highly Creating a Bluetooth Print Server with JPS API recommended that you also get the following:
Chapter 6 Chapter 7
- Java and OBEX
Chapter 8 - Using a Bluetooth Simulator PalmOS emulator 3.5, with PalmOS 4.0 ROM (or higher) and Palm's Bluetooth stack Chapter 9 - Bluetooth Security
TDK Developers Kitwith (includes TDK Bluetooth hardware). Chapter 10 Bluetooth - Wireless Palm Embedded Systems the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
This configuration is shown in Figure C-1.
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure C-1: With the TDK Bluetooth Developer's Kit and the PalmOS emulator, you can develop, deploy, and test your Java Bluetooth applications all within the environment of your development machine.
Bluetooth for Java Included Software by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
The following items are ©included the Impronto Developer Kit 1.0 for PalmOS: Apress 2003 (352in pages) The authors of this text describe how to develop wireless Java
IBM WebSphere Micro Environment for PalmOS (theofJ9 KVM) This applications using Bluetooth for a variety platforms.
includes an API overview of the Java library, development of
Apache ANTBluetooth-based build tool services, highlights of security concerns, and more.
Java Bluetooth APIs Demo applications Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
InstallationBluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Installation is pretty simple. In (352 order to run the installer, just execute devkit.exe, and follow the onApress © 2003 pages) screen instructions. The installation of Impronto will also install WebSphere Micro The authors of this textthe describe howDeveloper to developKit wireless Java Environment. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of services, highlights .prc of security and To complete yourBluetooth-based installation, install the necessary files onconcerns, your PDA. The Impronto Developer Kit more. files are
idev_midp_j9.prc Table of Contents Bluetooth idev_racs.prc for Java Introduction
idev_utils.prc - Introducing Bluetooth
Chapter 1
Chapter 2 - Bluetooth 1.1 idev_wrap.prc Chapter 3
- Before You Get Started
Chapter The J94VM- .prcs Understanding are named the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
cdlc15.prc
Chapter 7 - Java and OBEX j9_vm_bundle.prc Chapter 8
- Using a Bluetooth Simulator
j9pref.prc Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
midp15.prc
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 have - Bluetooth and Jini After you completed your installation, verify that everything is correct by running the sample Appendix A - MIDP-Chat. javax.bluetooth application: A screenshot of this application is shown in Figure C-2. Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Figure C-2: The MIDP-Chat application
for Java AppendixBluetooth D: BlipNet 1.1 API by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 pages) This appendix, presented here(352 with permission from Ericsson, contains descriptions of all the fields and The authors of this text describe to develop wireless Javathe BlipNet 1.1 API. [1] method signatures of the classes, interfaces, andhow exceptions that comprise applications using Bluetooth for a variety of platforms. This includes an API about overview of thesee Javahttp://www.ericsson.com/blipnet. library, development of Note For more information BlipNet, Bluetooth-based services, highlights of security concerns, and more.
Class BlipNetIcons Table of Contents
public for class Bluetooth Java BlipNetIcons extends java.lang.Object Introduction
//Package - Introducing Bluetooth com.ericsson.blipnet.api.util
Chapter 1 Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
//Fields - Understanding the Java Bluetooth API static int BLIPMANAGER_ICON Chapter 5 - Bluetooth with J2ME MIDP static int BLIPNODE_ALARM_ICON Chapter 6 Creating a Bluetooth Print Server with JPS API static int BLIPNODE_ICON Chapter 7 Java and OBEX static int BLIPNODE_LOCKED_ICON Chapter 8 int - Using a Bluetooth Simulator static BLIPNODE_NOT_WORKING_ICON Chapter 9 int - Bluetooth Security static BLIPNODE_SWUPGRADE_ICON Chapter static 10 int - Wireless BLIPSERVER_ICON Embedded Systems with the Micro BlueTarget static COMPUTER_DESKTOP_ICON Chapter 11 int - Enterprise Bluetooth Applications with the Ericsson BlipNet static COMPUTER_LAPTOP_ICON Chapter 12 int - Bluetooth and Jini staticA int COMPUTER_PDA_ICON Appendix - javax.bluetooth static int COMPUTER_SERVER_ICON Appendix B - javax.obex static int LAN_ACCESS_AVAIL_ICON Appendix C - Java Bluetooth Development on the PalmOS Platform static int PHONE_CELLULAR_ICON Appendix D - BlipNet 1.1 API static int PHONE_SMARTPHONE_ICON Index static int SESSION_LAP_ICON List of Figures static int SESSION_OPP_ICON List of Tables static int UNKNOWN_DEVICE_ICON Chapter 4
List of Listings
List of Sidebars //Methods
static getIcon(ClassOfDevice classOfDevice, boolean javax.swing.ImageIcon largeIcon)
Returns an ImageIcon illustrating the specified Class of Device. static javax.swing.ImageIcon
getIcon(int iconId, boolean largeIcon)
Returns a ImageIcon. [1]Copyright © L.M. Ericsson A/S, Bluetooth Networks
Bluetooth for Java Interface BlipNode by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipNode extends java.io.Serializable The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of ABlipNode object contains information about a BlipNode. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.blipserver
Table of Contents Bluetooth for Java
//Methods
Introduction java.lang.String getBlipNodeFriendlyName() Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Returns3 the friendly name the BlipNode. Chapter - Before You Get of Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP java.lang.String getBlipNodeGroupConfigurationName() Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Returns8 the Configuration group of the BlipNode. Chapter - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
java.lang.String getBlipNodeGroupName() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Returns the group name of the BlipNode.
Appendix A - javax.bluetooth Appendix B - javax.obex
BluetoothAddress getBlipNodeID()
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index Returns the Bluetooth device address of the BlipNode. List of Figures List of Tables
java.lang.String getBlipNodeIP()
List of Listings List of Sidebars
Returns the IP address of the BlipNode. java.lang.String getUser()
Returns the user of the BlipNode if it was reserved at the time this BlipNode object was created. boolean isBlipNodeConnected()
Checks whether the BlipNode is connected to the server at the time this BlipNode object was created.
Bluetooth for Java Interface BlipNodeCause by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipNodeCause
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of This interface defines the cause values returned in BlipNode events. Bluetooth-based services, highlights of security concerns, and more.
//package com.ericsson.blipnet.api.blipnode
Table of Contents Bluetooth for Java
//Fields
Introduction static int CAUSE_BASEBAND_ERROR Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Baseband in You BlipNode. Chapter 3 -error Before Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 int - Bluetooth with J2ME MIDP static CAUSE_BLIPNODE_BLIPSERVER_PROTOCOL_ERROR Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
BlipNode-BlipServer protocolSimulator error. Chapter 8 - Using a Bluetooth Chapter 9
- Bluetooth Security
static CAUSE_DHCP_ERROR_LAP Chapter 10 int - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
DHCP error (LAN Profile).
Appendix A - javax.bluetooth Appendix B - javax.obex
static int CAUSE_HOST_STACK_ERROR
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index Host stack error. List of Figures List of Tables
static int CAUSE_HOST_TIMEOUT
List of Listings List of Sidebars
Host timeout. static int CAUSE_INSUFFICIENT_TERMINAL_CAPABILITIES
Insufficient terminal capabilities. static int CAUSE_INTERNAL_ERROR
Signifies an internal error in the BlipNode which causes a reboot. static int CAUSE_LOSS_OF_SIGNAL
Loss of signal. static int CAUSE_MAX_CONNECTIONS_REACHED
Max connections reached.
Bluetooth for Java
static java.lang.String[] CAUSE_NAMES
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Thethe authors this text describe how to develop wireless Java Friendly names for causeofvalues. applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of static int CAUSE_PAGE_TIMEOUT Bluetooth-based services, highlights of security concerns, and more.
Page timeout.
Table of Contents Bluetooth for Java
static int CAUSE_RELAY_AGENT_TO_DHCP_CLIENT_SWITCH
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2 - BluetoothClient 1.1 switch (rebooting). Relay Agent/DHCP Chapter 3 - Before You Get Started Chapter 4 int - Understanding the Java Bluetooth API static CAUSE_SESSION_NOT_CREATED Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Session7 not created. Chapter - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter static 9 int - Bluetooth CAUSE_SYSTEM_ENDED_CONNECTION Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
System ended connection.
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
staticB int CAUSE_UNEXPECTED_TERMINAL_BEHAVIOR Appendix - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Unexpected terminal behavior.
Index
List of Figures
static int CAUSE_USER_ENDED_CONNECTION
List of Tables
List of Listings List of Sidebars User ended connection.
Bluetooth for Java Interface BlipNodeEvent by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipNodeEvent extends Event The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of An event which indicates that a BlipNode-related action occurred in the server. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java
//Methods
Introduction boolean equals(java.lang.Object obj) Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Returns3 true if content of object is equal to this. Chapter - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP java.lang.String getApplicationName() Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Returns the name of the user/application which has (un)locked the BlipNodeHandle for the BlipNode Chapter 8 - Using a Bluetooth Simulator specified in this event. Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
java.lang.String getBlipNodeFriendlyName() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Returns the friendly name of the BlipNode which initiated this event.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
java.lang.String getBlipNodeIP()
Appendix D - BlipNet 1.1 API Index
List of Figures Returns the IP address of the BlipNode which initiated this event. List of Tables List of Listings java.lang.String getBlipNodeSoftwareVersion() List of Sidebars
Returns the software version of the BlipNode which initiated this event. int getCause()
Returns the cause of the event.
Bluetooth for Java Interface BlipNodeHandle by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipNodeHandle
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of ABlipNodeHandle provides an application access to a physical BlipNode. A BlipNodeHandle is Bluetooth-based services, highlights of security concerns, and obtained throughmore. a BlipServerConnection.
When an application has acquired a BlipNodeHandle, that application has exclusive access to the physical BlipNode until the handle is released by calling release(). Table of Contents Bluetooth for Java
If the BlipNode disconnects from the server, the handle will be released by the server causing a BlipNodeHandleReleasedException to be thrown when an application tries to use the handle.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
//Package - Before You Get Started com.ericsson.blipnet.api.blipnode
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
//Methods - Creating a Bluetooth Print Server with JPS API void addToBlipNodeDenyList(BluetoothAddress terminalID)
Chapter 6 Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9 specified - Bluetooth Security Adds the device ID to the local deny list on this BlipNode. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet void addToInquiryFilter(BluetoothAddress terminalID, int timeout) Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Adds theB specified terminal to the inquiry filter in this BlipNode. Appendix - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
void changeInquiryLength(int inquiryLength) Appendix D - BlipNet 1.1 API Index List of Figures
Dynamically configures the length of time (in units of 1.28 s) in which the BlipNode performs inquiry before restarting inquiry or switching to Scan.
List of Tables
List of Listings
List of Sidebars
void changeLinkEstablishmentMode(boolean automaticLinkEstablishmentOn, boolean nameLookupOn)
Dynamically switch the BlipNode in and out of automatic link establishment mode. void changeScanLength(int scanLength)
Dynamically configures the length of time (in units of 1.28 s) in which terminals are able to detect the BlipNode during inquiry or paging. void changeScanMode(ScanMode scanMode)
Dynamically changes the Scan mode on the BlipNode. void clearBlipNodeDenyList()
Clears the local deny list on this BlipNode.
void disconnectLink(BluetoothAddress terminalID, int inquiryFilterTime) Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Disconnects the specified terminal from this BlipNode if it is connected.
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of void establishLink(BluetoothAddress terminalID, ClassOfDevice terminalCOD) Bluetooth-based services, highlights of security concerns, and more.
Attempts to establish a link to the specified terminal. Table of Contents
void establishLink(PageData p) Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Attempts to establish a link to the terminal specified in the paging data. void exchangeBusinessCards(BluetoothAddress terminalID) - Understanding the Java Bluetooth API
Chapter 4 Chapter 5
- Bluetooth with J2ME MIDP
Chapter - Creatingcard a Bluetooth Print Server with JPS API terminal and the BlipNode if the terminal is Initiates6a business exchange between the specified Chapter 7 Java and OBEX connected to the BlipNode. Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security Link[] getActiveLinks()
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter Returns12a -list Bluetooth of links that and Jini are currently active on the BlipNode. Appendix A - javax.bluetooth Appendix B - javax.obex BluetoothAddress[] getBlipNodeDenyList() Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Retrieves a list of terminals in this BlipNode's deny list. Index List of Figures
BluetoothAddress getBlipNodeID() List of Tables List of Listings List of Sidebars
Returns the Bluetooth device address of the BlipNode connected to this handle. void pullBusinessCard(BluetoothAddress terminalID)
Attempts to pull the business card from the specified terminal. void push(ObexPushObject pushObject, BluetoothAddress terminalID)
Pushes the specified object to the specified terminal if it is connected to the BlipNode. void push(ObexPushObject pushObject, BluetoothAddress terminalID, ObexProgressListener listener)
Pushes the specified object to the specified terminal if it is connected to the BlipNode. void pushBusinessCard(BluetoothAddress terminalID)
Pushes this BlipNode's business card to the specified terminal if the terminal is connected to the BlipNode. Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
void release() Apress © 2003 (352 pages) The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Releases the BlipNodeHandle for use of bythe other applications. includes an API overview Java library, development of Bluetooth-based services, highlights of security concerns, and more.
void removeFromBlipNodeDenyList(BluetoothAddress terminalID) Table of Contents
Removesforthe specified device from the local deny list on this BlipNode. Bluetooth Java Introduction
void removeSession(BluetoothAddress terminalID, Session sessionType) Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Removes the specified session from this BlipNode if the session exists. void setBlipNodeDenyList(BluetoothAddress[] terminalIDs) - Creating a Bluetooth Print Server with JPS API
Chapter 6 Chapter 7
- Java and OBEX
Chapter 8 local - Using a Bluetooth Sets the deny list on thisSimulator BlipNode to the specified list. Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
void setBusinessCard(java.lang.String businessCard)
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - the javax.bluetooth Configures business card of this BlipNode. Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipNodeHandleInUseException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipNodeHandleInUseException extends BlipServerException The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Thrown by BlipServerConnection when an application attempts to get a handle for a BlipNode which Bluetooth-based services, highlights of security concerns, and is already used by another application. more.
//Package com.ericsson.blipnet.api.blipnode
Table of Contents Bluetooth for Java
Introduction //Constructors Chapter 1 - Introducing Bluetooth BlipNodeHandleInUseException() Chapter 2 - Bluetooth 1.1 BlipNodeHandleInUseException(java.lang.String s) Chapter 3 - Before You Get Started BlipNodeHandleInUseException(java.lang.String s, Chapter 4 - Understanding the java.lang.Throwable e)Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipNodeHandleReleasedException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipNodeHandleReleasedException extends The authors of this text describe how to develop wireless Java BlipServerException
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Thrown by BlipNodeHandle when an application attempts to execute a method on a released more.
BlipNodeHandle. The of handle may have been released either by the application itself or by the server (due to a reboot of the Table Contents BlipNode). Bluetooth for Java Introduction Chapter //Package 1 - Introducing Bluetooth
com.ericsson.blipnet.api.blipnode Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
//Constructors Chapter 4 - Understanding the Java Bluetooth API BlipNodeHandleReleasedException() Chapter 5 - Bluetooth with J2ME MIDP BlipNodeHandleReleasedException(java.lang.String s) Chapter 6 - Creating a Bluetooth Print Server with JPS API BlipNodeHandleReleasedException(java.lang.String s, - Java and OBEX java.lang.Throwable e)
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipNodeNotConnectedException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipNodeNotConnectedException extends The authors of this text describe how to develop wireless Java BlipServerException
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Thrown by a BlipServerConnection when an application tries to get a BlipNodeHandle for a more.
BlipNode which is not connected to the server. Table of Contents
//Package com.ericsson.blipnet.api.blipnode
Bluetooth for Java Introduction
Chapter 1 - Introducing Bluetooth //Constructors Chapter 2 - Bluetooth 1.1 BlipNodeNotConnectedException() Chapter 3 - Before You Get Started BlipNodeNotConnectedException(java.lang.String s) Chapter 4 - Understanding the Java Bluetooth API BlipNodeNotConnectedException(java.lang.String s, Chapter java.lang.Throwable 5 - Bluetooth with J2ME e) MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServer by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipServer extends java.lang.Object The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This an API overview of the Java library, development of Factory class for includes getting BlipServerConnections. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.blipserver
Table of Contents Bluetooth for Java
//Constructors
Introduction BlipServer() Chapter 1
- Introducing Bluetooth
Chapter 2 - Bluetooth 1.1 //Methods Chapter 3 getConnection(java.lang.String - Before You Get Started static username, BlipServerConnection Chapter 4 - Understanding the Java Bluetooth API java.lang.String password, java.lang.String serverHost) Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Returns a -BlipServerConnection to the specified server using default values for port number and Java and OBEX service name. Chapter 8 - Using a Bluetooth Simulator Chapter 7 Chapter 9
- Bluetooth Security static Chapter 10 getConnection(java.lang.String - Wireless Embedded Systems with the Microusername, BlueTarget BlipServerConnection
java.lang.String password, java.lang.String serverHost, int serverPort, Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet java.lang.String serverServiceName)
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Appendix javax.obex Returns Ba -BlipServerConnection to the specified server. Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServerAccessException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public class BlipServerAccessException extends BlipServerException The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Thrown by a BlipServerConnection when an application tries to access the server with invalid Bluetooth-based services, highlights of security concerns, and username or password. The reason for denying access can be wrong username/password or access from more.
a host other than the host associated with this account. Table of Contents
//Package com.ericsson.blipnet.api.blipserver
Bluetooth for Java Introduction
Chapter 1 - Introducing Bluetooth //Constructors Chapter 2 - Bluetooth 1.1 BlipServerAccessException(java.lang.String s) Chapter 3 - Before You Get Started BlipServerAccessException(java.lang.String s, java.lang.Throwable e) Chapter 4 - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface BlipServerConnection by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipServerConnection
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of ABlipServerConnection is used to attach BlipNode event listeners to the server, and to get handles Bluetooth-based services, highlights of security concerns, and for connected BlipNodes. more.
//Package com.ericsson.blipnet.api.blipserver
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 - Introducing Bluetooth void addEventListener(BlipServerEventListener listener) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started Adds the listenerthe to the BlipServer. Chapter 4 specified - Understanding Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter void addEventListener(BlipServerEventListener 6 - Creating a Bluetooth Print Server with JPS API listener,
BlipServerEventFilter filter) Chapter 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Adds the specified listener to the BlipServer.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
java.lang.String[] getBlipNodeConfigurationGroupNames() Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Returns a list of the configuration names which are currently defined in the server.
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
java.lang.String[] getBlipNodeGroupNames()
Index
List of Figures List of Tables Returns a list of BlipNode group names which are currently defined in the server. List of Listings List of Sidebars BlipNodeHandle getBlipNodeHandle(BluetoothAddress blipNodeID)
Returns a handle to the BlipNode with the specified ID if it is connected to the server, or null if the BlipNode is not connected or the handle is already in use by another application. BlipNodeHandle getBlipNodeHandleFromGroup(java.lang.String blipNodeGroupName)
Returns a handle to the first available BlipNode from the specified BlipNode group. BlipNode[] getBlipNodes(java.lang.String groupName,java.lang.String blipNodeGroupConfigurationName,boolean includeReservedBlipNodes, boolean includeDisconnectedBlipNodes)
Returns a list of BlipNodes which match the specified criteria. BluetoothAddress getConnectedBlipNode(BluetoothAddress terminalID)
Returns the Bluetooth device address of the BlipNode to which the specified terminal is connected.
Bluetooth for Java
BluetoothAddress[] getConnectedTerminals() by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth forto a the variety of platforms. This Returns a list of terminals currently connected server.
includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more. byte[] getObexObject(java.io.File file)
Table of Contents Returns the contents of the specified file if the file is found on the server. Bluetooth for Java Introduction
void releaseBlipNodeHandle(BluetoothAddress blipNodeID)
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter Releases 3 the - Before handle YoutoGet theStarted specified BlipNode if the handle was reserved by this user. Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP void removeEventListener(BlipServerEventListener listener) Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Removes specified listener from the server. Chapter 8 the - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServerConnectionException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipServerConnectionException extends The authors of this text describe how to develop wireless Java BlipServerException
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Thrown by a BlipServerConnection if the connection to the server is lost. more.
//Package com.ericsson.blipnet.api.blipserver
Table of Contents Bluetooth for Java
Introduction //Constructors Chapter 1 - Introducing Bluetooth BlipServerConnectionException(java.lang.String s, java.lang.Throwable e) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServerEventAdapter by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public abstract class BlipServerEventAdapter extends java.lang.Object The authors of this text describe how to develop wireless Java implements BlipServerEventListener
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and An abstract adapter class for receiving events from the BlipServer. The methods in this class are empty. more.
The class exists as convenience for creating listener objects which only listens to a certain class of events. Table of Contents
// package com.ericsson.blipnet.api.event Introduction //Constructors Chapter 1 - Introducing Bluetooth BlipServerEventAdapter() Bluetooth for Java
Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Get Started //Methods Chapter 4 - Understanding the Java Bluetooth API void handleBlipNodeEvent(BlipNodeEvent e) Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Called by the BlipServer event dispatcher when a BlipNodeEvent occurs. - Java and OBEX
Chapter 7 Chapter 8
- Using a Bluetooth Simulator void handleConnectionEvent(ConnectionEvent e) Chapter 9 - Bluetooth Security Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Called by the BlipServer event dispatcher when a ConnectionEvent occurs.
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
void handleObexEvent(ObexEvent e)
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D the - BlipNet 1.1 API Called by BlipServer event dispatcher when an ObexEvent occurs. Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServerEventFilter by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BlipServerEventFilter extends java.lang.Object The authors of this text describe how to develop wireless Java implements java.io.Serializable applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and This class is usedmore. to filter notification of events for client applications which implement
BlipServerEventListener. Table of Contents
//Package com.ericsson.blipnet.api.event
Bluetooth for Java Introduction
Chapter 1 - Introducing Bluetooth //Constructors Chapter 2 - Bluetooth 1.1 BlipServerEventFilter(int[] eventClasses, int[] eventIDs, Chapter 3 - Before You Get blipNodeIDs, Started BluetoothAddress[] BluetoothAddress[] terminalIDs) Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Constructs BlipServerEventFilter. Chapter 6 - aCreating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
//Methods Chapter 8 - Using a Bluetooth Simulator boolean Chapter 9 -contains(Event Bluetooth Security event) Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Checks whether the listener attached to this filter should be notified of the specified event.
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
boolean containsBlipNodeID(BluetoothAddress blipNodeID)
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix - BlipNet API Checks D whether the1.1 specified BlipNode ID is included in this filter. Index List of Figures
boolean containsEventClass(int eventClass)
List of TablescontainsEventID(int eventID) boolean List of Listings boolean containsTerminalID(BluetoothAddress terminalID) List of Sidebars
Checks whether the specified terminal ID is included in this filter. BluetoothAddress[] getBlipNodeIDs()
Returns a copy of the blipNodeIDs of the BlipServerEventFilter. int[] getEventClasses()
Returns a copy of the eventClasses of the BlipServerEventFilter. int[] getEventIDs()
Returns a copy of the eventTypes of the BlipServerEventFilter. BluetoothAddress[] getTerminalIDs()
Returns a copy of the terminalIDs of the BlipServerEventFilter. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface BlipServerEventListener by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface BlipServerEventListener The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of This interface should be implemented by client classes wishing to listen to events generated by the Bluetooth-based services, highlights of security concerns, and BlipServer. more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 - Introducing Bluetooth void handleBlipNodeEvent(BlipNodeEvent e) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started Called 4by the BlipServer event dispatcher when Chapter - Understanding the Java Bluetooth API a BlipNodeEvent occurs. Chapter 5
- Bluetooth with J2ME MIDP
Chapter void handleConnectionEvent(ConnectionEvent 6 - Creating a Bluetooth Print Server with JPS API e) Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Called by the BlipServer event dispatcher when a ConnectionEvent occurs.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
void handleObexEvent(ObexEvent Chapter 11 - Enterprise Bluetooth Applicationse) with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Called by the BlipServer event dispatcher when an ObexEvent occurs.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BlipServerException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public class BlipServerException extends java.lang.Exception The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Superclass for allBluetooth-based exceptions which can be thrown by the BlipServer. services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.blipserver
Table of Contents Bluetooth for Java
//Constructors
Introduction BlipServerException() Chapter 1 - Introducing Bluetooth BlipServerException(java.lang.String s) Chapter 2 - Bluetooth 1.1 BlipServerException(java.lang.String s, java.lang.Throwable e) Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class BluetoothAddress by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class BluetoothAddress extends java.lang.Object implements The authors of this text describe how to develop wireless Java java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheBluetoothAddress class models a Bluetooth Device Address (BD_ADDR). This is a 48 bit unsigned more.
integer, often written in hexadecimal. Objects of the BluetoothAddress class are immutable—once created they cannot change. Table of Contents Bluetooth for Java
This class provides the equals and hashCode methods for use in connection with the Collection classes.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
//Package - Before You Get Started com.ericsson.blipnet.api.Bluetooth
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
//Constructors - Creating a Bluetooth Print Server with JPS API BluetoothAddress(byte[] bluetoothAddress)
Chapter 6 Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter Constructs 9 - aBluetooth BluetoothAddress Security object from a byte[]. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications withbluetoothAddress) the Ericsson BlipNet BluetoothAddress(java.lang.String Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Constructs BluetoothAddress object from a String. Appendix B - ajavax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
//Methods Appendix D - BlipNet 1.1 API boolean equals(java.lang.Object obj) Index List of Figures List of Tables
Compares this BluetoothAddress with an Object and returns true if they are equal.
List of Listings
List of Sidebars
byte[] getBytes() int hashCode()
Returns a hashCode for this BluetoothAddress. java.lang.String toString()
Returns a String representation of this BluetoothAddress.
Bluetooth for Java Class ClassOfDevice by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class ClassOfDevice extends java.lang.Object implements The authors of this text describe how to develop wireless Java java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheClassOfDevice more. class models a class of device. This is a 24 bit unsigned integer, often written in
hexadecimal. Objects of the ClassOfDevice class are immutable—once created they cannot change. Table of Contents Bluetooth for Java
This class provides the equals and hashCode methods for use in connection with the Collection classes.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
//Package - Before You Get Started com.ericsson.blipnet.api.Bluetooth
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
//Fields - Creating a Bluetooth Print Server with JPS API static java.lang.String AV Chapter 7 - Java and OBEX static java.lang.String AV_CAMCORDER Chapter 8 java.lang.String - Using a Bluetooth Simulator static AV_CAR_AUDIO Chapter 9 - Bluetooth Security static java.lang.String AV_GAMING_TOY Chapter 10 java.lang.String - Wireless Embedded Systems with the Micro BlueTarget static AV_HANDS_FREE Chapter 11 Enterprise Bluetooth Applications with the Ericsson BlipNet static java.lang.String AV_HEADPHONES Chapter 12 Bluetooth and Jini static java.lang.String AV_HEADSET Appendix staticA java.lang.String - javax.bluetooth AV_HIFI staticB java.lang.String AV_LOUDSPEAKER Appendix - javax.obex staticC java.lang.String AV_MICROPHONE Appendix - Java Bluetooth Development on the PalmOS Platform staticD java.lang.String AV_PORTABLE_AUDIO Appendix - BlipNet 1.1 API static java.lang.String AV_SET_TOP_BOX Index static java.lang.String AV_SHORT List of Figures static java.lang.String AV_VCR List of Tables static java.lang.String AV_VIDEO_CAMERA List of Listings static java.lang.String AV_VIDEO_CONF List of Sidebars static java.lang.String AV_VIDEO_DISPLAY static java.lang.String AV_VIDEO_MONITOR static java.lang.String BLIPNODE_CLASS_OF_DEVICE static java.lang.String COMPUTER static java.lang.String COMPUTER_DESKTOP static java.lang.String COMPUTER_HANDHELD static java.lang.String COMPUTER_LAPTOP static java.lang.String COMPUTER_PALM_SIZED static java.lang.String COMPUTER_SERVER_CLASS static java.lang.String COMPUTER_SHORT static java.lang.String COMPUTER_WEARABLE static java.lang.String IMAGING static java.lang.String IMAGING_CAMERA static java.lang.String IMAGING_DISPLAY static java.lang.String IMAGING_PRINTER static java.lang.String IMAGING_SCANNER static java.lang.String IMAGING_SHORT static java.lang.String LAN_ACCESS_POINT static java.lang.String LAN_ACCESS_POINT_FIFTH static java.lang.String LAN_ACCESS_POINT_FIRST static java.lang.String LAN_ACCESS_POINT_FOURTH Chapter 6
static java.lang.String LAN_ACCESS_POINT_FULLY Bluetooth for Java static java.lang.String LAN_ACCESS_POINT_NO_SERVICE ISBN:1590590783 by Bruce HopkinsLAN_ACCESS_POINT_SECOND and Ranjith Antony static java.lang.String Apress © 2003 (352 pages) static java.lang.String LAN_ACCESS_POINT_SHORT The authors of this text describe how to develop wireless Java static java.lang.String LAN_ACCESS_POINT_SIXTH applications using Bluetooth for a variety of platforms. This static java.lang.String LAN_ACCESS_POINT_THIRD includes an API overview of the Java library, development of static java.lang.String PERIPHERAL Bluetooth-based services, highlights of security concerns, and static java.lang.String PERIPHERAL_COMBO more. static java.lang.String PERIPHERAL_DIGITIZER static java.lang.String PERIPHERAL_GAMEPAD Table of Contents static java.lang.String PERIPHERAL_JOYSTICK Bluetooth Java static for java.lang.String PERIPHERAL_KEYBOARD Introduction static java.lang.String PERIPHERAL_POINTING_DEV Chapter 1 java.lang.String - Introducing Bluetooth PERIPHERAL_REMOTE static Chapter static 2 java.lang.String - Bluetooth 1.1 PERIPHERAL_SENSING_DEV static Chapter 3 java.lang.String - Before You Get StartedPERIPHERAL_SHORT static PHONE Chapter 4 java.lang.String - Understanding the Java Bluetooth API static PHONE_CELLULAR Chapter 5 java.lang.String - Bluetooth with J2ME MIDP static PHONE_CORDLESS Chapter 6 java.lang.String - Creating a Bluetooth Print Server with JPS API static PHONE_ISDN Chapter 7 java.lang.String - Java and OBEX static java.lang.String PHONE_SHORT Chapter 8 - Using a Bluetooth Simulator static java.lang.String PHONE_SIMCARD Chapter 9 - Bluetooth Security static java.lang.String PHONE_SMART_PHONE Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget static java.lang.String PHONE_WIRED Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet static java.lang.String UNKNOWN Chapter 12 - Bluetooth and Jini static java.lang.String UNKNOWN_SHORT Appendix A - javax.bluetooth Appendix B - javax.obex //Constructors Appendix C - Java Bluetooth Development on the PalmOS Platform ClassOfDevice(boolean limitedDisc, boolean positioning, boolean networking, Appendix D BlipNet 1.1 API boolean rendering, boolean capturing, boolean objectTransfer, boolean audio, Index boolean telephony, boolean information, java.lang.String majorClass, List java.lang.String of Figures minorClass) List of Tables List of Listings
Constructs a ClassOfDevice object.
List of Sidebars
ClassOfDevice(byte[] classOfDevice)
Constructs a ClassOfDevice object from a byte[]. ClassOfDevice(java.lang.String classOfDevice)
Constructs a ClassOfDevice object from a string. //Methods boolean equals(java.lang.Object obj)
Compares this ClassOfDevice with an Object and returns true if they are equal. byte[] getBytes()
Returns the byte representation of this ClassOfDevice object.
Bluetooth for Java int getIconId() by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
Returns the Icon The Id for the Class of text Device. authors of this describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of java.lang.String getMajorTypeText()
Bluetooth-based services, highlights of security concerns, and more.
Returns the Class of Device Major type as a Long text description. Table of Contents Bluetooth for Java java.lang.String getMajorTypeText(boolean longText) Introduction Chapter 1
- Introducing Bluetooth
Chapter 3
- Before You Get Started
Returns the Class of Device Major type as a text description. Chapter 2 - Bluetooth 1.1 java.lang.String getMinorTypeText() Chapter 4 - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Returns the Class of Device Minor type as a text description. int hashCode()
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter Enterprise Bluetooth Applications with the Ericsson BlipNet Returns11a -hashCode for this Class Of Device. Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
boolean isAudioSet()
Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix Examines D -the BlipNet Audio1.1 bitAPI of the Class Of Device. Index List of Figures boolean isCapturingSet() List of Tables List of Listings
Examines the Capturing bit of the Class Of Device. List of Sidebars boolean isInformationSet()
Examines the Information bit of the Class Of Device. boolean isLimitedDiscoverableSet()
Examines the Limited Discoverable bit of the Class Of Device. boolean isNetworkingSet()
Examines the Networking bit of the Class Of Device. boolean isObjectTransferSet()
Examines the Object Transfer bit of the Class Of Device.
boolean isPositioningSet() Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 Examines the Positioning bit of(352 thepages) Class Of Device. The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This boolean isRenderingSet() includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Examines the Rendering bit of the Class Of Device. Table of Contents
boolean isTelephonySet()
Bluetooth for Java Introduction Chapter Examines 1 -the Introducing Telephony Bluetooth bit of the Class Of Device. Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Get Started java.lang.String toString() Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP Returns6 a -String of this Class Device. Chapter Creatingrepresentation a Bluetooth Print Server withOf JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ConnectionEvent by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface ConnectionEvent extends Event The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of An event indicating that a connection-related action has occurred in the server. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java
//Methods
Introduction boolean equals(java.lang.Object obj) Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Returns3 true if content of object is equal to this. Chapter - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP int getCause() Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Returns8 the causea of this event. Chapter - Using Bluetooth Simulator Chapter 9
- Bluetooth Security
int getSessionType() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Returns the type of session that this event is related to.
Appendix A - javax.bluetooth Appendix B - javax.obex
ShortUuid[] getShortUUIDs()
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index Returns an array of short UUIDs representing the services supported by the terminal to which this event is List of Figures related. List of Tables List of Listings java.lang.String getTerminalClassOfDevice() List of Sidebars
Returns the class of device of the terminal to which this event is related. java.lang.String getTerminalFriendlyName()
Returns the friendly name of the terminal to which this event is related. BluetoothAddress getTerminalID()
Returns the Bluetooth device address of the terminal to which this event is related. java.lang.String getTerminalIP()
Returns the IP address of the terminal to which this event is related.
Bluetooth for Java Class EricssonMelody by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class EricssonMelody extends java.lang.Object implements The authors of this text describe how to develop wireless Java ObexPushObject
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and AnObexPushObject more. implementation of an Ericsson Melody. This class wraps the given melody string in
a format understandable by an Ericsson Mobile Phone. Table of Contents
//Package com.ericsson.blipnet.api.obex.pushobjects
Bluetooth for Java Introduction
Chapter 1 - Introducing Bluetooth //Constructors Chapter 2 - Bluetooth 1.1 EricssonMelody(java.lang.String melody) Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API Constructs Ericsson Melody Chapter 5 - an Bluetooth with J2ME push MIDP object with a default name (NONAME.EMY). Chapter 6
- Creating a Bluetooth Print Server with JPS API EricssonMelody(java.lang.String melody, java.lang.String name) Chapter 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Constructs an Ericsson Melody push object with the name specified.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
//Methods Chapter 12 - Bluetooth and Jini byte[] getObexBody()
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix - Java Development on the PalmOS Platform Returns Cthe bodyBluetooth of this ObexPushObject. Appendix D - BlipNet 1.1 API Index
java.lang.String getObexName()
List of Figures List of Tables
List Returns of Listings the name of this ObexPushObject. List of Sidebars
java.lang.String getObexType()
Returns the mime-type of this ObexPushObject.
Bluetooth for Java Interface Event by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface Event extends java.io.Serializable The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of The superclass ofBluetooth-based all events. Thisservices, interfacehighlights defines common event methods and contains event ID of security concerns, and definitions for all events. more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Fields
Chapter 1 int - Introducing Bluetooth static BLIPNODE_ALARM Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started Indicates a critical condition has occurred in a BlipNode connected to the server. Chapter 4 that - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter static 6 int - Creating BLIPNODE_DEREGISTERED a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Indicates that a BlipNode has disconnected from the server. - Bluetooth Security
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
static BLIPNODE_EVENT Chapter 11 int - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Event class of BlipNode-related events.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
static int BLIPNODE_LOCKED
Appendix D - BlipNet 1.1 API Index
List of Figures Indicates that an application has acquired the lock on a BlipNode. List of Tables List of Listings static int BLIPNODE_REGISTERED List of Sidebars
Indicates that a BlipNode has connected to the server. static int BLIPNODE_RELEASED
Indicates that an application has released its lock on a BlipNode. static int BLIPNODE_STARTUP_FAILED
Indicates that a BlipNode attempted to connect to the server, but the startup failed for some reason. static int BLIPNODE_SW_UPGRADE_COMPLETE
Indicates that a BlipNode software upgrade has been completed successfully. static int BLIPNODE_SW_UPGRADE_FAILED
Indicates that a BlipNode software update failed. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
static int BLIPNODE_SW_UPGRADE_STARTED
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Indicates that a BlipNode software upgrade has been initiated. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more. static int BLIPNODE_WAITING_FOR_CONFIGURATION
Table of Contents
Indicates that a BlipNode has registered with the server, but no configuration exists for that BlipNode.
Bluetooth for Java Introduction
static java.lang.String[] CLASS_NAMES - Introducing Bluetooth static int CONNECTION_EVENT
Chapter 1 Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4 - Understanding the Java events. Bluetooth API Event class of Connection-related Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6 java.lang.String[] - Creating a Bluetooth PrintFRIENDLY_NAMES Server with JPS API static Chapter 7 Java and OBEX static int OBEX_BUSINESS_CARD_EXCHANGE_COMPLETED Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Indicates completionSystems of a business exchange. Chapter 10 successful - Wireless Embedded with thecard Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
static OBEX_BUSINESS_CARD_EXCHANGE_FAILED Chapter 12 int - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Indicates a failed attempt to exchange business cards with a terminal.
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
static int OBEX_BUSINESS_CARD_PULL_COMPLETED Index List of Figures List of Tables
Indicates successful completion of a business card pull.
List of Listings
List of Sidebars
static int OBEX_BUSINESS_CARD_PULL_FAILED
Indicates a failed attempt to pull business card from a terminal. static int OBEX_EVENT
Event class of OBEX-related events. static int OBEX_OBJECT_RECEIVED
Indicates that an OBEX object has been received and stored by the server. static int OBEX_PUSH_COMPLETED
Indicates successful completion of an OBEX push. static int OBEX_PUSH_FAILED
Bluetooth for Java
Indicates a failed attempt to push an OBEX object to a terminal. by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
static int OBEX_PUSH_PROGRESS
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Indicates progress in an ongoing services, OBEX push. Bluetooth-based highlights of security concerns, and more.
static int TERMINAL_DETECTED Table of Contents Bluetooth for Java
Indicates that a terminal was detected in inquiry.
Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
static int TERMINAL_LINK_ESTABLISH_FAILED
Chapter 4 a- failed Understanding theestablish Java Bluetooth API link to a terminal. Indicates attempt to a Bluetooth Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API static int TERMINAL_LINK_ESTABLISHED
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter Indicates 9 that - Bluetooth a Bluetooth Security link to a terminal has been established. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 int - Enterprise Bluetooth Applications with the Ericsson BlipNet static TERMINAL_LINK_LOST Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
IndicatesB that a Bluetooth link to a terminal has been disconnected. Appendix - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
staticD int TERMINAL_SESSION_CREATE_FAILED Appendix - BlipNet 1.1 API Index List of Figures
Indicates a failed attempt to create a session with a terminal.
List of Tables
List of Listings
static int TERMINAL_SESSION_CREATED
List of Sidebars
Indicates that a session has been created with a terminal. static int TERMINAL_SESSION_REMOVED
Indicates that a session with a terminal has been removed. //Methods boolean equals(java.lang.Object obj)
Returns true if content of object is equal to this. BluetoothAddress getBlipNodeID()
Returns the Bluetooth device address of the BlipNode to which this event is related. int getEventClass()
Bluetooth for Java
Returns the event class of this event.
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
int getEventID() The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of services, highlights of security concerns, and Returns the ID ofBluetooth-based this event. more.
java.lang.String getMessage() Table of Contents Bluetooth for Java
Returns the message associated with this event if any.
Introduction Chapter 1
- Introducing Bluetooth
int hashCode() Chapter 2 - Bluetooth 1.1 java.lang.String toString() Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter Bluetooth with J2ME MIDP Returns5 a -String representation of this event. Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface InquiryResultEvent by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface InquiryResultEvent extends ConnectionEvent The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of An event indicating that a terminal has been detected by a BlipNode in Inquiry Only Mode. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java
//Methods
Introduction PageData getPageData() Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Returns3 the PagingYou data Chapter - Before Getneeded Startedfor direct paging of this terminal. Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface Link by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface Link extends java.io.Serializable The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of TheLink interface provides methods to retrieve snapshot information about a specific BlipNode-Terminal Bluetooth-based services, highlights of security concerns, and link. more.
//Package com.ericsson.blipnet.api.Bluetooth
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 -equals(java.lang.Object Introducing Bluetooth boolean obj) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started Compares LinkImplthe withJava an Object Chapter 4 - this Understanding Bluetoothand API returns true if they are equal. Chapter 5
- Bluetooth with J2ME MIDP
Chapter BluetoothAddress 6 - Creating a Bluetooth getBlipNode() Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Returns the BluetoothAddress of the BlipNode using this session.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
int[]11getCurrentSessions() Chapter - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Returns an array of active sessions on this link.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
BluetoothAddress getTerminal()
Appendix D - BlipNet 1.1 API Index
List of Figures Returns the BluetoothAddress of the terminal using this session. List of Tables List of Listings boolean isSessionActive(long sessionType) List of Sidebars
Tells whether the indicated session type is active. java.lang.String toString()
Implements the toString method.
Bluetooth for Java Class NoSuchSessionException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public class NoSuchSessionException extends java.lang.RuntimeException The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Thrown by a BlipNodeHandle to indicate that an attempt was made to close a non-existing session. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.blipnode
Table of Contents Bluetooth for Java
//Constructors
Introduction NoSuchSessionException() Chapter 1 - Introducing Bluetooth NoSuchSessionException(java.lang.String message) Chapter 2 - Bluetooth 1.1 NoSuchSessionException(java.lang.String message, Chapter 3 - Before You Get Started java.lang.Throwable cause) Chapter 4 - Understanding the Java Bluetooth API NoSuchSessionException(java.lang.Throwable cause) Chapter 5 - Bluetooth with J2ME MIDP Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ObexEvent by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface ObexEvent extends Event The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of An event indicating that an OBEX-related action has occurred in the BlipServer. Bluetooth-based services, highlights of security concerns, and more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java
//Methods
Introduction boolean equals(java.lang.Object obj) Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1 Returns3 true if content of object is equal to this. Chapter - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP java.lang.String getMimeType() Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Returns8 the mime-type of theSimulator OBEX object to which this event is related. Chapter - Using a Bluetooth Chapter 9
- Bluetooth Security
int getObexResponseCode() Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Returns the OBEX Response Code associated with this event (if any).
Appendix A - javax.bluetooth Appendix B - javax.obex
java.io.File getPath()
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index Returns the path of the file to which this event is related. List of Figures List of Tables
BluetoothAddress getTerminalID()
List of Listings List of Sidebars
Returns the Bluetooth device address of the terminal to which this event is related.
Bluetooth for Java Class ObexFile by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class ObexFile extends java.lang.Object implements The authors of this text describe how to develop wireless Java ObexPushObject applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Implements an OBEX more.push object containing a file.
//Package com.ericsson.blipnet.api.obex.pushobjects
Table of Contents Bluetooth for Java
Introduction //Constructors Chapter 1 - Introducing Bluetooth ObexFile(java.io.File file) Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Constructs OBEX pushthe object Chapter 4 - an Understanding Javarepresenting Bluetooth APIthe specified file. Chapter 5
- Bluetooth with J2ME MIDP
Chapter ObexFile(java.io.File 6 - Creating a Bluetoothfile, Print Server byte[] with b) JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Constructs- an OBEX push object containing the bytes of the specified byte[] and with the specified Bluetooth Security filename.
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
//Methods Chapter 12 - Bluetooth and Jini java.lang.String getAbsoluteFileName() byte[] getObexBody()
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix - BlipNet Returns Dthe body of1.1 thisAPI ObexPushObject. Index List of Figures
java.lang.String getObexName()
List of Tables List of Listings
Returns the name of this ObexPushObject. List of Sidebars java.lang.String getObexType()
Returns the mime-type of this ObexPushObject. void setObexType(java.lang.String mimeType)
Bluetooth for Java Class ObexGenericObject by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public class ObexGenericObject extends java.lang.Object implements The authors of this text describe how to develop wireless Java ObexPushObject applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Implements a generic more.OBEX push object.
//Package com.ericsson.blipnet.api.obex.pushobjects
Table of Contents Bluetooth for Java
Introduction //Constructors Chapter 1 - Introducing Bluetooth bytes) ObexGenericObject(byte[] Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Constructs OBEX pushthe object Chapter 4 - an Understanding Javarepresenting Bluetooth APIthe specified file. Chapter 5
- Bluetooth with J2ME MIDP
Chapter ObexGenericObject(byte[] 6 - Creating a Bluetooth Print bytes, Server with java.lang.String JPS API obexType) Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Constructs- an OBEX push object containing the bytes of the specified byte[] and with the specified Bluetooth Security filename.
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
ObexGenericObject(java.lang.String obexName, byte[] bytes) Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Constructs an OBEX push object containing the bytes of the specified byte[] and with the specified
Appendix C - Java Bluetooth Development on the PalmOS Platform filename. Appendix D - BlipNet 1.1 API Index
ObexGenericObject(java.lang.String obexName, byte[] bytes, java.lang.String obexType)
List of Figures List of Tables
List of Listings List Constructs of Sidebars an OBEX push object containing the bytes of the specified byte[] and with the specified
filename. //Methods byte[] getObexBody()
Returns the body of this ObexPushObject. java.lang.String getObexName()
Returns the name of this ObexPushObject. java.lang.String getObexType()
Returns the mime-type of this ObexPushObject. void setObexType(java.lang.String mimeType)
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ObexProgressEvent by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface ObexProgressEvent extends Event The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of An event indicating progress of an ongoing OBEX push. This type of event is only sent to Bluetooth-based services, highlights of security concerns, and ObexProgressListeners. more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 -equals(java.lang.Object Introducing Bluetooth boolean obj) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Returns4 true if content of object is equal to this. Chapter - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter int getBytesCompleted() 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Returns the number of bytes received so far. - Bluetooth Security
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
java.lang.String getObexName() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Returns the name of the OBEX object to which this event is related.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
int getObjectSize()
Appendix D - BlipNet 1.1 API Index
List of Figures Returns the total size of the object to which this event is related. List of Tables List of Listings BluetoothAddress getTerminalID() List of Sidebars
Returns the Bluetooth device address of the terminal to which this event is related. int hashCode()
Bluetooth for Java Interface ObexProgressListener by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface ObexProgressListener
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of This abstract class should be extended to create an event listener for listening to ObexProgressEvents Bluetooth-based services, highlights of security concerns, and while pushing content more.to a terminal.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 - Introducing Bluetooth void newProgress(ObexProgressEvent e) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started This method is called by the whenever Chapter 4 - Understanding theBlipServer Java Bluetooth API new push progress information is available. Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface ObexPushObject by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface ObexPushObject extends java.io.Serializable The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of TheObexPushObject class defines a common interface for OBEX objects which are going to be pushed Bluetooth-based services, highlights of security concerns, and to a terminal. more.
//Package com.ericsson.blipnet.api.obex.pushobjects
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 getObexBody() - Introducing Bluetooth byte[] Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Returns4 the body of this ObexPushObject. Chapter - Understanding the Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter java.lang.String 6 - Creating a Bluetooth getObexName() Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Returns the name of this ObexPushObject.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
java.lang.String getObexType() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Returns the mime-type of this ObexPushObject.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class ObexServerHostedFile by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class ObexServerHostedFile extends java.lang.Object The authors of this text describe how to develop wireless Java implements ObexPushObject
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and AnObexServerHostedFile is an OBEX push object which will be read from the server's local storage more.
when the object is pushed to a terminal. The advantage of a server hosted file compared to a regular ObexFile is that the contents of the file are not transferred across the network when pushing the file. This Table mayof beContents desirable when pushing very large objects. Bluetooth for Java Introduction //Package Chapter 1 - Introducing Bluetooth com.ericsson.blipnet.api.obex.pushobjects Chapter 2
- Bluetooth 1.1
Chapter 3 - Before You Get Started //Constructors Chapter 4 - Understanding the Java Bluetooth APIfile) ObexServerHostedFile(java.io.File Chapter ObexServerHostedFile(java.io.File 5 - Bluetooth with J2ME MIDP file, java.lang.String obexType) Chapter 6
- Creating a Bluetooth Print Server with JPS API
//Methods Chapter 7 - Java and OBEX boolean Chapter 8 -fileExists() Using a Bluetooth Simulator java.io.File getFileDescriptor() Chapter 9 - Bluetooth Security byte[] Chapter 10 getObexBody() - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter - Bluetooth andObexPushObject. Jini Returns12the body of this Appendix A - javax.bluetooth Appendix B - javax.obex
java.lang.String getObexName()
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index Returns the name of this ObexPushObject. List of Figures List of Tables java.lang.String getObexType() List of Listings List of Sidebars
Returns the mime-type of this ObexPushObject.
Bluetooth for Java Interface PageData by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface PageData extends java.io.Serializable The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of APageData object contains all data needed to do a link establishment after an inquiry. Using the data in Bluetooth-based services, highlights of security concerns, and this object, link establishment time will be shortened. Used when BlipNode is in INQUIRY RESULT mode more.
and the application does the link establishment via the BlipServer API. Table of Contents
//Package com.ericsson.blipnet.api.bluetooth
Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface RemoteBlipServerEventListener by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface RemoteBlipServerEventListener extends java.rmi.Remote The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Defines the handle Event method for notifying event listeners of BlipServer events. The interface is used Bluetooth-based services, highlights of security concerns, and internally by the BlipServer API, and should never be implemented by client applications. more.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 - Introducing Bluetoothevent) void handleEvent(Event Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Interface RemoteObexProgressListener by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public interface RemoteObexProgressListener extends java.rmi.Remote The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Defines the newProgress method for notifying event listeners of Push progress events. The interface is Bluetooth-based services, highlights of security concerns, and used internally bymore. the BlipServer API, and should never be implemented by client applications.
//Package com.ericsson.blipnet.api.event
Table of Contents Bluetooth for Java Introduction //Methods
Chapter 1 - Introducing Bluetooth void newProgress(ObexProgressEvent e) Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class ScanMode by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class ScanMode extends java.lang.Object implements The authors of this text describe how to develop wireless Java java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheScanMode class encapsulates the different Scan Modes supported by the BlipNode. more.
//Package com.ericsson.blipnet.api.Bluetooth
Table of Contents Bluetooth for Java Introduction //Fields
Chapter 1 java.lang.String[] - Introducing Bluetooth static FRIENDLY_NAMES Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Friendly4 names of the defined ScanBluetooth Modes. API Chapter - Understanding the Java Chapter 5
- Bluetooth with J2ME MIDP
Chapter static 6 int - Creating INQUIRY_AND_PAGE_SCAN_DISABLED a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Inquiry Scan: Disabled, Page Scan: Disabled. - Bluetooth Security
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
static INQUIRY_AND_PAGE_SCAN_ENABLED Chapter 11 int - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Inquiry Scan: Enabled, Page Scan: Enabled.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
static int INQUIRY_SCAN_ENABLED
Appendix D - BlipNet 1.1 API Index
List of Figures Inquiry Scan: Enabled, Page Scan: Disabled. List of Tables List of Listings static int PAGE_SCAN_ENABLED List of Sidebars
Inquiry Scan: Disabled, Page Scan: Enabled. //Constructors ScanMode(int value)
Constructs a ScanMode object representing a valid Scan Mode. //Methods boolean equals(java.lang.Object obj) int getScanMode()
Returns the scan mode represented by this object. int hashCode() java.lang.String toString()
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class Session by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class Session extends java.lang.Object implements The authors of this text describe how to develop wireless Java java.io.Serializable applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheSession class encapsulates the session types supported by the BlipServer. more.
//Package com.ericsson.blipnet.api.Bluetooth
Table of Contents Bluetooth for Java Introduction //Fields
Chapter 1 java.lang.String[] - Introducing Bluetooth static FRIENDLY_NAMES Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Friendly4 names of the defined session types.API Chapter - Understanding the Java Bluetooth Chapter 5
- Bluetooth with J2ME MIDP
Chapter static 6 long - Creating LAP_CLIENT a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
LAN Access Profile (LAP) Client session type. - Bluetooth Security
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
static LAP_SERVER Chapter 11 long - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
LAN Access Profile (LAP) Server session type.
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
static long OPP_CLIENT
Appendix D - BlipNet 1.1 API Index
List of Figures Object Push Profile (OPP) Client session type. List of Tables List of Listings static long OPP_SERVER List of Sidebars
Object Push Profile (OPP) Server session type. //Constructors Session(long sessionType)
Constructs a Session object representing the specified session type. //Methods boolean equals(java.lang.Object obj) long getSessionType()
Returns the type of this Session object. int hashCode() java.lang.String toString()
Bluetooth for Java Class ShortUuid by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class ShortUuid extends java.lang.Object implements The authors of this text describe how to develop wireless Java java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheShortUuid more. class models a Bluetooth universal unique identifier. This is a 16 bit unsigned integer,
often written in hexadecimal. Objects of the ShortUuid class are immutable—once created they cannot change. Table of Contents Bluetooth for Java
This class provides the equals and hashCode methods for use in connection with the Collection classes.
Introduction Chapter 1
- Introducing Bluetooth
//Package Chapter 2 - Bluetooth 1.1 com.ericsson.blipnet.api.bluetooth Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
//Fields - Bluetooth with J2ME MIDP static int DIALUP_NETWORKING_SERVICE_CLASS_ID
Chapter 5 Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8 - Using Bluetooth SimulatorProfile. Short UUID for thea Dialup Networking Chapter 9
- Bluetooth Security
Chapter 10 int - Wireless Embedded Systems with the Micro BlueTarget static LAN_ACCESS_USING_PPP_SERVICE_CLASS_ID Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Short UUID for the LAN Access Using PPP Profile. Appendix A - javax.bluetooth Appendix B - javax.obex Appendix staticC int - JavaOBEX_OBJECT_PUSH_SERVICE_CLASS_ID Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
Short UUID for the OPP Profile.
List of Figures List of Tables
static int SERIAL_PORT_SERVICE_CLASS_ID List of Listings List of Sidebars
Short UUID for the Serial Port Profile. static int SERVICE_DISCOVERY_SERVER_SERVICE_CLASS_ID
Short UUID for the Service Discovery Server Profile. static int WAP_OVER_BLUETOOTH_CLIENT_SERVICE_CLASS_ID
Short UUID for the WAP over Bluetooth Client. static int WAP_OVER_BLUETOOTH_SERVER_SERVICE_CLASS_ID
Short UUID for the WAP over Bluetooth Server. //Constructors ShortUuid(byte[] shortUuid)
Constructs a ShortUuid object from a byte[]. Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
ShortUuid(intApress shortUuid) © 2003 (352 pages) The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Constructs a ShortUuid object from an of int.the Java library, development of includes an API overview Bluetooth-based services, highlights of security concerns, and more.
ShortUuid(java.lang.String shortUuid) Table of Contents
Constructs a ShortUuid object from a String.
Bluetooth for Java Introduction
//Methods Chapter 1 - Introducing Bluetooth boolean obj) Chapter 2 -equals(java.lang.Object Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
Understanding the Java Bluetooth API Compares- this ShortUuid with an Object and returns true if they are equal.
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
byte[] getBytes()
Chapter - Bluetooth Security Returns9 the byte representation of this ShortUuid object. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet int getInt() Chapter 12 - Bluetooth and Jini int hashCode() Appendix A - javax.bluetooth Appendix B - javax.obex
Returns Ca -hashCode for this ShortUuid. Appendix Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index java.lang.String toString() List of Figures List of Tables
Returns a String representation of this ShortUuid.
List of Listings
List of Sidebars
java.lang.String toString4MalSignal()
Bluetooth for Java Class TerminalNotConnectedException by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public class TerminalNotConnectedException extends The authors of this text describe how to develop wireless Java java.lang.RuntimeException
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Thrown by a BlipNodeHandle when a request for action is made towards a terminal which is not more.
connected. Table of Contents
//Package com.ericsson.blipnet.api.blipnode
Bluetooth for Java Introduction
Chapter 1 - Introducing Bluetooth //Constructors Chapter 2 - Bluetooth 1.1 TerminalNotConnectedException() Chapter 3 - Before You Get Started TerminalNotConnectedException(java.lang.String message) Chapter 4 - Understanding the Java Bluetooth API TerminalNotConnectedException(java.lang.String message, Chapter java.lang.Throwable 5 - Bluetooth with J2ME cause) MIDP
TerminalNotConnectedException(java.lang.Throwable cause) Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java Class WapServiceIndication by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class WapServiceIndication extends java.lang.Object implements The authors of this text describe how to develop wireless Java ObexPushObject, java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheWapServiceIndication class models the WAP Service Indication. This service provides the ability more.
to send notifications to end-users in an asynchronous manner. Such notifications may, for example, be about new e-mails, changes in stock prices, news headlines, advertising, reminders of, for example, low Table of Contents prepaid balance, and so forth. Bluetooth for Java
The WAP Service Indication contains a short message and a URI indicating a service. The message is Introduction presented the end-user upon reception, and the user is given the choice to either start the service Chapter 1 -toIntroducing Bluetooth indicated the URI immediately, or postpone the Service Indication for later handling. If the Service Chapter 2 by - Bluetooth 1.1
Indication is postponed, the client stores it and the end-user is given the possibility to act upon it at a later - Before You Get Started point of time.
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter Bluetooth with J2ME MIDP Objects5 of-the WapServiceIndication class are immutable—once created they cannot change. Chapter 6 - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX //Package Chapter 8 - Using a Bluetooth Simulator com.ericsson.blipnet.api.obex.pushobjects Chapter 9 - Bluetooth Security //Fields Chapter 10 byte - Wireless Embedded Systems with the Micro BlueTarget static DELETE Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
The WAP Indication(s) received on the terminal with a given ID must be deleted. Appendix A -Service javax.bluetooth Appendix B - javax.obex
staticC byte Appendix - Java SIGNAL_HIGH Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index
Indicates that the WAP Service Indication must be presented as soon as the implementation (of the terminal) allows that to be carried out in a non-user-intrusive manner, or earlier if considered appropriate List of Tables (which may result in a user-intrusive behavior). List of Figures
List of Listings
List of Sidebars
static byte SIGNAL_LOW
Indicates that the WAP Service Indication must be postponed without user intervention. static byte SIGNAL_MEDIUM
Indicates that WAP Service Indication must be presented as soon as the implementation allows that to be carried out in a non-user-intrusive manner. static java.lang.String TOKENIZED_MEDIA_TYPE
Defines the tokenized form of the WAP Service Indication Media Type. //Constructors WapServiceIndication (java.lang.String uri, java.lang.String id, byte action, java.lang.String contents)
Constructs a WapServiceIndication. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
WapServiceIndication(java.lang.String uri, java.lang.String id, Apress © 2003 (352 pages) java.lang.String contents) The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Constructs a WapServiceIndication. Bluetooth-based services, highlights of security concerns, and more.
WapServiceIndication(java.lang.String uri, java.lang.String id, java.lang.String expires, byte action, java.lang.String contents) Table of Contents Bluetooth for Java Introduction Constructs a WapServiceIndication. Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
WapServiceIndication(java.lang.String uri, java.lang.String id, - Before You Get Started java.lang.String expires, java.lang.String contents)
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Constructs WapServiceIndication. Chapter 6 - aCreating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8 - Using a Bluetooth Simulator //Methods Chapter 9 -equals(java.lang.Object Bluetooth Security boolean obj) Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Compares this WapServiceIndication with an Object and returns true if they are equal.
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
byte[]B getObexBody() Appendix - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Returns the body of this ObexPushObject.
Index
List of Figures
java.lang.String getObexName()
List of Tables
List of Listings List of Sidebars Returns the name of this ObexPushObject.
java.lang.String getObexType()
Returns the mime-type of this ObexPushObject. int hashCode()
Returns a hashCode for this WapServiceIndication. java.lang.String toString()
Returns a String representation of this WapServiceIndication.
Bluetooth for Java Class WapServiceLoading by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
public final class WapServiceLoading extends java.lang.Object implements The authors of this text describe how to develop wireless Java ObexPushObject, java.io.Serializable
applications using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and TheWapServiceLoading class models the WAP Service Loading. This service provides the ability to more.
cause a user agent on a terminal to load and execute a service, that, for example, can be in the form of a WML deck. The Service Loading contains an URI indicating the service to be loaded by the user agent Table of Contents without user intervention when appropriate. Bluetooth for Java
Objects of the WapServiceLoading class are immutable—once created they cannot change. Introduction Chapter 1
- Introducing Bluetooth
//Package Chapter 2 - Bluetooth 1.1 com.ericsson.blipnet.api.obex.pushobjects Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
//Fields Chapter 5 - Bluetooth with J2ME MIDP static CACHE Chapter 6 byte - Creating a Bluetooth Print Server with JPS API Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator Indicates that the WAP service content is loaded in the same way as for EXECUTE-LOW, but instead of
Chapter 9 -the Bluetooth executing service Security in the same way as for EXECUTE-LOW it is placed in the cache of the client. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
static byte EXECUTE_HIGH
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth
Appendix - javax.obex IndicatesB that the WAP service content is loaded and executed in the same way as for EXECUTE-LOW Appendix but mayCresult - Java inBluetooth an user-intrusive Development behavior. on the PalmOS Platform Appendix D - BlipNet 1.1 API Index static byte EXECUTE_LOW List of Figures List of Tables
Indicates that the WAP service content is fetched from either an origin server or from the client's cache, if List of Listings available. List of Sidebars static java.lang.String TOKENIZED_MEDIA_TYPE
Defines the tokenized form of the WAP Service Loading Media Type. //Constructors WapServiceLoading(java.lang.String uri)
Constructs a WapServiceLoading. WapServiceLoading(java.lang.String uri, byte action)
Constructs a WapServiceLoading. //Methods boolean equals(java.lang.Object obj)
Compares this WapServiceLoading with an Object and returns true if they are equal. Bluetooth for Java
by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
byte[] getObexBody()
ISBN:1590590783
The authors of this text describe how to develop wireless Java using Bluetooth for a variety of platforms. This Returns the bodyapplications of this ObexPushObject. includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more. getObexName() java.lang.String
Table of Contents
Returns the name of this ObexPushObject.
Bluetooth for Java Introduction
java.lang.String getObexType()
Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter - Before You Get Started Returns3 the mime-type of this ObexPushObject. Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - Bluetooth with J2ME MIDP int hashCode() Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Returns8 a -hashCode for this Simulator WapServiceLoading. Chapter Using a Bluetooth Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget java.lang.String toString() Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Returns a String representation of this WapServiceLoading.
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index Numbers
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This 1-Wire (Dallas Semiconductor), 254–255 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and 1-Wire interface, 254 more.
1-Wire sensor/controller, 255 2.4 GHz frequency band, 1 Table of Contents
3Com USB Bluetooth module, 14
Bluetooth for Java
3Com Wireless Bluetooth Printer Adapter, 97 Introduction Chapter 802.11b, 1 vs. - Introducing Bluetooth, Bluetooth 1–3 Chapter 2 encryption - Bluetoothkey, 1.1160–161 1024-bit Chapter 3 - Before You Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index A
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java using Bluetooth for a variety of platforms. This AcceptAndOpen()applications method, 127 includes an API overview of the Java library, development of Bluetooth-based Add New Slave dialog box, 177 services, highlights of security concerns, and more.
AddEventListener() method, 234–235 Adopted protocols, explained, 20 Table of Contents
Airports,226
Bluetooth for Java
All-Bluetooth Jini federation, 252–254 Introduction Chapter Antennae 1 -on Introducing HP iPAQ 5400 Bluetooth series Pocket PC, 4 Chapter - Bluetooth 1.1141 Apache2 Ant build utility, Chapter 3
- Before You Get Started
Application development with Micro BlueTarget, 187–224
Chapter 4
- Understanding the Java Bluetooth API Application 78 J2ME MIDP Chapter 5 - manager, Bluetooth with
Arcade,6 in-restaurant 9 Print Server with JPS API Chapter Creating a lobby, Bluetooth Chapter 7 - Java and OBEX159 Asymmetrical encryption, Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Asynchronous event handler, 187 Atinav Bluetooth SDK, 47,83,105
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Atinav SDK stack initialization code, 47 Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 -ofBluetooth and Jini 59–60 Attributes, service records, Appendix A - javax.bluetooth
Authenticate parameter of connection URL, 156–157,162
Appendix B - javax.obex
Authentication,156–158,173 with LAN access point, 192 Appendix D - BlipNet 1.1 API over L2CAP connection, 163
Appendix C - Java Bluetooth Development on the PalmOS Platform Index
Authentication List of Figures request (client), 157 Authentication request (server), 156 List of Tables List of Listings interface (javax.obex), 265 Authenticator List of Sidebars
Authorization (Bluetooth server), 158–159,163 Authorization over L2CAP connection,163 Authorize parameter of connection URL String, 158 Authorize() method of RemoteDevice class, 158
Index B
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Bank account information (listing), 160 includes an API overview of the Java library, development of Bluetooth-based services, highlights Bank account information encrypted (listing), 161 of security concerns, and more.
Baseband controller (Bluetooth), 183 Basic Imaging Profile, 28 Table of Contents
Basic Printing Profile, 28
Bluetooth for Java
BCC (Bluetooth Control Center), 46,191 Introduction Chapter BeamTsk.java 1 - Introducing listing, 87–88 Bluetooth Chapter 2 King - Bluetooth 1.1Denmark, 11 Blatand, Harald of Chapter 3 - Before You Get Started
BlipManager application, 231–232
Chapter 4
- Understanding the Java Bluetooth API
BlipNet,5226–232 Chapter - Bluetooth with J2ME MIDP
accessing external resources, 228 - Creating a Bluetooth Print Server with JPS API architecture,227–232 Chapter 7 - Java and OBEX architecture diagram, 227 Chapter 8 - Using a Bluetooth Simulator BlipManager application, 231–232 Chapter 9 - Bluetooth Security BlipNodes,229–230 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget BlipServer,227–228 Chapter 6
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
BlipNet API overview, 232–233
Chapter 12 - Bluetooth and Jini
BlipNet packages, 232–233 Appendix A - javax.bluetooth Appendix B - javax.obex BlipNetIcons class, 233 Appendix - Java Bluetooth BlipNodeC installation, 230 Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
BlipNode unit, 230
Index
BlipNodes (BlipNet), 229–230 List of Figures List BlipServer of Tables(BlipNet), 227–228 List of Listings BlipServerConnection class, 234 List of Sidebars
BlipServerEventAdapter class, 235 BlipServerEventFilter class, 234–235 BlipServerEventListener class, 235 BlueCore 01b (CSR), 183 Bluetooth vs. 802.11b, 1–3 as cable replacement technology, 2 as a low-power wireless technology, 2 as a wireless communication protocol, 1 basic components of, 45–72,241 client-server architecture, 1 deployment locations, 226 history of, 11–12 vs. infrared, 1 integrating with Java, 33–43 integrating with Jini, 252–256 integrating with JPS, 104–112 with J2ME MIDP, 75–96 nominal range, 1 omnidirectional transmissions, 1
on PalmOS platform, 269–272 for Java in small officeBluetooth or home office, 6 ISBN:1590590783 by Bruce Hopkins and Ranjith Antony for voice applications, 6–7 Apress © 2003 (352 pages) when not to use with Java, 33–34 The authors of this text describe how to develop wireless Java for wireless gaming, 7 applications using Bluetooth for a variety of platforms. This in your car, 7–8 includes an API overview of the Java library, development of
Bluetooth-based services,52 highlights of security concerns, and Bluetooth Assigned Numbers document, more.
Bluetooth-certified product, explained, 31 Bluetooth compliance, explained, 22 Table of Contents
Bluetooth device tracker, 233–240
Bluetooth for Java
Bluetooth devices, 13–15,40–41 Introduction authentication of, 156 Chapter 1 - Introducing Bluetooth
classes- of, 225 Bluetooth 1.1 connection capabilities of, 15–16 Chapter 3 - Before You Get Started creating in Impronto Simulator, 142 Chapter 4 - Understanding the Java Bluetooth API of the future, 8–9 Chapter 5 - Bluetooth with J2ME MIDP on the market today, 3–7 Chapter 6 - Creating a Bluetooth Print Server with JPS API power classes, 16–17 Chapter - Java and OBEX TDK7 USB, 83–84 Chapter - Using Bluetooth that8beep until afound, 8 Simulator Chapter 2
Chapter 9
- Bluetooth Security
Bluetooth devices in the area, browsing, 90
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Bluetooth modes, 52 Applications with the Ericsson BlipNet Chapter 11 discovery - Enterprise Bluetooth Bluetooth 41 and Jini Chapter 12 host, - Bluetooth Appendix A Print - javax.bluetooth Bluetooth Server, creating with JPS API, 97–113 Appendix B - javax.obex
Bluetooth printer adapter, 97
Appendix C - Java Bluetooth Development on the PalmOS Platform
Bluetooth profiles, 23–28 vs. J2 Index ME profiles, 29–30 List of Figures OBEX to implement, 116 List of Tables TCP/IP-based,253 List of Listings UUID values for, 62 Appendix D - BlipNet 1.1 API
List of Sidebars
Bluetooth Protocol Analyzer, 163,173–178 Bluetooth protocol stack, 17–23 Bluetooth protocol stack layers, 18–20,23 Bluetooth protocols to send and receive data, 115 Bluetooth Qualification Body, 31 Bluetooth qualification process, 31–32 Bluetooth Qualification Web site, 32 Bluetooth radios, 13.See also Bluetooth devices Bluetooth security. SeeSecurity Bluetooth server authentication, 156–157 authorization,158–159 connections with Serial Port Profile, 68–69 encryption,161–162 Bluetooth Service, explained, 191 Bluetooth SIG promoter companies, 12 Bluetooth (network) simulator, 137–153
Bluetooth Special Interest Group (SIG), 11–12 Bluetooth for Java
Bluetooth specifications page, 23 by Bruce Hopkins and Ranjith Antony Bluetooth stack, 41, 47–51 Apress © 2003 (352 pages)
ISBN:1590590783
The authors 47–51 of this text describe how to develop wireless Java Bluetooth stack initialization, applications using Bluetooth for a variety of platforms. This
Bluetooth versionincludes 1.1, 11–32 an API overview of the Java library, development of Bluetooth-based services, of security concerns, and BluetoothConnectionException class, 156,highlights 158,162,259 more.
BluetoothSetup1.java listing, 47–48 BluetoothStateException class, 259
Table of Contents
BNEP (Bluetooth Bluetooth for Java Network Encapsulation Protocol), 22, 252 Introduction Bootloader section (ROM), 188 Chapter 1 - Introducing BTAUTOLAN.CFG file, Bluetooth 192 Chapter 2
- Bluetooth 1.1
Btgoep protocol, 128
Chapter 3
- Before You Get Started Building, employees 229 Chapter 4 tracking - Understanding the in, Java Bluetooth API Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index C
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This C/Cbased Bluetooth SDK, 39 includes an API overview of the Java library, development of Bluetooth-based services, 21, highlights of security concerns, and Cable replacement protocol (RFCOMM), 25,67–70, 72 more.
Cable replacement technology, Bluetooth as, 2,5 CACHED device, explained, 56–57 Table of Contents
Car, Bluetooth in, 7–8
Bluetooth for Java
CAST algorithm, 160–161 Introduction Chapter CDC (connected 1 - Introducing deviceBluetooth configuration), 75 Chapter 2 - Bluetooth 1.1 Cell phones Chapter 3 - Before You Get Started configuring in Impronto Simulator, 143 Chapter - Understanding the Java 5 Bluetooth API and4laptop connection sharing, Chapter 5 - Bluetooth limitations of, 3 with J2ME MIDP Chapter and6PDA - Creating data transfer, a Bluetooth 3–4 Print Server with JPS API Chapter 7 - Java and OBEX Centralized communication, 226 Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Challenge/response mechanism, 156
Chat example, 145–152 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget ChatClient.java listing,Bluetooth 146–150 Applications with the Ericsson BlipNet Chapter 11 - Enterprise Chapter 12 - Bluetooth Jini 151 ChatServer Bluetoothand device, Appendix A - javax.bluetooth
ChatServer conversation, 152
Appendix B - javax.obex
ChatServer interacting with ChatClient, 151
Appendix C - Java Bluetooth Development on the PalmOS Platform
ChatServer.java listing, 145–146 Appendix D - BlipNet 1.1 API Index Cipher (encryption algorithm), 159 List of Figures
Class 1 Bluetooth devices, 17,225
List of Tables
Class 2 or Class 3 Bluetooth devices, 17,225
List of Listings
CLDC (connected limited device configuration), 75–76,186 List of Sidebars CLDC packages for small device Java applications, 76 CLDC Technology Compatibility Kit (TCK), 186 Client authentication, 157 Client authentication request, 157 Client connections with Serial Port Profile, 69–70 Client encryption, 162–163 Client-server architecture (Bluetooth), 1 ClientApp.java listing, 165–170 ClientSession interface (javax.obex),122,265 ClientSession object connect() method, 131 createHeaderSet() method, 122 disconnect() method, 132 setPath() method, 135 Com.ericsson.blipnet.api packages, 232–233 Communication, 67–72 multipoint,16
point-to-point, 15
Bluetooth for Java
CONNECT operation (OBEX), 121,131 by Bruce Hopkins and Ranjith Antony Connect() method of ClientSession object, 131 Apress © 2003 (352 pages)
ISBN:1590590783
authors of this text describe how to develop wireless Java Connection classThe (javax.microedition.io), 122 applications using Bluetooth for a variety of platforms. This
Connection sharing, laptop phone, 5 of the Java library, development of includes anto API overview Bluetooth-based services, highlights of security concerns, and Connection URL String, 128 more. authenticate parameter, 156–157,162 authorize parameter, 158 parameter, 161–162,174,177 Tableencrypt of Contents and the 130 Bluetooth for SDDB, Java Introduction Connections Chapter Bluetooth 1 - Introducing device, 15–16 Bluetooth
defined, Chapter 2 - 68 Bluetooth 1.1 and3sessions, Chapter - Before68 You Get Started Chapter 4 - class, Understanding the Java Bluetooth API Connector 66 Chapter 5
Bluetooth with J2ME MIDP Connector- object open() method, 64,69,80,130
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
ConnectToClientAndPrint() method, 105
CONTINUE response code (OBEX), 121,125 Chapter 8 - Using a Bluetooth Simulator Chapter 9 - See Bluetooth Security Controllers. Bluetooth devices Chapter 10 phone - Wireless Embedded Systems with the Micro BlueTarget Cordless (Bluetooth), 21, 27 Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Cordless Telephony Profile, 27
Chapter 12 - Bluetooth and Jini
CPU gate 183 Appendix A -count, javax.bluetooth Appendix CREATE-EMPTY B - javax.obex operation (OBEX), 123 Appendix C - Java Bluetooth Development on the PalmOS Platform CreateHeaderSet() method, 122 Appendix D - BlipNet 1.1 API
CreatePrintJob() method, 101
Index
CSR baseband controller, 187 List of Figures CSR BlueCore 1 radio, 14 List of Tables List of Listings List of Sidebars
Index D
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Data format, identifying with JPS, 100 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Data security. SeeSecurity more.
Data terminal authentication, 192
DataElement class (javax.bluetooth), 59–60,65,260 Table of Contents
Debugging, with Bluetooth simulator, 137–153
Bluetooth for Java
Decryption,177–178 Introduction Chapter Deployment 1 - Introducing locations for Bluetooth Bluetooth applications, 226 Chapter 2 - Bluetooth 1.1 setup checklist, 81 Development environment Chapter 3 - Before You Get Started
Device classes, Bluetooth major and minor, 54–55
Chapter 4
- Understanding the Java Bluetooth API
Device 5communication types Chapter - Bluetooth with J2ME MIDP
multipoint, 16 - Creating a Bluetooth Print Server with JPS API point-to-point, 15
Chapter 6 Chapter 7
- Java and OBEX
Device 8discovery, Chapter - Using a55–57 Bluetooth Simulator Chapter - Bluetooth Security Device 9driver, 17 Chapter - Wireless Embedded Device 10 management, 25,51–55Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Device Manager (Windows 2000), 25
Chapter 12 - Bluetooth and Jini
DeviceClass class (javax.bluetooth), 53,57–58,261 Appendix A - javax.bluetooth Appendix DeviceDiscovered() B - javax.obex method, 57 Appendix C - Java Bluetooth Development on the PalmOS Platform DeviceProperties.java listing, 48–51 Appendix D - BlipNet 1.1 API
Devices (Bluetooth). SeeBluetooth devices
Index
Dial-up networking, wireless, 5 List of Figures Dial-Up Networking Profile, 26 List of Tables List of Listings DISCONNECT operation (OBEX), 132 List of Sidebars
Disconnect() method of ClientSession object, 132 Discovery modes (Bluetooth), 52 Discovery Service (Jini), 244 DiscoveryAgent class, 52,56–57,63–64,261 DiscoveryListener interface, 57,64,261–262 Distance measuring, 34 Distributed computing, problems of, 242 Doc interface, 100 DocFlavor object, 100 DocPrintJob object, 101 Documents, in JSP, 99–101 Dynamic OS loader, 189
Index E
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java E-mail stations inapplications a hotel, 229using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Echo service, 193–207 more.
Embedded Linux, 185
Embedded Windows, 185 Table of Contents
Employees, tracking in a building, 229
Bluetooth for Java
Emulator, vs. simulator, 138 Introduction Chapter Encrypt1 parameter - Introducing in connection Bluetooth URL, 161–162, 174, 177 Chapter 2 method - Bluetooth 1.1 Encrypt() of RemoteDevice class, 162 Chapter 3 - Before You Get Started
Encrypted data, decrypting, 176–178
Chapter 4
- Understanding the Java Bluetooth API
Encryption, Chapter 5 - 159–163 Bluetooth with J2ME MIDP Encryption 159 Chapter 6 - algorithm Creating a(cipher), Bluetooth Print Server with JPS API Chapter 7 - key, Java159–161 and OBEX Encryption Chapter 8
- Using a Bluetooth Simulator
Enterprise Bluetooth applications, 225–240 Security creating- Bluetooth using Java, 226 Chapter 10 Wireless Embedded Systems with the Micro BlueTarget qualifications of, 225 Chapter 9
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Ericsson,11–12
Chapter 12 - Bluetooth and Jini
EricssonABlipNet. SeeBlipNet Appendix - javax.bluetooth Appendix Events (Jini), B - javax.obex 245 Appendix C - Java Events (JPS), 99Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Example code in this book, working with, 81
Index
List of Figures List of Tables List of Listings List of Sidebars
Index F
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This FAILURE response code (OBEX), 121,125 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and FAX Profile, 26 more.
File transfer client, 131–134
File transfer example (JSR-82 OBEX API), 127–136 Table of Contents
File Transfer Profile, 27
Bluetooth for Java
File transfer server, 127–131 Introduction Chapter Fixed-wireless 1 - Introducing commercial Bluetooth system, 182 Chapter 2 - Bluetooth 1.1 system, 181 Fixed-wireless consumer Chapter 3 - Before You Get Started
Fixed-wireless device, explained, 181
Chapter 4
- Understanding the Java Bluetooth API
Fixed-wireless system, creating, 207–223 Chapter 5 - Bluetooth with J2ME MIDP Flash disk, Chapter 6 - 188 Creating a Bluetooth Print Server with JPS API Chapter 7 - Java187–189 and OBEX Flash memory, Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Flat file system, RMS as, 79
Fossil Wrist PDA with Palm OS 4.1, 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
FTClient.java listing, 132–134 Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth Jini FTServer.java listing, and 128–130 Appendix A - javax.bluetooth
Future Bluetooth devices, 8–9
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index G
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Gaming (wireless) includes an API overview of the Java library, development of Bluetooth for, Bluetooth-based 7 services, highlights of security concerns, and playing in restaurant more. lobby, 9
Gate count (CPU), 183 GCFof(Generic Connection Framework), 42,80,105 Table Contents Bluetooth Java Profile, 24, 28, 51, 229 Generic for Access Introduction
Generic Object Exchange Profile, 27
Chapter 1
- Introducing Bluetooth
GET operation (OBEX), 121,123,131 Chapter 2 - Bluetooth 1.1 GetAppProperty() MIDlet, 144 Chapter 3 - Before method You Get of Started Chapter 4 - Understanding the Java Bluetooth API GetBluetoothAddress() method, 51, 53 Chapter 5
- Bluetooth with J2ME MIDP GetConnection() method, BlipServer object, 234
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
GetDiscoverable() method, 53
GetDiscoveryAgent() method,Simulator 56 Chapter 8 - Using a Bluetooth Chapter 9 - Bluetooth Security GetEventFilter() method, 234 Chapter 10 - Wireless method, Embedded GetFriendlyName() 53Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
GetLocalDevice() method, 51
Chapter 12 - Bluetooth and Jini
GetMajorDeviceClass() method, 53 Appendix A - javax.bluetooth Appendix GetMinorDeviceClass() B - javax.obex method, 53 Appendix C - Java Bluetooth Development on the PalmOS Platform Grade school environment, 232 Appendix D - BlipNet 1.1 API
Grocery store Bluetooth device tracker, 233–240
Index
Grocery store environment, 226,233–240 List of Figures List of Tables List of Listings List of Sidebars
Index H
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Hands Free Profile, 28 includes an API overview of the Java library, development of Bluetooth-based services, of security concerns, and Hardcopy Cable Replacement Profile, 28,highlights 97 more.
HCI (Host Controller Interface), 20,187
HeaderSet interface (javax.obex), 117–118,122–123,265–266 Table of Contents
HeaderSet object, 131,135
Bluetooth for Java
Headset Profile, 26 Introduction Chapter HID (Human 1 - Introducing Interface Device) Bluetooth protocol, 22 Chapter 2 -API Bluetooth 1.1 High-level (MIDP), 79 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Home, Bluetooth in, 8
Home office, Bluetooth in, J2ME 6 Chapter 5 - Bluetooth with MIDP Host (Bluetooth), 41 a Bluetooth Print Server with JPS API Chapter 6 - Creating Chapter 7 - JavaInterface, and OBEX41 Host Controller Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Hotel business center, Bluetooth-enabled, 156 Hotel e-mail stations, 229
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
HP iPAQ series Pocket PCApplications antennae, with 4 the Ericsson BlipNet Chapter 11 5400 - Enterprise Bluetooth Chapter 12 - Bluetooth HTTP protocol stack,and 17 Jini Appendix A - javax.bluetooth
Human Interface Device Profile, 28
Appendix B - javax.obex
Human Interface Device (HID) protocol, 22
Appendix C - Java Bluetooth Development on the PalmOS Platform
Hybrid Bluetooth Jini 253–255 Appendix D - BlipNet 1.1federation, API Index HYFLASH utility (HyNetOS), 189 List of Figures HYLOAD utility (HyNetOS), 189 List of Tables
HYMON utility (HyNetOS), 189–190
List of Listings
HyNetOS (for Micro BlueTarget), 185–191 List of Sidebars Bluetooth implementation, 186–187 operating environment components, 185 protocol manager, 187 structural overview, 186 tools,189–190 Hyperstone AG microprocessor, 183 Hyperstone RISC/DSP CPU architecture, 185 HYTRACE utility (HyNetOS), 190
Index I
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This I/O, performing with the GCF, 80 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Import statement, 95 more.
Impronto Developer Kit 1.0 for PalmOS, 269–272 Impronto Simulator (Rococo), 139–152 TableConsole, of Contents 141–143 Bluetooth forlist, Java device 151 Introduction features of, 139 Chapter 1 - Introducing Bluetooth installation of, 140–141 Chapter running 2 - an Bluetooth application 1.1 in, 144
v.1.13 installation screen, 140 Chapter - Before You Get Started Chapter 4 vs. - Understanding Infrared, Bluetooth, 1 the Java Bluetooth API Chapter 5 - Bluetooth with J2ME MIDP
InitBlipServerConnection() constructor, 234
Chapter 6
- Creating a Bluetooth Print Server with JPS API
InputStream, 131,193 - Java and OBEX
Chapter 7
Intercomm Chapter 8 - Profile, Using a 27 Bluetooth Simulator Chapter 9 - Bluetooth Security Interoperability, any device to any device, 6 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
IrDA (Infrared Data Association), 21,115
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
IsAuthenticated() method of RemoteDevice, 157
Chapter 12 - Bluetooth and Jini
IsEncrypted() method of RemoteDevice class, 162 Appendix A - javax.bluetooth Appendix B - javax.obex IsTrustedDevice() method of RemoteDevice class, 158 Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index J
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This J2ME (Java 2 Micro Edition) platform, 42,186 includes an API overview of the Java library, development of MIDP,75–96 Bluetooth-based services, highlights of security concerns, and overview of, 75 more.
J2ME Profiles, 75 vs. Bluetooth profiles, 29–30 Table of Contents diagram of, 76 Bluetooth for Java
J2ME Wireless Toolkit, 78 Introduction Chapter 1 - Introducing Bluetooth J2SE platform, 42 Chapter with2BlipNet - Bluetooth API to1.1 access external resources, 228
Java3 Bluetooth development kits for, 105 Chapter - Before You Get Started Chapter 4 -Application Understanding the Java file, Bluetooth JAD (Java Descriptor) 144 API Chapter 5
- Bluetooth with J2ME MIDP
Java - Creating a Bluetooth Print Server with JPS API for creating enterprise Bluetooth applications, 226 Chapter 7 - Java and OBEX integrating Bluetooth with, 33–43 Chapter - Using a Bluetooth Simulator and8OBEX, 115–136 Chapter 9 not - Bluetooth Security with, 33–34 when to use Bluetooth Chapter 6
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Java 2 Micro Edition (J2ME), 42,75–96,186
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Java Bluetooth APIs, 45–73
Chapter 12 - Bluetooth and Jini
Java Bluetooth development kits for J2SE, 105 Appendix A - javax.bluetooth Appendix B - javax.obex Java Bluetooth SDK vendors, 42–43 Appendix C - Java Bluetooth Development on the PalmOS Platform
Java implementation of Micro BlueTarget, 186–187
Appendix D - BlipNet 1.1 API
Java OBEX API, 115–136
Index
Java Real-Time Technology, 34 List of Figures List of Tables Java Specification Request, 35 List of Listings Java.io package, 80 List of Sidebars
Java.util.stack,19 Javax.bluetooth package, 36–37,259–264 DataElement,59–60,65,260 DeviceClass,53,57–58,261 DiscoveryAgent,52,56–57,63–64,261 DiscoveryListener,57,64,261–262 L2CAPConnection,71–72,262 LocalDevice,51–53,56,262 RemoteDevice,53,57,157–158,162,263 ServiceRecord, 58–59,64,263 UUID,61–63,264 Javax.microedition.io package, 80,122 Javax.microedition.io.Connection class, 122 Javax.microedition.rms.RecordListener, 80 Javax.microedition.rms.RecordStore, 80 Javax.obex package, 36,116,121–122,265–268 classes in, 38 ClientSession class, 122 HeaderSet interface, 117,122–123 Operation class, 122–123
ResponseCodes class, 120,123–126 Bluetooth for Java ServerRequestHandler class, 126–127 byclass, Bruce 127 Hopkins and Ranjith Antony SessionNotifier
ISBN:1590590783
Apress © 2003 (352 pages)
Javax.print package, 99–101. See also JPS
The authors of this text describe how to develop wireless Java
Javax.print.attribute, applications 99 using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
Javax.print.attribute.standard, 99 services, highlights of security concerns, and Bluetooth-based more. Javax.print.Doc interface, 100 Javax.print.DocFlavor,100 Table of Contents package, 99 Javax.print.event Bluetooth for Java
Javax.print.PrintService object, 100
Introduction
Javax.print.PrintServiceLookup object, 101 - Introducing Bluetooth
Chapter 1
Javax.print.SimpleDoc object, 100–101 Chapter 2 - Bluetooth 1.1 Chapter 3 -Community Before You Get Started34–38 JCP (Java Process), Chapter 4
- Understanding the Java Bluetooth API Jini, 241–258
Chapter 5 - Bluetooth Discovery Service,with 244J2ME MIDP
Chapter 6 -245 Creating a Bluetooth Print Server with JPS API events, Chapter - Java and OBEX how7it works, 245–253 Chapter 8 - Using Bluetooth Simulator integrating witha Bluetooth, 251–255 Chapter - Bluetooth Join9protocol, 244 Security Chapter Leasing 10 - Service, Wireless Embedded 244 Systems with the Micro BlueTarget
Lookup 243–247 Chapter 11 - Service, Enterprise Bluetooth Applications with the Ericsson BlipNet Lookup discovery, Chapter 12 - Service Bluetooth and Jini 245–247 Service lifecycle, 249–251 Appendix A - Consumer javax.bluetooth Service lifecycle, 245–249 Appendix B - Provider javax.obex ServiceItem 245, 248–249,252–253 Appendix C - Javaobject, Bluetooth Development on the PalmOS Platform ServiceRegistrar object, 247–248,249–250 ServiceTemplate object, 249 Index solving distributed computing problems, 242 List of Figures transactions, 245 Appendix D - BlipNet 1.1 API
List of Tables
Jini-Bluetooth-enabled device, 256–257 List of Listings Jinioffederation, List Sidebars 243, 255 entities in, 245 functionality of members in, 243 joining,247–249 Jini network technology, 242–245 JMatos (PsiNaptic), 254 Join protocol (Jini), 244 JPS (Java Print Service), 97–113 architecture,99 attributes, 99 creating a Bluetooth Print Server with, 97–113 creating a document, 100–101 creating a print job and printing, 101–102 documents,99–101 event model, 99 identifying the data format, 100 integrating with Bluetooth, 104–112 listening for print status updates, 102 overview,98–99 relationship between printer and client, 98 searching for a print service, 101
JPS API packages, 99
Bluetooth for Java
JPS application example by Bruce (JPSPrint), Hopkins and102–104 Ranjith Antony JPSBluetoothPrintClient.java Apress © 2003 listing, (352 pages) 109–112
ISBN:1590590783
The authors this text describe how to develop wireless Java JPSBluetoothPrint.java listing,of105–109 applications using Bluetooth for a variety of platforms. This
JPSPrint application, 102–104 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and JPSPrint.java listing, 102–104 more.
JSR-82 API, 35,42,45–73 application simulation, 152 Tableas ofonly Contents standardized Bluetooth API, 39–40 Bluetooth for of, Java benefits 38–40 Introduction compatible code, 96 Chapter 1 - Introducing independent of stackBluetooth and radio, 38–39 Chapter OBEX 2 APIs - Bluetooth in, 121–136 1.1 role3of,-35–36 Chapter Before You Get Started Chapter 4 - Understanding theapplications, Java Bluetooth API JSR-82-compliant Bluetooth 139 Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
JSR-82-compliant Bluetooth stack layers, 39 JSR-82 Expert Group, companies in, 35–36 - Java and OBEX
Chapter 7
JSR-828 OBEX API transfer example, 127–136 Chapter - Using a file Bluetooth Simulator Chapter 9 - Bluetooth Security JSTARTUP.INI file, 188–190 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
JVM (Java Virtual Machine), 186
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
JVM for Micro BlueTarget, 186–187
Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index K
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Keyboard (Bluetooth) services, 60 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and more.
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index L
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This L2CAP (Logical Link Control and Adaptation Protocol), 20 includes an API overview of the Java library, development of client connections, 71 Bluetooth-based services, highlights of security concerns, and connection authentication and authorization, 163 more.
connections, 70–72,163 vs. RFCOMM, 72 Tableserver of Contents connections, 70 Bluetooth for Java
L2CAP layers, 70
Introduction
L2CAPConnection interface, 262 Chapter 1 - Introducing Bluetooth Chapter L2CAPConnection 2 - Bluetooth methods, 1.1 71–72 Chapter 3 - Before You Get Started L2CAPConnection object, 71–72 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
L2CAPConnectionNotifier interface, 262
L2CAPEcho Serviceaexample, Chapter 6 - Creating Bluetooth192–207 Print Server with JPS API L2CAPEchoClient.java listing, 196–207 Chapter 7 - Java and OBEX Chapter 8 - Using a Bluetooth Simulator L2CAPEchoServer.java listing, 193–196 Chapter 9
- Bluetooth Security
LAN Access Profile, 26,232
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Laptop to phone connection sharing, 5
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Layers 12 (Bluetooth protocol), Chapter - Bluetooth and JiniUUID values for, 61 Appendix A the - javax.bluetooth Layers of protocol stack, 18–20,23,61 Appendix B - javax.obex
Leasing service (Jini), 244
Appendix C - Java Bluetooth Development on the PalmOS Platform
Light waves, 34
Appendix D - BlipNet 1.1 API
Line-of-site issues of infrared, 1 Index List of Figures Listings List of 1024-bit Tables encryption key, 160–161
bank account information, 160 List of Listings bank account information encrypted, 161 List of Sidebars BeamTsk.java,87–88 BluetoothSetup1.java,47–48 ChatClient.java,146–150 ChatServer.java,145–146 ClientApp.java, 165–170 DeviceProperties.java,48–51 FTClient.java, 132–134 FTServer.java, 128–130 JPSBluetoothPrintClient.java, 109–112 JPSBluetoothPrint.java,105–109 JPSPrint.java,102–104 L2CAPEchoClient.java,196–207 L2CAPEchoServer.java,193–196 mydevice.xml,143 opening connections on Bluetooth Server, 68–69 PiconetMIDlet.java,91–95 ServerApp.java, 163–165 service registration process, 66–67 SPP2COMM.java,208–223 stack initiation code for Atinav SDK, 47 Stealth.java, 84–87
Tracking.java, 235–240
Bluetooth for Java
LocalDevice class, 51–53,56,262 by Bruce Hopkins and Ranjith Antony Lookup Service discovery (Jini), 245–247 Apress © 2003 (352 pages)
ISBN:1590590783
authors this text249 describe how to develop wireless Java Lookup Services The (LUS), Jini, of 243–247, applications using Bluetooth for a variety of platforms. This
LookupPrintServices() method, includes an API 101 overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Low-level API (MIDP), 79 more.
Low-power wireless technology,Bluetooth as, 2 LUS (Lookup Services), Jini, 245–247,249
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index M
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This MAME (Multiple Arcade Machine Emulator) project, 138 includes an API overview of the Java library, development of Bluetooth-based services, Manufacturing facility, Bluetooth in, 182 highlights of security concerns, and more.
Master and slave concept, 1,30–31
Micro BlueTarget (Smart Network Devices), 179–224 Tableapplication of Contents development on, 187–224 Bluetooth for Java Bluetooth implementation of, 187 Introduction communication between devices, 192–207 Chapter 1 - Introducing Bluetooth creating a fixed-wireless system, 207–223 Chapter for external 2 - Bluetooth serial communication, 1.1 184
hardware components diagram, 183 Chapter 3 - Before You Get block Started hardware configuration,the 182–184 Chapter 4 - Understanding Java Bluetooth API hardware details, 184 Chapter 5 - Bluetooth with J2ME MIDP HyNetOS, 185–191 Chapter 6 - Creating a Bluetooth Print Server with JPS API Java7 implementation, Chapter - Java and OBEX186–187
JVM for, 186–187 - Using a Bluetooth Simulator libraries,186–187 Chapter 9 - Bluetooth Security memory map of, 188 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget operating environment components, 185 Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet operating system for, 185–191 Chapter 12 - Bluetooth and Jini operating system tools, 189–190 Appendix A - javax.bluetooth programming, 190–224 Appendix B - javax.obex software configuration, 185–187 Appendix C - Java Bluetooth standard version, 180 Development on the PalmOS Platform Appendix D BlipNet 1.1 Starter Kit, 180,184API Indexwhat it is, 179–182 List of Wireless Figures Network Access Point, 191–192 Chapter 8
List of Tables MIDlet suite, 78 List of Listings
MIDlets defined, 78 developing,78–80 JAD (Java Application Descriptor) file, 144 skeletal structure of, 78–79
List of Sidebars
MIDP (Mobile Information Device Profile), 75–96 high-level API and low-level API, 79 packages for mobile devices, 77 user interface components, 79 MIDP 1.0 device, qualifications for, 77 MIDP 2.0 specification, 77 MIDP 2.0 wireless application functionality, 77–78 MIDP-Chat application, 272 Mobile phone configuring in Impronto Simulator,143 and laptop connection sharing, 5 limitations of, 3 and PDA data transfer, 3–4 Mobiwave BPA-D10 Bluetooth Protocol Analyzer, 163,173–178 data captured by, 174–175
data transmission sniffing, 173 Motorola,35
Bluetooth for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
MTUs (MaximumApress Transmission Units), © 2003 (352 pages) 70–71 The authors of this text describe how to develop wireless Java Multicast announcements (LUS), 247 applications using Bluetooth for a variety of platforms. This
Multicast requests (LUS),an 247, 250 includes API overview of the Java library, development of Bluetooth-based highlights of security concerns, and Multipoint device communication,services, 16 more.
Museum environment, 226 Mydevice.xml listing, 143
Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index N
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This NAME headers (OBEX), 122 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Node administration (BlipManager), 231–232 more.
Nokia N-Gage gaming system, Bluetooth-enabled, 7 Nondiscoverable mode (stealth mode), 81–83 Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index O
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This OBEX (Object Exchange), 21,115–136 includes an API overview of the Java library, development of called IrOBEXBluetooth-based in IrDA protocolservices, stack, 116 highlights of security concerns, and what it is, 115–121 more.
OBEX API file transfer example, 127–136 OBEX in JSR-82, 121–127 Table of APIs Contents Bluetooth for Java OBEX clients and servers, message flow between, 120 Introduction
OBEX definition, explained, 117
Chapter 1
- Introducing Bluetooth
OBEX headers, 117 Chapter 2 - Bluetooth 1.1 creating,119 Chapter 3 - Before You Get Started in java.obex.HeaderSet interface, 118 Chapter 4
- Understanding the Java Bluetooth API OBEX libraries, 116 with J2ME MIDP Chapter 5 - Bluetooth Chapter OBEX Object 6 - Creating Model,a117–119 Bluetooth Print Server with JPS API Chapter 7 - Java and OBEX OBEX operations, 119, 134–136 Chapter 8
- Using a Bluetooth Simulator
OBEX protocol client/server architecture, 117
Chapter 9
- Bluetooth Security OBEX protocol to implement 116–117 Chapter 10 - Wireless EmbeddedBluetooth Systems profiles, with the Micro BlueTarget
OBEX server responseBluetooth codes, 123–126 Chapter 11 - Enterprise Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and 120, Jini 123–126 OBEX server responses, Appendix A - javax.bluetooth
OBEX Session Protocol, 117,119–121
Appendix B - javax.obex
Object Model (OBEX), 117–119
Appendix C - Java Bluetooth Development on the PalmOS Platform
Object Push Profile, 27,API 229–230,232–233 Appendix D - BlipNet 1.1 Index Offices, Bluetooth in, 6,226 List of Figures
Omnidirectional transmissions, 1
List of Tables
OnConnect() method, 128
List of Listings
OnGet() method, 128 List of Sidebars Opening connections on Bluetooth Server (listing), 68–69 Operation interface (javax.obex), 123,266 Operation object (javax.obex), 122,126 Operations (OBEX), 119,134–136 OutputStream,193
Index P
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Packet data, handling with L2CAP, 72 includes an API overview of the Java library, development of Bluetooth-based highlights 269 of security concerns, and Palm DK (Impronto Developer Kitservices, 1.0 for PalmOS), more. included software, 271
installation,272 sample application, 272 Table of Contents supported Bluetooth protocols, 269 Bluetooth for Java system requirements, 270 Introduction
Palm SD cardBluetooth for PalmOS 4 devices, 15 Chapter 1 Bluetooth - Introducing Chapter PalmOS 2 4-devices, BluetoothPalm 1.1 SD Bluetooth card for, 15 Chapter 3 4.1, - Before GetPDA Started PalmOS FossilYou Wrist with, 9 Chapter 4 - Understanding the Java Bluetooth API
PalmOS emulator, 140,271
Chapter 5
- Bluetooth with J2ME MIDP
PalmOS Chapter 6 platform - Creating a Bluetooth Print Server with JPS API Bluetooth development on, 269–272 - Java and OBEX running versions of, 138
Chapter 7 Chapter 8
- Using a Bluetooth Simulator
PalmSource emulator, 138 Chapter 9 - Bluetooth Security Chapter 10 - Wireless Systems with PAN (Personal AreaEmbedded Networking) Profile, 26 the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with PasswordAuthentication class (javax.obex), 266 the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
PC to peripherals, replacing cable between, 5
Appendix A - javax.bluetooth
PCs, connecting two, 5 Appendix B - javax.obex Appendix PDA to phone C - Java data Bluetooth transfer, Development 3–4 on the PalmOS Platform Appendix PDAs D - BlipNet 1.1 API IndexBluetooth-enabled,4 List of Figures service discovery process for, 60 List of Tables
Peripherals connected wirelessly, 5–6
List of Listings
Persistent storage, RMS for, 79–80
List of Sidebars
Personal area networks, 30–31 Personal networks, PC to PC, 5 PIC family microcontrollers, 184 Piconet Browser example application, 88–96 displaying Bluetooth devices in the area, 90 displaying remote device services, 91 initial screen for, 89 PiconetMIDlet.java listing, 91–95 Piconets (Bluetooth), 30–31 PIN (personal identification number) codes, 156 PLC (Programmable Logic Controller), 207 Point-to-point device communication, 15 POSE (PalmOS emulator), 140 Power classes of Bluetooth devices, 16–17 Power user, 6 PPP protocol, 192 PREKNOWN device, explained, 56–57
Print attributes (JPS), 99
Bluetooth for Java
Print job, creatingbyinBruce JPS, 101–102 ISBN:1590590783 Hopkins and Ranjith Antony Print server Apress © 2003 (352 pages) client submitting file to, 109 Theaauthors of this text describe how to develop wireless Java creating with JPS applications API, 97–113 using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
Print services Bluetooth-based services, highlights of security concerns, and explained,100more. searching for in JPS, 101 Print status updates, in JPS, 102
Table of Contents
Print() method, Bluetooth for Java101 Introduction Printer adapter (Bluetooth), 97 Chapter - Introducing Printers1 (Bluetooth), 20,Bluetooth 100 Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Printing4 Chapter
- Understanding the Java Bluetooth API
PrintFile() method, 105
in JPS, Chapter 5 -101–102 Bluetooth with J2ME MIDP
wireless, 5–6 - Creating a Bluetooth Print Server with JPS API PrintJobListener interface, Chapter 7 - Java and OBEX 102 Chapter 6
Chapter 8 - Using a Bluetooth PrintService object, 100–101 Simulator Chapter 9
- Bluetooth Security PrintServiceLookup class, 101
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
PrintStatus class, 102
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Profile 12 interdependencies, 28–30 Chapter - Bluetooth and Jini Appendix - javax.bluetooth Profiles A (Bluetooth), 23–28 Appendix vs. J2ME B - javax.obex profiles, 29–30
OBEX implement, 116 Appendix C to - Java Bluetooth Development on the PalmOS Platform TCP/IP-based, Appendix D - BlipNet252 1.1 API IndexUUID values for, 62 List of Figures Profiles (J2ME), 75 List of Tables Profiles (JSR-82-compliant required), 39 List of Listings
PROJECT.HEX file, 187
List of Sidebars
Protocol Analyzer (Mobiwave BPA-D10),163,173–178 data captured by, 174–175 data transmission sniffing, 173 Protocol layers (Bluetooth), UUID values for, 61 Protocol multiplexing, 20 Protocol stack (Bluetooth), 17–23 Protocol stack (Bluetooth) layers, 18–20,23 ProtocolDescriptorList, 130 Protocols (Bluetooth), Palm DK supported, 269 Proximity measurement, 34 PsiNode development platform, 254–255 PUT operation (OBEX), 121,123,135–136
Index R
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Radio frequencies, 13 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Radio signals, 12,34 more.
Radio spectrum, 12–17
Radios (Bluetooth), 13. See also Bluetooth devices Table of Contents
RecordListener object, 80
Bluetooth for Java
RecordStore object, 80 Introduction Chapter RemoteDevice 1 - Introducing class (javax.bluetooth), Bluetooth 53,57,263
authorize() method, Chapter 2 - Bluetooth 1.1158 encrypt() method, Chapter 3 - Before You162 Get Started isAuthenticated() method, Chapter 4 - Understanding the 157 Java Bluetooth API isEncrypted() method, Chapter 5 - Bluetooth with 162 J2ME MIDP isTrustedDevice() Chapter 6 - Creating a method, Bluetooth158 Print Server with JPS API Request Chapter 7 packet - Java (OBEX), and OBEX121 Chapter 8 -codes Using (OBEX a Bluetooth Simulator Response server), 123–126 Chapter 9
- Bluetooth Security
Response packet (OBEX), 121
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
ResponseCodes class (javax.obex), 123–126,267
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Restaurant arcade, 9 Chapter 12 - lobby Bluetooth and Jini Appendix A - javax.bluetooth Retail store, Bluetooth device tracker for, 233–240 Appendix B - javax.obex
RetrieveDevices() method, 56–57
Appendix C - Java Bluetooth Development on the PalmOS Platform
RFCOMM (wireless serial port), 21 connections, 67–70 Index vs. L2CAP, 72 Appendix D - BlipNet 1.1 API List of Figures
RFCOMM List of Tableslayer, 25 RI of (Reference List Listings Implementation), 36 List of Sidebars RISC/DSP 32-bit CPU (Hyperstone), 183,185
RMS (Record Management System), 79 logical representation of, 80 for persistent storage, 79–80 Rococo Impronto Simulator, 139–152
Index S
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Scatternets (Bluetooth), 31 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and SDDB (Service Discovery Database), 58–60 more. connection URLs and, 130
registering and storing services in, 66 service records in, 59 Table of Contents service registration in, 127 Bluetooth for Java
SDP (Service Discovery Protocol), 20 Introduction Chapter 1 - 24, Introducing Bluetooth SDP layer, 58 Chapter 2 - Bluetooth 1.1 63–64 SearchServices() method, Chapter 3 - Before You Get Started
Security,155–178 - Understanding the Java Bluetooth API authentication, 156–158 Chapter 5 - Bluetooth with J2ME MIDP encryption,159–163 Chapter 6 - Creating a Bluetooth Print Server with JPS API server authorization, 158–159 Chapter 4
Chapter 7
- Java and OBEX
Security administration (BlipManager), 231
Chapter 8
- Using a Bluetooth Simulator Security attempting to connect to server, 171 Chapter 9 client - Bluetooth Security Chapter 10example, - Wireless Embedded Systems with the Micro BlueTarget Security 163–178 Chapter 11measures, - Enterprise Bluetooth Applications with the Ericsson BlipNet Security 155–163 Chapter 12 - Bluetooth and Jini
Security server prompting user for PIN, 172 Appendix B - javax.obex waiting for client to connect, 170 Appendix A - javax.bluetooth
Appendix C - Java Bluetooth Development on the PalmOS Platform
SelectService() method, 63–64
Appendix D - BlipNet 1.1 API
Serial Port Profile, 25,67,145,208,224 Index client connections with, 69–70 List of Figures server connections with, 68–69 List of Tables List Server of Listings authentication, 156–157 List of Sidebars Server authorization, 158–159
Server connections with Serial Port Profile, 68–69 Server encryption, 161–162 ServerApp.java listing, 163–165 ServerRequestHandler class, 126–128,268 ServerRequestHandler methods, 126 Service Consumer lifecycle (Jini), 249–253 Service Consumers (Jini), 245,249–253 Service discovery, 58–65,88,91 Service Discovery Application Profile, 24,58 Service discovery process for a PDA, 60 Service Providers (Jini), 245 lifecycle,247–249 and Service Consumer, 253 Service record attributes, 59–60 Service records in the SDDB, 59 Service registration, 65–67
defined, 65 Bluetooth for Java process listing, 66–67 in the SDDB, by 127Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
ServiceClassIDList,130
The authors of this text describe how to develop wireless Java
ServiceDatabaseState, applications 131 using Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of
ServiceItem leasing, 247–249 services, highlights of security concerns, and Bluetooth-based more. ServiceItem object (Jini), 245,247–249,250–252 ServiceName object, 69,131 Table of Contentsclass, 58–59, 64, 263 ServiceRecord Bluetooth for Java
ServiceRecordHandle,130
Introduction
ServiceRecordState, 130 - Introducing Bluetooth
Chapter 1
ServiceRegistrar object Chapter 2 - Bluetooth 1.1(Jini), 247–248, 250–251 Chapter 3 - Before You Get Started ServiceRegistrationException class, 263 Chapter 4 - Understanding the Java Bluetooth API
Services, registering and storing in the SDDB, 66
Chapter 5
- Bluetooth with J2ME MIDP
ServicesDiscovered() method, 64
Chapter 6
- Creating a Bluetooth Print Server with JPS API ServiceTemplate object (Jini), 250 Chapter 7 - Java and OBEX Chapter - Using a Bluetooth Session8 management, 226 Simulator Chapter - Bluetooth Security Session9 Protocol (OBEX), 117,119–121 Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
SessionNotifier interface (javax.obex), 127,268
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Sessions, 68and Jini Chapter 12 -defined, Bluetooth Appendix SetDiscoverable() A - javax.bluetooth method, 52 Appendix B - javax.obex SetEnvVars script, 140–141 Appendix C - Java Bluetooth Development on the PalmOS Platform
SETPATH operation (OBEX), 121,135
Appendix D - BlipNet 1.1 API
SetPath() method, 135 Index Shared link key, 156 List of Figures List of Tables Shopping malls, 226 List of Listings
Signal strength indicator, 33
List of Sidebars
SimpleDoc object, 100–101 Simulator (Bluetooth), 137–153 vs. emulator, 138 pros and cons of using, 138–139 Simulator.bin,140 Simulator.exe, 140 Slave list dialog box, 176 Slaves and master concept, 1,30–31 Small office, Bluetooth in, 6 Smart Network Devices, 183,185 SmartDecrypt (Mobiwave Protocol Analyzer), 176–178 SND operating system (HyNetOS), 185 SoC (System-on-Chip) architecture, 183,185 Sound applications, Bluetooth for, 6–7 SPP.SeeSerial Port Profile SPP2COMM.java listing, 208–223 Stack (Bluetooth), 41
Stack initialization, 47–51,95
Bluetooth for Java
Stack initializationbycode for Atinav SDK, 47 Bruce Hopkins and Ranjith Antony Stack layers (JSR-82-compliant 39 Apress © 2003 (352Bluetooth), pages)
ISBN:1590590783
The authors of this textobject, describe how to develop wireless Java StartInquiry() method, DiscoveryAgent 56–57 applications using Bluetooth for a variety of platforms. This
Stealth mode (nondiscoverable includes an API mode), overview81–88 of the Java library, development of Bluetooth-based Stealth Mode example, 81–88 services, highlights of security concerns, and more.
Stealth.java listing, 84–87 StreamConnectionNotifier object, 66
Table of Contents
SUCCESS code (OBEX), 121,125 Bluetooth for response Java Introduction Sun Microsystems Java 2 Micro Edition. SeeJ2ME platform Chapter 1 - Introducing Sun Microsystems Jini. Bluetooth SeeJini Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Symmetrical encryption, 159,161
Synchronization Profile, 27the Java Bluetooth API Chapter 4 - Understanding System5monitor console BlueTarget), 189 Chapter - Bluetooth with(Micro J2ME MIDP Chapter - Creating Bluetooth Print Server with JPS API System6trace windowa (Micro BlueTarget), 190 Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index T
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java using Bluetooth for a variety of platforms. This TCK (Technologyapplications Compatibility Kit), 36 includes an API overview of the Java library, development of Bluetooth-based highlights of security concerns, and TCP/IP-based Bluetooth profiles,services, 252 more.
TCS (Telephony Control Protocol Specification), 21 TCS-BIN,21 Table of Contents
TCS Binary, 21
Bluetooth for Java
TDK Bluetooth Developer's Kit, 271 Introduction Chapter TDK USB 1 -Bluetooth Introducing device, Bluetooth 83–84 Chapter 2 using - Bluetooth 1.1 simulator for, 137–153 Testing, Bluetooth Chapter 3 - Before You Get Started
Text messages example, 145–152
Chapter 4
- Understanding the Java Bluetooth API
Thread5scheduler, 187 Chapter - Bluetooth with J2ME MIDP TINI (Tiny Interface), 254–255 Chapter 6 -Internet Creating a Bluetooth Print Server with JPS API Chapter 7 - Java TINI chipset, 254and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
TINI devices, 255
TINI microcontroller, 255
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Tracking a building, 229 Chapter 11employees - EnterpriseinBluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini 235 TrackingEventListener class, Appendix A - javax.bluetooth
Tracking.java, 234–240
Appendix B - javax.obex
Tracking.java listing, 235–240
Appendix C - Java Bluetooth Development on the PalmOS Platform
Transactions (Jini),1.1 245API Appendix D - BlipNet Index Triangulation, 34 List of Figures Trusted devices, 158 List of Tables
TYPE headers (OBEX), 122
List of Listings
List of Sidebars
Index U
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This UART device, 183 includes an API overview of the Java library, development of Bluetooth-based Unicast request (LUS), 247,250 services, highlights of security concerns, and more.
UUID (Universal Unique Identifier), 61
UUID class (javax.bluetooth), 61–63,264 Table of Contents
UUID() methods, 62–63
Bluetooth for Java
UUID values Introduction for Bluetooth profiles, 62 Chapter 1 - Introducing Bluetooth
for Bluetooth protocol layers, 61 - Bluetooth 1.1
Chapter 2 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index V
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This Vending machine, Bluetooth-enabled, 181 includes an API overview of the Java library, development of Bluetooth-based of security concerns, and Virtual serial port communicationservices, protocol.highlights SeeRFCOMM more.
Voice applications, 6–7,33–34 Table of Contents Bluetooth for Java Introduction Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Index W
Bluetooth for Java by Bruce Hopkins and Ranjith Antony Apress © 2003 (352 pages)
ISBN:1590590783
The authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This WAP (Wireless Access Protocol), 21,229 includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and WAP over Bluetooth, 229 more.
Windows 2000 Device Manager, 25 Windows CE.NET, 185 Table of Contents
Wireless communication protocol, Bluetooth as, 1
Bluetooth for Java
Wireless dial-up networking, 5 Introduction Chapter Wireless 1 embedded - Introducing systems, Bluetooth 179–224 Chapter 2 LAN - Bluetooth 1.1 Wireless (802.1b) vs. Bluetooth, 1–3 Chapter 3 - Before You Get Started
Wireless Network Access Point, 191–192
Chapter 4
- Understanding the Java Bluetooth API Wireless port. See Chapter 5 serial - Bluetooth withRFCOMM J2ME MIDP
Wireless Monitor example, Chapter 6 System - Creating a Bluetooth Print207–223 Server with JPS API client 223–224 Chapter 7 options, - Java and OBEX server Chapter 8 setup, - Using208–223 a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java List of Figures by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
Chapter 1: The Introducing Bluetooth authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes API overview the Java library, of Figure 1-1: The shortan antennae on HPofiPAQ 5400 seriesdevelopment Pocket PC allows it to communicate via Bluetooth-based services, highlights of security concerns, and Bluetooth and 802.11b. For added security, this model also includes a fingerprint reader. more.
Figure 1-2: The Bluetooth-enabled Nokia N-Gage wireless gaming system Table of Contents
Figure 1-3: Although the Fossil Wrist PDA doesn't contain any Bluetooth hardware, it does come preloaded with a Bluetooth-enabled OS— the Palm OS 4.1. Palm OS is a registered trademark of Introduction Palm, Inc. Bluetooth for Java Chapter 1
- Introducing Bluetooth
Chapter 2
- Bluetooth 1.1
Chapter 2: Bluetooth 1.1 - Before You Get Started
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Figure- 2-1: The 3COM USB Bluetooth module Bluetooth with J2ME MIDP
Chapter 5
Chapter 6 - 2-2: Creating a Bluetooth Print1.Server with JPS API Figure The CSR BlueCore This single-chip solution includes a microprocessor, RAM, I/O Chapter 7 Java and OBEX controller, and Bluetooth implementation in a single package! This is most likely the smallest radio Chapter - Using a Bluetooth that8 you've ever seen. Simulator Chapter 9
- Bluetooth Security Figure The Palm SD Bluetooth cardthe forMicro PalmBlueTarget OS 4 devices. Palm OS is a registered trademark of Chapter 10 - 2-3: Wireless Embedded Systems with
Palm, Chapter 11 -Inc. Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Figure 2-4: You can only connect to one Bluetooth device at a time if you have hardware that only supports point-to-point communication.
Appendix A - javax.bluetooth Appendix B - javax.obex
Appendix Figure C - 2-5: JavaYou Bluetooth can connect Development to up to onseven the PalmOS Bluetooth Platform devices at a time if you have multipoint-capable
hardware. Appendix D - BlipNet 1.1 API Index
Figure 2-6: A) The computer may be attached to its peripherals, but it can't control them without a driver. B) The computer may be attached to a Bluetooth device, but it can't control it without a stack.
List of Figures List of Tables
List ofFigure Listings 2-7: The Bluetooth protocol stack List of Sidebars
Figure 2-8: As you can see in Windows 2000, the operating system thinks that COMM10 and COMM11 are actual serial ports! Figure 2-9: Bluetooth profile interdependencies Figure 2-10: In a piconet, the slaves can only communicate to the master. Figure 2.11: A scatternet is formed when a slave in one piconet is the master in another piconet.
Chapter 4: Understanding the Java Bluetooth API Figure 4-1: Service records in the SDDB Figure 4-2: An individual attribute of a service record Figure 4-3: An illustration of a service record attribute Figure 4-4: DataElements Figure 4-5: The service discovery process for a PDA that wants to use the services of a Bluetooth keyboard
Chapter 5: Bluetooth Bluetooth with J2ME MIDP for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Figure 5-1: J2ME Profiles andpages) configurations Apress © 2003 (352 The authors of this text describe how to develop wireless Java
Figure 5-2: Aapplications logical representation of an RMS record store using Bluetooth for a variety of platforms. This
includes an API overview of the Java library, development of
Figure 5-3: The application starts, andhighlights is now looking for remote Bluetooth devices. Bluetooth-based services, of security concerns, and more.
Figure 5-4: After a remote device is found, we now go into stealth mode (i.e., nondiscoverable). 5-5: The TDK USB Bluetooth device using a CSR Bluetooth radio Table Figure of Contents Bluetooth for Java
Figure 5-6: The initial screen for the Piconet Browser application
Introduction
Chapter 1 - 5-7: Introducing Bluetooth Figure The Piconet Browser displays a list of Bluetooth devices in the area. Chapter 2 - Bluetooth 1.1
Figure TheYou Piconet Browser now displays the services offered by the remote device. Chapter 3 - 5-8: Before Get Started Chapter 4
- Understanding the Java Bluetooth API
Chapter - Bluetooth 6: Creating with J2ME a MIDP Bluetooth Print Server with JPS API
Chapter 5 Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter Figure 7 - 6-1: JavaYou and can OBEX use the 3Com Wireless Bluetooth Printer Adapter in order to make a traditional
(i.e., printer Bluetooth enabled. Chapter 8 non-Bluetooth) - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Figure 6-2: Using the handy utility provided in this chapter, you can turn your desktop into a Bluetooth print server.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Chapter 7: Java and OBEX
Appendix A - javax.bluetooth Appendix B - javax.obex
Figure is called IrOBEX on in the protocol stack. Appendix C - 7-1: JavaOBEX Bluetooth Development the IrDA PalmOS Platform Appendix D - BlipNet 1.1 API
Figure 7-2: An OBEX header
Index
List ofFigure Figures7-3: A sample message flow between OBEX clients and servers List of Tables
Chapter 8: Using a Bluetooth Simulator
List of Listings
List of Sidebars
Figure 8-1: The Rococo Impronto Simulator version 1.1 installation screen Figure 8-2: The Rococo Impronto Simulator Console Figure 8-3: Creating a new Bluetooth device in the Simulator Console is pretty simple. Figure 8-4: Configuring a cell phone in the Simulator environment Figure 8-5: The ChatServer Bluetooth device in the Impronto Simulator device list Figure 8-6: The ChatServer interacting with the ChatClient in the Impronto Simulator environment Figure 8-7: The server has sent a message and the client responds. Figure 8-8: The client receives a message and sends a reply.
Chapter 9: Bluetooth Security Figure 9-1: The Mobiwave BPA-D10 Bluetooth Protocol Analyzer Figure 9-2: The security server is waiting for the client to connect.
Figure 9-3: The security client is attempting to connect to the server. Bluetooth for Java
by Bruce Hopkins Ranjiththe Antony Figure 9-4: The security serverand prompts user to enter aISBN:1590590783 PIN for the application. Apress © 2003 (352 pages)
Figure 9-5: The has succeeded. Theauthentication authors of this process text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This
Figure 9-6: You needan to API be very careful if you're sendingdevelopment sensitive data includes overview of the Java library, of unencrypted between Bluetooth devices Bluetooth-based because it services, can be captured highlightsbyofasecurity third party concerns, using aand Bluetooth Protocol Analyzer. more.
Figure 9-7: With encryption enabled, the Protocol Analyzer is still able to capture the data transmission; however, the data is corrupted.
Table of Contents Bluetooth for Java
Chapter 10: Wireless Embedded Systems with the Micro BlueTarget
Introduction Chapter 1
- Introducing Bluetooth
Chapter 4
- Understanding the Java Bluetooth API
Figure 10-1: The Micro BlueTarget standard version is a small form factor embedded system with a Chapter 2 - Bluetooth 1.1 board outline of just 3.25.9 cm! This is a great solution for OEMs that want to make their devices Chapter 3 - Before You Get Started Bluetooth enabled. Chapter 5 - 10-2: Bluetooth MIDP Starter Kit uses a standard Micro BlueTarget and adds RS-232 Figure The with MicroJ2ME BlueTarget Chapter - Creating a Bluetooth with JPS API and6 Ethernet ports, which isPrint idealServer for developers who need to create quick prototypes and proofs of Chapter concepts. 7 - Java and OBEX Chapter 8
- Using a Bluetooth Simulator
Figure- 10-3: A Bluetooth phone utilizing the services of a fixed-wireless consumer system— a Bluetooth Security Bluetooth-enabled vending machine
Chapter 9
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 11 - 10-4: Enterprise Bluetooth Applications the Ericsson Figure A Bluetooth PDA receiving with the status from aBlipNet fixed-wireless commercial system— a Chapter 12 Bluetooth and Jini Bluetooth-enabled machine in a manufacturing facility Appendix A - javax.bluetooth
Figure A block diagram of the Micro BlueTarget hardware components Appendix B - 10-5: javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform
Figure 10-6: A structural overview of the HyNetOS for the Micro BlueTarget
Appendix D - BlipNet 1.1 API
IndexFigure 10-7: The memory map of the Micro BlueTarget. End user applications have about 1.5MB of List ofspace Figures on the flash disk. List of Tables
10-8: Using the built-in functionality of the Micro BlueTarget, you can have any Bluetooth device List ofFigure Listings with the LAN Access Profile access the Internet (or any other Ethernet-based network).
List of Sidebars
Figure 10-9: The L2CAPEcho Service Figure 10-10: Using the Micro BlueTarget to create a fixed-wireless system
Chapter 11: Enterprise Bluetooth Applications with the Ericsson BlipNet Figure 11-1: An architecture diagram of the Ericsson BlipNet Figure 11-2: You can use the BlipNet API and custom J2SE code to access external resources like databases, directories, and e-mail servers. Figure 11-3: A single BlipNode Figure 11-4: The BlipManager application
Chapter 12: Bluetooth and Jini Figure 12-1: These three entities must exist before a Jini federation is established. The federation itself hasn't been formed because the entities don't know anything about each other yet.
Figure 12-2: The Service Provider discovers the Lookup Service and receives its Bluetooth for Java ServiceRegistrar object. The ServiceRegistrar is used to interact with the Lookup Service ISBN:1590590783 by Bruce Hopkins and Ranjith Antony via its public methods. Apress © 2003 (352 pages)
this textregisters describe its how to develop wireless Java Figure 12-3: The The authors ServiceofProvider ServiceItem with the Lookup Service. applications using Bluetooth for a variety of platforms. This
an API overview of theaJava library,request development of Service Consumer and Figure 12-4: includes The Lookup Service receives multicast from the Bluetooth-based services, highlights of security concerns, and responds withmore. a unicast message containing the ServiceRegistrar object.
Figure 12-5: The Service Consumer uses the local ServiceRegistrar object to look up services that are in the Lookup Service. Table registered of Contents Bluetooth for Java
Figure 12-6: The ServiceItem requested is returned to the Service Consumer and can be used locally.
Introduction
Chapter 1 - 12-7: Introducing Bluetooth on the Service Consumer, the Service Provider's service may Figure Once activated Chapter 2 - Bluetooth 1.1 with the Service Provider device as part of the service offered. communicate directly Chapter 3
- Before You Get Started Figure In an all-Bluetooth Jini federation, all the devices participating in the federation must be Chapter 4 - 12-8: Understanding the Java Bluetooth API
Bluetooth enabled. This federation is wireless. - Bluetooth with J2ME MIDP
Chapter 5
Chapter 6 - 12-9: Creating Bluetooth Print Server with JPS API Figure In aahybrid Bluetooth Jini federation, at least one of the devices participating in the Chapter 7 Java and OBEX federation must be Bluetooth enabled. This federation is not (necessarily) wireless, and the JiniChapter 8 - Using a Bluetooth Bluetooth-enabled deviceSimulator acts as a bridge between the Jini federation and an external Bluetooth Chapter 9 - Bluetooth Security piconet. Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Figure TheBluetooth PsiNode Applications development platform. The Ericsson Chapter 11 - 12-10: Enterprise with the Ericsson BlipNet Bluetooth module is covered by two metal andand is connected to the Dallas Semiconductor TINI microcontroller. Chapter 12 -plates, Bluetooth Jini Appendix A - javax.bluetooth
Appendix C: Java Bluetooth Development on the PalmOS Platform
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform
Figure With TDK Bluetooth Developer's Kit and the PalmOS emulator, you can develop, Appendix D - C-1: BlipNet 1.1the API Indexdeploy, and test your Java Bluetooth applications all within the environment of your development List ofmachine. Figures List of Tables
Figure C-2: The MIDP-Chat application
List of Listings
List of Sidebars
Bluetooth for Java List of Tables by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
Chapter 2: The Bluetooth 1.1 authors of this text describe how to develop wireless Java applications using Bluetooth for a variety of platforms. This includes Radio an API Frequencies overview of the Java library, development of Table 2-1: Common
Bluetooth-based services, highlights of security concerns, and more.
Table 2-2: Bluetooth Device Power Classes
Table 2-3: Layers of the Bluetooth Protocol Stack
Table of Contents Bluetooth for Java
Chapter 3: Before You Get Started
Introduction Chapter 1
- Introducing Bluetooth
Table Classes Chapter 2 -3-1: Bluetooth 1.1in the javax.bluetooth Package Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Table 3-2: Classes in the javax.obex Package
Chapter 5 -3-3: Bluetooth with J2MESDK MIDPVendors Table Java Bluetooth Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX Chapter 4: Understanding the Java Bluetooth API
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
Bluetooth Security Table -4-1: Bluetooth Discovery Modes
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter Table 11 -4-2: Enterprise Bluetooth Bluetooth Major and Applications Minor Device with the Classes Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Table 4-3: Common UUID Values for Bluetooth Protocol Layers
Appendix A - javax.bluetooth
Appendix B -4-4: javax.obex Table Common UUID Values for Bluetooth Profiles Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API
Chapter 7: Java and OBEX
Index
List of Figures
Table 7-1: OBEX Headers in the java.obex.HeaderSet Interface
List of Tables
List of Listings List of Sidebars
Bluetooth for Java List of Listings by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Apress © 2003 (352 pages)
Chapter 4: The Understanding the Java authors of this text describe how to Bluetooth develop wirelessAPI Java applications using Bluetooth for a variety of platforms. This includes an API overview of the the Atinav Java library, Listing 4-1: Stack Initialization Code for SDK development of
Bluetooth-based services, highlights of security concerns, and more.
Listing 4-2: BluetoothSetup1.java
Listing 4-3: DeviceProperties.java
Table of Contents
Bluetooth for4-4: JavaThe Service Registration Process Listing Introduction
Listing OpeningBluetooth Connections on a Bluetooth Server Chapter 1 - 4-5: Introducing Chapter 2
- Bluetooth 1.1
- Before You Get Startedwith J2ME MIDP Chapter 5: Bluetooth
Chapter 3 Chapter 4
- Understanding the Java Bluetooth API
Chapter 5 - 5-1: Bluetooth with J2ME MIDP Listing Stealth.java Chapter 6
- Creating a Bluetooth Print Server with JPS API
Listing Chapter 7 - 5-2: JavaBeamTsk.java and OBEX Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Listing 5-3: PiconetMIDlet.java.
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget
Chapter 6: Creating a Bluetooth Print Server with JPS API
Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini
Listing 6-1: JPSPrint.java
Appendix A - javax.bluetooth
Appendix B - 6-2: javax.obex Listing JPSBluetoothPrint.java Appendix C - Java Bluetooth Development on the PalmOS Platform
Listing JPSBluetoothPrintClient.java Appendix D - 6-3: BlipNet 1.1 API Index
Chapter 7: Java and OBEX
List of Figures List of Tables
List ofListing Listings 7-1: FTServer.java List of Sidebars
Listing 7-2: FTClient.java
Chapter 8: Using a Bluetooth Simulator Listing 8-1: mydevice.xml Listing 8-2: ChatServer.java Listing 8-3: ChatClient.java
Chapter 9: Bluetooth Security Listing 9-1: Bank Account Information Listing 9-2: A 1024-Bit Encryption Key Listing 9-3: Bank Account Information Encrypted with the CAST Algorithm Listing 9-4: ServerApp.java Listing 9-5: ClientApp.java
Chapter 10:Bluetooth Wireless Embedded Systems with the Micro BlueTarget for Java by Bruce Hopkins and Ranjith Antony
ISBN:1590590783
Listing 10-1: Apress L2CAPEchoServer.java © 2003 (352 pages) The authors of this text describe how to develop wireless Java
Listing 10-2: applications L2CAPEchoClient.java using Bluetooth for a variety of platforms. This
includes an API overview of the Java library, development of
Listing 10-3: Bluetooth-based SPP2COMM.java services, highlights of security concerns, and more.
Chapter 11: Enterprise Bluetooth Applications with the Ericsson Table of Contents BlipNet Bluetooth for Java Introduction Listing 11-1: Tracking.java Chapter 1 - Introducing Bluetooth Chapter 2
- Bluetooth 1.1
Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Chapter 6
- Creating a Bluetooth Print Server with JPS API
Chapter 7
- Java and OBEX
Chapter 8
- Using a Bluetooth Simulator
Chapter 9
- Bluetooth Security
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet Chapter 12 - Bluetooth and Jini Appendix A - javax.bluetooth Appendix B - javax.obex Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix D - BlipNet 1.1 API Index List of Figures List of Tables List of Listings List of Sidebars
Bluetooth for Java
by Bruce Hopkins and Ranjith Antony List of Sidebars
ISBN:1590590783
Apress © 2003 (352 pages) authors of this text describe how to develop wireless Java Chapter 2: The Bluetooth applications using1.1 Bluetooth for a variety of platforms. This includes an API overview of the Java library, development of Bluetooth-based services, highlights of security concerns, and Bluetooth Profiles vs. J2ME Profiles more.
Chapter 5: Bluetooth with J2ME MIDP Table of Contents Bluetooth for Java Working with the Example Code Introduction Chapter 1
- Introducing Bluetooth Chapter 6: Creating a Bluetooth Print Server with JPS API Chapter 2 - Bluetooth 1.1 Chapter 3
- Before You Get Started
Chapter 4
- Understanding the Java Bluetooth API
Chapter 5
- Bluetooth with J2ME MIDP
Printers and Print Services
Chapter 7: Java and Print OBEX - Creating a Bluetooth Server with JPS API
Chapter 6 Chapter 7
- Java and OBEX
More Connection URLs and the SDDB Chapter 8 on - Using a Bluetooth Simulator Chapter 9
- Bluetooth Security
Chapter 8: Using a Bluetooth Simulator
Chapter 10 - Wireless Embedded Systems with the Micro BlueTarget Chapter 11 - Enterprise Bluetooth Applications with the Ericsson BlipNet
Difference Between Simulator and an Emulator Chapter 12 - Bluetooth andaJini Appendix A - javax.bluetooth
Chapter 9: Bluetooth Security
Appendix B - javax.obex
Appendix C - Java Bluetooth Development on the PalmOS Platform Appendix - BlipNet 1.1 API MoreD on Mobiwave BPA-D10 Index List of Figures List of Tables List of Listings List of Sidebars