Detailed Description
Embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. While certain embodiments of the present disclosure have been illustrated in the accompanying drawings, it is to be understood that the present disclosure may be embodied in various forms and should not be construed as limited to the embodiments set forth herein, but rather are provided for a more thorough and complete understanding of the present disclosure. It should be understood that the drawings and embodiments of the disclosure are for illustration purposes only and are not intended to limit the scope of the disclosure.
The term "base station" as used herein may refer to a node B (NodeB or NB), an evolved node B (eNodeB or eNB), a Remote Radio Unit (RRU), a Radio Head (RH), a Remote Radio Head (RRH), a relay, or a low power node such as a pico base station, a femto base station, or the like. In the context of the present disclosure, for ease of discussion purposes, the eNB is primarily taken as an example of a base station.
The term "remote device" as used herein refers to any terminal device or User Equipment (UE) capable of wireless communication with base stations or with each other. By way of example, the remote device may include a sensor having a communication function, a detector, a Mobile Terminal (MT), a Subscriber Station (SS), a Portable Subscriber Station (PSS), a Mobile Station (MS), or an Access Terminal (AT), as well as the above-described devices in a vehicle, and the like. In the context of the present disclosure, the terms "remote device", "terminal device" and "user equipment" may be used interchangeably for purposes of discussion convenience, and UE is primarily taken as an example of a remote device (remote UE).
The term "relay device" as used herein refers to a network device or terminal device capable of forwarding data packets between a base station and a remote device. As an example, the relay device may be a base station or other entity or node having a specific function in the communication network, but may also be any terminal device or user equipment capable of wireless communication with the base station or with each other. In the context of the present disclosure, for the purpose of discussion convenience, UE is mainly taken as an example of a relay device (relay UE).
The terms "include" and variations thereof as used herein are inclusive and open-ended, i.e., "including but not limited to. The term "based on" is "based, at least in part, on". The term "one embodiment" means "at least one embodiment"; the term "another embodiment" means "at least one additional embodiment". Relevant definitions for other terms will be given in the following description.
Fig. 1 shows a schematic diagram 100 of a two-hop packet transmission in which an embodiment of the disclosure may be implemented, where L2 relaying is performed on the RLC sublayer. As shown in fig. 1, remote UE110 may communicate with eNB130 viarelay UE 120. For example, as shown, remote UE110 may send data packets (uplink transmissions) to eNB130 in the form of Protocol Data Units (PDUs) viarelay UE 120. It should be understood that eNB130 may likewise send data packets (downlink transmissions) to remote UE110 viarelay UE 120. For convenience, embodiments of the present disclosure are described herein by way of example only in the uplink.
The communication between the remote UE110 and therelay UE 120 is illustrated in FIG. 1 by 101-104. At 101, the remote UE110 transmits a protocol dataunit PDU #1 to the relay UE 120. At 102, relay UE 120, after receivingPDU #1, transmits acknowledgement information ACK #1 forPDU #1 to remote UE 110. After the remote UE110 receives the acknowledgementinformation ACK #1 from therelay UE 120, PDU #1 is released from the buffer and at 103,PDU #2 continues to be transmitted to therelay UE 120.
At 104, relay UE 120, after receivingPDU #2, transmits acknowledgement information ACK #2 forPDU #2 to remote UE 110. And so on. Meanwhile, the communication between therelay UE 120 and the eNB130 is shown as 105-108 in FIG. 1. At 105, relay UE 120forwards PDU #1 to eNB130 after receiving it from remote UE 110. At 106, the eNB130 receives the forwardedPDU #1 and then transmits acknowledgement information ACK #1 forPDU #1 to therelay UE 120. At 107, relay UE 120 receivesacknowledgement ACK #1 from eNB130, and then continues to forwardPDU #2 received from remote UE110 to eNB 130. At 108, the eNB130 receives the transferredPDU #2 and transmits acknowledgementinformation ACK #2 forPDU #2 to therelay UE 120. The above process may be repeated in analogy.
It can be seen that in the current L2 relay of two-hop packet transmissions, there is relative independence between the first hop packet transmission (e.g., between remote UE110 and relay UE 120) and the second hop packet transmission (e.g., betweenrelay UE 120 and eNB 130). In this case, one link cannot be adjusted according to the state of the other link, so that the entire transmission is not flexible and the transmission efficiency is reduced. As described in detail below in conjunction with fig. 2.
Fig. 2 shows a diagram 200 of an L2 relay for two-hop packet transmission in the prior art. As shown in fig. 2, theprocedure 101 and 104 for the first-hop packet transmission between the remote UE110 and therelay UE 120 is similar to that in fig. 1, and is not repeated here. When the second hop transmission link betweenrelay UE 120 and eNB130 is broken or disconnected as shown in fig. 2,relay UE 120 cannot forward data packets such asPDU #1 andPDU #2 received from remote UE110 toeNB 130. Remote UE110 gets acknowledgement information such asACK #1 andACK #2 fromrelay UE 120 and considers that the data packet has been successfully received by eNB130, thereby releasing the transmitted data packet from the buffer. However, in practice, these data packets are not received by the receiving device of the second hop packet transmission, i.e., eNB130, so these data packets are lost throughout the RLC transmission.
In order to solve the above problem, the basic idea of the embodiment of the present disclosure is to establish a link between the first-hop packet transmission and the second-hop packet transmission on the RLC sublayer of L2, so that the first-hop packet transmission can be adjusted according to the status information of the second-hop packet transmission. Thus, L2 relaying on the RLC sublayer can be implemented to better support two-hop packet transmission between a remote UE and an eNB. This is explained in more detail below with reference to fig. 3 and 4.
Fig. 3 shows a flow diagram of amethod 300 implemented at a relay device for two-hop packet transmission in accordance with an embodiment of the disclosure. Themethod 300 may be implemented, for example, at therelay UE 120 of fig. 1 and 2 on the RLC sublayer of L2.
As shown in fig. 3, at 310, therelay UE 120 may obtain status information for the second hop RLC transmission in the two-hop packet transmission. According to one embodiment of the disclosure,relay UE 120 may monitor the link condition of the second hop RLC transmission, i.e., the link condition betweenrelay UE 120 andeNB 130.
For example, therelay UE 120 may monitor for a degradation in link conditions for the second hop RLC transmission. In this case, according to an embodiment of the present disclosure, monitoring the link condition may include monitoring at least one of: the second hop RLC transmits a disconnection for a first predetermined period of time; receiving ACK information for the packet transmission within a second predetermined period of time if there is a packet transmission; and the buffer for the second hop RLC transmission is full for a third predetermined period of time.
Alternatively, for example, therelay UE 120 may monitor for recovery or degradation of link conditions for the second hop RLC transmission. In this case, according to an embodiment of the present disclosure, monitoring the link condition may include monitoring at least one of: after the second-hop RLC transmission is disconnected or the ACK information for the packet transmission is not received within a preset time period, the ACK information is received again; and the buffer for the second hop RLC transmission changes from a full state to a non-full state.
According to another embodiment of the present disclosure, therelay UE 120 may monitor the packet transmission condition of the second hop RLC transmission. For example, it may be monitored whether data packets are successfully transmitted betweenrelay UE 120 andeNB 130. According to an embodiment of the present disclosure, therelay UE 120 may monitor at least ACK/NACK information for the second hop RLC transmission. For example, relayingUE 120 can establish and maintain a mapping table between first hop RLC Service Data Units (SDUs) and second hop RLC SDUs to send ACK/NACK information for the relayed RLC SDUs to the transmitting device for the first hop RLC transmission to inform which relayed SDUs were successfully received by the receiving device for the second hop RLC transmission.
At 320, therelay UE 120 may send the status information to the sending device for the first-hop RLC transmission in the two-hop packet transmission to control the first-hop RLC transmission by the sending device based on the status information. In this example, the transmitting device of the first hop RLC transmission is theremote UE 110. Therelay UE 120 may transmit the acquired at least one of the link condition and the packet transmission condition, for example, to the remote UE110 as the state information. As such, therelay UE 120 feeds back not only ACK/NACK information transmitted by the first hop RLC but also ACK/NACK information transmitted by the second hop RLC to the transmitting device of the first hop RLC transmission.
According to one embodiment of the present disclosure, therelay UE 120 may transmit the STATUS information using an existing or already defined "STATUS" (STATUS) Protocol Data Unit (PDU). For example, status information may be added to a status PDU for first hop RLC transmission, e.g., in a reserved field of the status PDU, e.g., a 1-bit R1 field or a 3-bit CPT field. According to another embodiment of the present disclosure,relay UE 120 may use a newly defined (custom) PDU exclusively for transmitting the status information. For example, a status PDU is newly defined to include only such status information.
After a transmitting device, e.g., remote UE110, of a first hop RLC transmission receives the status information, the first hop RLC transmission may be controlled based on the status information. Reference is now made to fig. 4 for a detailed description. Fig. 4 shows a flow diagram of amethod 400 implemented at a remote device or base station for two-hop packet transmission in accordance with an embodiment of the disclosure. Themethod 400 may be implemented at the remote UE110 (uplink) or eNB130 (downlink) of fig. 1 and 2 on the RLC sublayer of L2. This is described here in terms of an embodiment atremote UE 110.
As shown in fig. 4, at 410, remote UE110 may receive status information for a second hop RLC transmission in a two hop packet transmission from a relay device (e.g., relay UE 120). As mentioned above, therelay UE 120 may transmit the status information through an existing or newly defined PDU. Accordingly, according to an embodiment of the present disclosure, the remote UE110 may obtain the status information from the status PDU for the first-hop RLC transmission. According to another embodiment of the present disclosure, the remote UE110 may obtain the status information from a custom PDU dedicated to communicating the status information.
At 420, the remote UE110 may control the first hop RLC transmission in the two-hop packet transmission based on the status information. As mentioned previously, therelay UE 120 may transmit at least one of the monitored link condition and packet transmission condition of the second-hop RLC transmission as the status information. Accordingly, the remote UE110 may adjust the first-hop RLC transmission based on at least one of link conditions and packet transmission conditions of the second-hop RLC transmission. For the link status and the packet transmission status, reference may be made to the corresponding description above in conjunction with fig. 3, which is not described herein again. The following describes the adjustment of the first hop RLC transmission.
According to an embodiment of the disclosure, adjusting the first hop RLC transmission comprises at least one of: stopping the first-hop RLC transmission; changing the size of the data PDU transmitted by the first hop RLC; delaying a first hop RLC transmission; and resuming the first-hop RLC transmission.
According to embodiments of the present disclosure, a first hop RLC transmission may be adjusted based on a link condition of a second hop RLC transmission. For example, in case the status information indicates that the link of the second hop RLC transmission is degraded, e.g. the second hop RLC transmission has been disconnected for a first predetermined period of time, no ACK information for the packet transmission has been received within a second predetermined period of time if there is a packet transmission, the buffer for the second hop RLC transmission has been full for a third predetermined period of time, etc., then the first hop RLC transmission may be adjusted with at least one of: stopping the first-hop RLC transmission; changing the data PDU size for the first hop RLC transmission (e.g., reducing the data PDU size to slow down the first hop RLC transmission); the first hop RLC transmission is delayed.
Alternatively, for example, in case the status information indicates that the link of the second hop RLC transmission is restored or good, for example, ACK information is re-received after the second hop RLC transmission is disconnected or ACK information for packet transmission is not received within a predetermined period of time, a buffer for the second hop RLC transmission changes from a full state to a non-full state, and so on, then the first hop RLC transmission may be adjusted with at least one of the following: changing the data PDU size for the first hop RLC transmission (e.g., increasing the data PDU size to speed up the first hop RLC transmission); the first hop RLC transmission is resumed (e.g., restarted or cancelled from being delayed).
According to an embodiment of the present disclosure, the first-hop RLC transmission may be adjusted based on the packet transmission condition of the second-hop RLC transmission. For example, the first hop RLC transmission is adjusted based on ACK/NACK information for the second hop RLC transmission. As previously described, the relayingUE 120 transmits ACK/NACK information of the relayed RLC SDU to the transmitting device of the first-hop RLC transmission, e.g., theremote UE 110. In one embodiment, the first hop RLC transmission may be adjusted based on the amount of NACK information in the second hop RLC transmission. For example, if the amount of NACK in the second hop RLC transmission is greater than a predetermined threshold, the remote UE110 may adapt the first hop RLC transmission using at least one of: stopping the first-hop RLC transmission; changing the data PDU size for the first hop RLC transmission (e.g., reducing the data PDU size to slow down the first hop RLC transmission); the first hop RLC transmission is delayed. It is to be understood that the embodiments of the disclosure are not limited thereto but may be otherwise variously described. And adjusting the first-hop RLC transmission according to the state information of the second-hop RLC transmission, thereby improving the efficiency of the whole transmission and the robustness of a link.
For ease of understanding, a specific scenario example of adjusting the first-hop RLC transmission according to the status information of the second-hop RLC transmission is described below with reference to fig. 5. Fig. 5 shows a schematic diagram 500 of L2 relaying on the RLC sublayer for two-hop packet transmission according to an embodiment of the present disclosure. As shown in fig. 5, the remote UE110 transmitsPDU #1 to the relay UE 120 (similar to 101 of fig. 1), and receives acknowledgementinformation ACK #1 forPDU #1 from the relay UE 120 (similar to 102 of fig. 1). In this example, the remote UE110 releases the bufferedPDU #1 upon receivingACK # 1.Relay UE 120forwards PDU #1 to eNB130 (similar to 105 of fig. 1). The second hop RLC transmission link is now disconnected. Unlike the embodiment of fig. 1, in the embodiment of fig. 5, at 510, therelay UE 120 sends status information to the remote UE110 indicating that the second hop RLC transmission link is disconnected. At 520, remote UE110 delays RLC transmission ofPDU #2 based on the status information. It should be understood that fig. 5 is only an example and does not constitute any limitation on the embodiments of the present disclosure. There are many alternative embodiments other than the one shown in fig. 5, which are not listed here.
According to an embodiment of the present disclosure, the remote UE110 may also maintain data in the buffer for the first hop RLC transmission based on the ACK/NACK information for the second hop RLC transmission. As previously described, the relaying-UE 120 sends ACK/NACK information of the relayed RLC SDUs to the transmitting device of the first-hop RLC transmission, e.g., the remote UE110, so that the remote UE110 can know which relayed SDUs were successfully received by the receiving device of the second-hop RLC transmission. Thus, the remote UE110 may release the relevant data in the buffer for the first hop RLC transmission. Conversely, it can be known which relayed SDUs were not successfully received by the receiving device transmitted by the second hop RLC, the remote UE110 can continue to store these data in the buffer. Therefore, the buffer content of the first-hop RLC transmission can be managed according to the feedback of the second-hop RLC transmission, and the data loss in the whole transmission process is reduced.
For ease of understanding, a specific scenario example of managing buffering according to status information transmitted by the second hop RLC is described below with reference to fig. 6. Fig. 6 shows a schematic diagram 600 of L2 relaying on the RLC sublayer for two-hop packet transmission according to an embodiment of the present disclosure. As shown in FIG. 6, the remote UE110, therelay UE 120 and the eNB130 perform two-hop packet transmission in a similar process to 101-108 described above in connection with FIG. 1. Unlike in fig. 1, at 610,relay UE 120 transmits status information containing ACK information corresponding toPDU #1 andPDU #2 for relay toremote UE 110. At 620, the remote UE110 releasesPDU #1 andPDU #2 in its buffer based on the status information. It should be understood that fig. 6 is only an example and does not constitute any limitation on the embodiments of the present disclosure. There are many alternative embodiments other than the one shown in fig. 6, which are not listed here.
The method for two-hop packet transmission according to an embodiment of the present disclosure is described above. According to the method of the embodiment of the present disclosure, effective link adjustment and enhanced link robustness can be provided, thereby improving the efficiency of the entire transmission and reducing the loss of data packets. Accordingly, embodiments of the present disclosure may also provide an apparatus for two-hop packet transmission implemented at a relay device and a remote device or a base station. This is described in detail below in conjunction with fig. 7 and 8.
Fig. 7 shows a block diagram of anapparatus 700 implemented at a relay device according to an embodiment of the disclosure. It is to be appreciated thatapparatus 700 can be implemented on, for example,relay UE 120 shown in fig. 1. Alternatively,apparatus 700 may be the relay UE itself. Theapparatus 700 may perform control for two-hop packet transmission at the RLC sublayer of L2.
As shown in fig. 7, theapparatus 700 may include an obtainingunit 710 and a transmittingunit 720. The obtainingunit 710 may be configured to obtain status information of the second hop RLC transmission. The obtainingunit 710 may be implemented by a controller, for example. The transmittingunit 720 may be configured to transmit the status information to a transmitting device (e.g., the remote UE110 of fig. 1) of the first hop RLC transmission to control the first hop RLC transmission by the transmitting device based on the status information. For example, the transmittingunit 720 may be implemented by a transceiver.
In one embodiment, the obtainingunit 710 may include a first monitoring unit (not shown) configured to monitor a link condition of the second hop RLC transmission. In one embodiment, the first monitoring unit is configured for monitoring at least one of: whether second hop RLC transmission is off for a first predetermined period of time; whether ACK information for the packet transmission is received within a second predetermined period in case of the packet transmission; whether a buffer for second hop RLC transmission is full for a third predetermined period; whether the ACK information is received again after the second-hop RLC transmission is disconnected or the ACK information for the packet transmission is not received within a predetermined period of time; and whether the buffer for the second hop RLC transmission changes from a full state to a non-full state.
In one embodiment, the obtainingunit 710 may include a second monitoring unit (not shown) configured to monitor a packet transmission condition of the second hop RLC transmission. In one embodiment, the second monitoring unit may be configured to monitor at least ACK/NACK information for the second hop RLC transmission.
In one embodiment, the transmittingunit 720 may include a first transmitting unit (not shown) configured to add status information to a status PDU for the first-hop RLC transmission. In another embodiment, the transmittingunit 720 may include a second transmitting unit (not shown) configured to transmit the status information in a custom PDU dedicated to transmitting the status information.
It should be understood that each element recited in theapparatus 700 corresponds to each respective action in themethod 300 described with reference to fig. 3. Moreover, the operations and features of theapparatus 700 and the units included therein all correspond to the operations and features described above in connection with fig. 3 and have the same effects, and detailed details are not repeated.
Fig. 8 shows a block diagram of anapparatus 800 implemented at a remote device or base station for two-hop packet transmission according to an embodiment of the disclosure. It is to be appreciated thatapparatus 800 may be implemented on, for example,remote UE 120 shown in fig. 1, and may also be implemented on, for example, eNB130 shown in fig. 1. Alternatively, theapparatus 800 may be the remote UE itself or the eNB itself. Theapparatus 800 may perform control for two-hop packet transmission at the RLC sublayer of L2.
As shown in fig. 7, theapparatus 800 may include a receivingunit 810 and acontrol unit 820. The receivingunit 810 may be configured to receive status information of a second hop RLC transmission of a two-hop packet transmission from a relay device (e.g., therelay UE 120 of fig. 1). The receivingunit 810 may be implemented by a transceiver. Thecontrol unit 820 is configured for controlling the first hop RLC transmission of the two-hop packet transmission based on the status information. Thecontrol unit 820 may be implemented by a controller.
In one embodiment, the receivingunit 810 may include: a first receiving unit (not shown) configured to acquire status information from a status PDU for the first-hop RLC transmission. In another embodiment, the receivingunit 810 may include: a second receiving unit (not shown) configured to acquire the status information from the customized PDU dedicated to transmit the status information.
In one embodiment, thecontrol unit 820 may include: a first adjusting unit (not shown) configured to adjust the first hop RLC transmission based on the link condition of the second hop RLC transmission. The first adjusting unit is configured to adjust the first-hop RLC transmission based on at least one of: whether second hop RLC transmission is off for a first predetermined period of time; whether ACK information for the packet transmission is received within a second predetermined period in case of the packet transmission; whether a buffer for second hop RLC transmission is full for a third predetermined period; whether the ACK information is received again after the second-hop RLC transmission is disconnected or the ACK information for the packet transmission is not received within a predetermined period of time; and whether the buffer for the second hop RLC transmission changes from a full state to a non-full state.
In one embodiment, thecontrol unit 820 may include: a second adjusting unit (not shown) configured to adjust the first-hop RLC transmission based on a packet transmission condition of the second-hop RLC transmission. In one embodiment, the second adjusting unit is configured to adjust the first hop RLC transmission based on ACK/NACK information for the second hop RLC transmission.
According to an embodiment of the disclosure, adjusting the first hop RLC transmission comprises at least one of: stopping the first-hop RLC transmission; changing the size of the data PDU transmitted by the first hop RLC; delaying a first hop RLC transmission; and resuming the first-hop RLC transmission.
In one embodiment, theapparatus 800 may further comprise: a maintenance unit (not shown) configured to maintain the data in the buffer for the first hop RLC transmission based on the ACK/NACK information for the second hop RLC transmission.
It should be understood that each unit recited in theapparatus 800 corresponds to each action in themethod 400 described with reference to fig. 4, respectively. Moreover, the operations and features of theapparatus 800 and the units included therein all correspond to the operations and features described above in connection with fig. 4 and have the same effects, and detailed details are not repeated.
FIG. 9 illustrates a block diagram of adevice 900 suitable for implementing embodiments of the present disclosure. Thedevice 900 may include acontroller 910, thecontroller 910 controlling the operation and functions of thedevice 900. For example, in certain embodiments, thecontroller 910 may perform various operations by way ofinstructions 930 stored in amemory 920 coupled thereto. Thememory 920 may be of any suitable type suitable to the local technical environment and may be implemented using any suitable data storage technology, including but not limited to semiconductor-based memory devices, magnetic memory devices and systems, optical memory devices and systems. Although only a single memory unit is illustrated in FIG. 9, there may be multiple physically distinct memory units withindevice 900.
Thecontroller 910 may be of any suitable type suitable to the local technical environment, and may include, but is not limited to, one or more of general purpose computers, special purpose computers, microcontrollers, digital signal controllers (DSPs), and controller-based multi-core controller architectures. Thedevice 900 may also include a plurality ofcontrollers 910.
Device 900 may be used to implementrelay UE 120. Whendevice 900 is acting asrelay UE 120,controller 910 andmemory 920 may operate in conjunction to implementmethod 300 described above with reference to fig. 3. All of the features described above with reference to fig. 3 apply to theapparatus 900 and are not described in detail herein.
Device 900 may be used to implement remote UE110 oreNB 130. Whendevice 900 is acting as a remote UE110 or eNB130,controller 910 andmemory 920 may operate in conjunction to implementmethod 400 described above with reference to fig. 4. All of the features described above with reference to fig. 4 are applicable to thedevice 900 and will not be described in detail here.
It should be understood that thedevice 900 may also comprise any other required means/elements, such as a transmitter, a receiver, a transceiver, an antenna, etc., for performing the corresponding actions. Here, for the sake of clarity, they are not shown in the figures.
In general, the various example embodiments of this disclosure may be implemented in hardware or special purpose circuits, software, logic or any combination thereof. Certain 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 aspects of embodiments of the disclosure have been illustrated or described as block diagrams, flow charts, or using some other pictorial representation, it is well understood 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. Examples of hardware devices that may be used to implement embodiments of the present disclosure include, but are not limited to: field Programmable Gate Arrays (FPGAs), Application Specific Integrated Circuits (ASICs), Application Specific Standards (ASSPs), systems on a chip (SOCs), Complex Programmable Logic Devices (CPLDs), and the like.
By way of example, embodiments of the disclosure may be described in the context of machine-executable instructions, such as those included in program modules, being executed in a device on a target real or virtual processor. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. In various embodiments, the functionality of the program modules may be combined or divided between program modules as described. Machine-executable instructions for program modules may be executed within local or distributed devices. In a distributed facility, program modules may be located in both local and remote memory storage media.
Computer program code for implementing the methods of the present disclosure may be written in one or more programming languages. These computer program codes may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus, such that the program codes, when executed by the computer or other programmable data processing apparatus, cause the functions/acts specified in the flowchart and/or block diagram block or blocks to be performed. The program code may execute entirely on the computer, partly on the computer, as a stand-alone software package, partly on the computer and partly on a remote computer or entirely on the remote computer or server.
In the context of this disclosure, a machine-readable 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. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination thereof. More detailed examples of a machine-readable storage medium 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 storage device, a magnetic storage device, or any suitable combination thereof.
Additionally, 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 some cases, multitasking or parallel processing may be beneficial. Likewise, while the above discussion contains certain specific implementation details, this should not be construed as limiting the scope of any invention or claims, but rather as describing particular embodiments that may be directed to particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not 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.