Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEMS AND METHODS FOR DEVELOPMENT AND TESTING OF SUBSCRIBER IDENTITY MODULE APPLICATIONS
Document Type and Number:
WIPO Patent Application WO/2008/151205
Kind Code:
A3
Abstract:
Techniques for developing an application for a subscriber identity module include receiving a communication stream from a piece of terminal equipment. The communication stream includes commands generated by the terminal equipment. It is determined whether a command in the communication stream is an application development command or a network access command. Application development commands are directed to an application development subscriber identity module. Network access commands are directed to a network access subscriber identity module. When command responses are received from the application development subscriber identity module or the network access subscriber identity module, the command responses are sent back to the terminal equipment.

Inventors:
EICHENWALD DANIEL ROBERT (US)
GUTHERY SCOTT BATES (US)
PAPIA ANDREW LAWRENCE (US)
ROBINTON MARK EDWARD (US)
Application Number:
PCT/US2008/065695
Publication Date:
January 07, 2010
Filing Date:
June 03, 2008
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
WORLDCELL INC (US)
EICHENWALD DANIEL ROBERT (US)
GUTHERY SCOTT BATES (US)
PAPIA ANDREW LAWRENCE (US)
ROBINTON MARK EDWARD (US)
International Classes:
H04Q7/20
Domestic Patent References:
WO2007006841A12007-01-18
Foreign References:
US20030100299A12003-05-29
US20050021875A12005-01-27
US20040043792A12004-03-04
US20020073393A12002-06-13
US6760886B12004-07-06
US7058726B12006-06-06
Attorney, Agent or Firm:
MOLINELLI, Eugene et al. (P.O. Box 7024Fairfax Station, VA, US)
Download PDF:
Claims:

CLAIMS

What is claimed is:

1. A router for use in developing and testing an application for a subscriber identity module, comprising: means for receiving a communication stream from a piece of terminal equipment, the communication stream including commands generated by the terminal equipment; means for determining whether a command in the communication stream is an application development command or a network access command; means for routing application development commands to an application development subscriber identity module; means for routing network access commands to a network access subscriber identity module; means for receiving command responses from the application development subscriber identity module and the network access subscriber identity module; and means for sending the command responses back to the terminal equipment.

2. A method for developing an application for a subscriber identity module, comprising: receiving a communication stream from a piece of terminal equipment, the communication stream including commands generated by the terminal equipment; determining whether a command in the communication stream is an application development command or a network access command; routing application development commands to an application development subscriber identity module; routing network access commands to a network access subscriber identity module; receiving command responses from the application development subscriber identity module and the network access subscriber identity module; and sending the command responses back to the terminal equipment.

3. A system for developing and testing an application for a subscriber identity module, comprising: a Y- Router having a terminal port for connecting to a terminal device, and first and second subscriber identity module ports for connecting to first and second subscriber identity modules; means for connecting the Y-Router terminal port to a subscriber identity module connector on a terminal device; means for connecting the first Y-Router subscriber identity port to an application development and testing subscriber identity module; and means for connecting the second Y-Router subscriber identity port to a network access subscriber identity module, wherein the Y-Router includes means for receiving and analyzing commands from the terminal device and for routing commands identified as application development commands to the application development and testing subscriber identity module, and for routing commands identified as network access commands to the network access subscriber identity module, and the Y-Router further includes means for receiving command responses from the subscriber identity modules and for routing those command responses back to the terminal device.

Description:

SYSTEMS AND METHODS FOR DEVELOPMENT AND TESTING OF SUBSCRIBER IDENTITY MODULE APPLICATIONS

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims benefit of United States Provisional Appln. 60/942188, filed June 5, 2007, under 35 U.S.C. §119(e).

[0002] This application also claims benefit of United States Provisional Appln. 60/944,062, filed June 14, 2007, the entire contents of which are hereby incorporated by reference as if fully set forth herein, under 35 U.S.C. §119(e).

BACKGROUND OF THE INVENTION

1. Field of the Invention

[0003] The present invention relates generally to mobile telephone devices and methods, and in particular to improved systems and methods for the development and testing of subscriber identity module applications.

2. Description of the Related Art

[0004] A subscriber identity module (SIM) is a removable "smart" card for wireless network devices, such as mobile telephones, and the like. A SIM card securely stores a service- subscriber key used to identify the wireless device to the network. A SIM card allows a user to change devices by simply removing the SIM card from one mobile device and inserting into another device with a suitable slot.

[0005] A subscriber identity module (SIM) is activated and can subsequently be used for the purpose of accessing and using a mobile network when a network operator issues it to a customer. This process typically involves the storing of a cryptographic key material on the SIM by the network operator. This cryptographic key material may be used, for example, to authenticate the SIM to the network operator's authentication center (AuC) and thus enable the terminal equipment to successfully access the wireless network.

[0006] When creating applications for the SIM, development work is typically done on development integrated circuit cards (ICC) that have not been issued or activated by a network operator. These SIMs therefore do not contain the cryptographic key material necessary to access a commercial wireless network. However, communication over a

commercial wireless network is preferable to develop, evaluate, measure and test the functionality of SIM-resident applications. As it is typically not possible for a developer building a new SIM application to load this new, and thus experimental, application onto an activated SIM containing the requisite cryptographic key material for wireless network access, development of SIM applications can become arduous and time-consuming and applications developed without network access during their development may be found to be unsatisfactory when they are finally used on a wireless network. [0007] A number of techniques are used in the current art to address the above- described issues. These techniques include the following.

[0008] A first technique entails the purchase of one or more wireless network simulators. These simulators are difficult to set up and maintain and require an administrator to oversee them. In addition, these network simulators cannot and do not accurately reflect the operational details of many commercial wireless networks. Finally, these simulated environments are very expensive and are typically out of financial reach for many application developers and software development enterprises. [0009] A second technique requires that a network operator issue to an application developer a network-activated SIM, onto which the developer can load developmental applications. Network operators do not distribute such SIMs without first establishing a close relationship with the developer. This happens infrequently, and is a common barrier to entry for many application developers. Furthermore, SIMs on which one can load an application are themselves special kinds of SIMs, such as Java Card SIMs, which place additional constraints on the application developer.

[0010] The third method requires a relationship with a network operator such that the network operator provides to the application developer the cryptographic key material necessary to access their wireless network. As network operators are very hesitant to release such cryptographic key material, these relationships often take months or even years to develop; and this method is rarely a commercially viable option.

SUMMARY OF THE INVENTION

[0011] Embodiments of the present invention are directed to systems and techniques in which a specially designed router mechanism is used in developing and testing an application for a subscriber identity module. The router receives means for receiving a communication stream from a piece of terminal equipment. The router analyzes the commands contained in the communication stream, and determines whether a command is an application development command or a network access command. Application development commands are routed to an application development subscriber identity module. Network access commands are directed to a network access subscriber identity module. Command responses from the application development subscriber identity module and the network access subscriber identity module are then sent back to the terminal equipment.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:

[0013] FIG. 1 is a block diagram illustrating an overall system according to an embodiment;

[0014] FIG. 2 is a block diagram illustrating a software implementation of a system according to an embodiment;

[0015] FIG. 3 is a block diagram illustrating a hardware implementation of the system according to an embodiment;

[0016] FIG. 4 is a block diagram illustrating a programmable integrated circuit implementation of a system according to an embodiment;

[0017] FIG. 5 is a block diagram illustrating a plan view of a cable for connecting terminal equipment to a Y-Router according to an embodiment;

[0018] FIG. 6 is a flowchart that illustrates at a high level, a method according to an embodiment; and

[0019] FIG. 7 is a block diagram that illustrates a computer syste upon which an embodiment of the invention may be implemented.

DETAILED DESCRIPTION

[0020] A method, apparatus and system are described for development and testing of subscriber identity modules (SIMs) in terminal equipment (TE), such as mobile telephones, or other like devices. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.

[0021] Multiple communications networks have evolved that support wireless communications with a mobile communications device, called a mobile station (MS) or terminal equipment (TE), such as a cell phone, a personal digital assistant (PDA) and a lap top computer. The Global System for Mobile Communications (GSM) is a digital cellular technology that is used worldwide, predominantly in Europe and Asia. GSM is the world's leading standard in digital wireless communications. GSM supports real time digital voice and multimedia streams. In the process of setting up sessions across the GSM network to carry such real time streams, signaling data packets are sent among network nodes. These signaling data packets use a signaling protocol, such as Signal System 7 (SS7), and are usually transparent to the user of the TE. The signaling data packets indicate the network address and other properties of the two communicating end stations (such as a dialed telephone number) and reserve network resources to support the communications. In some applications the signaling data packets are used to support short data messaging (SMS) and other data services.

[0022] In developing applications for a SIM, it is advantageous to be able to build the application in incremental steps, while testing on the actual wireless network accessed by the TE. According to various embodiments, this is accomplished by splitting the SIM-TE communication stream between two separate SIMs: 1] an application and development SIM; and 2] an existing, network-enabled SIM. Commands pertaining to the new application functionality are sent to the application development SIM, while commands pertaining to existing SIM functionality are sent to the network-enabled SIM. The new SIM application being developed can be running either on a second integrated circuit card

or on a suitable software development station, such as a computer, with software debugging capabilities.

[0023] As described hereinbelow, various embodiments provide methods, systems and devices that for a SIM software development environment. The described techniques can be used to test and debug new SIM applications as well as to study the performance characteristics of both new and existing SIM applications.

[0024] The described techniques allow terminal equipment to communicate with two SIMs concurrently. According to an aspect of the invention, one SIM is a developmental integrated circuit card that contains the application being developed. The other SIM is a SIM issued by a network operator that contains the cryptographic key material necessary to access the wireless network. Using hardware and software to manage and route communications between the terminal equipment and both of the SIMs, the new application on the first SIM achieves the ability to access the wireless network while using the second SIM to gain and maintain the authorization needed for this access. Because the illustrated embodiments split the communication from the terminal equipment to the SIM into two pathways, one for each of the SIMs, the method and device is called a "Y-Router." This Y-Router does not necessarily perform any of the data packet forwarding processes performed by intermediate network nodes called routers on internetwork layer protocols embedded in the data packets. [0025] FIG. 1 is a block diagram illustrating an overall system according to an embodiment, in which a development and testing computer with communication management software 110 is used to develop a SIM application. The system 100 includes terminal equipment (TE) 120 that generates a communication stream 130 to be fed to a SIM. This communication stream is generally referred to herein as an SIM-TE communication stream. The SIM-TE communications stream includes commands 132 generated by the terminal equipment 120 and command responses 134 generated by other components in the system 100 in response to the generated commands 132. [0026] As shown in FIG. 1, the SIM-TE communication stream 130 is not connected directly to a SIM. Rather, it is connected to Y-Router 140, which includes a command analyzer 142 and a router 144. First and second communication streams 150 and 160 connect the Y-Router 140, respectively, to an application development SIM 170 and an existing, network-enabled SIM 180.

[0027] When the Y-Router 140 receives commands 132 via the SIM-TE communication stream 130, the command analyzer module 142 analyzes each command 132 to determine whether the command 132 pertains to the new application functionality or to the existing application functionality.

[0028] If it is determined that a command 132 pertains to the new application functionality, the router 144 routes the command 132 to the application development SIM 170 via the application development communication stream 150. If it is determined that a command 132 pertains to existing network functionality (e.g., does not pertain to any new application functionality), the router 144 routes the command to the existing, network- enabled SIM 180 via communication stream 160. Thus, the application development SIM 170 is used to develop new applications, while the network-connected SIM 180 is used to provide a network connection and any older functionality. The system 100 therefore allows an application to be developed while connected into the network for which the application is being developed.

[0029] The Y-Router mechanism may be implemented in a number of different ways. As discussed below, further embodiments of the invention are directed to software and hardware implementations of the described system.

[0030] FIG. 2 is a block diagram illustrating a software implementation of a system according to an embodiment. The FIG. 2 system 200 includes a development and testing computer 210 that runs a suitable communication management software program, and also includes software components (e.g., instructions executing on a general purpose processor) allowing the computer 210 to function as a Y-Router, as described above. The computer 210 is used to develop and test new applications for terminal equipment 220, such as a cell phone or the like. According to some embodiments, the computer 210 is a suitable off-the-shelf product. The terminal equipment 220 is provided with a SIM slot for connection to a SIM device. In system 200, a suitable communication cable 230 is provided having a first end that connects to the terminal device SIM slot and a second end that connects to the computer 210. The computer 210 is connected to a first integrated card reader 240 for Application Development SIM 242 (labeled SIMl) and to a second integrated card reader 250 for Network Access SIM 252 (labeled SIM2). [0031] FIG. 3 is a block diagram illustrating a hardware implementation of the system according to an embodiment. The FIG. 3 system 300 includes a Y-Router device 310

having at least two SIM slots 312 and 314 (labeled SIMl and SIM2) and two communication cables 320 and 330. The first communication cable 320 is used to connect the device to terminal equipment 340. The second communication cable 330 is used to connect the device to a computer 350 running Y-Router communication management software. In FIG. 3, the Y-Router 310 is implemented using a dedicated, general-purpose computer in a box.

[0032] FIG. 4 is a block diagram illustrating a programmable integrated circuit implementation of a system according to an embodiment. FIG. 4 shows a system 400 in which the Y-Router is implemented as a printed circuit board with a dedicated programmable integrated circuit (PIC) 410, which has been programmed to route the commands from the terminal equipment. The printed circuit board provides connections to first and second SIMs 420 and 430 (labeled SIMl and SIM2), a connection to terminal equipment 440 and a connection to a development and testing computer 450. [0033] FIG. 5 is a block diagram illustrating a plan view of a cable for connecting terminal equipment to a Y-Router according to an embodiment. FIG. 5 shows a connector cable 500 for coupling terminal equipment to a Y-Router, in both the software and hardware embodiments described above. The cable is provided with integrated circuit card contacts (ICC) 510 on one end. The ICC end of this cable is inserted into a SIM slot of the terminal equipment. The second end 520 of the cable is connected to the Y-Router. The cable 500 carries all communications that the terminal equipment sends to the SIM to the Y-Router and sends all communications for the terminal equipment generated by either SIM card, by the Y-Router or by the development computer back to the terminal equipment

Methods of Operation.

[0034] According to the standards describing the interface between the terminal equipment and the subscriber identity module, the SIM-TE communication stream comprises command-response pairs. Each coupled pair is called an Application Protocol Data Unit (APDU). A command APDU is sent from the terminal equipment to the SIM and a response APDU is, as a consequence, returned from the SIM to the terminal equipment. The terminal equipment can use APDU commands to store data on the SIM or to retrieve data from the SIM. The terminal equipment can also use APDU commands to cause processing to occur on the SIM.

Example Routing of RUN GSM ALGORITHM Command. [0035] For wireless networks based on the Global System for Mobile communications (GSM) standards, the document ETSI GSM 11.11 describes in detail each APDU that can be sent from the terminal to the SIM. One particular APDU, the APDU named RUN GSM ALGORITHM, is used to authenticate a SIM to the wireless network. This APDU sends a 16-byte random number from the network operator via the terminal equipment to the SIM and calls for the SIM to perform particular cryptographic processing steps using the cryptographic key material stored on the SIM. In response, the SIM returns a 4-byte Signed Response (SRES) and a 12-byte Cipher Key (Kc) to the terminal equipment. The SRES portion of this response is returned to the network operator by the handset as a witness for the cryptographic key material contained on the SIM. After the network operator has verified this response, network access is granted to the terminal equipment.

[0036] In a method embodiment described herein, the terminal equipment (TE) communicates with the Y-Router and the communication management software, rather than directly with the SIM provided by the network operator. The Y-Router and the communication management software then routes the APDU traffic to the appropriate SIM - the network access SIM or the application development SIM - based on the technical details of the APDU.

[0037] In a preferred embodiment, the RUN GSM ALGORITHM APDU is sent to the network access SIM that has been issued by a network operator and which contains the cryptographic key material necessary to gain network access. All other APDUs are sent to the application development SIM. In either case, the SIM receiving the command APDU forms the corresponding response APDU which is returned to the Y-Router and the communication management software that in turn sends the response APDU back to the terminal equipment. Thus by the method and device of the Y-Router, the terminal equipment behaves exactly as if it were communicating with a single SIM whereas in fact it is concurrently communicating with a network access SIM and at least one application development SIM.

[0038] FIG. 6 6 is a flowchart 600 that illustrates at a high level, a method according to an embodiment. Although steps in FIG. 6 are presented in a particular order for purposes of illustration, in other embodiments one or more steps are performed in a

different order or overlapping in time, or one more other steps are added or one or more steps are omitted, or some combination of changes are made.

[0039] In step 601, the terminal equipment issues a command.

[0040] In step 602, the Y-Router mechanism receives the command from the terminal equipment.

[0041] In step 603, the Y-Router mechanism analyzes the command to determine whether the command is an application development command or a network access command.

[0042] If in step 603 it is determined that the command is an application development command, the technique proceeds down the left branch. In step 604, the command is sent to the application development SIM. In 605, a response is generated by the application development SIM and sent back to the Y-Router. In step 606 the command response is sent back to the terminal equipment. The process then returns to step 601.

[0043] If in step 603 it is determined that the command is a network access command, the method proceeds down the right branch. In step 607, the command is sent to the network access SIM. In step 608, a response is generated by the network access SIM and received back at the Y-Router. The method then returns to step 606. In step 606, as described above, the command response is sent back to the terminal equipment. The method then returns to step 601. The process is repeated indefinitely, or as many times as desired.

[0044] A first benefit of the illustrated embodiments is the ability to gain and maintain network connectivity for a new SIM application without special arrangement with the network operator.

[0045] A second benefit of the illustrated embodiments is that, unlike the method in the current art of using a network simulator, no simulation is occurring. The SIM application under development is communicating on the wireless network in exactly the manner in which it would be when commercially deployed.

[0046] A third benefit of the illustrated embodiments is that SIM application development can take place without the need to establish special business or technical relationships with a network operator.

[0047] A fourth benefit of the illustrated embodiments is that the Y-Router and the communication management software can be used to gather detailed performance data on

the new SIM application including its interaction with the basic functionality of the SIM and with other SIM applications.

Command Logging and Display.

[0048] In order to optimize a SIM application for a particular type or model of terminal equipment it is beneficial to be able to be able to study in detail how the terminal equipment interacts with the SIM and how the terminal equipment responds to responses from the SIM. This is particularly important during initialization phases during which the terminal equipment may send hundreds of discovery commands to the SIM. [0049] In some embodiments, the Y-Router is configured to make a log of all the traffic between the terminal equipment and the SIM. In various embodiments, this log is extracted from the Y-Router for detailed analysis. One can then make an orderly sequence of changes in the SIM, such as changing the organization of the files on the SIM or sending back alternative result codes. By comparing these logs for different devices, the SIM application can be tuned to respond in a maximally efficient manner to a particular terminal device.

[0050] In an alternative embodiment, all of the communications between the terminal equipment and the two SIM cards are displayed on the screen of a development and testing computer. This display parses these commands and display descriptions of the commands in human-readable text. In some embodiments, the display also builds and update various graphical and statistical displays of the command traffic, such as how many of each of the various commands were observed, and the response time of each of the SIMs to various commands.

Situation-Specific Routing.

[0051] Rather than routing specific commands to one SIM or the other according to a fixed rule, the Y-Router is configured to route all commands to both SIMs in some embodiments. In such embodiments, the Y-Router waits until it has received a response from both SIMs before making a determination of which response to send back to the terminal equipment. In this manner the SIM application under development can defer functionality to the commercial SIM in specific application-dependent situations, while in different specific application-dependent situations it can override the functionality of the commercial SIM.

[0052] In some other embodiments, the command and the responses of both of the SIM cards are displayed on the development and testing computer; and the programmer or tester is able to make the decision as to which of the two responses should be sent back to the terminal equipment.

Hardware Overview

[0053] FIG. 7 is a block diagram that illustrates a computer system 700 upon which an embodiment of the invention may be implemented. Computer system 700 includes a communication mechanism such as a bus 710 for passing information between other internal and external components of the computer system 700. Information is represented as physical signals of a measurable phenomenon, typically electric voltages, but including, in other embodiments, such phenomena as mechanical, magnetic, electromagnetic, pressure, chemical, molecular atomic and quantum interactions. For example, north and south magnetic fields, or a zero and non-zero electric voltage, represent two states (0, 1) of a binary digit (bit). A sequence of binary digits constitutes digital data that is used to represent a number or code for a character. A bus 710 includes many parallel conductors of information so that information is transferred quickly among devices coupled to the bus 710. One or more processors 702 for processing information are coupled with the bus 710. A processor 702 performs a set of operations on information. The set of operations include bringing information in from the bus 710 and placing information on the bus 710. The set of operations also typically include comparing two or more units of information, shifting positions of units of information, and combining two or more units of information, such as by addition or multiplication. A sequence of operations to be executed by the processor 702 constitute computer instructions.

[0054] Computer system 700 also includes a memory 704 coupled to bus 710. The memory 704, such as a random access memory (RAM) or other dynamic storage device, stores information including computer instructions. Dynamic memory allows information stored therein to be changed by the computer system 700. RAM allows a unit of information stored at a location called a memory address to be stored and retrieved independently of information at neighboring addresses. The memory 704 is also used by the processor 702 to store temporary values during execution of computer instructions. The computer system 700 also includes a read only memory (ROM) 706 or other static

storage device coupled to the bus 710 for storing static information, including instructions, that is not changed by the computer system 700. Also coupled to bus 710 is a non- volatile (persistent) storage device 708, such as a magnetic disk or optical disk or flash drive, for storing information, including instructions, that persists even when the computer system 700 is turned off or otherwise loses power.

[0055] In many embodiments, information, including instructions, is provided to the bus 710 for use by the processor from an external input device 712, such as a keyboard containing alphanumeric keys operated by a human user, or a sensor. A sensor detects conditions in its vicinity and transforms those detections into signals compatible with the signals used to represent information in computer system 700. Other external devices coupled to bus 710, used primarily for interacting with humans, include a display device 714, such as a cathode ray tube (CRT) or a liquid crystal display (LCD) or a plasma screen, for presenting images, and a pointing device 716, such as a mouse or a trackball or cursor direction keys, for controlling a position of a small cursor image presented on the display 714 and issuing commands associated with graphical elements presented on the display 714.

[0056] In the illustrated embodiment, special purpose hardware, such as an application specific integrated circuit (IC) 720, is coupled to bus 710. The special purpose hardware is configured to perform operations not performed by processor 702 quickly enough for special purposes. Examples of application specific ICs include graphics accelerator cards for generating images for display 714, cryptographic boards for encrypting and decrypting messages sent over a network, speech recognition, and interfaces to special external devices, such as robotic arms and medical scanning equipment that repeatedly perform some complex sequence of operations that are more efficiently implemented in hardware.

[0057] Computer system 700 also includes one or more instances of a communications interface 770 coupled to bus 710. Communication interface 770 provides a two-way communication coupling to a variety of external devices that operate with their own processors, such as printers, scanners and external disks. In general, the coupling is with a network link 778 that is connected to a local network 780 to which a variety of external devices with their own processors are connected. For example, communication interface 770 may be a parallel port or a serial port or a universal serial

bus (USB) port on a personal computer. In some embodiments, communications interface 770 is an integrated services digital network (ISDN) card or a digital subscriber line (DSL) card or a telephone modem that provides an information communication connection to a corresponding type of telephone line. In some embodiments, a communication interface 770 is a cable modem that converts signals on bus 710 into signals for a communication connection over a coaxial cable or into optical signals for a communication connection over a fiber optic cable. As another example, communications interface 770 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN, such as Ethernet. Wireless links may also be implemented. Carrier waves, such as acoustic waves and electromagnetic waves, including radio, optical and infrared waves travel through space without wires or cables. Signals include man-made variations in amplitude, frequency, phase, polarization or other physical properties of carrier waves. For wireless links, the communications interface 770 sends and receives electrical, acoustic or electromagnetic signals, including infrared and optical signals, that carry information streams, such as digital data. [0058] The term computer-readable medium is used herein to refer to any medium that participates in providing information to processor 702, including instructions for execution. Such a medium may take many forms, including, but not limited to, nonvolatile media, volatile media and transmission media. Non- volatile media include, for example, optical or magnetic disks, such as storage device 708. Volatile media include, for example, dynamic memory 704. Transmission media include, for example, coaxial cables, copper wire, fiber optic cables, and waves that travel through space without wires or cables, such as acoustic waves and electromagnetic waves, including radio, optical and infrared waves.

[0059] Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, a magnetic tape, or any other magnetic medium, a compact disk ROM (CD-ROM), a digital video disk (DVD) or any other optical medium, punch cards, paper tape, or any other physical medium with patterns of holes or knobs, a RAM, a programmable ROM (PROM), an erasable PROM (EPROM), a FLASH- EPROM, or any other memory chip or cartridge, signals on a carrier wave, or any other medium from which a computer can read.

[0060] Network link 778 typically provides information communication through one or more networks to other devices that use or process the information. For example, network link 778 may provide a connection through local network 780 to a host computer 782 or to equipment 784 operated by an Internet Service Provider (ISP). ISP equipment 784 in turn provides data communication services through the public, world-wide packet- switching communication network of networks now commonly referred to as the Internet 790. A computer called a server 792 connected to the Internet provides a service in response to information received over the Internet. For example, server 792 provides information representing video data for presentation at display 714. [0061] The invention is related to the use of computer system 700 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 700 in response to processor 702 executing one or more sequences of one or more instructions contained in memory 704. Such instructions, also called software and program code, may be read into memory 704 from another computer-readable medium such as storage device 708. Execution of the sequences of instructions contained in memory 704 causes processor 702 to perform one or more of the method steps described herein. In alternative embodiments, hardware, such as application specific integrated circuit 720, may be used in place of or in combination with software to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware and software, unless otherwise stated.

[0062] The signals transmitted over network link 778 and other networks through communications interface 770, carry information to and from computer system 700. Computer system 700 can send and receive information, including program code, through the networks 780, 790 among others, through network link 778 and communications interface 770. In an example using the Internet 790, a server 792 transmits program code for a particular application, requested by a message sent from computer 700, through Internet 790, ISP equipment 784, local network 780 and communications interface 770. The received code may be executed by processor 702 as it is received, or may be stored in storage device 708 or other non-volatile storage for later execution, or both. In this manner, computer system 700 may obtain application program code in the form of a signal on transmission media such as a carrier wave.

[0063] Various forms of computer readable media may be involved in carrying one or more sequence of instructions or data or both to processor 702 for execution. For example, instructions and data may initially be carried on a magnetic disk of a remote computer such as host 782. The remote computer loads the instructions and data into its dynamic memory and sends the instructions and data over a telephone line using a modem. A modem local to the computer system 700 receives the instructions and data on a telephone line and uses an infra-red transmitter to convert the instructions and data to a signal on an infra-red carrier wave serving as the network link 778. An infrared detector serving as communications interface 770 receives the instructions and data carried in the infrared signal and places information representing the instructions and data onto bus 710. Bus 710 carries the information to memory 704 from which processor 702 retrieves and executes the instructions using some of the data sent with the instructions. The instructions and data received in memory 704 may optionally be stored on storage device 708, either before or after execution by the processor 702.

Extensions and modifications.

[0064] In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.