1. Field
Certain aspects of the present disclosure generally relate to wireless communications, and more particularly, to systems, apparatus and methods for providing seamless handoff at the application layer between disparate access networks for interactive applications.
2. Background
The use of interactive applications, such as real time voice and video chat applications, has become commonplace on mobile wireless devices, such as smartphones. Such applications require an access network connection between at least two participants on separate devices. It is a common occurrence that one of the mobile wireless devices moves from a location where only a first access network may provide access network connectivity to another location where a second access network may also provide access network connectivity for and during an active session. The first and second access networks may be managed by different service providers, or by end users. Upon changing locations, it may be desirable to switch from the first access network to the second access network for any number of reasons. Accordingly, systems, apparatus and methods for providing seamless handoff at the application layer between disparate access networks for interactive applications are desirable.
Various implementations of systems, methods and devices within the scope of the appended claims each have several aspects, no single one of which is solely responsible for the desirable attributes described herein. Without limiting the scope of the appended claims, some prominent features are described herein.
Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, the drawings, and the claims. Note that the relative dimensions of the following figures may not be drawn to scale.
One aspect of the disclosure provides a method of communication for an application running on an application layer of a first wireless host. The method comprises communicating, via the application layer, a first data flow to a second wireless host over a first application connection on a first access network. The method further comprises determining, at the application, one or more channel quality metrics of each of the first application connection and an accessible second application connection on a second access network. The method further comprises establishing, via the application layer, the second connection with the second wireless host over the second access network based on the one or more channel quality metrics of one or both of the first and second application connections.
Another aspect of the disclosure provides a first wireless host for wireless communication. The first wireless host comprises a processor running an application on an application layer. The processor is further configured to communicate, via the application layer, a first data flow to a second wireless host over a first application connection on a first access network. The processor is further configured to determine, at the application, one or more channel quality metrics of each of the first application connection and an accessible second application connection on a second access network. The processor is further configured to establish, via the application layer, the second application connection with the second wireless host over the second access network based on the one or more channel quality metrics of one or both of the first and second application connections.
Another aspect of the disclosure provides a non-transitory, computer-readable medium comprising code. The code, when executed, causes a first wireless host running an application on an application layer to communicate, via the application layer, a first data flow to a second wireless host over a first connection on a first access network. The code, when executed, further causes the device to determine, at the application, one or more channel quality metrics of each of the first connection and an accessible second connection on a second access network based on channel quality metrics. The code, when executed, further causes the device to establish, via the application layer, the second connection with the second wireless host over the second access network based on the one or more channel quality metrics of one or both of the first and second connections.
Another aspect of the disclosure provides a first wireless host for wireless communication. The wireless host comprises means for running an application on an application layer of the first wireless host. The wireless host further comprises means for communicating, via the application layer, a first data flow to a second wireless node over a first connection on a first access network. The wireless host further comprises means for determining, at the application, one or more channel quality metrics of each of the first connection and an accessible second connection on a second access network. The wireless host further comprises means for establishing, via the application layer, the second connection with the second wireless node over the second access network based on the one or more channel quality metrics of one or both of the first and second connections.
Various aspects of the novel systems, apparatuses, and methods are described more fully hereinafter with reference to the accompanying drawings. The teachings of this disclosure may, however, be embodied in many different forms and should not be construed as limited to any specific structure or function presented throughout this disclosure. Rather, these aspects are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. Based on the teachings herein one skilled in the art should appreciate that the scope of the disclosure is intended to cover any aspect of the novel systems, apparatuses, and methods disclosed herein, whether implemented independently of or combined with any other aspect of the invention. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the invention is intended to cover such an apparatus or method which is practiced using other structure, functionality, or structure and functionality in addition to or other than the various aspects of the invention set forth herein. It should be understood that any aspect disclosed herein may be embodied by one or more elements of a claim.
Although particular aspects are described herein, many variations and permutations of these aspects fall within the scope of the disclosure. Although some benefits and advantages of the preferred aspects are mentioned, the scope of the disclosure is not intended to be limited to particular benefits, uses, or objectives. Rather, aspects of the disclosure are intended to be broadly applicable to different wireless technologies, system configurations, access networks, and transmission protocols, some of which are illustrated by way of example in the figures and in the following description of the preferred aspects. The detailed description and drawings are merely illustrative of the disclosure rather than limiting, the scope of the disclosure being defined by the appended claims and equivalents thereof.
Wireless access network technologies may include various types of wireless local area access networks (WLANs). A WLAN may be used to interconnect nearby devices together, employing widely used access networking protocols. The various aspects described herein may apply to any communication standard, such as Wi-Fi or, more generally, any member of the IEEE 802.11 family of wireless protocols.
In some implementations, a WLAN includes various devices which are the components that access the wireless access network. For example, there may be two types of devices: access points (“APs”) and clients (also referred to as stations, or “STAs”). In general, an AP serves as a hub or base station for the WLAN and an STA serves as a user of the WLAN. For example, a STA may be a laptop computer, a personal digital assistant (PDA), a mobile phone, etc. In an example, an STA connects to an AP via a Wi-Fi (e.g., IEEE 802.11 protocol such as 802.11ah) compliant wireless link to obtain general connectivity to the Internet or to other wide area access networks. In some implementations an STA may also be used as an AP.
An access point (“AP”) may comprise, be implemented as, or known as a NodeB, Radio Access network Controller (“RNC”), eNodeB, Base Station Controller (“BSC”), Base Transceiver Station (“BTS”), Base Station (“BS”), Transceiver Function (“TF”), Radio Router, Radio Transceiver, Basic Service Set (“BSS”), Extended Service Set (“ES S”), Radio Base Station (“RB S”), or some other terminology.
A station (“STA”) may also comprise, be implemented as, or known as a user terminal, an access terminal (“AT”), a subscriber station, a subscriber unit, a mobile station, a remote station, a remote terminal, a user agent, a user device, a user equipment, or some other terminology. In some implementations an access terminal may comprise a cellular telephone, a cordless telephone, a Session Initiation Protocol (“SIP”) phone, a wireless local loop (“WLL”) station, a personal digital assistant (“PDA”), a handheld device having wireless connection capability, or some other suitable processing device connected to a wireless modem. Accordingly, one or more aspects taught herein may be incorporated into a phone (e.g., a cellular phone or smartphone), a computer (e.g., a laptop), a portable communication device, a headset, a portable computing device (e.g., a personal data assistant), an entertainment device (e.g., a music or video device, or a satellite radio), a gaming device or system, a global positioning system device, or any other suitable device that is configured to communicate via a wireless medium.
The techniques described herein may be used for various broadband wireless communication systems, including communication systems that are based on an orthogonal multiplexing scheme. Examples of such communication systems include Spatial Division Multiple Access (SDMA), Time Division Multiple Access (TDMA), Orthogonal Frequency Division Multiple Access (OFDMA) systems, Single-Carrier Frequency Division Multiple Access (SC-FDMA) systems, and so forth. An SDMA system may utilize sufficiently different directions to concurrently transmit data belonging to multiple user terminals. A TDMA system may allow multiple user terminals to share the same frequency channel by dividing the transmission signal into different time slots, each time slot being assigned to different user terminal. A TDMA system may implement GSM or some other standards known in the art. An OFDMA system utilizes orthogonal frequency division multiplexing (OFDM), which is a modulation technique that partitions the overall system bandwidth into multiple orthogonal sub-carriers. These sub-carriers may also be called tones, bins, etc. With OFDM, each sub-carrier may be independently modulated with data. An OFDM system may implement IEEE 802.11 or some other standards known in the art. An SC-FDMA system may utilize interleaved FDMA (IFDMA) to transmit on sub-carriers that are distributed across the system bandwidth, localized FDMA (LFDMA) to transmit on a block of adjacent sub-carriers, or enhanced FDMA (EFDMA) to transmit on multiple blocks of adjacent sub-carriers. In general, modulation symbols are sent in the frequency domain with OFDM and in the time domain with SC-FDMA. A SC-FDMA system may implement 3GPP-LTE (3rd Generation Partnership Project Long Term Evolution) or other standards.
In the present application, the term “host” may correspond to any node that is not a router, e.g., a node that does not forward data packets not explicitly addressed to itself (end node within a network).
The device 202 may include a processor 204 which controls operation of the device 202. The processor 204 may also be referred to as a central processing unit (CPU) or hardware processor. Memory 206, which may include both read-only memory (ROM) and random access memory (RAM), may provide instructions and data to the processor 204. A portion of the memory 206 may also include non-volatile random access memory (NVRAM). The processor 204 typically performs logical and arithmetic operations based on program instructions stored within the memory 206. The instructions in the memory 206 may be executable to implement the methods described herein.
The processor 204 may comprise or be a component of a processing system implemented with one or more processors. Thus, where one or more operations are performed by the processor 204, the operations may be performed by a single processor 204, or alternatively a subset of the operations may each be performed by respective separate processors, which in combination form the processor 204. The one or more processors may be implemented with any combination of general-purpose microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate array (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic, discrete hardware components, dedicated hardware finite state machines, or any other suitable entities that can perform calculations or other manipulations of information.
The processing system may also include transitory or non-transitory machine-readable media for storing software. Software shall be construed broadly to mean any type of instructions, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. Instructions may include code (e.g., in source code format, binary code format, executable code format, or any other suitable format of code). The instructions, when executed by the one or more processors, cause the processing system to perform the various functions described herein.
The device 202 may also include a housing 208 that may include a transmitter 210 and a receiver 212 to allow transmission and reception of data between the device 202 and a remote location. The transmitter 210 and receiver 212 may be combined into a transceiver 214. An antenna 216 may be attached to the housing 208 and electrically coupled to the transceiver 214. The device 202 may also include (not shown) multiple transmitters, multiple receivers, multiple transceivers, and/or multiple antennas, which may be utilized during MIMO communications, for example.
The device 202 may also include a signal detector 218 that may be used in an effort to detect and quantify the level of signals received by the transceiver 214. The signal detector 218 may detect such signals as total energy, energy per subcarrier per symbol, power spectral density and other signals. The device 202 may also include a digital signal processor (DSP) 220 for use in processing signals. The DSP 220 may be configured to generate a data unit for transmission.
The device 202 may further comprise a user interface 222 in some aspects. The user interface 222 may comprise a keypad, a microphone, a speaker, and/or a display. The user interface 222 may include any element or component that conveys information to a user of the device 202 and/or receives input from the user.
The various components of the device 202 may be coupled together by a bus system 226. The bus system 226 may include a data bus, for example, as well as a power bus, a control signal bus, and a status signal bus in addition to the data bus. Those of skill in the art will appreciate the components of the device 202 may be coupled together or accept or provide inputs to each other using some other mechanism.
Although a number of separate components are illustrated in
As discussed above, the device 202 may comprise either or both of the STAs 102a and 102b, and may be used to transmit and/or receive communications. The communications exchanged between devices in a wireless network may include data units which may comprise packets or frames. In some aspects, the data units may include data frames, control frames, and/or management frames. Data frames may be used for transmitting data from a BS, AP and/or a STA to other BSs, APs and/or STAs. Control frames may be used together with data frames for performing various operations and for reliably delivering data (e.g., acknowledging receipt of data, polling of BSs, area-clearing operations, channel acquisition, carrier-sensing maintenance functions, etc.). Management frames may be used for various supervisory functions (e.g., for joining and departing from wireless networks, etc.).
Device 300 may include an application layer 302, a runtime layer 304 and a native layer 306. An interactive media application 312 may run on the application layer 302. Non-limiting examples of the application 312 may include Tango messenger, Face Time, Skype, Duobango, Jitsi or WebRTC or any other interactive media application. A connectivity engine (CnE) service 310 may run on the runtime layer 304, and a connectivity daemon (CND) 308 may run on the native layer 306. In a first state, the interactive media application 312 running on the device 300 may communicate with another device (not shown) over a first access network connection, e.g., a 3G cellular access network or other network type. When another, second access network connection, e.g., a Wi-Fi or other access network, becomes available, the CND 308 may be configured to produce an access network availability indication based on metrics associated with one or both of the first and second access networks, for example, Wi-Fi quality estimation (WQE) techniques where channel quality metrics may be determined according to measurements made on at least one of a physical layer, a medium access control (MAC) layer and a transport layer of the Wi-Fi interface. This indication may be communicated upward to the CnE service 310 in the runtime layer 304. The CnE service 310 may be configured to then communicate a message to the application 312 on the application layer 302 indicating an intent (i.e. a CONNECTIVITY_ACTION intent message) to modify a connection with one or more access networks, e.g., stop using the first access network and start using the second access network or vice versa. The application 312 may receive this intent message and begin the seamless handoff at the application layer 302 between the disparate access networks, as will be described in more detail in connection with
Once the second application connection 408b is established, both the first and second application connections 408a and 408b may be utilized to communicate the session data between the switching peer 402a and the receiving peer 402b. With both application connections established, the switching peer 402a and the receiving peer 402b may replicate their transmissions over the pre-existing application connection (first application connection 408a) and the new application connection (second application connection 408b). In some implementations, replication may be understood to mean that exactly the same data packets may be sent over both the first application connection 408a and the second application connection 408b. Such a replicated data flow may be termed a repair data flow and transmitting the replicated data flow along with the original data flow may be called bicasting. By replicating transmission data, one or both of the switching peer 402a and the receiving peer 402b may characterize the latency and throughput of each of the first application connection 408a and the second application connection 408b. An additional benefit of replicating the transmission data is the increased availability and diversity provided by having two independent data paths between the peers. One or both of the switching peer 402a and the receiving peer 402b may indicate to the other peer the rate at which it receives data from the other peer for each application connection. For example, the switching peer 402a may indicate to the receiving peer 402b the rate at which the switching peer 402a receives data from the receiving peer 402b on each of the first and second application connections 408a and 408b, and vice versa. In this way, each of the peers may receive information as to the latency and throughput of communications in each direction over each of the first and second application connections 408a and 408b.
Once in the setup state 704, the switching peer 402a may set up the new application connection by replicating the existing application connection on the new access network connection. The switching peer 402a may also set a setup timer and wait for an acknowledge message (ACK) from the receiving peer 402b. Situations in which the switching peer 402a may transition back to the idle state 702 include receiving a CONNECTIVITY_ACTION intent message that an access network is down, a received byte, codec or data rate at the switching peer 402a is dropping quickly (e.g., deteriorating faster than a predetermined threshold rate or deteriorating below a predetermined threshold), or expiration of the setup timer. From the setup state 704, the switching peer 402a may transition to the bicast state 706 upon receiving the ACK message from the receiving peer 402b if both of the first and second access networks 410a and 410b are still up.
Once in the bicast state 706, the switching peer 402a may set a bicast timer and wait for the channel quality metrics indication (e.g,. latency, data rates, and/or throughput information) from the receiving peer 402b. If the switching peer 402a receives the channel quality information from the receiving peer 402b before expiration of the bicast timer, the switching peer 402a may close the unnecessary, agreed upon application connection using a particular access network connection as previously described in connection with
Since, in some implementations, the same data will be transmitted and received over both of the first and second application connections 408a and 408b, both the switching peer 402a and the receiving peer 402b may include a deskew buffer for placing received data packets in the correct order without duplication, as will be described in more detail in connection with
The diagram 900 may additionally include a first receive buffer 906, a second receive buffer 908 and a deskew buffer 910 which may be located in the receiving peer 402b, for example. The first receive buffer 906 may be configured to temporarily store data received over the first application connection. Likewise, the second receive buffer 908 may be configured to temporarily store data received over a second application connection. Because the data received over the second application connection may be a replicated version of the data received over the first application connection, the deskew buffer 910 may be configured to place the received data packets in the correct order without duplication. For example, the deskew buffer may queue each ordered data packet from one of the first and second receive buffers 906 and 908 based on which receive buffer receives the particular uncorrupted data packet first. Where the data transmitted over the first and second access network connections are not identical, under some circumstances, only one of the first and second access network connections may transmit a particular data packet. In such a case, if the particular data packet is received in a corrupted state, since that data packet was not also transmitted across the other access network connection, that data packet may be retransmitted over the same and/or the other access network connection in order to avoid permanent loss of the information located in the corrupted data packet.
As shown, data packet 1 is received by the first receive buffer 906 but is not received by the second receive buffer 908 for whatever reason. Data packet 2 is also received by the first receive buffer 906 before it is received by the second receive buffer 908. Thus, as shown by the downward arrows, each of data packets 1 and 2 are placed in the deskew buffer 910 from the first receive buffer 906. However, as shown, data packets 3, 4, and N are received in rapid order by the second receive buffer 908. Because data packet 3 is received at the second receive buffer 908 before it is received at the first receive buffer 906, data packet 3 is placed in the deskew buffer 910 from the second receive buffer 908, as shown by the downward arrow. Similarly, data packets 4 and N are received at the second receive buffer 908 and are not received at the first receive buffer 906 for whatever reason. Such reasons may include drastically increased latency over the first access network connection or loss of the data packets altogether while being transmitted over the first application connection. Thus, data packets 4 and N are placed in the deskew buffer 910 from the second receive buffer 908, as shown by the downward arrows. Thus, the deskew buffer 910 allows each received data packet to be placed in the correct order regardless of when or over which application connection the data packets are received.
In some implementations, one or more particular packet(s) may be received in a corrupted state from each of the first and second connections. In such a case, a processor in the peer receiving the packets may be configured to repair the corrupted received packet(s) for placing into the deskew buffer 910 based on the one or more corrupted packets received from each of the first and second connections. For example, the processor may be configured to compare and/or correlate one or more bits within a particular corrupted packet as received from each of the first and second connections to extrapolate, infer or determine one or more missing or corrupted bits. Once the missing or corrupted bits are extrapolated, inferred, or determined, the repaired packet may be placed at the appropriate spot and/or in the correct order within the deskew buffer 910.
Thus, the call flow diagram 1100 may continue with operation 1102 which includes enumerating the access network connections. For example, the switching peer application 1002 may determine the first access network connection (e.g., a 3G, 4G, or 4G LTE connection) is available and associated with a first IP address, and that the second access network connection (e.g., a Wi-Fi connection) is available and associated with a second IP address. At this point, if both of the first and second access networks are up, the call flow continues with operation 1103 where the switching peer application 1002 sends an initialization packet to the receiving peer application 1012 over the new, i.e., second, access network connection to setup an application connection. This may function as a notification to the receiving peer application 1012 that the second application connection has been established by the switching peer application 1002. The switching peer application may then set a setup timer at operation 1104 which will define a time limit in which the switching peer application 1002 may expect to receive an acknowledgement of the initialization of the second application connection from the receiving peer application 1012.
Upon receiving the initialization packet of operation 1103, the receiving peer application 1012 may transition to the bicast state at operation 1106, as previously described in connection with the state diagram of
At operation 1122, a message may be sent to the receiving peer application 1012 indicating that the unneeded application connection may be closed, as previously described in connection with
Likewise, at operation 1314 the switching peer application 1002 may send data on the first, pre-existing application connection to the receiving peer application 1012. At operation 1316 the receiving peer application 1012 may place the data packet in its deskew buffer if the data packet has not previously arrived on the second access network connection. At operation 1318, the latency and throughput metrics may be updated for the first application connection. At operation 1320 the switching peer application 1002 may send data on the second application connection to the receiving peer application 1012. At operation 1322 the receiving peer application 1012 may place the data packet in its deskew buffer if the data packet has not previously arrived on the first application connection. At operation 1324, the latency and throughput metrics may be updated for the second application connection.
For the purpose of illustration, the line 1420 indicates the time at which the bicast timer would have expired had no data rates (or in some implementations, only one data rate) been received by the switching peer application 1002 at operations 1402/1404. In such a case, at operation 1422 the switching peer may send a message indicating closing the unnecessary application connection based on access network availability to the receiving peer application 1012, close the application connection, and transition to the idle state at operation 1424. Upon receiving the message at operation 1422, the receiving peer application 1012 may close the application connection at operation 1426 and then transition to the idle state at operation 1428.
If both the first and second access networks are up, the first peer application 1602 may replicate the first application connection to the second application connection, and bind the second application connection to an IP address not in use by the existing first access network connection, and send a first peer device id indication (e.g., id hash) and priority indication (e.g., priority bit) to the second peer application at operation 1626. Such a priority indication may be based at least in part on the above-mentioned channel quality metrics utilized to determine data throughput of either of the first or second connections. This may include sending an initialization packet over the second application connection. The first peer application may then set a setup timer at operation 1628. Likewise, at nearly the same time, the second peer application 1608 may replicate the first application connection to the second application connection, and bind the second application connection to an IP address not in use by the existing, first access network connection, and send the second peer device id indication and priority indication to the first peer application at operation 1630. This may also include sending an initialization packet over the second application connection to the first peer application 1602. The second peer application may then set a setup timer at operation 1632. The second peer application 1608 may perform a hash compare at operation 1636. At nearly the same time, the first peer application 1602 may perform a hash compare at operation 1634. In the example shown in
If, instead, the first peer device id hash or priority indication has a smaller value than that of the first peer device, the first peer application 1602 may cancel its setup timer at operation 1646 and transition to the bicast state at operation 1648. The first peer application 1602 may then send an ACK message to the second peer application 1608 at operation 1650. In response, the second peer application 1608 may transition to the bicast state at operation 1652. In this case, the first peer application 1602 may function as the receiving peer and the second peer application 1608 may function as the switching peer, as previously described.
The flowchart 1700 may begin with block 1702, which includes communicating, via an application layer, a first data flow to a second wireless host over a first application connection on a first access network. For example, as shown in
Block 1704 may include determining, at the application, one or more channel quality metrics of each of the first application connection and an accessible second application connection on a second access network. For example, as shown in
Block 1706 may include establishing, via the application layer, the second application connection with the second wireless host over the second access network based on the one or more channel quality metrics of one both of the first and second application connections. For example, as shown in
Thus, the method(s) shown by flowchart 1700 may be utilized to provide a type of soft handoff feature from a first access network to both the first and a second access network, and then in some cases, to only one of the first and second access network, as conducted at the application (e.g., performed at the application layer) of the communication device rather than at or within the access network itself (e.g., at servers in the signal chain between the communicating wireless hosts). In this way, the method(s) shown by flowchart 1700 optimize device performance by avoiding noticeable interruptions in the service by the end user, and by avoiding any requirement of handoff processes being performed at any server or host between the end point hosts (e.g., the switching peer 402a and the receiving peer 402b).
The wireless host 1800 comprises means 1802 for running an application on an application layer of the first wireless host. The means 1802 may comprise at least the processor 204 shown in
The wireless host 1800 may further include means 1804 for communicating, via the application layer, a first data flow to a second wireless node over a first application connection on a first access network. The means 1804 can be configured to perform one or more of the functions described above with respect to block 1702 of
The wireless host 1800 may further include means 1806 for determining, at the application, one or more channel quality metrics of each of the first application connection and an accessible second application connection on a second access network. In some implementations, the means 1806 can be configured to perform one or more of the functions described above with respect to block 1704 of
The wireless host 1800 may further include means 1808 for establishing, via the application layer, the second application connection with the second wireless node over the second access network based on the one or more channel quality metrics of one or both of the first and second application connections. In some implementations, the means 1808 can be configured to perform one or more of the functions described above with respect to block 1706 of
A person/one having ordinary skill in the art would understand that information and signals can be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that can be referenced throughout the above description can be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Various modifications to the implementations described in this disclosure can be readily apparent to those skilled in the art, and the generic principles defined herein can be applied to other implementations without departing from the spirit or scope of this disclosure. Thus, the disclosure is not intended to be limited to the implementations shown herein, but is to be accorded the widest scope consistent with the claims, the principles and the novel features disclosed herein. The word “exemplary” is used exclusively herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other implementations.
Certain features that are described in this specification in the context of separate implementations also can be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation also can be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features can be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination can be directed to a sub-combination or variation of a sub-combination.
As used herein, a phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover: a, b, c, a-b, a-c, b-c, and a-b-c.
The various operations of methods described above may be performed by any suitable means capable of performing the operations, such as various hardware and/or software component(s), circuits, and/or module(s). Generally, any operations illustrated in the Figures may be performed by corresponding functional means capable of performing the operations.
The various illustrative logical blocks, modules and circuits described in connection with the present disclosure may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array signal (FPGA) or other programmable logic device (PLD), discrete gate or transistor logic, discrete hardware components or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any commercially available processor, controller, microcontroller or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
In one or more aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a web site, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Thus, in some aspects computer readable medium may comprise non-transitory computer readable medium (e.g., tangible media). In addition, in some aspects computer readable medium may comprise transitory computer readable medium (e.g., a signal). Combinations of the above should also be included within the scope of computer-readable media.
The methods disclosed herein comprise one or more steps or actions for achieving the described method. The method steps and/or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and/or use of specific steps and/or actions may be modified without departing from the scope of the claims.
Further, it should be appreciated that modules and/or other appropriate means for performing the methods and techniques described herein can be downloaded and/or otherwise obtained by a user terminal and/or base station as applicable. For example, such a device can be coupled to a server to facilitate the transfer of means for performing the methods described herein. Alternatively, various methods described herein can be provided via storage means (e.g., RAM, ROM, a physical storage medium such as a compact disc (CD) or floppy disk, etc.), such that a user terminal and/or base station can obtain the various methods upon coupling or providing the storage means to the device. Moreover, any other suitable technique for providing the methods and techniques described herein to a device can be utilized.
While the foregoing is directed to aspects of the present disclosure, other and further aspects of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
This Application claims priority to Provisional Application No. 61/941,997 entitled “SYSTEMS, METHODS, AND APPARATUS FOR SEAMLESS HANDOFF AT THE APPLICATION LAYER BETWEEN DISPARATE NETWORKS FOR INTERACTIVE APPLICATIONS” filed Feb. 19, 2014. The disclosure of Provisional Application No. 61/941,997 is hereby expressly incorporated in its entirety by reference herein.
Number | Date | Country | |
---|---|---|---|
61941997 | Feb 2014 | US |