Abstract:
A mobile station for wirelessly receiving software files from a software upgrade server. The mobile station comprises: 1) a memory for storing the received software files in a plurality of download modules, each download module (DLM) comprising a plurality of related components that perform a particular function; and 2) a DLM controller for determining a version identifier associated with each component in each download modules. The controller compares a first group of version identifiers associated with a first plurality of related components in a first download module with corresponding version identifiers associated with the first plurality of related component that are contained in a list of latest component versions.

Description:
TECHNICAL FIELD OF THE INVENTION  
         [0001]    The present invention is directed generally to upgradeable wireless communication systems and, more specifically, to a centralized component manager for supervising the downloading and installation of software modules in a wireless mobile station.  
         BACKGROUND OF THE INVENTION  
         [0002]    In order to increase the wireless market to the greatest extent possible, wireless service providers and wireless equipment manufacturers constantly seek new ways to make wireless equipment and services as convenient, user-friendly, and affordable as possible. To that end, wireless service providers and the manufacturers of cell phones and other wireless mobile stations frequently work together to streamline procedures for enrolling and equipping new subscribers and for improving the services and equipment of existing subscribers.  
           [0003]    One important aspect of these efforts involves over-the-air (OTA) provisioning and upgrading of wireless mobile stations, such as cell phones, wireless personal digital assistants (PDAs), wireless hand-held computers, two-way pagers, and the like. OTA provisioning is a relatively new feature that enables a new subscriber who purchases a new cell phone (or other mobile station) to set-up an account with a wireless service provider and to configure the phone for operation. The OTA provisioning procedure is mostly automated and does not require the new subscriber to visit a cell phone service center. Typically, the new subscriber removes the new cell phone from its box, calls a special purpose telephone number (given in the instructions), and performs an interactive provisioning procedure with an automated agent or a human service representative.  
           [0004]    Over-the-air upgrading of wireless mobile stations also is a relatively new procedure that enables a subscriber to download and install upgraded software containing patches, bug fixes, and newer versions of mobile station software, including the operating system. The wireless service provider or the mobile station manufacturer, or both, may provide the upgraded software.  
           [0005]    It has long been possible to download and to install software upgrades for a personal computer (PC) via the Internet. However, this process is considerably more complicated in a mobile station. A personal computer has far more resources available to perform a software upgrade, including dynamically linked libraries (DLLs), a memory management unit (MMU), and a large random access memory (RAM) space. A conventional PC software upgrade may be partitioned and downloaded to a personal computer as a group of shared objects. If one object file is corrupted or interrupted during transmission, only that object file needs to be re-transmitted. The object files that are properly received do not need to be re-transmitted. Once all object files are present, the memory management unit (MMU) of the PC loads all of the object files into RAM and re-links the object files to form a DLL. The DLL may then be stored back into ROM (i.e., disk) in the PC. During this process, the MMU is capable of modifying portions of the code or the symbol table.  
           [0006]    However, a wireless mobile station (e.g., a cell phone) typically has far fewer resources available than a PC. Mobile stations lack a memory management unit and code is not executed from RAM. Code is executed out of a Flash memory that acts as a read-only memory (ROM). The Flash memory generally cannot be written to, it can only be re-programmed with great difficulty. These resource limitations greatly complicate software upgrade operations in wireless mobile stations.  
           [0007]    Therefore, there is a need in the art for improved systems and methods for performing automatic software upgrades of wireless handsets and other types of mobile stations. In particular, there is a need for a centralized component manager that supervises the organization and installation of software components in a wireless communication device in a manner that enables the easy upgrade and replacement of such components.  
         SUMMARY OF THE INVENTION  
         [0008]    To address the above-discussed deficiencies of the prior art, it is a primary object of the present invention to provide a mobile station capable of wirelessly receiving software files from a software upgrade server via a wireless communication network. According to an advantageous embodiment of the present invention, the mobile station comprises: 1) a memory capable of storing the received software files in a plurality of download modules, wherein each download module (DLM) comprises a plurality of related components that operate together to perform a particular function; and 2) a DLM controller associated with the memory capable of determining a version identifier associated with each component in each of the plurality of download modules, wherein the controller is further capable of comparing a first group of version identifiers associated with a first plurality of related components in a first download module with corresponding version identifiers associated with the first plurality of related component that are contained in a list of latest component versions.  
           [0009]    According to one embodiment of the present invention, the controller is capable of requesting and receiving the list of latest component versions from the software upgrade server.  
           [0010]    According to another embodiment of the present invention, the controller, in response to the comparison, identifies ones of the first plurality of related components for which newer component versions are available.  
           [0011]    According to still another embodiment of the present invention, the controller is capable of transmitting a request message to the software upgrade server requesting the transfer of the newer component versions of the identified related components for which newer component versions are available.  
           [0012]    According to yet another embodiment of the present invention, the controller is further capable of determining an interdependency between a first identified related component in the first download module and a dependent component in a second download module.  
           [0013]    According to a further embodiment of the present invention, the controller is further capable of comparing a version identifier associated with the dependent component in the second download module with a corresponding version identifier associated with the dependent component that is contained in the list of latest component versions.  
           [0014]    According to a still further embodiment of the present invention, the controller, in response to the comparison, is capable of transmitting a request message to the software upgrade server requesting the transfer of a newer component version of the dependent related component if the newer component version is available.  
           [0015]    According to a yet further embodiment of the present invention, the related components in the first download module is of a different data type than the other related components in the first download module.  
           [0016]    In one embodiment of the present invention, the related components comprise at least one of i) resources data, ii) graphics data, iii) strings data, and iv) executable code.  
           [0017]    In another embodiment of the present invention, the controller requests the list of latest component versions from the software upgrade server in response to a triggering event, the triggering event comprising at least one of: i) receipt of an operator input; 2) receipt of a notification message from the software upgrade server; and iii) expiration of a timer in the mobile station.  
           [0018]    The foregoing has outlined rather broadly the features and technical advantages of the present invention so that those skilled in the art may better understand the detailed description of the invention that follows. Additional features and advantages of the invention will be described hereinafter that form the subject of the claims of the invention. Those skilled in the art should appreciate that they may readily use the conception and the specific embodiment disclosed as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. Those skilled in the art should also realize that such equivalent constructions do not depart from the spirit and scope of the invention in its broadest form.  
           [0019]    Before undertaking the DETAILED DESCRIPTION OF THE INVENTION below, it may be advantageous to set forth definitions of certain words and phrases used throughout this patent document: the terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation; the term “or,” is inclusive, meaning and/or; the phrases “associated with” and “associated therewith,” as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, or the like; and the term “controller” means any device, system or part thereof that controls at least one operation, such a device may be implemented in hardware, firmware or software, or some combination of at least two of the same. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether locally or remotely. Definitions for certain words and phrases are provided throughout this patent document, those of ordinary skill in the art should understand that in many, if not most instances, such definitions apply to prior, as well as future uses of such defined words and phrases.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0020]    For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, wherein like numbers designate like objects, and in which:  
         [0021]    [0021]FIG. 1 illustrates an exemplary wireless network according to one embodiment of the present invention;  
         [0022]    [0022]FIG. 2 illustrates in greater detail an exemplary mobile station having a download module manager according to one embodiment of the present invention;  
         [0023]    [0023]FIG. 3 illustrates download modules (DLMs) in the download module space in the memory of the exemplary mobile station according to one embodiment of the present invention; and  
         [0024]    [0024]FIG. 4 is a flow diagram illustrating the operation of the download module manager in the exemplary mobile station according to one embodiment of the present invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0025]    [0025]FIGS. 1 through 4, discussed below, and the various embodiments used to describe the principles of the present invention in this patent document are by way of illustration only and should not be construed in any way to limit the scope of the invention. Those skilled in the art will understand that the principles of the present invention may be implemented in any suitably arranged wireless mobile station.  
         [0026]    [0026]FIG. 1 illustrates exemplary wireless network  100  according to one embodiment of the present invention. Wireless network  100  comprises a plurality of cell sites  121 - 123 , each containing one of the base stations, BS  101 , BS  102 , or BS  103 . Base stations  101 - 103  communicate with a plurality of mobile stations (MS)  111 - 114  over code division multiple access (CDMA) channels. Mobile stations  111 - 114  may be any suitable wireless devices, including conventional cellular radiotelephones, PCS handset devices, personal digital assistants, portable computers, or metering devices. The present invention is not limited to mobile devices. Other types of access terminals, including fixed wireless terminals, may be used. However, for the sake of simplicity, only mobile stations are shown and discussed hereafter.  
         [0027]    Dotted lines show the approximate boundaries of the cell sites  121 - 123  in which base stations  101 - 103  are located. The cell sites are shown approximately circular for the purposes of illustration and explanation only. It should be clearly understood that the cell sites may have other irregular shapes, depending on the cell configuration selected and natural and man-made obstructions.  
         [0028]    As is well known in the art, cell sites  121 - 123  are comprised of a plurality of sectors (not shown), each sector being illuminated by a directional antenna coupled to the base station. The embodiment of FIG. 1 illustrates the base station in the center of the cell. Alternate embodiments position the directional antennas in corners of the sectors. The system of the present invention is not limited to any particular cell site configuration.  
         [0029]    In one embodiment of the present invention, BS  101 , BS  102 , and BS  103  comprise a base station controller (BSC) and one or more base transceiver subsystem(s) (BTS). Base station controllers and base transceiver subsystems are well known to those skilled in the art. A base station controller is a device that manages wireless communications resources, including the base transceiver stations, for specified cells within a wireless communications network. A base transceiver subsystem comprises the RF transceivers, antennas, and other electrical equipment located in each cell site. This equipment may include air conditioning units, heating units, electrical power supplies, telephone line interfaces, and RF transmitters and RF receivers. For the purpose of simplicity and clarity in explaining the operation of the present invention, the base transceiver subsystem in each of cells  121 ,  122 , and  123  and the base station controller associated with each base transceiver subsystem are collectively represented by BS  101 , BS  102  and BS  103 , respectively.  
         [0030]    BS  101 , BS  102  and BS  103  transfer voice and data signals between each other and the public switched telephone network (PSTN) (not shown) via communication line  131  and mobile switching center MSC)  140 . BS  101 , BS  102  and BS  103  also transfer data signals, such as packet data, with the Internet (not shown) via communication line  131  and packet data server node (PDSN)  150 . Line  131  also provides the connection path to transfers control signals between MSC  140  and BS  101 , BS  102  and BS  103  used to establish connections for voice and data circuits between MSC  140  and BS  101 , BS  102  and BS  103 .  
         [0031]    Communication line  131  may be any suitable connection means, including a T 1  line, a T 3  line, a fiber optic link, a network packet data backbone connection, or any other type of data connection. Line  131  links each vocoder in the BSC with switch elements in MSC  140 . Those skilled in the art will recognize that the connections on line  131  may provide a transmission path for transmission of analog voice band signals, a digital path for transmission of voice signals in the pulse code modulated (PCM) format, a digital path for transmission of voice signals in an Internet Protocol (IP) format, a digital path for transmission of voice signals in an asynchronous transfer mode (ATM) format, or other suitable connection transmission protocol. Those skilled in the art will recognize that the connections on line  131  may provide a transmission path for transmission of analog or digital control signals in a suitable signaling protocol.  
         [0032]    MSC  140  is a switching device that provides services and coordination between the subscribers in a wireless network and external networks, such as the PSTN or Internet. MSC  140  is well known to those skilled in the art. In some embodiments of the present invention, communications line  131  may be several different data links where each data link couples one of BS  101 , BS  102 , or BS  103  to MSC  140 .  
         [0033]    In the exemplary wireless network  100 , MS  111  is located in cell site  121  and is in communication with BS  101 . MS  113  is located in cell site  122  and is in communication with BS  102 . MS  114  is located in cell site  123  and is in communication with BS  103 . MS  112  is also located close to the edge of cell site  123  and is moving in the direction of cell site  123 , as indicated by the direction arrow proximate MS  112 . At some point, as MS  112  moves into cell site  123  and out of cell site  121 , a hand-off will occur.  
         [0034]    As is well known, the hand-off procedure transfers control of a call from a first cell site to a second cell site. As MS  112  moves from cell  121  to cell  123 , MS  112  detects the pilot signal from BS  103  and sends a Pilot Strength Measurement Message to BS  101 . When the strength of the pilot transmitted by BS  103  and received and reported by MS  112  exceeds a threshold, BS  101  initiates a soft hand-off process by signaling the target BS  103  that a handoff is required as described in TIA/EIA IS-95 or TIA/EIA IS-2000.  
         [0035]    BS  103  and MS  112  proceed to negotiate establishment of a communications link in the CDMA channel. Following establishment of the communications link between BS  103  and MS  112 , MS  112  communicates with both BS  101  and BS  103  in a soft handoff mode. Those acquainted with the art will recognize that soft hand-off improves the performance on both forward (BS to MS) channel and reverse (MS to BS) channel links. When the signal from BS  101  falls below a predetermined signal strength threshold, MS  112  may then drop the link with BS  101  and only receive signals from BS  103 . The call is thereby seamlessly transferred from BS  101  to BS  103 . The above-described soft hand-off assumes the mobile station is in a voice or data call. An idle hand-off is the hand-off between cells sites of a mobile station that is communicating in the control or paging channel.  
         [0036]    Any or all of the mobile stations in wireless network  100  may be upgraded by means of an over-the-air (OTA) upgrade procedure that transfers new software to the mobile stations from a remote upgrade server (not shown) that is accessed via the Internet. According to the principles of the present invention, each mobile station comprises a download module (DLM) manager that provides centralized management of all software components that are installed in the mobile station. As used herein, the term “upgrade” refers not only to the download and installation of patches and improvements to already existing software, but also refers to the download and installation of software applications that are entirely new.  
         [0037]    [0037]FIG. 2 illustrates in greater detail exemplary mobile station  111 , which comprises a download module manager according to one embodiment of the present invention. Wireless mobile station  111  comprises antenna  205 , radio frequency (RF) transceiver  210 , transmit (TX) processing circuitry  215 , microphone  220 , and receive (RX) processing circuitry  225 . MS  111  also comprises speaker  230 , main processor  240 , input/output (I/O) interface (IF)  245 , keypad  250 , display  255 , and memory  260 . Memory  260  further comprises basic operating system (OS) program  261 , download control program  262 , and download module (DLM) space  263 . Download control program  262  further comprises download module (LDM) manager program  270 , which is a subroutine that supervises the downloading, the organization, and the installation of various download modules that may be retrieved from an Internet accessible remote server in an over-the-air (OTA) upgrade procedure.  
         [0038]    Radio frequency (RF) transceiver  210  receives from antenna  205  an incoming RF signal transmitted by a base station of wireless network  100 . Radio frequency (RF) transceiver  210  down-converts the incoming RF signal to produce an intermediate frequency (IF) or a baseband signal. The IF or baseband signal is sent to receiver (RX) processing circuitry  225  that produces a processed baseband signal by filtering, decoding, and/or digitizing the baseband or IF signal to produce a processed baseband signal. Receiver (RX) processing circuitry  225  transmits the processed baseband signal to speaker  230  (i.e., voice data) or to main processor  240  for further processing (e.g., web browsing).  
         [0039]    Transmitter (TX) processing circuitry  215  receives analog or digital voice data from microphone  220  or other outgoing baseband data (e.g., web data, e-mail, interactive video game data) from main processor  240 . Transmitter (TX) processing circuitry  215  encodes, multiplexes, and/or digitizes the outgoing baseband data to produce a processed baseband or IF signal. Radio frequency (RF) transceiver  210  receives the outgoing processed baseband or IF signal from transmitter (TX) processing circuitry  215 . Radio frequency (RF) transceiver  210  up-converts the baseband or IF signal to a radio frequency (RF) signal that is transmitted via antenna  205 .  
         [0040]    In an advantageous embodiment of the present invention, main processor  240  is a microprocessor or microcontroller. Memory  260  is coupled to main processor  240 . According to an advantageous embodiment of the present invention, part of memory  260  comprises a random access memory (RAM) and another part of memory  260  comprises a Flash memory, which acts as a read-only memory (ROM).  
         [0041]    Main processor  240  executes basic operating system (OS) program  261  stored in memory  260  in order to control the overall operation of wireless mobile station  111 . In one such operation, main processor  240  controls the reception of forward channel signals and the transmission of reverse channel signals by radio frequency (RF) transceiver  210 , receiver (RX) processing circuitry  225 , and transmitter (TX) processing circuitry  215 , in accordance with well-known principles.  
         [0042]    Main processor  240  is capable of executing other processes and programs resident in memory  260 , including download control program  262  and DLM manager program  270 . Main processor  240  can move data into or out of memory  260 , as required by an executing process. Main processor  240  is also coupled to I/O interface  245 . I/O interface  245  provides mobile station  111  with the ability to connect to other devices such as laptop computers and handheld computers. I/O interface  245  is the communication path between these accessories and main controller  240 .  
         [0043]    Main processor  240  is also coupled to keypad  250  and display unit  255 . The operator of mobile station  111  uses keypad  250  to enter data into mobile station  111 . Display  255  may be a liquid crystal display capable of rendering text and/or at least limited graphics from web sites. Alternate embodiments may use other types of displays.  
         [0044]    In accordance with the principles of the present invention, main processor  240  also receives and installs download modules containing software upgrades and patches under the control of download control program  262 . This may be done in an over-the-air (OTA) upgrade procedure that may be initiated by any conventional triggering event, such as an operator-initiated action, an automated periodic procedure (i.e., expiration of a timer in MS  111 ), or receipt of a notification message from a remote upgrade server (not shown). In response to any of these triggering events, and under the control of download control program  262  and DLM manager program  270 , main processor  240  establishes a communication link to wireless network  100  and to the remote server via the Internet connection of wireless network  100 . When the communication link is established, main processor  240  requests a list of available upgrades for a mobile station of its type. The remote server responds with a list of upgrade programs and the resource needs (i.e., memory space, processor speed) of those upgrade programs. Advantageously, the communication protocol between MS  111  and the upgrade server allows DLM manager program  270  to authenticate connections to valid servers and to verify the integrity of received data, such as by means of an MD 5  checksum algorithm with secure key encryption.  
         [0045]    According to an exemplary embodiment of the present invention, download control program  262  is primarily responsible for establishing and maintaining a session connection to the remote server. Once the connection is established, DLM manager program  270  supervises the identification, selection, transfer, storage, installation and configuration of various software components in the download modules. DLM manager program  270  maintains a table of DLM descriptors and a set of components for each download module (DLM). Each component type has a set of operators that can manage data reads, data writes, deletions, installations, and initializations. In other words, data of type X in all DLMs may be stored to flash memory, data of type Y may be stored to the file system, data of type Z may be stored to EEPROM, and so forth. DLM manager program  270  stores in its database a file handle for each component and calls type-specific operators to execute it. Thus, type-specific operators perform all operations on the data, although the database of components is maintained by DLM manager program  270 .  
         [0046]    DLM manager program  270  references the DLM descriptors to keep track of component revisions and to identify component interdependencies whenever upgrade components are available. DLM manager program  270  also maintains a status list of DLM downloads in progress. DLM manager program  270  does not identify a download operation as complete unless the corresponding entry in the status list is flagged as “DONE.” New components are not installed until the entire set of components has been stored and old components are kept in mobile station  111  until the new components have been installed. Advantageously, DLM manager program  270  optimizes the use of memory space by using knowledge of software component sizes to place small components in appropriately sized ROM holes and keeping large holes contiguous for subsequent placement of large components.  
         [0047]    [0047]FIG. 3 illustrates download modules (DLMs) in download module (DLM) space  263  in memory  260  of exemplary mobile station  111  according to one embodiment of the present invention. DLM space  263  stores a plurality of download modules (DLMs), including exemplary download modules  310 ,  320 ,  330  and  340 . Download module (DLM)  310 , download module (DLM)  320 , download module (DLM)  330  and download module (DLM)  340  may also be referred to hereafter as DLM 1 , DLM 2 , DLM 3 , and DLM 4 , respectively.  
         [0048]    Each one of download modules  310 ,  320 ,  330  and  340  is comprised of several different components, which are intended to operate together. For example, DLM  310  comprises resources component  311 , strings component  312 , graphics component  313 , and executable code component  314 . Similarly, DLM  320  comprises resources component  321 , strings component  322 , graphics component  323 , and executable code component  324  and DLM  330  comprises resources component  331 , strings component  332 , graphics component  333 , and executable code component  334 . Finally, DLM  340  comprises resources component  341 , strings component  342 , graphics component  343 , and executable code component  344 .  
         [0049]    While the specific types of operations performed on each component may vary, the categories of operations (e.g., load, install, identify contents, etc.) do not. As a result, DLM manager program  270  may bootstrap DLMs (i.e., simultaneously load all components) wherever one of them is reference, without explicit commands from the operator. Also, DLM manager program  270  is able to use its knowledge of component dependencies and component revisions to determine the minimal set of components required for downloading as well as the correct order for downloading.  
         [0050]    For example, suppose that, in DLM  310 , resources component  311  is Version 1.1.15, strings component  312  is Version 1.1.10, graphics component  313  is Version 1.1.31, and executable code component  314  is Version 1.1.44. DLM manager program  270  may request and receive a list of the latest components from the remote server and determine that the latest version of resources component  311  is Version 1.1.15, the latest version of strings component  312  is Version  1 . 1 . 18 , the latest version of graphics component  313  is Version 1.1.31, and the latest version of executable code component  314  is Version 1.1.50. Since only strings component  312  and executable code component  314  have changed, DLM manager program  270  only requests those components from the remote server.  
         [0051]    Moreover, if DLM manager program  270  determines that one of the components in DLM  210  that must be upgraded is dependent on a second component in another download module, such as DLM  220 , DLM  230  or DLM  240 , then DLM manager program  270  also requests the download of the latest version of that second component. This process is reiterated until the latest versions of all dependent components are obtained.  
         [0052]    [0052]FIG. 4 depicts flow diagram  400 , which illustrates the operation of download module manager  270  in exemplary mobile station  111  according to one embodiment of the present invention. As a result of a triggering event, DLM manager program  270  receives a list of the latest versions of components in DLM k (process step  405 ). DLM k may be, for example, DLM  1 , DLM  2 , DLM  3  or DLM  4 . Next, DLM manager program  270  compares the list of the latest versions of the components in DLM k with the currently installed versions of those components in DLM k (process step  410 ). DLM manager program  270  then selects at least one component in DLM k to be upgraded and determines the interdependencies of the selected component, if any (process step  415 ). DLM manager program  270  requests the list(s) of the latest versions of the interdependent component(s) in other DLM(s), if any (process step  420 ).  
         [0053]    DLM manager program  270  then receives the lists of the latest versions of the interdependent components in other DLM(s) and compares them with the installed versions of the same components in the other DLM(s) (process step  425 ). Next, DLM manager program  270  requests the download of the selected components in DLM k and all of the required interdependent components in the other DLM(s) (process step  430 ). When all the new versions of all of the requested components are present, DLM manager program  270  replaces the old versions. Eventually, MS  111  is rebooted and the new components are executed thereafter (process step  435 ).  
         [0054]    Although the present invention has been described in detail, those skilled in the art should understand that they can make various changes, substitutions and alterations herein without departing from the spirit and scope of the invention in its broadest form.