Contents
Foreword
Saila Laitinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Part I Introduction
1 Introduction to Mobile Phone Programming
Frank H.P. Fitzek, Frank Reichert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Evolution of the Mobile Phones, Networks, and Services . . . . . . . . . 3
1.1.1 Mobile Phone Family . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 The Flexible Mobile Phone . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Wireless Technologies and Architectures . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1 Cellular Communication Systems . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.2 Short-Range Communication Systems . . . . . . . . . . . . . . . . . . . 11
1.3 Mobile Application Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Structure of the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Part II Mobile Phone Programming Languages
2 Python for Symbian Phones
J¨urgen Scheible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Python for S60 Installation and Resources . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 Software Installation on the Phone . . . . . . . . . . . . . . . . . . . . . 24
2.2.2 Software Installation on the PC (for S60 Platform Device
Emulator Use) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 Writing a Python Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1 How Python Runs Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2 Three Basic Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.3 The First Script Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
xii Contents
2.4 A Short Python Syntax Lesson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Overview of Python for S60 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6 Modules – and How to Program Python for S60 Scripts . . . . . . . . . . 29
2.6.1 Messaging Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.2 Appuifw Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6.3 Application Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.4 Audio Module: Sound Recording and Playing . . . . . . . . . . . . 37
2.6.5 Variable Scope: Local, Global . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6.6 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6.7 Inbox Module: Reading Incoming SMS . . . . . . . . . . . . . . . . . . 40
2.6.8 Graphics Module and the Use of Keyboard Keys . . . . . . . . . 41
2.6.9 Image Composition Application: MobileArtBlog . . . . . . . . . . 43
2.6.10 3D Graphics: gles and glcanvas Modules . . . . . . . . . . . . . . . . 44
2.6.11 Camera Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.6.12 Video Download and Playing – the Use of Content Handler 46
2.6.13 File Upload to a URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.6.14 Mobile Photo Blogging Application . . . . . . . . . . . . . . . . . . . . . 48
2.6.15 File Handling and Data Storing . . . . . . . . . . . . . . . . . . . . . . . . 48
2.6.16 Socket Module: Bluetooth, TCP/IP, and SSL . . . . . . . . . . . . 49
2.6.17 sysinfo Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.6.18 Location Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.6.19 Telephone Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.6.20 Contact Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7 Creating Stand-Alone Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.8 Symbian Platform Security and Python for S60 . . . . . . . . . . . . . . . . . 59
2.9 Creating Python Extensions in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.10 Further Reading Sources on Python for S60 . . . . . . . . . . . . . . . . . . . . 60
2.11 Code Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.12 Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3 Java 2 Micro Edition
Gian Paolo Perrucci, Andreas H¨aber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1 Java Family Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2 J2ME Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2.1 Less Capable Devices: Targeting CLDC . . . . . . . . . . . . . . . . . 66
3.2.2 More Capable Devices: Targeting CDC . . . . . . . . . . . . . . . . . 67
3.2.3 Networking Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.4 Optional Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.5 Java Technology Standardization . . . . . . . . . . . . . . . . . . . . . . . 71
3.3 Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.1 Java Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.2 NetBeans IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.3.3 Developing MIDP Applications for CLDC . . . . . . . . . . . . . . . 77
3.3.4 Developing CDC Applications . . . . . . . . . . . . . . . . . . . . . . . . . 82
Contents xiii
3.4 Application Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.4.1 Wireless Messaging API: Sending SMS . . . . . . . . . . . . . . . . . . 87
3.4.2 Mobile Multimedia API: Audio Player . . . . . . . . . . . . . . . . . . 88
3.4.3 Communication: Downloading Documents with GCF . . . . . 90
3.4.4 XML Parsing: Parsing RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4 Symbian/C++
Morten V. Pedersen, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.2 Setting up the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2.1 Additional Installation Requirements . . . . . . . . . . . . . . . . . . . 97
4.2.2 Overview of the SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.2.3 Overview of the Carbide.c++ Express IDE 1.1 . . . . . . . . . . . 99
4.2.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.3 Symbian OS in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.3.1 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3.2 Exception Handling and Resource Management . . . . . . . . . . 112
4.3.3 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.3.4 Active Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.4 Wireless Communication Technologies . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.4.1 Using TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.4.2 Bluetooth OBEX, SMS, and Email . . . . . . . . . . . . . . . . . . . . . 135
4.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5 Open C
Eero Penttinen, Antti Saukko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2 What is Open C? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3 Setting up the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.4 Getting Started with Open C: Hello World . . . . . . . . . . . . . . . . . . . . . 144
5.5 Open C and Symbian/S60 Interaction . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.5.1 Open C DLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.5.2 String/Descriptor Conversions . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.5.3 GLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.6 Guidance for Porting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.6.1 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.6.2 Configuring and Making the Source on Linux . . . . . . . . . . . . 157
5.6.3 Modifying Configuration Files in the S60 Development
Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.6.4 Modifying the Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
xiv Contents
6 Qtopia Greenphone
Thomas Arildsen, Morten L. Jørgensen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.1 The Greenphone and Qtopia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.2 Setting up the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.3 FTP File Transfer Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
6.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7 Maemo Linux
Matti Sillanp¨a¨a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.2 Scratchbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
7.2.1 Under the Hood . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2.2 Getting Started with Scratchbox . . . . . . . . . . . . . . . . . . . . . . . 180
7.2.3 Your First Cross-Developed Program . . . . . . . . . . . . . . . . . . . 182
7.3 The Nokia 770 Internet Tablet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.3.1 Maemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.3.2 Installing Maemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.3.3 Setting up the X Windowing Environment . . . . . . . . . . . . . . 194
7.4 Using Eclipse with Scratchbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.4.1 Setting up Eclipse with Scratchbox Support . . . . . . . . . . . . . 196
7.4.2 Creating a Scratchbox Project . . . . . . . . . . . . . . . . . . . . . . . . . 199
7.4.3 Debugging Inside Scratchbox . . . . . . . . . . . . . . . . . . . . . . . . . . 202
7.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8 Windows Mobile Programming
Rico Wind, Christian S. Jensen, Kristian Torp . . . . . . . . . . . . . . . . . . . . . . 207
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
8.2 .Net and C# in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
8.3 .Net Compact Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
8.3.1 Using the Windows Mobile Emulator . . . . . . . . . . . . . . . . . . . 213
8.3.2 Installing Programs on Mobile Devices . . . . . . . . . . . . . . . . . . 214
8.4 Using the Windows Mobile Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.4.1 Controls in the System.Windows.Forms Namespace . . . . . . . 215
8.4.2 Controls Specific to Windows Mobile . . . . . . . . . . . . . . . . . . . 218
8.5 Network Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.5.1 Network Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.6 Visual Studio IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.6.1 An Overview of Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.6.2 Using Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.6.3 Using Databases with ADO.Net . . . . . . . . . . . . . . . . . . . . . . . . 230
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Contents xv
Part III Infrastructure-Based Communication
9 Service Discovery
Andreas H¨aber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
9.1 Service Discovery in Real Life . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
9.1.1 Active and Passive Service Discovery . . . . . . . . . . . . . . . . . . . 240
9.2 Service Discovery in Computer Networks. . . . . . . . . . . . . . . . . . . . . . . 240
9.2.1 Where to Send a Packet to? . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
9.2.2 Address Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9.2.3 Basic Service Discovery in Computer Networks . . . . . . . . . . . 242
9.3 Universal Plug & Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.3.1 UPnP Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.3.2 UPnP Device Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
9.3.3 Libraries for UPnP Development . . . . . . . . . . . . . . . . . . . . . . . 254
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Part IV Peer-to-Peer Communication
10 Digital Ownership for P2P Networks
Michael Stini, and Martin Mauve, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . 259
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
10.2 Digital Content and Its Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10.3 Basic Elements of Digital Ownership . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.4 Digital Ownership Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.5 Digital Ownership Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
10.6 First Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
10.7 An Example for DRM Usage: iTunes . . . . . . . . . . . . . . . . . . . . . . . . . . 268
10.8 Conclusions and Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
11 SMARTEX: The SmartME Application
Morten V. Pedersen, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
11.2 The Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
11.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
12 The Walkie Talkie Application
Morten V. Pedersen, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
12.2 The Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
12.2.1 UI Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
12.2.2 The Control/Push-To-Talk Protocol Layer . . . . . . . . . . . . . . 277
12.2.3 Bluetooth and Audio Modules . . . . . . . . . . . . . . . . . . . . . . . . . 277
12.3 Bluetooth-IP Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
xvi Contents
12.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Part V Cooperative Communication
13 Cooperative Wireless Networking: An Introductory
Overview
Marcos D. Katz, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
13.2 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
13.2.1 Increasing Demand of Energy/Power . . . . . . . . . . . . . . . . . . . 286
13.2.2 Spectrum Scarcity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
13.2.3 Complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
13.2.4 Appealing Services and Applications . . . . . . . . . . . . . . . . . . . . 288
13.2.5 Demanding Communicational Capabilities . . . . . . . . . . . . . . . 288
13.3 Cooperative Principles in Wireless Networks: An Introduction . . . . 289
13.3.1 Communicational Cooperation . . . . . . . . . . . . . . . . . . . . . . . . . 289
13.3.2 Operational Cooperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
13.3.3 Social Cooperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
13.4 Cooperation in Heterogeneous Networks:
The Emergence of a Novel Paradigm . . . . . . . . . . . . . . . . . . . . . . . . . . 293
13.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
14 The Medium is the Message
Anders Grauballe, Ulrik Wilken Rasmussen, Mikkel Gade Jensen,
Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
14.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
14.2 Identification of the Needed Functionality . . . . . . . . . . . . . . . . . . . . . . 301
14.2.1 Functionality Available in Python . . . . . . . . . . . . . . . . . . . . . . 301
14.2.2 Adding Functionality to Python . . . . . . . . . . . . . . . . . . . . . . . . 301
14.3 Realization of the Idea with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
14.4 Measurement Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
14.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
15 Peer-to-Peer File Sharing for Mobile Devices
Imre Kel´enyi, Gergely Cs´ucs, Bertalan Forstner, Hassan Charaf . . . . . . . 311
15.1 Peer-to-Peer File Sharing in General . . . . . . . . . . . . . . . . . . . . . . . . . . 311
15.1.1 Gnutella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
15.1.2 BitTorrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
15.2 Thoughts on the Mobile Implementation . . . . . . . . . . . . . . . . . . . . . . . 316
15.2.1 Separating the User Interface from the Application
Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Contents xvii
15.2.2 Accessing the Mobile Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
15.3 Symella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
15.4 SymTorrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
15.4.1 The Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
15.4.2 Using the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
15.4.3 The Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
15.5 Summary and Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
16 Energy Saving Aspects and Services
for Cooperative Wireless Networks
Leonardo Militano, Gergely Cs´ucs, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . 325
16.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
16.2 Test-bed Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
16.3 Description of the Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
16.4 Measurement Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
16.5 The BitTorrent Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
16.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Part VI Cross-Layer Communication
17 Cross-Layer Protocol Design for Wireless Communication
Thomas Arildsen, Frank H.P. Fitzek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
17.2 Cross-Layer Protocol Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
17.2.1 The Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
17.2.2 Communication Across Protocol Layers . . . . . . . . . . . . . . . . . 348
17.2.3 State of the Art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
17.3 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
18 Cross-Layer Example for Multimedia Services
over Bluetooth
Morten V. Pedersen, Gian Paolo Perrucci, Thomas Arildsen, Tatiana
Kozlova Madsen, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
18.2 Adaptive Header Compression for Bluetooth . . . . . . . . . . . . . . . . . . . 364
18.3 Groundwork for Cross-Layer Design . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
18.3.1 Symbian Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
18.3.2 Packet Selection Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
18.3.3 Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
18.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
xviii Contents
Part VII Sensor Networks
19 Convergence of Mobile Devices and Wireless Sensor
Networks
Frank H.P. Fitzek, Stephan Rein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
19.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
19.2 Classification of Different Convergence Forms . . . . . . . . . . . . . . . . . . . 376
19.3 First Demonstrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
20 Using In-built RFID/NFC, Cameras, and 3D
Accelerometers as Mobile Phone Sensors
Paul Coulton, Will Bamford, Fadi Chehimi, Paul Gilberstson, Omer
Rashid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
20.1 Using RFID/NFC on Mobile Phones . . . . . . . . . . . . . . . . . . . . . . . . . . 381
20.1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
20.1.2 Overview of JSR-257 (Contactless Communication) . . . . . . . 382
20.1.3 Programming with Nokia NFC and RFID SDK . . . . . . . . . . 385
20.1.4 Using Nokia NFC and RFID API . . . . . . . . . . . . . . . . . . . . . . 385
20.2 Using Cameras on Mobile Phones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
20.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
20.2.2 Programming the Camera in J2ME . . . . . . . . . . . . . . . . . . . . . 386
20.2.3 Programming the Camera in S60 . . . . . . . . . . . . . . . . . . . . . . . 389
20.3 Motion Interfaces using 3D Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
20.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
20.3.2 Programming 3D Motion Sensors in Symbian . . . . . . . . . . . . 394
20.4 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
21 Sensor Networks for Distributed Computing
Stephan Rein, Clemens G¨uhmann, Frank H.P. Fitzek . . . . . . . . . . . . . . . . . 397
21.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
21.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
21.2.1 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
21.2.2 Transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
21.3 Software Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
21.3.1 Medium Access Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
21.3.2 Research in Signal Processing: the Problem . . . . . . . . . . . . . . 405
21.3.3 The Stack: An Embedded Calculator . . . . . . . . . . . . . . . . . . . 406
21.4 Distributed Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
21.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Contents xix
22 Parking Assistant Application
Janne Dahl Rasmussen, Peter Østergaard, Jeppe Jensen, Anders
Grauballe, Gian Paolo Perrucci, Ben Krøyer, Frank H.P. Fitzek . . . . . . . 411
22.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
22.2 Mounting the Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
22.3 JAVA Realization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
22.3.1 Install Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
22.3.2 Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
22.3.3 Exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
22.4 Python Realization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
22.5 Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Part VIII Power Consumption in Mobile Devices
23 Energy Efficiency of Video Decoder Implementations
Olli Silv´en, Tero Rintaluoma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
23.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
23.2 Mobile Video Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
23.3 Mobile Video Codec Implementations/Platforms . . . . . . . . . . . . . . . . 426
23.3.1 Software-based Decoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
23.3.2 Hardware-based Decoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
23.4 Software Interfacing Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
23.4.1 Operating System Costs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
23.4.2 The Cost of a Multimedia Software Framework . . . . . . . . . . 433
23.4.3 Internal Interface Overheads . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
23.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
23.6 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
24 External Energy Consumption Measurements on Mobile
Phones
Frank H.P. Fitzek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
24.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
24.2 Measurement Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
24.3 Example of Energy Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
25 Optimizing Mobile Software with Built-in Power Profiling
Gerard Bosch Creus, Mika Kuulusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
25.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
25.2 S60 Power Profiling Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
25.3 Carbide.c++ Power-Performance Profiling . . . . . . . . . . . . . . . . . . . . . 456
25.4 Energy-Efficient Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
25.5 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
List of Contributors
Anders Grauballe
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
agraubal@es.aau.dk
Andreas H¨aber
Agder University College
Faculty of Engineering and Science
Grooseveien 36
Servicebox 509
N-4898 Grimstad
Norway
andreas.haber@hia.no
Antti Saukko
Nokia
It¨amerenkatu 11–13
FIN-00180 Helsinki
Finland
antti.saukko@nokia.com
Bertalan Forstner
Budapest University of Technology
and Economics
H-1111 Budapest, Goldmann Gy¨orgy
t´er 3. Hungary
bertalan.forstner@aut.bme.hu
Ben Krøyer
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
bk@es.aau.dk
Christian S. Jensen
Aalborg University
Department of Computer Science
Fredrik Bajers Vej 7E
DK-9220 Aalborg Øst
csj@cs.aau.dk
Clemens G¨uhmann
Technische Universit¨at Berlin
Einsteinufer 17
10587 Berlin, Germany
clemens.guehmann@tu-berlin.de
Eero Penttinen
Nokia
It¨amerenkatu 11–13
FIN-00180 Helsinki
Finland
eero.penttinen@nokia.com
Fadi Chehimi
Informatics
Infolab21
Lancaster University
Lancaster, LA1 4WA, UK
f.chehimi@lancaster.ac.uk
xxii List of Contributors
Frank H.P. Fitzek
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
ff@es.aau.dk
Frank Reichert
Agder University College
Faculty of Engineering and Science
Grooseveien 36
Servicebox 509
N-4898 Grimstad, Norway
frank.reichert@hia.no
Gerard Bosch i Creus
Nokia Research Center
It¨amerenkatu 11–13
FIN-00180 Helsinki
Finland
gerard.bosch@nokia.com
Gergely Cs´ucs
Budapest University of Technology
and Economics
H-1111 Budapest, Goldmann Gy¨orgy
t´er 3. Hungary
gergely.csucs@aut.bme.hu
Gian Paolo Perrucci
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
gpp@es.aau.dk
Hassan Charaf
Budapest University of Technology
and Economics
H-1111 Budapest, Goldmann Gy¨orgy
t´er 3. Hungary
hassan@aut.bme.hu
Imre Kel´enyi
Budapest University of Technology
and Economics
H-1111 Budapest, Goldmann Gy¨orgy
t´er 3. Hungary
imre.kelenyi@aut.bme.hu
Janne Dahl Rasmussen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
jannedr@es.aau.dk
Jeppe Jensen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
jeppe85@es.aau.dk
J¨urgen Scheible
University of Art and Design
Helsinki Media Lab
H¨ameentie 135C
FI-00560 Helsinki, Finland
jscheib@uiah.fi
Kristian Torp
Aalborg University
Department of Computer Science
Fredrik Bajers Vej 7E
DK-9220 Aalborg Øst
torp@cs.aau.dk
Leonardo Militano
University Mediterranea of Reggio
Calabria
Faculty of Engineering, Department
DIMET
Via Graziella, Loc. Feo di Vito
89100 Reggio Calabria, Italy
leonardo.militano@unirc.it
Marcos Katz
VTT
Kaitov¨ayl¨a 1, Oulu
P.O.Box 1100
FI-90571 Oulu
FINLAND
List of Contributors xxiii
Martin Mauve
Heinrich-Heine-University
Universit¨atsstr. 1
D-40225 D¨usseldorf, Germany
mauve@cs.uni-duesseldorf.de
Matti Sillanp¨a¨a
Nokia Research Center
It¨amerenkatu 11–13
FIN-00180 Helsinki
Finland
matti.jo.sillanpaa@nokia.com
Michael Stini
Heinrich-Heine-University
Universit¨atsstr. 1
D-40225 D¨usseldorf, Germany
stini@cs.uni-duesseldorf.de
Mika Kuulusa
Nokia Technology Platforms
It¨amerenkatu 11–13
FIN-00180 Helsinki
Finland
mika.kuulusa@nokia.com
Mikkel Gade Jensen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
mgade@es.aau.dk
Morten L. Jørgensen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
mljo@es.aau.dk
Morten V. Pedersen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
mvpe@es.aau.dk
Olli Silv´en
Department of Electrical
and Information Engineering
P.O.B. 4500
FI-90014 University of Oulu, Finland
Olli.Silven@ee.oulu.fi
Omer Rashid
Informatics
Infolab21
Lancaster University
Lancaster, LA1 4WA, UK
m.rashid@lancaster.ac.uk
Paul Coulton
Informatics
Infolab21
Lancaster University
Lancaster, LA1 4WA, UK
p.coulton@lancaster.ac.uk
Paul Gilbertson
Informatics
Infolab21
Lancaster University
Lancaster, LA1 4WA, UK
p.gilbertson@lancaster.ac.uk
Peter Østergaard
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
petero@es.aau.dk
Rico Wind
Aalborg University
Department of Computer Science
Fredrik Bajers Vej 7E
DK-9220 Aalborg Øst
rw@cs.aau.dk
Stephan Rein
Technische Universit¨at Berlin
Einsteinufer 17
10587 Berlin, Germany
stephan.rein@tu-berlin.de
xxiv List of Contributors
Tatiana Kozlova Madsen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
tatiana@kom.aau.dk
Tero Rintaluoma
Hantro Products Oy
Kiviharjunlenkki 1
FI-90220 Oulu, Finland
Tero.Rintaluoma@hantro.com
Thomas Arildsen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
tha@es.aau.dk
Ulrik W. Rasmussen
Aalborg University
Department of Electronic Systems
Niels Jernes Vej 12
DK-9220 Aalborg, Denmark
wilken@es.aau.dk
Will Bamford
Informatics
Infolab21
Lancaster University
Lancaster, LA1 4WA, UK
w.bamford@lancaster.ac.uk
thanks..............
The technology evolution has been once and for all beyond comparison during the past decade or two. Any of us can nowadays do numerous things with numerous devices to help in everyday life. This applies not least to mobile phones. If we compare the feature set of a mobile phone model in 1995 with the latest smartphone models the most visible difference is of course in the user interface, the mp3 player, integrated camera, and the access to the mobile Internet.