Proceedings Template - WORD



Palm Multimedia and VoIP Design

Marc Pevoteaux

CS525 Spring 2006

4350 Centennial Blvd.

Colorado Springs, CO 80907

(719) 594 - 8000

mp.contact@

Ronald Erickson

CS525 Spring 2006

4350 Centennial Blvd.

Colorado Springs, CO 80907

(719) 594 - 8033

ronald_erickson@

ABSTRACT

A brief background of the capabilities of the software package provided by Palm OS codenamed Cobalt It also includes a brief history of PalmPilot hardware developed by Jeff Hawkins in early 1992. But with the introduction of Palm OS Cobalt by PalmSource, Inc. a more detailed description of the multimedia capabilities of the new Palm OS is described.

Although, many new features including new security measures are included with this new Palm OS, This paper will only emphasize on the multimedia capabilities available to the third-party developer interested in developing applications in the multimedia rich environment included within the Palm OS.

General Terms

Documentation, Performance, Design, Theory,

Keywords

PDA - Personal Digital Assistant

PC – Personal Computer

OS - Operating System

WiFi/Bluetooth – Wireless Capable

USB – Universal Serial Bus

API – Application Program Interface

PDK – Program Development Kit

ARM - Advanced RISC Machine

VoIP - Voice Over Internet Protocol

OBEX – Object Exchange

PPP – Point to Point Protocol

TCP – Transmission Control Protocol

UDP – User Datagram Protocol

IP – Internet Protocol

PIM - Personal Information Manager

No Permission is made to make digital or hard copies of all or part of this work for personal or classroom use is granted. Whether this paper is distributed for profit or commercial advantage. UCCS CS525 Multimedia Computing and Communications Spring 2006, May 8, 2006, Colorado Springs, Colorado, USA Copyright 2006

INTRODUCTION

The introduction of Palm OS Cobalt by PalmSource, Inc. extends the personal digital assistant platform leadership position in areas such as multimedia and communications for PDA hardware applications. It comes standard with a more robust security framework within more wireless capabilities.

The result of these improvements in the core Palm OS is that the programmer is empowered develop applications more rapidly, with a greater level of device independence, which allows the programmer the leverage of much more enriching development resources in areas of market growth and innovation.

But how did this small idea of a personal digital assistant translate into the up down business model it has become? But what was the history of this idea, how did it become a reality, and what features of the new Palm OS that makes the operating system so multi-media enriching.

A programmer friendly flexible architecture supports access and playback of both audio and video. The new Standard support for ADPCM/PCM, MP3, MPEG1 and MPEG4 is included within the programming environment with a sample player application included.

Built-in support and APIs enable licensees and developers to create richer and more sophisticated multimedia applications based on the latest technology. Multimedia apps can now be seamlessly run in the background along with other applications. For example, PDA users can have audio running in the background while performing a task in the foreground without any noticeable program latency.

BACKGROUND

The PalmPilot was invented by Jeff Hawkins. After working on a project called GRiD, a handwriting recognition application for the first tablet PC. So in 1992, Jeff Hawkins founded Palm Computing to work on his first project, the Zoomer, a cross between a tablet PC and a PDA “personal digital assistant”. Eventually, Jeff decided to build his own PDA, including hardware, software, and Operating System (OS). But, sold Palm Computing to US Robotics because they had the capital and manufacturing facilities to bring his PDA to market faster.

Jeff' Hawkins line of PDA which were originally called Pilots, then called PalmPilots, and finally changed to Palms were an immense success for US Robotics. But in the mid-90’s great success was a double edged sword. Very successful smaller companies were being bought up by larger companies and USR, which owned Palm, was bought by 3Com.

The integration of Palm into 3Com didn't work too well. Frustrated by having to put more time into office activities than actual hands-on design. Therefore in June 1998, Jeff left Palm to form another PDA company called Handspring. Later that year 3Com decided to spin off Palm Incorporated as a separate company. Palm Inc. split into PalmSource, the Palm OS part of the company and palmOne, the hardware part of the company.

Meanwhile back at Handspring, Jeff created a different PDA called the Visor, a Palm OS device which could accept a Cell Phone card, and eventually the Treo, a Palm PDA OS device with an integrated cell phone. In 2003, Handspring merged with Palm, Inc.'s hardware division to form palmOne. The Treo 600 was the last product to use the Handspring name.

Unfortunately, a number of PDA manufacturers who had been licensing the Palm OS from Palm, and then PalmSource have dropped out of the business of making Palm PDA's, especially for the US market. Some have continued making PDA's for the Japanese market. A large part of this problem was the fact that the licensing fees for Palm OS were prohibitive. In fact, palmOne, no longer limited to PalmOS and its high licensing fees, has been taking steps toward releasing Pocket PC Microsoft Windows CE products and Linux products, in addition to Palm OS products.

In the latest stages of the Palm history, the latest PalmSource product, Palm OS version 6, named Cobalt, version 6.1 focuses on enabling faster and more efficient development of smart phones and integrated wireless WiFi/Bluetooth handhelds. While Cobalt has been around for quite some time, Palm OS version 5, named Garnet, has been successfully running on a number of new devices, such as all of the new Palm devices.

Recently, PalmSource was bought by ACCESS, a Japanese company whose products include a PDA Web browser and other PDA Web integration tools.

ACCESS has committed to supporting the continuing development of Palm OS for Linux, and has committed to support the current Palm OS. Probably, the best thing that could happen to the strength and popularity of the Palm OS would be to make it an Open Source operating system. The strong Palm application developer community would jump at the chance to improve Palm OS, and the struggling Palm hardware communities would be invigorated by the wide development and much lower OS costs.

The two major versions of Palm OS are currently under development: Palm OS Garnet (5.x), and Palm OS Cobalt (6.x). As of August 2005, all devices still use Palm OS Garnet. Palm OS Garnet applications are primarily coded in C/C++. Two compilers exist: a commercial product, CodeWarrior Development Studio for Palm OS, and an open source tool chain called prc-tools, based on an old version of gcc.

CodeWarrior is criticized for being expensive and is no longer being developed, whereas PRC-Tools lack several of CodeWarrior's features. A version of PRC-Tools is included in a free Palm OS Developer Suite PODS. Palm OS Cobalt applications are also coded in a variation of gcc, but the Cobalt compilers have fewer limitations. But as a result of Palm OS Cobalt's lack of adoption, PalmSource has shifted to developing Palm OS Cobalt's APIs on top of a Linux kernel. In February 2006 PalmSource announced ACCESS Linux Platform, the latest evolution of Palm OS for Linux. Whether this name is intended as a complete replacement for the Palm OS name is not known.

PALM CAPABILITIES

Palm OS Cobalt version 6.1 focuses on enabling faster and more efficient development of smartphones and integrated wireless (WiFi/Bluetooth) handhelds. [1]

This new release builds on the successful introduction of Palm OS Cobalt. Palm OS Cobalt is a modern operating system designed from the ground up to enable new classes of smart phones and other wireless devices while maintaining the legendary, “ease of use” that users expect.

Palm OS Cobalt, version 6.1 is available to PalmSource licensees as a Product Development Kit (PDK, it is available as a new set of APIs, tools, and documentation in a Software Development Kit (SDK).

1 Palm OS Cobalt Highlights

[pic]

Figure 1.0 Cobalt component-by-component breakdown

- 32-bit fully ARM™-native OS

- Scalable, modular, standards-based architecture

- Fully multithreading and multitasking operating system

- Unified, STREAMS-based communications architecture

- Standard high-density display support for multiple screen configurations

- Extensible multimedia framework to ease development of next-generation applications

- Improved synchronization architecture

2 Performance

ARM v5T architecture support targeting - ARM9 Core 200MHz+ microprocessors

Reference hardware:

- Application Module: Freescale™ i.MX21ADS development board

- Phone Module: CMCS GSM/GPRS

- NAND: M-Systems Mobile DiskOnChip™ (MDOC)

3 Display & User Interface

- New user interface widgets (buttons, form titles, lists, scroll bars, sliders, pick lists, text boxes, check boxes, push buttons)

- Support for new high-resolution, QVGA, QVGA (240x240), 320x320, HVGA and VGA displays at up to 32bpp color depth

- New support for hardware graphics accelerators

4 Memory

- 32MB SDRAM + 32MB NAND Flash

- PDA configuration* 32MB SDRAM + 16MB NOR ROM

- * VGA configurations will require additional RAM

- 128MB Built in memory

5 Communications & Networking

- Pluggable, industry standard, STREAMS-based framework

- Multiple communications tasks can run simultaneously

- Secure I/O framework for driver installation

- Standard connection application for easy setup and configuration of Internet connections via GPRS, Bluetooth, WiFi, serial, modem

1 Drivers included:

- RS-232 serial

- IrDA

- USB, USB 1.1 Slave and new support for USB On the Go (master/slave)

- SD and MMC expansion card

- SDIO card support for adding peripherals such as wireless cards, cameras, or other devices

- Networking Protocols supported:

- TCP/UDP/IP

- IPv4, IPv6

- PPP

- OBEX

- Ethernet (for writing 802.11 drivers)

6 WiFi Support

- 802.11 support

- Uses the Connection Manager plug-in for easier user configuration

- Support for WEP (Wired Equivalent Privacy) security

- Support for third-party WPA (Wi-Fi Protected Access) solutions

7 Multimedia

Palm provides an extensible programming framework for creating advanced multimedia applications supports the following features:

- Audio playback of up to 16 streams, recording of a single stream

- Audio record mono/stereo, 8/16-bit, arbitrary sample rates

- Sound Manager for mixing sound sources

- Background playback

- Video playback

- APIs for access to audio/video hardware

Available codecs include: MP3, MPEG-4, MPEG-1, AAC, H.263, AMR, Ogg

MULTIMEDIA PROGRAMMING

The Palm Software Development Kit (SDK) and Applications Programming Interface provide several basic, as well as, extended interfaces to access the many multimedia hardware capabilities. Simple sound, streaming audio, streaming video, and WiFi can be programmed to produce a multimedia rich application. [2]

2 Sound

The Palm Sound Manager controls two independent sound sources:

- Simple sound: Single voice, monophonic, square-wave sound synthesis, system alerts.

- Sampled sound: Stereo, multi-format, sampled data recording and playback. Sampled sounds can be read from a file or programmatically generated.

These two sound sources are independent of each other. The two sources can be used simultaneously and do not share an API.[1]

1 Simple Sound

There are three ways to play a simple sound:

- A single-tone (individual amplitude, pitch, duration) can be played by calling SndDoCmd.

- Pre-defined system sounds (alerts) can be played through the SndPlaySystemSound method.

- Standard MIDI can be played through the SndPlaySmf function.

2 Sampled Sound

There are two ways to play sampled sounds:

- SndStreamCreate opens a new sampled sound "stream" from/into which you record/playback buffers of "raw" data.

- SndPlayResource is used to play sound data that's read from a (formatted) sound file. The function configures the playback stream for you, based on the format information in the sound file header.

A resource playback cannot be interrupted once it has been started. The resource always plays to the end of the data. The Sound Manager also provides functions that let you set the volume and stereo settings.

3 MIDI

Musical Instrument Digital Interface. MIDI is a standardized protocol for communication between electronic music devices as well as between those devices and computers. For example, sound modules and computers can use MIDI to communicate.

Palm supports standard MIDI file support. MIDI data can be stored in the system MIDI database. The database type sysFileTMidi is associated with MIDI record databases. Each record is defined by a MIDI record header, the name of the MIDI data, and the MIDI data. Figure 1.0 illustrates a Palm compliant MIDI record format. [2]

[pic]

Figure 1.1 Palm MIDI Record Format

Access to a MIDI database can be gained through the DMOpenDatabaseByTypeCreator function and specifying the sysFileTMidi parameter. The MIDI data structure, SndMidiRecType, be used to retrieve attribute data; it is null-terminated. To write a MIDI records use the DmNewRecord and DmWrite functions. To retrieve a MIDI record, you can use the SndCreateMidiList function if you know the record's creator, or you can use the Data Manager functions to iterate through all MIDI records.

4 Sound Streams

A sound-stream reads or sends sampled data from the hardware. The following formats are supported and documented under the SndFormatTag definition:

- sndFormatPCM - Pulse Code Modulation format. This is the "no encoding" format; the data is a series of samples that are linear with regard to amplitude quantization and regular with regard to sampling rate.

- sndFormatIMA_ADPCM - The Interactive Multimedia Association's implementation of "adaptive delta" encoding. The sampling rate is constant, but the quantization is non-linear.

- sndFormatDVI_ADPCM - Microsoft's adaptive delta implementation. This is the same as IMA ADPCM.

- sndFormatMP3 - Motion Picture Group Audio Layer III.

- sndFormatAAC - Dolby Advanced Audio Coding.

- sndFormatOGG - OGG Vorbis encoding.

One input stream and 15 output streams that can be run concurrently. The sampled sound API provides the functionality for sound streaming.

To implement sound-stream information such as quantization, sampling rate, channel count must be sent via the SndStreamCreate function. The SndStreamStart function calls the SndStreamBufferCallback function to process the buffers contents. In the case of an input stream the callback functions job is to empty the buffer, process the data, and return. In the case of an output stream the process is reversed; the callback fills the buffer.

All callbacks run on the same process and with the large amounts of data it is well documented that the callback needs to be implemented to run as quickly as possible. If a callback for a stream takes to long other callbacks will be delayed and the stream will not seem fluid.

5 Stream Buffering [6]

Audio streams are double-buffered. With regard to playback, this means that while one buffer (buffer A) is being played, the callback function is placing data in the other buffer (B). When A is "empty," the Sound Manager seamlessly starts playing buffer B, and passes buffer A back to your callback; when B is empty, it starts playing A, and passes back B, and so on. It's important that your callback function fills the data buffers as quickly as possible—certainly no longer than it takes to play a buffer of data. This same double-buffer scheme is also applied to sound recording although, of course, for recording you're emptying each buffer (and doing something with the data) in your callback function.

3 Multimedia

The multimedia API used to control the playback and recording of audio-visual media on Palm devices. The API includes control to access media from any of the following sources:

- Local – stored on device or expanded storage.

- Remote – stored on a network.

- Hardware – attached hardware (microphone, camera, etc)

The Palm OS supports multiple playback or recording sessions running concurrently. Sessions may also be run in the background while other applications are being used and can interact with other sessions simultaneously.

There are four main components to the multimedia architecture. Figure 2.0 shows a visual representation of the multimedia architecture. [2]

[pic]

Figure 2.0 Multimedia architecture

The multimedia client application, like a media player, is a third party application that runs as an application process. The Multimedia Library provides the application programming interface that the clients use to interface with Palm features. The Movie Server runs as a system process and manages the background processes called Sessions. The client applications can access the Session through the API.

1 Sessions

A multimedia session is created by calling the MMSessionCreate function and is responsible for managing the data transportation. Each session is setup through the definition of sources and destinations, streams, and tracks.

A source specifies a device such as a microphone or camera. Sources can be setup by calling the MMSessionAddSource function. A destination specifies a device such as a screen or the speakers. A destination can be setup by calling the MMSessionAddDest function. In the case of both source and destination, a network stream or file may be used instead of a hardware device. Each source and destination has at least one stream associated with it, each stream represents a single kind of data it processes or produces. Sources, however, usually have multiple associated streams (audio and video). Streams are created by the MMSourceFinalize function. A track defines a route from a source device to a destination device. Tracks are responsible for encoding or decoding a stream using codec’s as it routes it from source to destination. Both sources and destinations can be assigned to different tracks so that each stream's data is routed to a separate device.

Sessions are controlled through the MMSessionControl function by specifying one of the MMSessionControlOpcode Typedefs listed below:

- P_MM_SESSION_CTL_RUN = 0x01 - Start or continue recording or playback.

- P_MM_SESSION_CTL_PAUSE = 0x02 - Pause recording or playback.

- P_MM_SESSION_CTL_STOP = 0x03 - Stop recording or playback.

- P_MM_SESSION_CTL_PREFETCH = 0x04 - Begin buffering data from the source.

- P_MM_SESSION_CTL_GRAB = 0x05 - Grab a still image from camera or video.

- P_MM_SESSION_CTL_REFRESH = 0x06 - Refresh the display.

- P_MM_SESSION_CTL_CUSTOM_BASE = 0x1000

2 Codecs

Tracks route data through codecs. A codec takes an audio sample and digitizes it, often compressing it as part of the process. A codec may also take a compressed digital signal and return it to an analog audio sample A stream uses a codec during playback. During recording, the stream uses an encoder before writing to the file stream.

File formats are described by an MMFormatType value. Palm provides the following codecs with its OS.

- MS-ADPCM - Audio Decoder

- DVI-ADPCM - Audio Decoder

- MPEG - Audio Layer I/II Decoder

- MPEG-1 - Video Decoder

- MS-ADPCM - Audio Encoder

- AVI - Extractor

- MPEG - Audio Extractor

- MPEG-1 - Extractor

- WAV - Extractor

- WAV - Composer

Codecs are often provided by the hardware developer and can be installed alongside the device. An example of this would be an MP3 codec supplied with a player.

4 Internet

Palm devices are capable of establishing internet connections over a wireless network. These connections can be used to transmit and receive data. Palm devices can contain built-in WiFi hardware or can be expanded with external third-party hardware. Palm also implements Bluetooth networking capabilities. Due to the limited range of Bluetooth this document will concentrate on utilizing a WiFi connection.

1 WiFi Connections

Wireless networks typically consist of a server (connected to the internet) a wireless router and a separate client PC or device with a wireless modem connected to it. Palm API provides support for WiFi wireless networking through a set of ioctl commands that can be used to find, connect, and communicate over wireless networks.

The WiFi interface can be located by calling the IOSGetDriverNameByIndex function. The function returns an interface name. The interface can be opened by calling the IOSOpen function. Information about the devices capabilities such as encryption support, transmission rates, signal strength, or SSID can be queried by using the IOSIoctl function. A scan of available WiFi networks can be performed by using the WIOSCAN parameter with the IOSIoctl function. Connection to a WiFi interface is done by specifying the WIOCONNECT type when calling the IOSIoctl function. To disconnect specify the WIODISCONNECT type when calling the IOSIoctl.

2 Sockets

In certain client-server applications communication that occurs between the client and the server must be reliable. TCP provides a reliable, point-to-point communication channel that client-server applications on the Internet use to communicate with each other. To communicate over TCP, a client program and a server program establish a connection to one another. A socket is one endpoint of a two-way communication link between two programs running on the network. A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent. Each program binds a socket to its end of the connection. To communicate, the client and the server each reads from and writes to the socket bound to the connection. Palm OS supports the standard 4.3BSD Sockets API for networking.

5 Applications and Events

Palm OS applications are event-driven: user actions and some system requests are placed in an event queue from which the events can be retrieved and acted upon. Each thread running in either the Application or Background process can have its own event queue into which events destined for that thread are placed The operating system places into each queue only those events that is relevant for that queue.

The IOS STDIO provides the facilities for communicating directly with any kind of communications device with a suitable driver, through a standard set of APIs. IOS STDIO also provides an automated event polling mechanism that can be implemented as an application event.

When an application is executed, a typical Palm OS application does the following:

1. Perform any needed application-specific initialization.

1. Display the application's main form.

1. Enter a loop, retrieving and handling events until an appStopEvent is retrieved. This part of the program is known as the application event loop.

1. Perform any necessary cleanup, and exit.

The application typically it remains in the event loop until the system tells it to shut itself down by sending an appStopEvent through the event queue. The application must detect this event and terminate.

Events can be programmed to communicate with other events in the same process or even communicate with separate threads. This provides maximum flexability in creating application responses.

VoIP – A Design for Palm

Voice over IP (VoIP) is a combination of hardware and software that enables people to use the Internet as the transmission medium for telephone calls.  VoIP hardware and software work together to use the Internet to transmit telephone calls by sending voice data in packets using IP rather than by traditional circuit transmissions, called PSTN (Public Switched Telephone Network). The voice traffic is converted into data packets then routed over the Internet, or any IP network as normal data packets would be transmitted. When the data packets reach their destination, they are converted back to voice data again for the recipient.

Palm does not provide direct VoIP support with an application. It does however seem to have that an application could be developed using the existing Palm API’s and a WiFi capable device.

1 Hardware Requirements

Hardware for the VoIP application would need to support audio input, audio output, audio compression, audio decompression, and wireless capability. The following list details the possible hardware requirements to develop VoIP capability on a Palm:

- Palm Device running Palm OS (Standard API included)

- External Microphone

- WiFi capabilities

- Wireless connection

2 Software Requirements

Palm Client Application

- Device driver for microphone

- Codec for sound compression

Server Side Application

- Possible secure support

- Possible database for managing data

3 Client Application Design

The client application would provide the acquisition, transmission, and playback capabilities. The client would need to be installed on the each Palm device. The client application would require the following core capabilities:

- Establish a Wireless connection to a server

- Receive data – bring in and digitize the voice through the hardware (microphone)

- Encode data – encode data into a compressed format

- Transmit Data – transmit data over internet connection

- Receive Data – receive data from internet connection

- Decode Data – decode compressed data

- Present Data – send data to hardware (speakers) for audio presentation

- Manage events

In addition to the processing capabilities the application would also need to establish and manage a possibly secure internet connection. Since Palm devices utilize WiFi connections this connection would need to be wireless. device to device communication could potentially be built, but support for a wireless Local Area Network would need to be designed in. For simplicity the application proposed here would utilize a client-server-client connection.

[pic]

Figure 4.0 Palm VoIP Client Application design

1 2 Establishing a Connection

The client application would need to establish a WiFi connection to the server in order to communicate over a network. The client application can connect to a server by implementing the IOSGetDriverNameByIndex function. The application would then need to open a connection using the IOSOpen function. If needed a scan for available networks would be implemented. Scanning for networks is also supported by the API.

3 Receiving Data

The client application would implement the Multimedia API to receive voice data through the external microphone. The client would need to create a new Session and setup the source attribute to point to the microphone. A new stream would be created with the session object. In order to reduce the transmitter record delay the sample rate of the hardware would need to be minimized. An alternative to this approach could be incorporating a separate Digital Signal Processing (DSP) piece of hardware that would incorporate the microphone and digitizing procedure could improve the acquisition speed and encoding.[8]

4 Encoding Data

The Sessions track would route the audio through a codec for compression. Although the Palm device comes with several codecs, one that is designed specifically for VoIP or voice compression should e utilized and therefore supplied with the client application. The International Telecommunications Union, Telecom Standardization Sector (ITU-T) sets VoIP standards.[7] These standards include codec algorithms for the digitization of voice and protocols for signaling for call setup/teardown. The Internet Engineering Task Force (IETF) works with the ITU-T on standards, and is also responsible for the Internet Protocol (IP) standards for TCP/IP.

1 Codec Selection

There are many different codecs, each with its own characteristics, advantages and disadvantages. Codecs can be hardware or software and are identified by the ITU designation.

|Codec |Data Rate |Packet Construction Delay |

|G.711u |64 Kbps |1 ms |

|G.711a |64 Kbps |1 ms |

|G.726-32 |32 Kbps |1 ms |

|G.729 |8 Kbps |25 ms |

|G.723.1 MPMLQ |6.3 Kbps |68 ms |

|G.723.1 ACELP |5.4 Kbps |68 ms |

Table 1: Common VoIP Codecs

Codecs trade bandwidth for speed. In other words, a codec that is capable of compressing an audio sample a great deal consumes very little bandwidth, but it takes longer to process the signal.

This processing delay can be detrimental to the quality of a call, in addition to any quality loss incurred due to the compression of the sample. Taking into the relatively slow processing power of the Palm as compared to the computer a compromise on quality would have to be made to reduce the encoding delay. As processing power of the Palm increases in future the transition over to a higher quality codec could be made.

5 Transmitting Data

The encoded data would be routed via the track definition to an applications data stream and sent to the network server trough the socket interface. The server would route the data to the appropriate recipient client. Ideally two sockets would be used so voice and data could be processed simultaneously. Small software buffers would need to be implemented to send sizable packets with quantifiable information. Transmission delay over WiFi networks is one of the biggest hurdles to providing a fluid “streaming” experience. Dedicating circuits to the transmission of VoIP data would significantly increase the Quality of Service (QoS) of VoIP

Providing guaranteed QoS for VoIP requires a better traffic management approach to bound latency and jitter and to avoid packet loss. This must be addressed at both the node and network levels.

The packets of explicitly admitted connections/flows, either signaled or pre-provisioned, must be distinguished from other packets. On a dedicated network these packets will be provided guaranteed QoS, while all others will receive best effort service or no service at all. This requires a network resource management (NRM) function that either network elements themselves or an external software system can implement. Key ingredients for this include buffer allocation; packet policing and marking and congestion control; priority queuing, and scheduling.

By segmenting packets into small cells, the switch ensures that higher priority packets arriving after a lower priority packet begins to be switched does not have to wait for that entire packet to be switched before being serviced.

Guaranteeing QoS would require Palm or a third party service provider to create the network infrastructure to work in conjunction with the VoIP application.

Of course these services would come with a large price tag. For proof of concept one could deal with the inherent delay in a standard network connection or create a sub net to provide a relatively short transmission path.

6 Decoding Data

The client would process the received data stream and route the encoded data via the track definition to the codec for decompression. The decompressed data would then be routed to the programmed destination. Once again proper selection of a low delay codec is critical to obtaining a smooth streaming experience.

7 Presenting the Data

The Destination attribute would need to be set to the speakers or headset, which ever is selected. This attribute could be set based of the detection of a headset on the device. Since two streams were created incoming audio could be played while outgoing data was acquired.

8 Managing Events

The client applications main event loop would need to detect the two data streams created (transmit and receive). Two threads would need to be managed together from the applications main thread.

Using the event queue, the application would add each event to the event queue by calling EvtAddEventToEventQueue() or EvtAddUniqueEventToEventQueue().

4 Server Application

The server application in its simplest form would just forward data to the recipient. This could be implemented with no sever side code in the form of a router. A more advanced application could be created with a small database to manage connections and IP addresses.

[pic]

Figure 4.1 Server Integration

5 VoIP Feasibility

Palm does not provide a VoIP application. Exploration of the Palm API and hardware capabilities reveal that a VOIP application could potentially be created. Implementation of a VoIP application using the standard API and Palm hardware would most likely only be able to be demonstrated in concept. Default hardware acquisition rates would most likely delay conversion to packets and a transmission delay would almost always be present due to non-dedicated network circuits and would degrade the VOIP applications ability to seem seamless. In reality the success of such an application would require incorporating a custom DSP piece of equipment that could convert voice directly into packets and working with an ISP to put together a dedicated network that could guarantee QoS .

SUMMARY

The invention of the modern day PDA by Jeff Hawkins in the early 90’s started the beginning of handheld mobile computing. The Palm operating system has experienced an up and down history over the last 10 years. The Palm OS platform has survived the technology downturn of 2001 and continues to move forward with industry leading features. Although, the Palm OS platform codenamed Cobalt has not become widely accepted by industry, the previous OS codenamed Garnett continues to function admirably.

However, the multimedia rich features of Cobalt will cause consumers to demand new programs and applications to be developed into this mobile OS version. This next generation mobile operating system, Palm OS Cobalt delivers a host of new available features to licensees and developers, these new features will create new opportunities in mobile computing.

The new Palm OS Cobalt mobile computing platform is a complete rewrite of Palm OS this has resulted in a new OS architecture, providing a platform for developers that enables them to reduce their development cycle.

It also delivers a new and innovative product to the PDA software customer while still providing new major advancements for the Palm Mobile platform. With this new re-write, PalmSource was careful to maintain support for PACE (Portable Applications Compatibility Environment). This careful approach to the re-write of the OS platform ensured that the older 68K-based applications will continue to run on new platform Palm OS Cobalt.

Palm Cobalt OS provides an extensible programming framework for creating advanced multimedia applications and supports the following features. Audio playback of up to 16 streams, recording of a single stream creates richer audio sound and capabilities. When recording audio, the audio stream can be saved in mono/stereo, 8-bit or 16-bit, capable of arbitrary sample rates.

The OS has a built-in sound manager for mixing sound sources. Cobalt also has a built-in background playback and a video playback.

The built-in software application program interface for access to audio and video hardware, makes the hardware more connectable and simple for the programmer.

Although voice over IP (VoIP) the combination of hardware and software that enables people to use the Internet as the transmission medium for telephone calls is not currently available in the Palm OS codenamed Cobalt. The hardware and software could work together using the existing Palm API’s and WiFi hardware to use the Internet to transmit telephone calls. The hardware would use the IP rather than by traditional circuit transmissions to make phone calls. It seems very viable this feature could be implemented in the next Palm OS platform version.

REFERENCES

1] Palm Inc, Access, Inc, Palm OS Cobalt 6.1, 1188 East Arques Avenue, Sunnyvale, CA 94085

2] PalmSource, Palm Inc, Palm OS Protein SDK Documentation, Exploring the Palm OS, PalmSource, Inc., 1996–2004.

3] Mass, B. Palm OS Programming Development Tools Guide. Document Number 3011-006, PalmSource, Inc., 1996 – 2003.

4] TealPoint Software. TealMovie User’s Manual. Program Version 4.08, November 4, 1997.

5] Han, R. , Lin, C, Smith, J. R. ,Tseng B. and Ha, V., Universal Tuner: A Video Streaming System for CPU/Power-Constrained Mobile Devices, IBM T. J. Watson Research Center, Yorktown Heights, NY 10598, October 5, 2001

6] PalmSource, Palm Inc, Palm OS Programmers API Reference, Exploring the Palm OSPalm OS 68K SDK

7] International Telecommunication Union,

8] PMC, PMC-Seierra, News Release, PMC-Sierra Announces Acquisition of Malleable Technologies, Vancouver, BC, june 14 2000

9] PalmOne Inc, History of Palm Product Hardware

10] PalmOne Inc, Corporate Timeline of Palm Hardware

11] Wikipedia, The Free Encyclopedia, Palm PDA

12] PalmSource, Palm Inc, Palm OS Releases, Exploring Palm OS Cobalt

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download