Patent ID: 12250601

Throughout the drawings, the same or similar reference numerals represent the same or similar element.

DETAILED DESCRIPTION

Principle of the present disclosure will now be described with reference to some example embodiments. It is to be understood that these embodiments are described only for the purpose of illustration and help those skilled in the art to understand and implement the present disclosure, without suggesting any limitations as to the scope of the disclosure. The disclosure described herein can be implemented in various manners other than the ones described below.

In the following description and claims, unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skills in the art to which this disclosure belongs.

As used herein, the term “network device” or “base station” (BS) refers to a device which is capable of providing or hosting a cell or coverage where terminal devices can communicate. Examples of a network device include, but not limited to, a Node B (NodeB or NB), an Evolved NodeB (eNodeB or eNB), a NodeB in new radio access (gNB) a Remote Radio Unit (RRU), a radio head (RH), a remote radio head (RRH), a low power node such as a femto node, a pico node, and the like. For the purpose of discussion, in the following, some embodiments will be described with reference to gNB as examples of the network device.

As used herein, the term “terminal device” refers to any device having wireless or wired communication capabilities. Examples of the terminal device include, but not limited to, user equipment (UE), personal computers, desktops, mobile phones, cellular phones, smart phones, personal digital assistants (PDAs), portable computers, image capture devices such as digital cameras, gaming devices, music storage and playback appliances, or Internet appliances enabling wireless or wired Internet access and browsing and the like.

As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “includes” and its variants are to be read as open terms that mean “includes, but is not limited to.” The term “based on” is to be read as “based at least in part on.” The term “one embodiment” and “an embodiment” are to be read as “at least one embodiment.” The term “another embodiment” is to be read as “at least one other embodiment.” The terms “first,” “second,” and the like may refer to different or same objects. Other definitions, explicit and implicit, may be included below.

In some examples, values, procedures, or apparatus are referred to as “best,” “lowest,” “highest,” “minimum,” “maximum,” or the like. It will be appreciated that such descriptions are intended to indicate that a selection among many used functional alternatives can be made, and such selections need not be better, smaller, higher, or otherwise preferable to other selections.

FIG.1shows an example communication network100in which embodiments of the present disclosure can be implemented. The network100includes a terminal device110and network devices120-1to120-4(collectively referred to as network device120). The terminal device110, for example, may be served by the network device120-1. The serving area of the network device120-1is called as a cell101. It is to be understood that the number of network devices and terminal devices is only for the purpose of illustration without suggesting any limitations. The network100may include any suitable number of network devices and terminal devices adapted for implementing embodiments of the present disclosure. Although not shown, it would be appreciated that one or more terminal devices may be in the cell101and served by the network device120-1.

In the communication network100, the network device120can communicate data and control information to the terminal device110and the terminal device110can also communication data and control information to the network device120. A link from the network device120to the terminal device110is referred to as a downlink (DL) or a forward link, while a link from the terminal device110to the network device110is referred to as an uplink (UL) or a reverse link.

In one embodiment, the terminal device may be connected with a first network device and a second network device. One of the first network device and the second network device may be a master node and the other one may be a secondary node. The first network device and the second network device may use different radio access technologies (RATs). In one embodiment, the first network device may be a first RAT device and the second network device may be a second RAT device. In one embodiment, the first RAT device is eNB and the second RAT device is gNB. Information related with different RATs may be transmitted to the terminal device from at least one of the first network device and the second network device. In one embodiment, a first information may be transmitted to the terminal device from the first network device and a second information may be transmitted to the terminal device from the second network device directly or via the first network device. In one embodiment, information related with configuration for the terminal device configured by the second network device may be transmitted from the second network device via the first network device. Information related with reconfiguration for the terminal device configured by the second network device may be transmitted to the terminal device from the second network device directly or via the first network device.

Depending on the communication technologies, the network100may be a Code Division Multiple Access (CDMA) network, a Time Division Multiple Address (TDMA) network, a Frequency Division Multiple Access (FDMA) network, an Orthogonal Frequency-Division Multiple Access (OFDMA) network, a Single Carrier-Frequency Division Multiple Access (SC-FDMA) network or any others. Communications discussed in the network100may use conform to any suitable standards including, but not limited to, New Radio Access (NR), Long Term Evolution (LTE), LTE-Evolution, LTE-Advanced (LTE-A), Wideband Code Division Multiple Access (WCDMA), Code Division Multiple Access (CDMA), cdma2000, and Global System for Mobile Communications (GSM) and the like. Furthermore, the communications may be performed according to any generation communication protocols either currently known or to be developed in the future. Examples of the communication protocols include, but not limited to, the first generation (1G), the second generation (2G), 2.5G, 2.75G, the third generation (3G), the fourth generation (4G), 4.5G, the fifth generation (5G) communication protocols. The techniques described herein may be used for the wireless networks and radio technologies mentioned above as well as other wireless networks and radio technologies. For clarity, certain aspects of the techniques are described below for LTE, and LTE terminology is used in much of the description below.

In the communication network100, if the channel state between the terminal device110and the network device120-1is getting worse, the network device120-1may initiate a handover (HO) procedure to inform the terminal device110to handover from its serving cell to a target cell. During a handover procedure, the terminal device110may attempt to access to the target cell. If the handover procedure is successful executed, the terminal device110may be served by other serving area, for example, the serving cell102of the network device120-2.

However, if the terminal device110does not receive a response from the network device120-2indicating the access attempt is successful until a timer for the handover procedure expiries, the access attempt is failed. The failure information of this failed access attempt, which may be referred to a Handover Failure (HOF), may be recorded at the terminal device110.

Furthermore, if the connection between the terminal device110and its serving network device120-1is failed, the failure information of the failed connection, which may be referred to a Radio Link Failure (RLF), may also be recorded at the terminal device110.

The terminal device110may indicate the availability of RLF-report information in the subsequent RRC connection (re-)establishment and handover to a target cell. If the a high-level device requires RLF-report, the new connected network device (for example, the network device120-2) may send UEInformationRequest message to request the terminal device110to feedback the RLF-report information, and the terminal device110would reply using UEInformationResponse message.

The recorded failure information may be introduced into a RLF-report variable. According to the current failure recording mechanism, the terminal device110can only store information for the latest RLF or HOF. The terminal device110always clears the information included in the current RLF report variable before setting the information field.

As described above, Condition Handover (CHO) has been proposed to improve the handover reliability. For the conditional handover procedure, the network device120-1may transmit CHO configuration associated with multiple CHO candidate cells (for example, cells102-104as shown inFIG.1) including configuration of CHO candidate cells and CHO execution condition to the terminal device110when the channel between the network device120-1and the terminal device110is still under good condition.

As an option, once there is any CHO candidate cell meets the CHO execution condition, the terminal device110may perform autonomous access attempt to the CHO candidate cells, without the network device120-1to send message to indicate the start of CHO execution. Since a set of candidate cell may be provided to the terminal device110to execute the conditional handover procedure, it is possible that multiple access attempt may be performed before the handover is successful.

As another option, if there is a RLF or a COH has been occurred, the CHO procedure may be initiated by the terminal device110even if the CHO candidate cells does not meet CHO execution condition.

According to the failure recording mechanism as mentioned above, the previous failure information may always be removed before recording new failure information. In this case, the RLF report may not reflect the overall network state. For example, the information about RLF and HOF, which may be recorded before the CHO executes, may be removed when the failure information of the CHO is to be recorded. Furthermore, if the CHO execution attempt to multiple CHO candidate cells fails, the terminal device110can only submit RLF report related to the last CHO execution. Moreover, how to indicate the handover failure in the CHO procedure is still discussed.

For this propose, a method for reporting the failure of the conditional handover (CHO) attempt will be discussed in the present disclosure.

Principle and example embodiments will now be described in detail below with reference to the accompanying drawings. However, those skilled in the art would readily appreciate that the detailed description given herein with respect to these drawings is for explanatory purpose as the present disclosure extends beyond theses limited embodiments.

FIG.2illustrates a schematic diagram illustrating a process200for reporting the failure of CHO attempt according to example embodiments of the present disclosure. For the purpose of discussion, the process200will be described with reference toFIG.1. The process200may involve the terminal device110and the network devices120-1to120-4as illustrated inFIG.1.

As shown inFIG.2, the terminal device110obtains205, from the network device120-1, configuration information about candidate cells for CHO. The configuration information may be transmitted from the network device120-1when the channel between the network device120-1and the terminal device110is still under good condition. The configuration information may comprise the cell ID for each of the candidate cells and other related configuration for CHO. For example, the candidate cells may be referred to the cells102-104as shown inFIG.1.

If the condition for triggering the CHO is reached, for example, the channel state between the network device102-2-102-4and the terminal device100if offset better than the channel state between the network device120-1and the terminal device110the terminal device110may initiate210the CHO. The terminal device110may execute at least one conditional handover attempt to the candidate cells.

For the first conditional handover attempt, the terminal device110may, for example, transmit215an access request to one of the candidate cells, for example, cell102of the network device120-2. If the timer for a conditional handover attempt expiries and no response received from the network device120-2, the handover attempt may be considered as a failed attempt. If the handover attempt to the cell102is failed, the terminal device110stores220the failure information of the failed conditional handover attempt.

In some example embodiments, the terminal device110may determine whether the failure of the first handover attempt to the cell102in the CHO procedure is the first connection failure after the terminal device110connected with the current serving cell, i.e. cell102(in this case, the connection between the terminal device110and the network device does not fail). If the failure of the first handover attempt to the cell102is the first connection failure, the terminal device110may remove the previous stored failure information, for example, the history failure information associated with any other cells than cells101-104.

As another option, the terminal device110may determine whether the handover attempt to the cell102is triggered due to RLF or HOF. If the terminal device110determines that the handover attempt to the cell102is triggered due to RLF or HOF, the terminal device110may ignore the failure information

In some example embodiments, the terminal device110may execute a further conditional handover attempt. For example, the terminal device110may transmit225an access request to one of the candidate cells, for example, cell103of the network device120-3. Similarly, if the timer for a conditional handover attempt expiries and no response received from the network device120-3, the handover attempt may be considered as a failed attempt.

If the handover attempt to the cell103is failed, the failure information of this failed conditional handover attempt may also be stored at the terminal device110. As mentioned above, the failure information of the first conditional handover attempt has been stored.

In some example embodiments, the terminal device110may store230failure information of both the failure information of the first conditional handover attempt to the cell102and the failure information of the second conditional handover attempt to the cell103based on starting time points of the first and the second conditional handover attempts.

In some example embodiments, if the first conditional handover attempt to the cell102is the first conditional handover attempt in this conditional handover procedure, the terminal device110may only store the failure information of the first conditional handover attempt.

In some example embodiments, if the second conditional handover attempt to the cell103is the last conditional handover attempt in this conditional handover procedure, the terminal device110may only store the failure information of the second conditional handover attempt.

In some example embodiments, the terminal device110may store a predetermined number of the failed conditional handover attempt.

For example, if the predetermined number is 2 and the terminal device110may store the earliest failure, only the failure information of the first and the second conditional handover attempts may be stored. That is, any other failed conditional handover attempt occurred after the first and the second conditional handover attempt will not be stored anymore.

As another option, if the predetermined number is 2 and the terminal device may store the latest failure, in the case that the failure information of the first and the second conditional handover attempt has been stored, if a further failure information is to be stored, the terminal device110may determine whether a sum of the failure number of the previous stored failure information and the failure number of the further failure information exceeds a threshold number. If the sum exceeds the threshold number, some of the previous stored failure information may be removed to allow storing failure information of the further conditional handover attempt.

It is possible that some previous failure information has been stored at the terminal device110before the at least one conditional handover attempt initiated by the terminal device110. The previous failure information may be referred to a RLF, a HOF or another CHO failure. The RLF may indicate that the connection between the terminal device110and the network device120-1is failed and the HOF may indicate that the terminal device has attempted to access a dedicated cell before the CHO and the access attempt is failed.

As an option, the failure information of the at least one conditional handover attempt may also be stored without removing the previous failure information.

As a further option, if the terminal device110stores a predetermined number of the failed conditional handover attempt. The terminal device110may determine whether a sum of a failure number associated with the previous failure information and a failure number associated with the failure information exceeds a threshold number of failure event allowed to be stored. If the terminal device110determines that the sum does not exceed the threshold number, terminal device110may store the failure information, without removing the previous failure information.

If the terminal device110determines that the sum exceeds the threshold number, terminal device110may removes part of the previous failure information to allow storing the failure information.

Referring back toFIG.2, the terminal device110may further transmit235an access request to a further cell104of the network device120-4in the conditional handover procedure. If the terminal device110receives240a response from the network device indicating the access is acceptable, the terminal device110may determine245that the conditional handover attempt to cell104is successful.

As another option, the handover attempt to cell104may also be failed. However, the terminal device110may successful access to an available cell. That is, a connection between the terminal device110and network may be reestablished.

Both the cell104and the available cell may be referred to as a target cell as below.

The terminal device110may transmit250, to the target cell, a message indicating information about at least one connection failure occurred at the terminal device is available.

For example, the message may comprise at least one of a failure type of at least one connection failure, i.e. one of the RLF, HOF and CHOF, the number of the at least one connection failure and information about the successful handover attempt to the target cell. In some embodiments, the failure report may also indicate the failure number occurred in the CHO procedure. An example for information about at least one connection failure, i.e. RLF variable of the terminal device may be represented in the table as below.

TABLE 1RLF variableVarRLF-Report UE variable-- ASN1STARTVarRLF-Report-r10 ::=SEQUENCE {rlf-Report-r10RLF-Report-r9,plmn-Identity-r10PLMN-Identity}VarRLF-Report-r11 ::=SEQUENCE {rlf-Report-r10RLF-Report-r9,plmn-IdentityList-r11PLMN-IdentityList3-r11}VarRLF-Report-r16 ::=SEQUENCE {rlf-ReportList-r16RLF-ReportList-r16,cho-success-r16CHO-success-r16OPTIONAL,}RLF-ReportList-r16 ::=SEQUENCE (SIZE (1..maxRLFrep)) OF RLF-Report-r9CHO-success-r16 ::=SEQUENCE {cho-success-cellIDPhysCellId,measResultLastServCell-r9SEQUENCE {rsrpResult-r9RSRP-Range,rsrqResult-r9RSRQ-RangeOPTIONAL,},OPTIONALmeasResultNeighCells-r9MeasResultList2EUTRA-r9OPTIONALlocationInfo-r10LocationInfo-r10OPTIONAL,...,}-- ASN1STOPmaxRLFrep: the maximum number of connection failure that can be reported.The value can be 4 or 5.

If the terminal device110receives255a request for the information about the at least one connection failure, the terminal device110may generate260a failure report. The failure report may comprise one of the previous failure information, the failure information and information about the successful handover attempt to the target cell.

In some embodiments, the information about the successful handover attempt to the target cell may comprise one or more parameters as following: an identifier of the target cell, the timestamp of access to the target cell, a location of the target cell, a channel condition of the target cell and a channel condition of at least one neighboring cell of the target cell.

In some embodiments, the failure report may indicate the type of the failure occurred at the terminal device and the failure information of each type. An example for failure report may be represented in the table as below.

TABLE 2failure reportRLF-Report-r9 ::=SEQUENCE {measResultLastServCell-r9SEQUENCE {rsrpResult-r9RSRP-Range,rsrqResult-r9RSRQ-RangeOPTIONAL},measResultNeighCells-r9SEQUENCE {measResultListEUTRA-r9MeasResultList2EUTRA-r9OPTIONAL,measResultListUTRA-r9MeasResultList2UTRA-r9OPTIONAL,measResultListGERAN-r9MeasResultListGERANOPTIONAL,measResultsCDMA2000-r9MeasResultList2CDMA2000-r9OPTIONAL}OPTIONAL,...,[[locationInfo-r10LocationInfo-r10OPTIONAL,failedPCellId-r10CHOICE {cellGlobalId-r10CellGlobalIdEUTRA,pci-arfcn-r10SEQUENCE {physCellId-r10PhysCellId,carrierFreq-r10ARFCN-ValueEUTRA}}OPTIONAL,reestablishmentCellId-r10CellGlobalIdEUTRAOPTIONAL,timeConnFailure-r10INTEGER (0..1023)OPTIONAL,connectionFailureType-r10ENUMERATED {rlf, hof}OPTIONAL,previousPCellId-r10CellGlobalIdEUTRAOPTIONAL]],[[failedPCellId-v1090SEQUENCE {carrierFreq-v1090ARFCN-ValueEUTRA-v9e0}OPTIONAL]],[[basicFields-r11SEQUENCE {c-RNTI-r11C-RNTI,rlf-Cause-r11ENUMERATED {t310-Expiry, randomAccessProblem,rlc-MaxNumRetx, t312-Expiry-r12},timeSinceFailure-r11TimeSinceFailure-r11}OPTIONAL,previousUTRA-CellId-r11SEQUENCE {carrierFreq-r11ARFCN-ValueUTRA,physCellId-r11CHOICE {fdd-r11PhysCellIdUTRA-FDD,tdd-r11PhysCellIdUTRA-TDD},cellGlobalId-r11CellGlobalIdUTRAOPTIONAL}OPTIONAL,selectedUTRA-CellId-r11SEQUENCE {carrierFreq-r11ARFCN-ValueUTRA,physCellId-r11CHOICE {fdd-r11PhysCellIdUTRA-FDD,tdd-r11PhysCellIdUTRA-TDD}}OPTIONAL]],[[failedPCellId-v1250SEQUENCE {tac-FailedPCell-r12TrackingAreaCode}OPTIONAL,measResultLastServCell-v1250RSRQ-Range-v1250OPTIONAL,lastServCellRSRQ-Type-r12RSRQ-Type-r12OPTIONAL,measResultListEUTRA-v1250MeasResultList2EUTRA-v1250OPTIONAL]],[[drb-EstablishedWithQCI-1-r13ENUMERATED {qci1}OPTIONAL]],[[measResultLastServCell-v1360RSRP-Range-v1360OPTIONAL]],[[logMeasResultListBT-r15LogMeasResultListBT-r15OPTIONAL,logMeasResultListWLAN-r15LogMeasResultListWLAN-r15OPTIONAL]][[connectionFailureType-r16ENUMERATED {rlf, hof, chof}OPTIONAL,]]rlf-InfoAvailable-r13ENUMERATED {true}OPTIONAL,rlf-InfoType1-r16ENUMERATED {rlf, hof, chof}OPTIONAL,CHOF-num-r16INTEGER (0..MaxCHOFrep)OPTIONAL,rlf-ReportReq-r9BOOLEAN,followingCHO-reportBOLLEAN, Optional

Then the terminal device110may transmit the failure report to the target cell.

In some embodiments, any failure occurred in the CHO procedure will not be stored at the terminal device110. In other words, the failure associated with the CHO procedure will be ignored.

In some embodiments, the terminal device110may determine whether a radio link failure or a legacy handover failure has been occurred before the at least one conditional handover attempt. If the terminal device110determines the radio link failure or the legacy handover failure has been occurred before the at least one conditional handover attempt, the terminal device110may ignore the failure in the CHO procedure.

In this way, a new mechanism of the failure reporting may be achieved.

More details of the example embodiments in accordance with the present disclosure will be described with reference toFIGS.3-5.

FIG.3illustrates a flowchart of an example method300in accordance with some embodiments of the present disclosure. The method300can be implemented at the terminal device110as shown inFIG.1. For the purpose of discussion, the method300will be described with reference toFIG.1.

At310, the terminal device110obtains configuration information about at least one candidate cell for conditional handover of the terminal device.

At320, the terminal device110initiates at least one conditional handover attempt to the at least one candidate cell.

At330, if at least one conditional handover attempt to the at least one candidate cell in a conditional handover procedure is failed, the terminal device110, at340, stores failure information of the at least one conditional handover attempt.

At330, if at least one conditional handover attempt to the at least one candidate cell in a conditional handover procedure is successful, the action of the terminal device may be described with reference toFIG.4as below.

FIG.4illustrates a flowchart of an example method400in accordance with some embodiments of the present disclosure. The method400can be implemented at the terminal device110as shown inFIG.1. For the purpose of discussion, the method400will be described with reference toFIG.1.

At410, the terminal device110transmits, to a target cell, a message indicating information about at least one connection failure occurred at the terminal device is available. The target cell may comprise one of the at least one candidate cell or an available cell other than the at least one candidate cell.

At420, if the terminal device110receives a request for the information from the target cell, the terminal device110, at430, generating a failure report including at least one of the following: the previous failure information, the failure information and information about the successful conditional handover attempt.

At440, the terminal device110transmit the failure report to the target cell.

FIG.5illustrates a flowchart of an example method500in accordance with some embodiments of the present disclosure. The method500can be implemented at the terminal device110as shown inFIG.1. For the purpose of discussion, the method500will be described with reference toFIG.1.

At510, the terminal device110obtains configuration information about at least one candidate cell for conditional handover of the terminal device.

At520, the terminal device110initiates at least one conditional handover attempt to the at least one candidate cell.

At530, if at least one conditional handover attempt to the at least one candidate cell in a conditional handover procedure is failed, the terminal device110, at440, ignores the failure of the at least one conditional handover attempt.

FIG.6is a simplified block diagram of a device600that is suitable for implementing embodiments of the present disclosure. The device600can be considered as a further example implementation of the terminal device110as shown inFIG.1. Accordingly, the device600can be implemented at or as at least a part of the terminal device110.

As shown, the device600includes a processor610, a memory620coupled to the processor610, a suitable transmitter (TX) and receiver (RX)640coupled to the processor610, and a communication interface coupled to the TX/RX640. The memory610stores at least a part of a program630. The TX/RX640is for bidirectional communications. The TX/RX640has at least one antenna to facilitate communication, though in practice an Access Node mentioned in this application may have several ones. The communication interface may represent any interface that is necessary for communication with other network elements, such as X2 interface for bidirectional communications between eNBs, S1 interface for communication between a Mobility Management Entity (MME)/Serving Gateway (S-GW) and the eNB, Un interface for communication between the eNB and a relay node (RN), or Uu interface for communication between the eNB and a terminal device.

The program630is assumed to include program instructions that, when executed by the associated processor610, enable the device600to operate in accordance with the embodiments of the present disclosure, as discussed herein with reference toFIGS.2-5. The embodiments herein may be implemented by computer software executable by the processor610of the device600, or by hardware, or by a combination of software and hardware. The processor610may be configured to implement various embodiments of the present disclosure. Furthermore, a combination of the processor610and memory610may form processing means650adapted to implement various embodiments of the present disclosure.

The memory610may be of any type suitable to the local technical network and may be implemented using any suitable data storage technology, such as a non-transitory computer readable storage medium, semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory, as non-limiting examples. While only one memory610is shown in the device600, there may be several physically distinct memory modules in the device600. The processor610may be of any type suitable to the local technical network, and may include one or more of general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs) and processors based on multicore processor architecture, as non-limiting examples. The device600may have multiple processors, such as an application specific integrated circuit chip that is slaved in time to a clock which synchronizes the main processor.

Generally, various embodiments of the present disclosure may be implemented in hardware or special purpose circuits, software, logic or any combination thereof. Some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor or other computing device. While various aspects of embodiments of the present disclosure are illustrated and described as block diagrams, flowcharts, or using some other pictorial representation, it will be appreciated that the blocks, apparatus, systems, techniques or methods described herein may be implemented in, as non-limiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.

The present disclosure also provides at least one computer program product tangibly stored on a non-transitory computer readable storage medium. The computer program product includes computer-executable instructions, such as those included in program modules, being executed in a device on a target real or virtual processor, to carry out the process or method as described above with reference toFIG.2. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, or the like that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or split between program modules as desired in various embodiments. Machine-executable instructions for program modules may be executed within a local or distributed device. In a distributed device, program modules may be located in both local and remote storage media.

Program code for carrying out methods of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general purpose computer, special purpose computer, or other programmable data processing apparatus, such that the program codes, when executed by the processor or controller, cause the functions/operations specified in the flowcharts and/or block diagrams to be implemented. The program code may execute entirely on a machine, partly on the machine, as a stand-alone software package, partly on the machine and partly on a remote machine or entirely on the remote machine or server.

The above program code may be embodied on a machine readable medium, which may be any tangible medium that may contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine readable medium may be a machine readable signal medium or a machine readable storage medium. A machine readable medium may include but not limited to an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of the machine readable storage medium would include 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.

Further, while operations are depicted in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are contained in the above discussions, these should not be construed as limitations on the scope of the present disclosure, but rather as descriptions of features that may be specific to particular embodiments. Certain features that are described in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable sub-combination.

Although the present disclosure has been described in language specific to structural features and/or methodological acts, it is to be understood that the present disclosure defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.