Detailed Description
The present invention will be described in further detail with reference to the accompanying drawings and examples. It is to be understood that the specific embodiments described herein are merely illustrative of the invention and are not limiting of the invention. It should be further noted that, for the convenience of description, only some of the structures related to the present invention are shown in the drawings, not all of the structures.
Example one
Fig. 1b is a flowchart of an application program upgrading method according to an embodiment of the present invention, where the embodiment is applicable to a situation of upgrading at least one application program in a vehicle-mounted device. The method can be executed by the application program upgrading device provided by the embodiment of the invention, and the device can be realized in a software and/or hardware mode and is applied to vehicle-mounted equipment.
Specifically, as shown in fig. 1b, the method for upgrading an application program according to the embodiment of the present invention may include the following steps:
s110, receiving the release information of the upgrade package of the application program pushed by the cloud equipment through a master control controller; the release information at least comprises the name and the version of the upgrade package of the application program.
The release information is used for reminding the vehicle-mounted device to upgrade the application to be upgraded and may include information of an upgrade package corresponding to at least one application program. Accordingly, the application programs are scalable application programs for providing internet-of-vehicles services such as music, video, radio, news, and food in vehicles.
The master controller can be understood as a master controller in the vehicle-mounted equipment, and optionally, the upgrade packages received from other equipment ends can be sent to each controller to be upgraded in the vehicle-mounted equipment through a data transmission channel between the master controller and the controller to be upgraded. Correspondingly, the controller to be upgraded upgrades the application program of at least one application to be upgraded related to the received upgrade package according to the received upgrade package.
In this embodiment, an application developer or manager sends an upgrade package to a server; the server receives the upgrade package, determines and issues the application upgrade package to the cloud device, and the cloud device pushes the issuing information of the upgrade package to the vehicle-mounted device. Correspondingly, the vehicle-mounted equipment receives the release information of the upgrade package of the application program pushed by the cloud equipment through the master controller.
In an optional implementation manner, the release information of the application at least includes identification information of the application upgrade package, that is, a name and a version of the application upgrade package, so that the vehicle-mounted device can search the application upgrade package corresponding to the identification information in the cloud release system according to the identification information of the upgrade package, and download the application upgrade package.
In order to facilitate obtaining the upgrade package of the application program, improve the obtaining efficiency of the upgrade package of the application program, and reduce the operation processing of the user at the same time, in another optional implementation manner of the embodiment of the application, the release information may further include download information of the upgrade package of the application program, so that the vehicle-mounted device directly downloads the upgrade package of the application program based on the download information, and obtains the upgrade package of the application program from the cloud device. Illustratively, the download information may be a download address, and the download address may be presented in the form of a web address or a two-dimensional code.
And S120, downloading an upgrading package of the application program from the cloud equipment through the master controller according to the release information of the application program.
Optionally, in order to improve the upgrading efficiency of the application program, after receiving the release information of the application program, the vehicle-mounted device may automatically identify the release information, and download the application program upgrading package corresponding to the release information according to the release information of the application program. Specifically, the upgrade package of the application program can be downloaded from the cloud device through the master controller.
In order to avoid the influence of the upgrade package downloading process on other using processes of the user, the upgrade package can be downloaded in a mode of manual triggering of the user. And after receiving the triggering operation of the user, downloading the application program upgrading package corresponding to the release information according to the release information of the application program.
The release information includes information of an upgrade package corresponding to at least one application program. If the release information only corresponds to one application program upgrade package, the corresponding application program upgrade package can be downloaded according to the release information, and the downloaded upgrade package is installed. If the release message includes at least two application program upgrade packages, the at least two application program upgrade packages associated with the release message may be downloaded according to the release message, and the downloaded application program upgrade packages may be installed.
When there are at least two application program upgrade packages, in an optional implementation manner, the download operation of each application program upgrade package may be performed in parallel, so as to improve the download efficiency of each application program upgrade package, and further improve the upgrade efficiency of each application program.
In order to further improve the upgrading efficiency of the application program, when at least two application program upgrading packages exist, in another optional embodiment, after the corresponding application program upgrading packages are downloaded and acquired, the installation operation of each application program upgrading package can be performed in parallel.
And S130, verifying the upgrading package of the application program based on the pre-established block chain.
The block chain is pre-established when the server sends the application program upgrading packet, and the block chain stores the on-chain hash value corresponding to each upgrading packet and is used for verifying the upgrading packet.
In order to ensure the stability of subsequent application program upgrading, the vehicle-mounted device may verify the application program upgrading package based on a block chain established in advance in the application program upgrading process.
Specifically, in order to improve the integrity and correctness of transmission of the application program upgrade package and ensure the stability of subsequent application program upgrade, in an optional implementation manner of the embodiment of the present application, after the vehicle-mounted device downloads the application program upgrade package and before the application program upgrade package is installed, a local hash value corresponding to the upgrade package of the application program may be generated according to the upgrade package of the application program; and verifying the local hash value corresponding to the upgrade package of the application program based on the block chain.
In order to facilitate later-stage verification of the local hash value corresponding to the upgrade package of the application program, the vehicle-mounted device may first obtain the on-chain hash value corresponding to the upgrade package of the application program on the block chain, and judge consistency between the on-chain hash value corresponding to the upgrade package of the application program and the local hash value.
On the basis of the above embodiment, in order to accurately obtain the hash value on the link corresponding to the upgrade package of the application program on the block link, the vehicle-mounted device may retrieve the hash value on the link corresponding to the upgrade package of the application program on the block link established in advance according to the name and version of the upgrade package of the application program. Further, if the on-chain hash value corresponding to the upgrade package of the application program is retrieved on the block chain, whether the local hash value is consistent with the on-chain hash value is judged. If the local hash value is consistent with the hash value on the link, judging that the local hash value is verified; and if the local hash value is not consistent with the hash value on the chain, judging that the local hash value is not verified.
In order to improve the efficiency of the hash value on the chain, in an optional embodiment, when the hash value on the chain corresponding to the application program upgrade package is retrieved, the hash value on the chain corresponding to the application program upgrade package may be retrieved according to the name of the upgrade package. And if the retrieval result has a plurality of on-chain hash values corresponding to the upgrade package, retrieving from the preliminary retrieval result according to the version of the upgrade package. The method has the advantages that when only one version exists in a certain name upgrading package, secondary retrieval is not needed, and retrieval efficiency is improved.
In order to ensure the accuracy of hash value retrieval on the chain, in another alternative embodiment, the retrieval may be performed according to the name and version of the application upgrade package at the same time. According to the name and the version of the application program upgrading packet, the hash value on the chain corresponding to the application program upgrading packet can be uniquely determined.
And S140, if the verification is passed, upgrading the application program by using the upgrading package of the application program.
Because the vehicle-mounted equipment downloads the upgrading packet through the master controller, correspondingly, after the verification is passed, the upgrading packet received from other equipment ends is sent to each controller to be upgraded in the vehicle-mounted equipment through a data transmission channel between the master controller and the controller to be upgraded. Correspondingly, the controller to be upgraded upgrades the application program of at least one application to be upgraded related to the received upgrade package according to the received upgrade package.
On the basis of the above embodiment, specifically, after downloading the upgrade package of the application program, the master controller may determine the controller to be upgraded corresponding to the application program according to the name of the upgrade package of the application program; sending a notification message to the controller to be upgraded corresponding to the application program, so that the controller to be upgraded corresponding to the application program responds to the notification message to acquire an upgrade package of the application program in the master control controller; and loading the upgrade package of the application program into the application program through the controller to be upgraded corresponding to the application program, thereby realizing the upgrade of the application installed in the vehicle-mounted equipment.
Optionally, the master controller or other devices associated with the vehicle-mounted device store the application program installed in the controller to be upgraded and the current version of each application ascending sequence; the master control controller can search and match the application programs in the controllers to be upgraded according to the downloaded version information of the upgrading packages of the application programs, so that at least one application to be upgraded in the controllers with the upgrade is determined; transmitting at least one upgrading packet of the application to be upgraded in the master controller to the controller to be upgraded; correspondingly, the controller to be upgraded receives the upgrade package. Specifically, according to the received upgrade package, application upgrade is performed on at least one application to be upgraded in the controller to be upgraded, which is associated with the upgrade package.
On the basis of the technical schemes, in order to realize management and monitoring of the application upgrading condition in the controller to be upgraded, after the controller to be upgraded upgrades the application according to the received upgrading packet, an upgrading receipt can be sent to the master controller; correspondingly, the master controller receives the upgrade receipt sent by the controller to be upgraded, and the upgrade receipt is used for local storage or reporting to other equipment associated with the vehicle-mounted equipment, so that the upgrade receipt is stored in the other equipment. And the upgrade receipt comprises the version and/or the upgrade result of each application to be upgraded related to the received upgrade package. And the upgrading result comprises upgrading success and upgrading failure. Optionally, if the upgrade result is failure, the application program that fails to be upgraded may be re-upgraded within a set time.
According to the technical scheme of the embodiment, the master control controller receives the release information of the upgrade package of the application program pushed by the cloud equipment; the release information at least comprises the name and the version of an upgrade package of the application program; downloading an upgrading package of the application program from the cloud equipment through the master controller according to the release information of the application program; verifying an upgrade package of an application program based on a pre-established blockchain; and if the verification is passed, upgrading the application program by using the upgrading package of the application program. The embodiment of the invention realizes the verification of the upgrading of the application program based on the block chain, verifies the correctness and the integrity of the upgrading package of the application program and improves the safety and the efficiency of the upgrading of the application program.
Example two
Fig. 2 is a flowchart of an application program upgrading method according to a second embodiment of the present invention, where the second embodiment is applicable to a case where at least one application program in a vehicle-mounted device is upgraded, and the method is executed by an application program upgrading apparatus, where the apparatus is implemented by software and/or hardware, and is specifically configured in a server.
Specifically, as shown in fig. 2, the method includes:
s210, sending the upgrade patch of the application program to the cloud device, so that the cloud device pushes the release information of the upgrade patch of the application program to the vehicle-mounted device.
The release information is used for reminding the vehicle-mounted device to upgrade the application program to be upgraded, and may include information of an upgrade package corresponding to at least one application program. Accordingly, the application programs are scalable application programs for providing internet-of-vehicles services such as music, video, radio, news, and food in vehicles.
Before sending the upgrade package of the application program to the cloud device, an application developer or a manager sends the upgrade package of each application program to be upgraded to a server; the server receives and processes the application program upgrade package.
In order to ensure that the version of the released application program upgrade package is the latest version and avoid inconvenience to a user caused by multiple times of upgrading, in an optional implementation manner, the current version of the application to be upgraded can be compared with the historical version before the upgrade package of the application program is released; and acquiring the application program upgrading packet with a higher version as the application program upgrading packet to be upgraded, and performing subsequent issuing operation.
Optionally, when the cloud device pushes the release information of the upgrade package of the application program to the vehicle-mounted device, corresponding release information may be generated for each application program to be upgraded, so that each application program to be upgraded is distinguished, and independent downloading and installation processing of each application program to be upgraded are realized.
In order to reduce user operations and improve the efficiency of upgrading the subsequent applications to be upgraded, optionally, a piece of release information may be generated for each application program to be upgraded, so that the upgrade packages of the application programs to be upgraded are sequentially downloaded and installed according to the release information.
And S220, generating verification information corresponding to the upgrade package of the application program, and uploading the verification information to a pre-established block chain.
The block chain is used for storing the hash value on the chain corresponding to each upgrade package and is used for verifying the upgrade package subsequently.
In order to improve the integrity and correctness of transmission of the application program upgrade package and ensure the stability of subsequent application program upgrade, in an optional implementation manner of the embodiment of the application, when the server sends the upgrade package of the application program to the cloud device, verification information corresponding to the upgrade package of the application program can be generated according to the upgrade package of the application program and uploaded to a pre-established block chain. The block chain is equivalent to a shared database, and the data or information stored in the shared database has the characteristics of unforgeability, whole-course trace, traceability, public transparency, collective maintenance and the like.
The server generates verification information corresponding to the upgrade package of the application program according to the upgrade package of the application program, and uploads the verification information to a block chain established in advance, which may specifically include: generating a hash value on a chain corresponding to the upgrade package of the application program according to the name and the version of the upgrade package; and writing the hash value on the chain corresponding to the upgrading packet of the application program into the block chain, so that the subsequent vehicle-mounted equipment can verify the upgrading packet conveniently.
Since the hash value of the upgrade package is stored in the block chain, by using the non-tamper property of the block chain, anyone can not modify the upgrade package and the corresponding verification information maliciously after the upgrade package is generated and the corresponding hash value is written into the block chain, thereby ensuring the integrity and consistency of the upgrade package.
According to the technical scheme, the upgrading package of the application program is sent to the cloud device, so that the cloud device pushes the issuing information of the upgrading package of the application program to the vehicle-mounted device; and generating verification information corresponding to the upgrade package of the application program, and uploading the verification information to a pre-established block chain. The embodiment of the invention realizes the verification of the upgrading of the application program based on the block chain, verifies the correctness and the integrity of the upgrading package of the application program and improves the safety and the efficiency of the upgrading of the application program.
EXAMPLE III
Fig. 3a is a flowchart of an application program upgrading method according to a third embodiment of the present invention, where the method is based on the foregoing embodiment and provides a preferred implementation manner. Fig. 3b is a schematic diagram of verification upgrade based on a block chain according to a third embodiment of the present invention.
Specifically, as shown in fig. 3a, the method includes:
s310, the server receives an upgrade package of the application program sent by a developer or a manager of the application program.
S302, according to the name and the version of the upgrading packet, a chain hash value corresponding to the upgrading packet of the application program is generated.
And S303, writing the hash value on the chain corresponding to the upgrade package of the application program into the block chain.
And S304, sending the upgrade package of the application program to the cloud equipment.
S305, the cloud device pushes the issuing information of the upgrade package of the application program to the vehicle-mounted device.
The release information at least comprises the name and the version of an upgrade package of the application program;
and S306, the vehicle-mounted equipment receives the release information of the upgrade package of the application program pushed by the cloud equipment through the master controller.
S307, retrieving the corresponding upgrade package according to the release information of the application program.
And S308, downloading the upgrade package of the application program from the cloud equipment through the master control controller.
S309, according to the upgrading packet of the application program, generating a local hash value corresponding to the upgrading packet of the application program.
And S310, searching the chain hash value corresponding to the upgrading packet of the application program on the pre-established block chain according to the name and the version of the upgrading packet of the application program.
S311, obtaining the hash value on the chain corresponding to the upgrade package of the application program.
And S312, if the on-chain hash value corresponding to the upgrade package of the application program is retrieved on the block chain, judging whether the local hash value is consistent with the on-chain hash value. If the local hash value is consistent with the on-chain hash value, executing S313A; otherwise, S313B is executed.
S313A, the local hash value is determined to be verified, and S314 is executed.
S313B, the verification fails, and the process ends.
And S314, the master control controller determines the controller to be upgraded corresponding to the application program according to the name of the upgrading packet of the application program.
And S315, sending a notification message to the controller to be upgraded corresponding to the application program.
And S316, the controller to be upgraded responds to the notification message, and an upgrade package of the application program is obtained in the master control controller.
And S317, loading the upgrade package of the application program into the application program through the controller to be upgraded corresponding to the application program.
According to the technical scheme of the embodiment, the master control controller receives the release information of the upgrade package of the application program pushed by the cloud equipment; the release information at least comprises the name and the version of an upgrade package of the application program; downloading an upgrading package of the application program from the cloud equipment through the master controller according to the release information of the application program; verifying an upgrade package of an application program based on a pre-established blockchain; and if the verification is passed, upgrading the application program by using the upgrading package of the application program. The embodiment of the invention realizes the verification of the upgrading of the application program based on the block chain, verifies the correctness and the integrity of the upgrading package of the application program and improves the safety and the efficiency of the upgrading of the application program.
Example four
Fig. 4 is a schematic structural diagram of an application program upgrading apparatus according to a fourth embodiment of the present invention, where the apparatus is adapted to execute the application program upgrading method according to the fourth embodiment of the present invention, and may perform upgrade verification on at least one application program in a vehicle-mounted device. The device is realized by software and/or hardware and is specifically configured in vehicle-mounted equipment.
As shown in fig. 4, the apparatus includes a distributioninformation receiving module 410, an upgradepackage downloading module 420, an upgradepackage verifying module 430, and anapplication upgrade module 440. Wherein,
the releaseinformation receiving module 410 is configured to receive, through the master controller, release information of an upgrade package of an application program pushed by the cloud device; the release information at least comprises the name and the version of an upgrade package of the application program;
the upgradepackage downloading module 420 is configured to download the upgrade package of the application program from the cloud device through the master controller according to the release information of the application program;
an upgradepackage verification module 430, configured to verify an upgrade package of an application based on a block chain established in advance;
and the applicationprogram upgrading module 440 is used for upgrading the application program by using the upgrading package of the application program if the verification is passed.
According to the technical scheme of the embodiment, the master control controller receives the release information of the upgrade package of the application program pushed by the cloud equipment; the release information at least comprises the name and the version of an upgrade package of the application program; downloading an upgrading package of the application program from the cloud equipment through the master controller according to the release information of the application program; verifying an upgrade package of an application program based on a pre-established blockchain; and if the verification is passed, upgrading the application program by using the upgrading package of the application program. The embodiment of the invention realizes the verification of the upgrading of the application program based on the block chain, verifies the correctness and the integrity of the upgrading package of the application program and improves the safety and the efficiency of the upgrading of the application program.
Further, the upgradepackage verification module 430 includes: a local hash value generation unit and a local hash value verification unit. Wherein,
the local hash value generating unit is used for generating a local hash value corresponding to the upgrading packet of the application program according to the upgrading packet of the application program;
and the local hash value verification unit is used for verifying the local hash value corresponding to the upgrade package of the application program based on the blockchain.
Further, the local hash value verification unit includes:
the on-chain hash value retrieval subunit is used for retrieving the on-chain hash value corresponding to the upgrade package of the application program on the pre-established block chain according to the name and the version of the upgrade package of the application program;
the hash value verification subunit is used for judging whether the local hash value is consistent with the hash value on the link or not if the hash value on the link corresponding to the upgrade package of the application program is retrieved on the block link;
the verification result judging subunit is used for judging that the local hash value passes the verification if the local hash value is consistent with the hash value on the link; and if the local hash value is not consistent with the hash value on the chain, judging that the local hash value is not verified.
Further, theapplication upgrade module 440 includes: the device comprises a controller to be upgraded determining unit, an upgrade notification sending unit and an upgrade package loading unit. Wherein,
the device comprises a to-be-upgraded controller determining unit, a to-be-upgraded controller determining unit and a upgrading unit, wherein the to-be-upgraded controller determining unit is used for determining a to-be-upgraded controller corresponding to an application program according to the name of an upgrading package of the application program;
the upgrading notification sending unit is used for sending a notification message to the controller to be upgraded corresponding to the application program, so that the controller to be upgraded corresponding to the application program responds to the notification message to acquire an upgrading packet of the application program in the master control controller;
and the upgrade package loading unit is used for loading the upgrade package of the application program into the application program through the controller to be upgraded corresponding to the application program.
The application program upgrading device provided by the embodiment of the invention can execute the application program upgrading method provided by any embodiment of the invention, and has corresponding functional modules and beneficial effects of the execution method.
EXAMPLE five
Fig. 5 is a schematic structural diagram of an application program upgrading apparatus according to a fifth embodiment of the present invention, where the apparatus is adapted to execute the application program upgrading method according to the fifth embodiment of the present invention, and may perform upgrade verification on at least one application program in a vehicle-mounted device. The device is implemented by software and/or hardware and is specifically configured in a server.
As shown in fig. 5, the apparatus includes: an upgradepackage transmitting module 510 and an authenticationinformation uploading module 520. Wherein,
the upgradepackage sending module 510 is configured to send an upgrade package of the application to the cloud device, so that the cloud device pushes release information of the upgrade package of the application to the vehicle-mounted device;
and the verificationinformation uploading module 520 is configured to generate verification information corresponding to the upgrade package of the application program, and upload the verification information to a block chain established in advance.
According to the technical scheme of the embodiment, the upgrading package of the application program is sent to the cloud device, so that the cloud device pushes the issuing information of the upgrading package of the application program to the vehicle-mounted device; and generating verification information corresponding to the upgrade package of the application program, and uploading the verification information to a pre-established block chain. The embodiment of the invention realizes the verification of the upgrading of the application program based on the block chain, verifies the correctness and the integrity of the upgrading package of the application program and improves the safety and the efficiency of the upgrading of the application program.
Further, the verificationinformation uploading module 520 includes: an on-chain hash value generation unit and an on-chain hash value writing unit. Wherein,
the on-chain hash value generation unit is used for generating an on-chain hash value corresponding to the upgrade package of the application program according to the name and the version of the upgrade package;
and the on-chain hash value writing unit is used for writing the on-chain hash value corresponding to the upgrade package of the application program into the block chain so as to verify the upgrade package by the vehicle-mounted equipment.
The application program upgrading device provided by the embodiment of the invention can execute the application program upgrading method provided by any embodiment of the invention, and has corresponding functional modules and beneficial effects of the execution method.
EXAMPLE six
Fig. 6 is a schematic structural diagram of an electronic device according to a sixth embodiment of the present invention. FIG. 6 illustrates a block diagram of an exemplaryelectronic device 12 suitable for use in implementing embodiments of the present invention. Theelectronic device 12 shown in fig. 6 is only an example and should not bring any limitation to the function and the scope of use of the embodiment of the present invention.
As shown in FIG. 6,electronic device 12 is embodied in the form of a general purpose computing device. The components ofelectronic device 12 may include, but are not limited to: one or more processors orprocessing units 16, asystem memory 28, and abus 18 that couples various system components including thesystem memory 28 and theprocessing unit 16.
Bus 18 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures include, but are not limited to, Industry Standard Architecture (ISA) bus, micro-channel architecture (MAC) bus, enhanced ISA bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
Electronic device 12 typically includes a variety of computer system readable media. Such media may be any available media that is accessible byelectronic device 12 and includes both volatile and nonvolatile media, removable and non-removable media.
Thesystem memory 28 may include computer system readable media in the form of volatile memory, such as Random Access Memory (RAM)30 and/orcache memory 32. Theelectronic device 12 may further include other removable/non-removable, volatile/nonvolatile computer system storage media. By way of example only,storage system 34 may be used to read from and write to non-removable, nonvolatile magnetic media (not shown in FIG. 6, and commonly referred to as a "hard drive"). Although not shown in FIG. 6, a magnetic disk drive for reading from and writing to a removable, nonvolatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from or writing to a removable, nonvolatile optical disk (e.g., a CD-ROM, DVD-ROM, or other optical media) may be provided. In these cases, each drive may be connected tobus 18 by one or more data media interfaces.System memory 28 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.
A program/utility 40 having a set (at least one) ofprogram modules 42 may be stored, for example, insystem memory 28,such program modules 42 including, but not limited to, an operating system, one or more application programs, other program modules, and program data, each of which examples or some combination thereof may comprise an implementation of a network environment.Program modules 42 generally carry out the functions and/or methodologies of the described embodiments of the invention.
Electronic device 12 may also communicate with one or more external devices 14 (e.g., keyboard, pointing device, display 24, etc.), with one or more devices that enable a user to interact withelectronic device 12, and/or with any devices (e.g., network card, modem, etc.) that enableelectronic device 12 to communicate with one or more other computing devices. Such communication may be through an input/output (I/O)interface 22. Also, theelectronic device 12 may communicate with one or more networks (e.g., a Local Area Network (LAN), a Wide Area Network (WAN), and/or a public network, such as the Internet) via thenetwork adapter 20. As shown, thenetwork adapter 20 communicates with other modules of theelectronic device 12 via thebus 18. It should be appreciated that although not shown in FIG. 6, other hardware and/or software modules may be used in conjunction withelectronic device 12, including but not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data backup storage systems, among others.
Theprocessing unit 16 executes various functional applications and data processing by executing programs stored in thesystem memory 28, for example, implementing an application program upgrade method provided by an embodiment of the present invention.
EXAMPLE seven
The seventh embodiment of the present invention further provides a computer-readable storage medium, on which a computer program is stored, where the computer program, when executed by a processor, implements the application program upgrading method provided in any embodiment of the present invention.
Computer storage media for embodiments of the invention may employ any combination of one or more computer-readable media. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated data signal may take many forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C + + or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer through any type of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet service provider).
It is to be noted that the foregoing is only illustrative of the preferred embodiments of the present invention and the technical principles employed. It will be understood by those skilled in the art that the present invention is not limited to the particular embodiments described herein, but is capable of various obvious changes, rearrangements and substitutions as will now become apparent to those skilled in the art without departing from the scope of the invention. Therefore, although the present invention has been described in greater detail by the above embodiments, the present invention is not limited to the above embodiments, and may include other equivalent embodiments without departing from the spirit of the present invention, and the scope of the present invention is determined by the scope of the appended claims.