Wireless Service Engineering

Development issues on mobile wireless devices

Resources

  • Mallick: Mobile and wireless design essentials
  • Mikkonen: Mobiiliohjelmointi
  • Python for Symbian
  • tons of different j2me books and symbian books

Properties of Wireless devices

  • Different sizes
    • screen size
    • physical size
  • Operating systems
    • Different applications
    • Different libraries and API's
    • Different possibilities for application development

  • Communication capabilities
    • Support for different technologies
  • User interfaces
  • Storage space
  • Memory
  • Computational power
  • Power sources and “uptime”

Wireless Mobile devices

  • Laptops
    • subnotebooks, netbooks, mini laptops (Eee PC)
  • Tablet Computers
    • Internet tablets N770, N810
  • PDA's
    • Palm Pilot, IPAQ, zaurus,

  • Mobile Phones
    • from: Nokia, Motorola, Ericson, Siemens, Samsung….
  • Gaming devices
    • Nintendo Gameboy family, Sony PSP, Nokia N-gage
  • Special devices
    • Active badge, IBM Personal server, Wiimote, RFID readers, one task devices,

Operating systems on mobile devices

  • Linux
    • Laptops, PDA's, Mobile phones
    • Many other embedded devices use also linux e.g. access points
    • Lot of projects to port linux in other devices (for example nintendo DS)
    • Most of the desktop programs have been ported for arm linux.
    • Android software stack by google
  • Windows
    • Windows mobile for PDA's and Mobile Phones, XP and Vista for laptops and netbooks
    • Most of the programs developed for desktop versions of windows can be found also for windows mobile

  • Palm OS
    • PDA's and mobile phones
  • Symbian
    • Mobile phones
  • Plenty of proprietary and specialised OS's exist
    • Create your own

Developing programs for mobile devices

  • OS dependent development (native)
    • Programs run only on the given OS
      • Programs are compiled not only for the given OS but also on given hardware e.g. arm.
    • Lots of API's
    • Good access to hardware

  • Symbian, Windows, Linux, Palm
  • Windows and Linux development
    • Development done similarly than to for desktop
    • Programs has to be compiled to the proper hardware architecture
    • Restrictions on available libraries.
      • Special libraries for example to UI (portability problems)

  • OS independent (interpreted)
    • Java , BREW (Binary Runtime Environment for Wireless), python
    • An extra engine running on the device over the OS → addiotional overhead.
    • Programs compatible for many devices
    • Not all interfaces available
    • Limited access to hardware
    • Still can require addiotional work on porting

Symbian

  • CT30A5201 Symbian Programming
  • OO design,
    • C++ libraries
    • Good support for mobility
    • Lot of middleware
  • Good development tools
    • Different development platforms/libraries for different types of devices
      • Series 60, Series 80, UIQ …
    • Emulators for different environments
    • Python support

Windows Mobile

Linux

  • Rarely “native” or pre installed
  • Good access to hardware
  • Many different embedded linux versions for different hardware
    • e.g. arm linux for arm processors
  • Most of the applications can be cross-compiled to different target hardware.
    • Scratchbox crosscompiling environment.
      • includes also emulator for arm.
    • API's and libraries from desktop version can be used
    • Same tools can be used as for developing desktop applications

  • Familiar linux for PDA devices
    • PDA optimised GUI
      • support to both OPIE (based on trolltech qtopia) and GPE (GTK+X) graphical user environments
    • Familiar v0.8.4 for the iPAQ h3600, h3700, h3800, h3900, h5400, and h5500 series, and Siemens Simpad
    • ipkg package management system for application distribution

Java

  • Virtual machine Interpreted byte code
    • Different virtual machines for different types of devices
    • Extra layer between hardware and application
    • Applications are bigger and require more memory
  • Programs (may) have limited access to the devices resources
    • sandbox based security

  • Sun Java 2 wireless toolkit ( formerly J2ME) http://java.sun.com/products/sjwtoolkit/
    • Different configurations for different devices
    • Configurations are composed of the two low-level APIs and optimized virtual machines targeted at two broad categories of devices
      • CDC (Connected Device Configuration)
      • CLDC (Connected Limited Device Configuration)

  • Different profiles for different cases
    • A profile is a specification that details the Java technology APIs, built on top of and utilizing the underlying Configuration.
    • MIDP (Mobile information device profile) for (CLDC)
    • foundation profile, personal profile….(for CDC)
  • Problems
    • virtual machines on handsets function differently e.g. timers
    • Different profiles complicate application porting

Android

  • Open handset alliance
  • Software platform runnin over linux operating system
  • Development done in Java
    • Do not follow java profiles
  • Own java virtual machine
  • own software development kit

BREW

  • Binary Runtime Environment for Wireless http://www.qualcomm.com/brew
  • Software platform that can download and run small programs e.g. games
  • Originally supported by qualcomm chipset based CDMA phones
    • as of today BREW air interface can support GSM/GPRS and UMTS along with CDMA
    • Mainly used in USA market
  • BREW code can be created by using C, C++ or even Java

  • BREW applications delivery is controlled
    • Applications has to go through external testing (TRUE BREW testing)
    • Additional restrictions to developers (?)
    • Customers can trust that applications don't contain malware (if they trust that the quality assurance system works)
  • End-to-end solution
    • Applications given to BREW operators
    • Applications traded between operators at BREW marketplace
    • Customers can buy brew applications from operators
    • BREW facilitates subscriber billing and settlement to publishers, developers and their partners through the BREW Delivery System

LISÄÄ KUVA!!

Python

  • Interpreted O-O programmnig language
    • Compiles to interpreted byte code
      • compilation is implicit and automatic
    • Same code works in all devices (almost)
  • Extensible (add new modules)
    • C/C++/Fortran/whatever
    • Java (through Jython)
  • Memory management automatic
    • reference counting for most situations
    • GC added for cycle detection

  • “Safe”:
    • no core dumps due to your bugs
    • Good exception handling
  • Extremely portable
    • Unix/Linux, Windows, Mac, RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, BeOS, VMS…
    • Most of the newest mobile platforms supported.
      • Linux, PalmOS, WindowsCE, Sharp Zaurus, Internet tablet OS 2006+Maemo, Symbian and series 60

  • Some python modules may not exist for the given platform
    • Some of the modules used in different platforms have different API
      • GUI: maemo has gtk+hildon while symbian python has appuifgw
      • removed modules in maemo: dlelib, tkinter, config, bsddb, test, email.test, aifc, audiodev, SimpleHTTPServer, SimpleXMLRPCServer, CGIHTTPServer, cgi, cgitb, dbhash, curses, tzparse, posixfile, DocXMLRPCServer, getpass, macpath, macurl2path, mutex, netrc, nturl2path, os2emxpath, pty, pyclbr, regsub, rexec, rlcompleter, robotparser, smtpd, statcache, statvfs, stringold, subprocess, sunaudio, sunau, symtable, tabnanny, telnetlib, this, xmllib, timeit, toaiff, trace, tty, user, whrandom, xdrlib, rgbimage, rgbimg, audioop, crypt, linuxaudiodev, nis, mmap, readline, ossaudiodev, syslog and termios

  • Performance
    • Slightly slower than java
    • Requires less memory than java
  • Good for creating prototypes
    • Fast to write and understand
    • no cross compiling problems

Device related questions

  • What is the target group for our service/application
    • What kind of devices the group has
      • What capabilities the devices have
    • What is the environment for the service
    • Can we create special device for all the users
  • What are the capabilities required from the device for our service
    • Does the device has required applications
    • Can we create own applications to the device
    • How much computation is required

OS related questions on mobile devices

  • What kind of programs exist for the given OS (thin client)
    • Web browsers
    • Messaging
  • Is it possbile to create own applications for the OS (smart client)
    • At what cost?
    • What interfaces are offered?
  • What kind of development tools exist for the platform