The present invention relates generally to authorizing communications between network enabled devices. More particularly, this invention relates to secure instant pairing of mobile devices based on proximity to authorize communications.
With the proliferation of network enabled mobile devices, such as mobile phones, smart phones, wireless headsets, etc., pairing separate mobile devices becomes more and more common. In particular, mobile devices are often paired to share data, such as personal photos, contacts, play lists, passwords or friendship information for social networking (e.g. Facebook® application) etc. Usually, such data sharing requires security protection.
Typical secure data sharing includes an authorization system. Traditionally, an authorization system relies on security mechanisms such as logins, password verifications and/or confirmation mails, etc. For examples, users of mobile phones may need to open applications, go into pairing modes, enter authorization codes, send emails and/or use “add friend” user interface buttons for the mobile phones to share data between each other. However, in a mobile environment, such authorization mechanisms are often tedious and cumbersome to be practically useful.
Therefore, traditional authorization mechanisms do not provide a simple, elegant and convenient method for mobile devices to share data securely.
An embodiment of the present invention includes methods and apparatuses that establish a first communication channel or pair with a target device in proximity to a source device. A pairing message is sent to the target device located in proximity to the source device over the first communication channel from the source device. A secret and/or an identifier associated with an application can be included in the pairing message. In response to receiving the secret back from the target device for a second communication channel, pairing data of the application are sent to the target device over the second communication channel.
In an alternative embodiment, a first communication channel with a source device is established in proximity to the source device. In response to receiving a pairing message from the source device over the first communication channel, an application identified by the pairing message is launched to establish a second communication channel from the application to a remote device according to the pairing message. Pairing data for the application are retrieved from the remote device over the second communication channel. The first communication channel can be a short range IR (Infrared) channel which uses a proximity sensor of each of the source and target devices to create the IR channel, and the second communication channel can be a wireless network such as a WiFi (802.11) or a cellular telephone network or other RF (Radio Frequency) based wireless networks.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
A method and an apparatus for pairing mobile devices based on proximity are described herein. In the following description, numerous specific details are set forth to provide thorough explanation of embodiments of the present invention. It will be apparent, however, to one skilled in the art, that embodiments of the present invention may be practiced without these specific details. In other instances, well-known components, structures, and techniques have not been shown in detail in order not to obscure the understanding of this description.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
The processes depicted in the figures that follow, are performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described may be performed in different order. Moreover, some operations may be performed in parallel rather than sequentially.
According to certain embodiments of the invention, a securing mechanism is provided to authenticate communications between separate devices based on physical pairing. Two devices may be paired when placed close to each other within close proximity to perform authentication via a pairing message (or message-based pairing). Proximity sensors may be employed to ensure physical proximity thus adding a layer of security for pairing. In one embodiment, proximity sensors may include anIR LED (Light Emitting Diode) and/or an IR cell. The proximity sensor can include both an IR transmitter and an IR receiver. For example, two iPhone® mobile devices with proximity sensors may detect each others' IR signals when placed face-to-face at about an inch (or less) apart. In one embodiment, two iPhone® mobile devices vibrate to confirm pairing (e.g. complete message pairing or device pairing) when placed face to face for a short period of time (e.g. a second or two). Once paired, two applications, e.g. Facebook® applications, running separately in two mobile devices may be paired sharing a photo. Typical usage for device pairing may include “pick and go” within seconds.
Exemplary usages may include Web sharing, Bluetooth network sharing, social network sharing, or personal information sharing etc. Web sharing may be illustrated with user experiences described such as:
In one embodiment, the proximity sensor 103 includes a short range wireless network adapter which broadcasts wireless signals (e.g. packets) capable of reaching a range limited within close proximity (e.g. configured with a low level power usage). The source device 101 may detect the presence of the target device 115 via a reply received from the proximity sensor 111 in response to broadcasted signals from the proximity sensor 103. A short range wireless network connection (e.g. based on Infrared Data Communication) may be established between the source and target devices via proximity sensors 103, 111 when a presence of a device within close proximity is detected or paired. In some embodiments, the source device 101 is paired with the target device 115 once both devices exchanges handshakes packets initiated by one of the devices (e.g. the source device 101) over the short range wireless signals.
In one embodiment, a screen 105 of the source device 101 displays a user interface for receiving a user instruction to send pairing messages to pair with the target device 115 detected within close proximity 117. The user interface may be a part of an application (e.g. a social networking application) running in the source device 101 to pair with another corresponding application in the target device 115. The source device 101 may indicate the presence of the detected target device 115 via the user interface presented on the screen 105. Likewise, the target device 115 may indicate pairing with the source device 105 via the screen 113. In some embodiment, the source and/or target device vibrate or sound off special audio tones to alert users when device pairing occurs.
Once the source and target devices are successfully paired, in one embodiment, a separate communication channel is established between corresponding applications running in these two devices. For example, the source and target devices may establish a high speed wireless network connection, such as based on WiFi (wireless Ethernet network) or Bluetooth protocols via antennas 107, 109. In some embodiments, the paired devices may access a remote server on the Internet wirelessly to establish the communication channel. Typically, there is no need for the paired devices 101, 115 to remain in proximity to each other to maintain the separately established communication channel.
In one embodiment, a pairing handler module 205 displays a user interface element (e.g. a message box) for a user to initiate sending a pairing message for an application (e.g. the currently running application, such as a social networking application or a game) via a user interface module 217. In addition to graphical interface capabilities, the user interface module 217 may provide mechanical features, such as vibrating a device, to indicate message pairing. For example, a pairing module 205 may activate a mechanical interface feature through the user interface module 217 when receiving a message confirming a receipt of the pairing message from a target device. In other embodiments, completion of pairing between two devices, e.g. based on an successful establishment of a network communication channel through the network interface module 215 may trigger such a mechanical interface feature via the user interface module 217 initiated by an application participating in the corresponding device pairing.
In one embodiment, if the detected target device leaves the proximity area, the pairing handler module may automatically remove the user interface displayed for pairing messages. In response to a confirmation received from a user, the pairing handler module 205 may forward an application identifier identifying the currently running application and/or associated secrets (or data or notification data) to a message formatter module 203 to compose a pairing message for the currently running application. The message formatter module 203 may compose a pairing message including the application identifier and associated secrets to send to the detected target device via the proximity interface module 207. For example, a pairing message may be a string of ascii text (e.g. including a unique numeral number), such as “facebook://123456” or “photo://123456” to identify an application “facebook” or “photo” with “123456” as an associated secret.
In one embodiment, a secret configuration (or setting) 209 is configured with application identifiers and associated secrets for generating corresponding pairing messages. An application identifier may uniquely identify a single user application in different devices, such a social networking application 211, or a photo album application 213 etc. A secret for an application may be understood by its associated application. For example, a secret may be encrypted data including a password, a URL to locate a particular resource (e.g. where to download a photo album or other data from, for example, a server on the Internet), or other data the corresponding application may need. A password may be required to login into a web server, to make a network connection or to execute other tasks for an application. In some embodiments, a secret includes a randomly generated challenge for authentication. The pairing handler module 205 may generate a random number on the fly during runtime as a secret (or a part of a secret) for the message formatter module 203 to compose a pairing message. In one embodiment, a physical movement measuring module 219, e.g. based on gyroscopic information from an accelerometer, records a trace of physical movements (or motions) and/or generate a representation of the trace on the fly. In some embodiment, the dispatcher module 307 generates a representation of a trace of physical movements received from the physical movement measuring module 319.
Usually, the currently focused (or active) application among one or more applications, such as applications 211 . . . 213, may send pairing messages when a target device is detected. In some embodiments, an application calls APIs (application programming interfaces) to register for message pairing in the secret configuration 209. The pairing handler module 205 may call an application directly to perform message pairing operations.
In one embodiment, as a result of message pairing, an application may establish a communication channel with the target device detected via a network interface module 215. Typically, the network interface module 215 may provide high speed wired or wireless network connections such as based on WiFi, Bluetooth, Cellular network or Ethernet specifications. The communication channel may be based on a direct (e.g. based on a local area network) or indirect (e.g. based on a remote web server) network connection with the target device detected via the proximity interface module 207. The target device may initiate the establishment of the network connection via the network interface module 215. A network connection with a target device via the network interface module 215 may be independent of whether the target device remains in close proximity.
For example, the proximity interface module 303 may include daemons running in system 300 to periodically detect if wireless packets with INIT patterns are received. Once a wireless packet with an INIT pattern is received, the proximity module 303 may send a packet including a BEGIN pattern. Subsequently, the proximity interface module 303 may sample wireless packets (e.g. IR cells) much more frequently to receive a code (e.g. via short range wireless packets). Once the code is receive, the proximity interface module 303 may keep re-emitting or broadcast wireless packets with the code until wireless packets with CONFIRM patterns are received. The device associated with the proximity interface module 303 may pair with the source device when a packet with a CONFIRM pattern is received. In one embodiment, the proximity interface module 303 establishes a short range wireless communication connection to pair with the source device. The proximity interface module 303 may authenticate the source device (e.g. based on cryptographic operations) for establishing a short range wireless communication. Strong cryptography may be employed to establish a low bandwidth yet secure short range communication. The proximity interface module 303 may forward a pairing message received via the short range wireless connection to a message formatter module 305.
In one embodiment, the message formatter module 305 parses a received pairing message to extract an application identifier and/or a secret or data embedded. For example, the message formatter module 305 may parse a pairing message based on similar formats to compose a pairing message as in the message formatter module 203 of
If no application is identified by the application identifier, the dispatcher module 307 may notify the message formatter module 305 to compose a reply message for the nearby source device indicating unavailability to pair (e.g. sending a status code via the established short range wireless connection with the source device). In some embodiments, the dispatcher module 307 may reject (e.g. sending a rejection replay) a pairing message according to selection criteria (e.g. according to a device identifier included in the received pairing message) for the identified application specified inside the pairing configuration 309.
The dispatcher module 309 may launch an application, such as a social networking application 311 or a chat application 315, etc. identified in the received pairing message if the identified application is not currently running in system 301. The dispatcher module 307 may forward the secret extracted from the pairing message to the application launched (or already launched) for the application to perform pairing operations. If an identified application has already been launched, the dispatcher module 309 may locate the identified application to forward the extracted secret. In some embodiments, a physical movement measuring module 319, e.g. based on gyroscopic information from an accelerometer, generates a representation of a trace of physical movements. An application and/or a dispatcher module 307 may determine whether to pair an application (e.g. establish a regular communication session for an application) by matching the representation with a secret received from a pairing message.
The identified application may perform operations to pair with the source device according to the secret received. For example, a secret may include a password (or an authorization token) and a URL for an application to remotely login to a remote web server via the URL using the password. Once pairing operations are completed, in one embodiment, the identified application may notify the dispatcher module 307 to activate a user interface feature via a user interface module 317 to alert a user. A user interface feature may be based on mechanical (e.g. vibrating a device), visual (e.g. a pop-up window on a display, and/or activating a lighting component), multi-media (e.g. sound) or other interface mechanisms.
System 301 may be connected with a network via a network interface module 313, such as a local area network using WiFi or Bluetooth technologies, or a wide area network based on Ethernet or cellular communication technologies. Typically, local short range connections via the proximity interface module 303 has lower quality (or bandwidth) than connections established over the network interface module 313. In some embodiments, a pairing message received via the proximity interface module 303 may identify a network management application with a secret included. The identified network management application may authorize a connection with a network via the network interface module 313.
According to one embodiment, at block 403, the processing logic of process 400 sends short range signals wirelessly for detecting presence of a pairing device in proximity to where the short range signals originate. Short range signals may be low power wireless signals based on, for example, IR or RF technologies. Usually, short range signals may reach a few inches (e.g. one to three inches) from an originating device. In some embodiments, short range signals include flashing lights and/or ultrasound. The processing logic of process 400 may analyze data signals received in response to wireless signals broadcasted and determine if a pairing device is present nearby. For example, the processing logic of process 400 may send out wireless packets including a preconfigured pattern (e.g. INIT) for detecting a pairing device based on a particular pattern received from a response packet (e.g. with a BEGIN pattern).
If a pairing device is detected, at block 405, the processing logic of process 400 may pair with the detected device. In one embodiment, the processing logic of process 400 handshakes with the detected pairing device to exchange packet data via short range wireless signals. A handshake or other data exchanges during pairing may include sending a code and receiving response packets to verify the code has been received. In one embodiment, the processing logic of process 400 concludes a handshake with the pairing device by sending wireless packets with a preconfigured pattern such as a CONFIRM pattern. Separate devices are paired when a handshake or an exchange of data packets is successfully completed via short range wireless communication signals. In some embodiments, the processing logic of process 400 establishes short range wireless network connections to pair with a pairing device. Usually, the quality of a short range network connection may be limited to hundreds of bytes per second (BPS) and require the corresponding pairing device to stay within close proximity, such as within inches of distance. The processing logic of process 400 may perform cryptographic operations to authenticate pairing with the pairing device. In other embodiments, the processing logic of process 400 alerts a user when a pairing device is detected.
In one embodiment, the processing logic of process 400 may generate a characteristic or coded data to uniquely identify a pairing device based on a physical aspect of the occurrence of device pairing. For example, the processing logic of process 400 may generate a random challenger or a random number for device pairing. In one embodiment, the processing logic of process 400 generates a representation (e.g. a pattern, a key or a hash) from a trace of physical movements (e.g. based on gyroscopic measures by a gyroscopic measuring components included inside the device) recorded over a period of time during device pairing. The trace may indicate common accelerations or movements between devices as a characteristic to uniquely identify the paired device. In one embodiment, the processing logic of process 400 activates a user interface feature to indicate occurrence of device pairing. For example, the processing logic of process 400 starts a measure of cumulative signal strength of physical movement signals (or motions), e.g. continuously recorded, on detection of a pairing device within close proximity. The activated user interface may indicate an occurrence of device pairing event when the measured cumulative strength of physical motions reaches a threshold (e.g. a preset level).
At block 407, the processing logic of process 400 may send a pairing message to a nearby pairing device detected (e.g. subsequent to an indication of the occurrence of device pairing event). Usually, sending a pairing message requires very low quality network connection such as a short range communication connection. A pairing message may include an application identifier and a secret or data associated with the application identified. For example, a pairing message may be a URL string including a scheme name or resource type identifying an application and a path name encoded with the secret or application data. A pairing message may be composed in other formats a receiving pairing device is able to process (or parse) to extract an identifier and associated secrets embedded within.
A secret may include a specification of a resource (e.g. a file, a multi-media clip etc.) and an authorization (or a password) for accessing the resource. In some embodiments, a secret may include a network address (e.g. IP address) for a pairing device to make a regular network connection (e.g. based on Ethernet, WiFi or cellular network technologies) to perform pairing operations (e.g. to retrieve a video clip from a location located via the network address). In one embodiment, a secret may include a challenge to authenticate a device. For example, a challenge may be a random number generated on the fly or a characteristic or representation for a trace of physical movements paired devices have recorded simultaneously together during device pairing.
The processing logic of process 400 may send a pairing message for an application in response to a user request received from a user interface (e.g. associated with the application). In one embodiment, an application registers message pairing via API (Application Programming Interfaces) for activating a user interface to receive a user confirmation to send a pairing message when a pairing device is detected, such as “attemptPairing( )”. The processing logic of process 400 may alert a user for sending a pairing message and/or when a message pairing is completed. In one embodiment, the processing logic of process 400 waits for a message associated with the secret received from the paired device to indicate message pairing is complete.
Optionally, at block 409, the processing logic of process 400 establishes a coupling session between the application initiating the pairing message and another application in the pairing device according to the pairing message (e.g. based on an application identifier). A coupling session may be an application layer network connection. For example, separate applications may establish connections to a common remote server sharing a session identifier for a coupling session. In one embodiment, the processing logic of process 400 may establish coupling session associated with the application originating a pairing message in response to receiving a request or notification verified according to a secret of the pairing message. A coupling session may be based on an existing network connection (e.g. in a local area network using WiFi or Bluetooth technology or a wide area network using Ethernet or cellular network technologies). Two applications running in separate devices may be coupled directly via a network or indirectly via a remote server (e.g. a chat server or a web server). In one embodiment, the processing logic of process 400 matches a verification data received from the pairing device for establishing the coupling session. For example, the processing logic of process may match the verification data with a representation of a trace of physical movements (e.g. continuously recorded) for a period of time, such as the last few seconds or other preset periods. A successful match may indicate a right device is being paired.
In one embodiment, at block 501, the processing logic of process 500 performs data or packet exchanges or handshakes to pair with a nearby pairing device wirelessly over short range signals. For example, the processing logic of process 500 may send wireless packets including a preconfigured pattern (e.g. a BEGIN pattern) in response to a particular pattern, e.g. an INIT pattern, detected within short range signals received. The processing logic of process 500 may return a code received to confirm device pairing. In one embodiment, the processing logic of process 500 determines device pairing is completed when receiving wireless packets including a certain pattern, e.g. a CONFIRM pattern. During device pairing, the processing logic of process 500 may generate a characteristic representing a trace of physical movements, e.g. based on simultaneous gyroscopic measurements inside pairing devices. Representations of traces of physical movement can be recorded inside a device. For example, physical acceleration of a device over a threshold (e.g. 3 g-force) can trigger a recording for the physical movements of the device. A device can continuously record physical movements in a record, for example, based on motion signals or accelerometer signals. In one embodiment, the processing logic of process 500 establishes a short range communication connection with a pairing device via the short range wireless signals as a result of device pairing.
At block 503, the processing logic of process 500 may receive a pairing message in a data payload via the established short range communication session. The processing logic of process 500 may analyze a received data payload to identify a pairing message. In some embodiments, the processing logic of process 500 determines whether to accept a pairing message received based on conditions specified in a pre-configured setting. The processing logic of process 500 may send a reply indicating a rejection or a confirmation of a pairing message via the established short range communication connection. In one embodiment, the processing logic of process 500 extracts an application identifier and a secret or data from a pairing message received (e.g. using a message parser). An application identifier may identify an installed or a running application according to a configuration setting, such as a pairing configuration 309 of
If a pairing message is not rejected by an application, the processing logic of process 500 may pass the extracted secret to an identified application already running. Or, if the identified application is not yet running, the processing logic of process 500 may launch the identified application with the extracted secret (e.g. as a parameter to a command preconfigured to launch the application). In some embodiments, the processing logic of process 500 calls an interface registered in a configuration setting to pass the extracted secret for an application already running. A secret may indicate pairing operations and associated parameters for an application to perform.
Optionally, at block 507, the processing logic of process 500 may perform pairing operations according to a secret extracted from a pairing message. For example, the processing logic of process 500 may execute an application identified in a pairing message to establish a coupling or communication session with a pairing device sending the pairing message. In one embodiment, the processing logic of process 500 extracts a target network address from a secret to establish a communication session. The processing logic of process 500 may present (or send out) an authorization code (e.g. password, random challenger or a characteristic generated) to obtain permission for establishing the coupling session. For example, the processing logic of process 500 may commence a chat session in a target chat room using a password included in a pairing message. A secret may include an authorization code (e.g. a random challenger or a representation for a trace of physical movements). The processing logic of process 500 can send a verification data for establishing the communication session. The verification data can include, for example, a representation of a trace of physical movements (e.g. continuously recorded) during a period of time (e.g. the last few seconds or other predetermined period).
In some embodiments, the processing logic of process 500 may authenticate a pairing message received, such as matching a representation included in the pairing message to compare traces of physical movements (e.g. based on whether the difference is within a predetermined margin of error). The processing logic of process 500 may exchanges representations of motion signals when performing pairing operations via a pairing message. In one embodiment, the processing logic of process 500 performs pairing operations when receiving a representation of motion signals from another device. The processing logic of process 500 may retrieve a locally stored representation of motion signals for the last few seconds (or other determined periods) to perform pairing operations with received representation of motions signals.
Pairing operations to match paired devices may be based on cross-correlation between representations of motion signals. Representation of motion signals may be associated with two periods of time related with a time shift or time lag. A cross-correlation may include values indicative of measures of similarity between two representations as a function of a time lag. In one embodiment, a cross-correlation can be normalized with values between 0 and 1, wherein 0 indicating no resemblance while 1 indicating complete resemblance. The cross-correlation may include one or more identifiable peaks (or local peaks). The processing logic of process 500 may determine a match between representations of motions signals if a peak of the cross-correlation satisfies a relationship with predetermined or derived reference values (e.g. greater than 0.95). In one embodiment, the representation of motion signals is based on continuously recorded physical movements in a device, for example, to decrease the latency for triggering, to better capture the time prior to deliberate shaking of the device, and/or to decrease ambiguity of multiple peaks in cross covariance. The processing logic of process 500 may ignore a pairing message received from a pairing device if an authentication fails without an attempt to establish a coupling session with the pairing device.
The processing logic of process 500 may establish a direct network connection with a pairing device based on a secret in a pairing message received. A direct network connection may be based on a local area network using technologies such as WiFi or Bluetooth. In some embodiments, the processing logic of process 500 connects to the remote web server identified in a pairing message received to establish a coupling session to pair with the pairing device indirectly (e.g. based on Ethernet connection). Once message pairing is complete, e.g. when pairing operations are successfully performed for an application according to the pairing message, the processing logic of process 500 may alert a user, e.g. via an API “justPaired( )”, by activating mechanical, visual and/or multi-media user interface features.
In one embodiment, at sequence 611, the sender message module 603 may compose a pairing message to send to a target device hosting a receiver message module 605 and a receiver application 607. The sender message module 603 may include a message formatter, such as a message formatter module 203 of
Optionally, at sequence 617, the receiver application 607 may establish a connection channel (or communication channel) with the sender application 601 using the secret (e.g. secret codes, optional parameters and/or other information) received from the sender application 601 via the pairing message. The connection channel for pairing between the receiver application 607 and the sender application 601 may be based on a direct network connection (e.g. via a Bluetooth or WiFi network) or an indirect network connection (e.g. via a remote web server through Ethernet network). Typically, a connection channel for pairing established between two applications based on a pairing message is separate from a short range communication channel established for passing the pairing message between two devices hosting the two applications. Thus, even when the source device hosting the sender application 601 is relocated out from close proximity around the receiver device hosting the receiver application 607, the established connection channel for pairing may still be maintained between the sender application 601 and the receiver application 607.
Covariance chart 817 may indicate cross-correlation between the first representation of motion signals stored inside device 823 and the second representation of motion signals received from device 825. A peak covariance 811 is identified to be 0.140882 813. Correspondingly, user interface 803 includes covariance chart 807 of cross-correlation determined in device 825 between the first and second representations of signals. Chart 827 has a peak 807 of value 0.140882 809. Pairing between devices 823 and 825 may not be successful as 0.140882 is smaller than a predetermined value (e.g. 0.95).
Covariance chart 927 may indicate cross-correlation between the first representation of motion signals stored inside device 923 and the second representation of motion signals received from device 925. A peak covariance 913 is identified to be 1.600481 915. Correspondingly, user interface 903 includes covariance chart 929 of cross-correlation between the first and second representations of signals. Chart 929 has a peak 907 of value 1.600481 909. Pairing between devices 923, 925 may be successful as 1.600481 is greater than a preset peak threshold (e.g. 0.95). In some embodiments, signals can be normalized. A peak threshold value may be configured depending on whether signals are normalized. Devices 923 and 925 may separately verify pairing of both devices at different times. In one embodiment, a device presents visual notification via a user interface to indicate status of pairing operations 912911 and results of pairing operations 919910.
A display controller and display device 1007 provide a visual user interface for the user; this digital interface may include a graphical user interface which is similar to that shown on an iPhone® phone device or on a Macintosh computer when running OS X operating system software. The system 1000 also includes one or more wireless transceivers 1003 to communicate with another data processing system. A wireless transceiver may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, and/or a wireless cellular telephony transceiver. It will be appreciated that additional components, not shown, may also be part of the system 1000 in certain embodiments, and in certain embodiments fewer components than shown in
The data processing system 1000 also includes one or more input devices 1013 which are provided to allow a user to provide input to the system. These input devices may be a keypad or a keyboard or a touch panel or a multi touch panel. The data processing system 1000 also includes an optional input/output device 1015 which may be a connector for a dock. It will be appreciated that one or more buses, not shown, may be used to interconnect the various components as is well known in the art. The data processing system shown in
At least certain embodiments of the inventions may be part of a digital media player, such as a portable music and/or video media player, which may include a media processing system to present the media, a storage device to store the media and may further include a radio frequency (RF) transceiver (e.g., an RF transceiver for a cellular telephone) coupled with an antenna system and the media processing system. In certain embodiments, media stored on a remote storage device may be transmitted to the media player through the RF transceiver. The media may be, for example, one or more of music or other audio, still pictures, or motion pictures.
The portable media player may include a media selection device, such as a click wheel input device on an iPhone®, an iPod®, iPod Shuffle® or iPod Nano® media player from Apple Computer, Inc. of Cupertino, Calif., a touch screen input device, pushbutton device, movable pointing input device or other input device. The media selection device may be used to select the media stored on the storage device and/or the remote storage device. The portable media player may, in at least certain embodiments, include a display device which is coupled to the media processing system to display titles or other indicators of media being selected through the input device and being presented, either through a speaker or earphone(s), or on the display device, or on both display device and a speaker or earphone(s).
As shown in
The mass storage 1111 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems which maintain data (e.g. large amounts of data) even after power is removed from the system. Typically, the mass storage 1111 will also be a random access memory although this is not required. While
Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions. Thus processes taught by the discussion above may be performed with program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions. In this context, a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
The preceding detailed descriptions are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the tools used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be kept in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purpose, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations described. The required structure for a variety of these systems will be evident from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
The foregoing discussion merely describes some exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion, the accompanying drawings and the claims that various modifications can be made without departing from the spirit and scope of the invention.