Embodiments of the inventive subject matter generally relate to the field of communication networks and, more particularly, to minimizing interference in low latency and high bandwidth communications.
Wireless communication systems in a wireless communication network can use one or more channels to transfer data between a transmitter and receivers. Data to be transferred can have different quality of service (QoS) requirements. For example, the wireless communication systems may transfer data with varying bandwidth, latency, and other resource/performance requirements. The data transfer between the wireless communication systems can be impacted by in-network interference and also external network interference.
Various embodiments for minimizing interference in a communication network are disclosed. In one embodiment, a central coordinator of a communication network determines to switch from a current communication channel to an alternate communication channel. A first channel switch message is transmitted to a plurality of client devices associated with the central coordinator. It is determined whether an acknowledgement for the first channel switch message is received from each of the plurality of client devices. In response to determining that the acknowledgement for the first channel switch message is received from each of the plurality of client devices, the central coordinator switches to the alternate communication channel. In response to determining that the acknowledgement for the first channel switch message is not received from a first client device, the central coordinator transmits a second channel switch message to the first client device and determines not to switch to the alternate communication channel.
The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The description that follows includes exemplary systems, methods, techniques, instruction sequences, and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to a mechanism for minimizing interference in a wireless local area network (WLAN), embodiments are not so limited. In other embodiments, communication devices that implement other suitable standards and technologies (e.g., Bluetooth® technologies) can execute the operations described herein. In other instances, well-known instruction instances, sequences, protocols, structures, and techniques have not been shown in detail in order not to obfuscate the description.
In some communication environments, multiple data streams (each with potentially different latency and delivery requirements) may have to be transmitted from multiple client devices to a central coordinator of a communication network. In one example of a gaming environment, each of the data streams can be a command data stream, an audio data stream, or a video data stream. The command data stream may have low latency requirements, while the high bandwidth audio data stream and the high bandwidth video data stream may not have strict latency requirements as compared to the command data stream. At any given time, a client device could transmit any type of data stream. Because the composition of the multiple data streams (e.g., number of each type of data stream) that can be transmitted to the central coordinator is unknown, it may be difficult to ensure delivery of the low latency data streams. Furthermore, contention between client devices in the communication network may result in low latency data not being transmitted to the central coordinator in a timely manner.
In some embodiments, the central coordinator can be configured to aggregate multiple data streams from corresponding multiple client devices in the communication network into a logical service period, referred to herein as a “communication superframe.” Each of the multiple client devices can be assigned a communication time slot within the communication superframe. The central coordinator can minimize contention among client devices in the communication network by ensuring that each client device transmits their respective uplink data packets (to the central coordinator) only during the communication time slot assigned to the client device. Likewise, the central coordinator can also transmit downlink data packets intended for each client device in the appropriate communication time slot assigned to the client device. Aggregation of data streams from multiple client devices into one communication superframe can ensure that each client device gets a fair chance to communicate with the central coordinator. Aggregation of data streams from multiple client devices into one communication superframe can also help combine uplink and downlink low-latency (e.g., control command) traffic and high bandwidth (e.g., media) traffic while supporting low latency delivery requirements. In other words, assigning a communication time slot to each client device in the communication network can ensure that delivery of low latency data without the client devices contending for the communication channel.
In addition, the central coordinator can monitor the performance of a current communication channel and one or more other communication channels. If the central coordinator determines that another communication channel (“alternate communication channel”) has a better performance than the current communication channel, the central coordinator can transmit a multicast channel switch message to all the client devices in the communication network. If even one client device does not acknowledge the multicast channel switch message, the central coordinator can cause the client devices to defer switching to the alternate communication channel and can transmit a unicast channel switch message to the non-responsive client device during the communication time slot assigned to the client device. The central coordinator can direct all the client devices to switch to the alternate communication only if it receives a response to the multicast (or unicast) channel switch messages from all the client devices. This can ensure that none of the client devices is dropped from the communication network. For example, in the gaming environment, the central controller can ensure that none of the client devices is dropped during a gaming session while attempting to switch to an alternate communication channel.
The client device 112 can attempt to join the communication network 100 (governed by the central coordinator 102) by establishing a communication link with the central coordinator 102. For example, the connection and configuration unit 116 can receive a beacon message from the registration unit 106 of the central coordinator 102 and can transmit an association request message to the central coordinator 102. The registration unit 106 can determine whether the client device 112 should be permitted to join the communication network 100 (e.g., based on analyzing and comparing communication capabilities of the central coordinator 102 and the client device 112). The registration unit 106 can transmit (e.g., via the transceiver unit 108) an association response message either granting or denying the client device 112 permission to join the communication network 100. At stage A, the registration unit 106 assigns a communication time slot (further described below) to the client device 112. The registration unit 106 may store a client device identifier and a corresponding communication time slot identifier in the time slot database 120. In other embodiments, however, an indication of the communication time slot assigned to each client device in the communication network 100 can be stored in temporary cache memory, a data structure, or other suitable internal/external storage mechanisms/devices. Operations of the central coordinator 102 and the client device 112 executing the registration process to assign a communication time slot to the client device 112 will further be described in blocks 302-314 of
The communication network 100 typically supports two types of communication—communication from the client device 112 to the central coordinator 102 (“uplink traffic”) and communication from the central coordinator 102 to the client device 112 (“downlink traffic”). In one example of a gaming environment, the uplink traffic can include control commands and audio data. For example, the client device 112 (e.g., the gaming controller) may comprise multiple sensors (e.g., a heat sensor, a gyrometer, an accelerometer, an altimeter, etc.). Data detected by the sensors can constitute the control commands that are to be transmitted to the central coordinator 102. Moreover, events generated in response to user input (e.g., the user pushing a button, speaking a command, reacting to on-screen content, etc.) may also constitute the control commands that are to be transmitted to the central coordinator 102. The sensor data and the user input events can be aggregated into an uplink packet for transmission to the central coordinator 102. The central coordinator 102 can receive the uplink packet and can provide the uplink packet to one or more suitable processing units (e.g., a graphics processing unit) for subsequent processing. Based on analyzing the received uplink packet (i.e., the sensor data and the user input events), one or more downlink command packets, downlink audio packets, and/or downlink video packets can be generated. For example, the downlink command packets can include commands that cause the client device 112 (e.g., the gaming controller) to perform an action (e.g., vibrate, activate an LED, play a sound, etc.). As another example, the downlink video packet can indicate how the graphics presented on a screen should be varied (e.g., to reflect the previously transmitted user input). The central coordinator 102 can transmit the downlink command, audio, and/or video packets to the appropriate destination client device 112. It should be noted that in other embodiments, the uplink traffic can also comprise other suitable types of data (e.g., text, video, etc.).
Typically, each of the different types of data streams (e.g., uplink and downlink control command traffic, bidirectional audio traffic, unidirectional video traffic, etc.) can have different latency requirements. For example, the low bandwidth command data stream may have low latency requirements (e.g., 4 ms), the high bandwidth audio data stream may have moderate latency requirements (e.g., 20 ms), while the high bandwidth video data stream may not have strict latency requirements (e.g., 32 ms) To accommodate all the different types of data streams from different client devices and to ensure that transmission of each of the types of data streams satisfies the predetermined latency and delivery requirements, the central coordinator 102 and the client devices 112 in the communication network 100 can implement a communication superframe. The communication superframe can be a periodic service period with a predetermined size (e.g., a 32 ms time interval). The communication superframe can enable time-based aggregation of different types of data streams to/from each client device 112 in the communication network 100. As depicted in
A time-based schedule can be implemented within the communication superframe by further sub-dividing the communication superframe 208 into multiple communication time slots. Each of the communication time slots can be assigned to corresponding ones of client devices in the communication network 100. As depicted in
As discussed with reference to stages C-E and again with reference to
It is noted that although
At block 302, a central coordinator of a communication network transmits a beacon message advertising support of a low-latency, high bandwidth integration process. With reference to the example of
At block 304, it is determined whether a request message to join the communication network was received from a client device. In some embodiments, the request message can be a WLAN association request message that comprises communication capabilities (e.g., supported communication protocols, data rates, etc.) and current configuration of the requesting client device (e.g., the client device 112). In addition, the client device 112 may also select a communication time slot (from the list of available communication time slots received in the beacon) and can request (in the request message) that the selected communication time slot be assigned to the client device 112. If the registration unit 106 determines that a request message to join the communication network 100 was received from one or more client devices, the flow continues at block 306. Otherwise, the flow loops back to block 304 where the registration unit 106 continues to determine whether a request message to join the communication network was received from one or more client devices. In some embodiments, a background process of the central coordinator 102 can continuously check for request messages to join the communication network while other processing units of the central coordinator 102 transmit beacon messages, transmit messages to other connected client devices, receive and process messages from other client devices, etc.
At block 306, it is determined whether the client device should be permitted to join the communication network. The flow 300 moves from block 304 to bock 306 if the registration unit 106 determines that the client device 112 requested permission to join the communication network 100. For example, to determine whether the client device 112 should be permitted to join the communication network 100, the registration unit 106 can determine whether the client device 112 is compatible with the central coordinator 102. The registration unit 106 can analyze the client device's communication capabilities (received in the request message at block 304) and the central coordinator's communication capabilities and can accordingly determine whether the client device 112 should be permitted to join the communication network 100. For example, the client device 112 may not be permitted to join the communication network 100 if the client device 112 does not support high-speed data communication (e.g., IEEE 802.11n protocols). If the registration unit 106 determines that the client device 112 should be permitted to join the communication network 100, the flow continues at block 310. Otherwise, the flow continues at block 308.
At block 308, if the client device should not be permitted to join the communication network, a message preventing the client device from joining the communication network is transmitted to the client device. For example, the registration unit 106 can transmit (via the transceiver unit 108) a WLAN association response message to the client device including a “denied” status indicating that the client device 112 is not permitted to join the communication network 102. From block 308, the flow ends.
At block 310, if the client device should be permitted to join the network, a communication time slot that should be assigned to the client device is determined. In some embodiments, as discussed above in block 304, the client device 112 may request a specific communication time slot based on knowledge of available communication time slots (e.g., received in the beacon message 202 from the central coordinator 102). If the communication time slot requested by the client device 112 is available, the registration unit 106 may assign the requested communication time slot to the client device 112. If the communication time slot requested by the client device 112 is not available (or if the client device 112 did not request a specific communication time slot), the registration unit 106 can select one of the available communication time slots and assign this selected communication time slot to the client device 112. The registration unit 106 may also store an indication of the communication time slot 216 assigned to the client device and a client device identifier in the time slot database 120. The flow continues at block 312.
At block 312, an acknowledgement message is transmitted to the client device including the communication time slot assigned to the client device. For example, the registration unit 106 can transmit (via the transceiver unit 108) a WLAN association response message to the client device 112 including an “accepted” status indicating that the client device 112 is permitted to join the communication network 100. The acknowledgment message may also include an indication of the communication time slot assigned to the client device 112. In some embodiments, the acknowledgement message can include an identifier of the communication time slot 216 (e.g., the second communication time slot) assigned to the client device 112. In another embodiment, the acknowledgement message can identify the communication time slot 216 assigned to the client device 112 in terms of an offset from a reference time instant (e.g., a time offset from the start of the beacon message 202, a time offset from the end of the beacon message 202, a time offset from the start of the communication superframe, and so on.) The flow continues at block 314.
At block 314, one or more security handshake messages are exchanged with the client device to establish a session key for subsequent communication with the client device. The central coordinator 102 (e.g., the registration unit 106 or another suitable security unit) and the client device 112 can employ any suitable security protocol to exchange handshake messages (e.g., using out-of-band communications) and to establish the session key for subsequent secure communication. After the session key is established, the registration process between the client device 112 and the central coordinator 102 may be deemed to be completed and the client device 112 can switch to a data communication mode. In the data communication mode, the client device 112 and the central coordinator 102 can exchange communications during the communication time slot 216 assigned to the client device 112. From block 314, the flow ends.
The registration process described above enables the central coordinator 102 to assign communication time slots (e.g., predefined time intervals) to each of the client devices in the communication network 100 so that each of the client devices may transmit/receive packets only during their assigned communication time slots. This can minimize the possibility of contention and interference between client devices within the communication network 100. However, communications in external networks may still interfere with the communication network 100. To minimize interference in the communication network 100 from external networks, the central coordinator 102 (e.g., the channel switch unit 110) can execute channel switching operations described below in
At block 402, a central coordinator determines performance measurements associated with a current communication channel of a communication network. In some embodiments, the channel switch unit 110 (of the central coordinator 102) may continuously or periodically monitor one or more performance measurements of the current communication channel. For example, the channel switch unit 110 can determine a communication channel latency, a packet error rate (PER), a signal-to-noise ratio (SNR), and/or other suitable performance measurements. The flow continues at block 404.
At block 404, performance measurements associated with an alternate communication channel is determined based, at least in part, on communications detected on the alternate communication channel. In some embodiments, the channel switch unit 110 may determine the performance measurements (e.g., communication latency, PER, SNR, etc.) associated with the alternate communication channel if the channel switch unit 110 detects traffic on external communication networks. In some embodiments, the channel switch unit 110 may determine the performance measurements associated with the alternate communication channel if the channel switch unit 110 detects that the traffic on the external communication networks exceeds a predetermined threshold amount of traffic. In some embodiments, the channel switch unit 110 may continuously or periodically determine the performance measurements associated with the alternate communication channel. In other embodiments, the channel switch unit 110 may determine the performance measurements associated with the alternate communication channel if the performance of the current communication channel degrades (e.g., if the performance measurements of the current communication channel are not in accordance with corresponding performance measurement thresholds). In some embodiments, the central coordinator 102 may also include a secondary receiver unit (not shown in
At block 406, it is determined whether the performance measurements of the alternate communication channel are better than the performance measurements of a current communication channel. For example, the channel switch unit 110 may determine whether the latency of the alternate communication channel is less than the latency of the current communication channel. As another example, the channel switch unit 110 may determine whether a combination of the latency and the PER of the alternate communication channel is less than a combination of the latency and the PER of the current communication channel. In some embodiments, the channel switch unit 110 may determine whether the absolute value of the performance measurements of the alternate communication channel are better than corresponding absolute value of the performance measurements of a current communication channel. For example, the channel switch unit 110 may determine whether the PER of the alternate communication channel is less than the PER of the current communication channel. In other embodiments, the channel switch unit 110 may determine whether the performance measurements of the alternate communication channel are better than corresponding performance measurements of the current communication channel by a predefined percentage value. For example, the channel switch unit 110 may determine whether the PER of the alternate communication channel is less than the PER of the current communication channel by at least 5% of the PER of the current communication channel. If the channel switch unit 110 determines that the performance measurements of the alternate communication channel are better than performance measurements of the current communication channel, the flow continues at block 410. Otherwise, the flow continues at block 408. It should be noted that the channel switch unit 110 can determine the performance measurements associated with any suitable number of alternate communication channels. The channel switch unit 110 can compare the performance measurements of the current communication channel against the performance measurements of the all the alternate communication channels and can determine whether to switch to any of the alternate communication channels.
At block 408, the central coordinator determines not to switch to the alternate communication channel. The flow 400 moves from block 406 to block 408 if the channel switch unit 110 determines that the performance measurements of the alternate communication channel are not better than the performance measurements of the current communication channel. The channel switch unit 110 may also determine not to switch to the alternate communication channel if the performance measurements of the alternate communication channel are only marginally better than (e.g., less than a predetermined percentage of) the performance measurements of the current communication channel. From block 408, the flow ends.
At block 410, a channel switch message is transmitted to a multicast destination address corresponding to all client devices associated with the central coordinator indicating a pending switch to the alternate communication channel. The flow 400 moves from block 406 to block 410 if the channel switch unit 110 determines that the performance measurements of the alternate communication channel are better than performance measurements of the current communication channel. In some embodiments, the channel switch message transmitted to the multicast destination address (also referred to herein as a “multicast channel switch message”) can comprise an identifier of the alternate communication channel (e.g., a channel identifier, a frequency band of the alternate communication channel, etc.). The multicast channel switch message can also indicate a time instant (“channel switch time instant”) at which the client devices should switch to the alternate communication channel. In some embodiments, the channel switch time instant may be determined based on: 1) a maximum time interval for which the channel switch unit 110 waits to receive acknowledgements to the multicast channel switch message, 2) time to transmit the unicast channel switch messages, 3) maximum time interval for which the channel switch unit 110 waits to receive acknowledgements to the unicast channel switch message, 4) a maximum number of times the channel switch unit 110 retransmits the unicast channel switch message, and/or 5) other network considerations (e.g., network latency). In some embodiments, the channel switch unit 110 may indicate an exact time instant (e.g., 13:05:07:000) at which the client devices should switch to the alternate communication channel. In another embodiment, the channel switch unit 110 may indicate a time interval (e.g., 5 ms after current time instant) after which the client devices should switch to the alternate communication channel. In another embodiment, the channel switch unit 110 may indicate that the client devices should switch to the alternate communication channel immediately after the next beacon message. In another embodiment, the channel switch unit 110 may indicate that the client devices should switch to the alternate communication channel Xms after the next beacon message is transmitted. The flow continues at block 412 in
At block 412 in
At block 414, the central coordinator defers switching to the alternate communication channel and transmits a unicast channel switch message to client devices that did not transmit the acknowledgement message. The flow 400 moves from block 412 to block 414 if the channel switch unit 110 determines that acknowledgement messages were not received from one or more client devices. The channel switch unit 110 may determine not switch to the alternate communication channel until all the client devices in the communication network 100 have acknowledged the proposed switch to the alternate communication channel. In some embodiments, if the channel switch unit 110 does not receive an acknowledgement message from all the client devices (e.g., at least Xms before the channel switch time instant), the channel switch unit 110 can transmit another multicast message to the client devices indicating that the client devices should switch to the alternate communication channel at a new channel switch time instant. In other embodiments, the channel switch unit 110 may transmit (e.g., via the transceiver unit 108) a “defer channel switch” message to a multicast destination address (or a second multicast channel switch message) to cause the client devices to defer switching to the alternate communication channel. In some embodiments, the defer channel switch message can indicate the new channel switch time instant at which the client devices should switch to the alternate communication channel. Accordingly, the channel switch unit 110 can ensure that none of the client devices is dropped from the communication network 100 and that all the client devices switch to the alternate communication channel at the same time. For each of the one or more client devices that did not transmit the acknowledgement message, the channel switch unit 110 can identify a communication time slot assigned to the client device. The channel switch unit 110 can transmit (e.g., via the transceiver unit 108) the unicast channel switch message to the client device during the communication time slot associated with the client device. The unicast channel switch message can comprise the new channel switch time instant at which the client devices should switch to the alternate communication channel. It is noted that the second multicast channel switch message or the defer channel switch message may be transmitted before or after the unicast channel switch messages are transmitted. It is noted that in some embodiments, the non-responsive client device may receive the unicast channel switch message in addition to the defer channel switch message (or the second multicast channel switch message). In other embodiments, the non-responsive client device may only receive the unicast channel switch message and may not receive the defer channel switch message (or the second multicast channel switch message). The flow continues at block 416.
At block 416, it is determined whether acknowledgement messages were received from the client devices in response to the unicast channel switch message. If the channel switch unit 110 determines that acknowledgement messages were received from all the client devices (to which the unicast channel switch messages were transmitted), the flow continues at block 418. Otherwise, the flow loops back to block 414 where the channel switch unit 110 defers switching to the alternate communication channel and transmits a unicast channel switch message to client devices that did not transmit the acknowledgement message.
At block 418, the central coordinator and the client devices in the communication network switch to the alternate communication channel. The flow 400 moves from block 412 (and from block 416) to block 418 after the channel switch unit 110 determines that acknowledgement messages were received from all the client devices associated with the central coordinator 102. From block 418, the flow ends.
At block 602, a client device detects a beacon message advertising support of a low-latency, high bandwidth integration process from a central coordinator of a communication network. For example, the connection and configuration unit 116 can receive the beacon message 202 from the central coordinator 102 of the communication network 100. As discussed above with reference to
At block 604, a request message including a preferred communication time slot is transmitted from the client device to the central coordinator. For example, the connection and configuration unit 116 can transmit a request message (e.g., a WLAN association request message) requesting permission to join the communication network 100. As described above in
At block 606, it is determined whether the client device is permitted to join the communication network. In some embodiments, the connection and configuration unit 116 may receive a WLAN association response message indicating whether the client device 112 is permitted to join the communication network 100. In some embodiments, if the client device 112 is permitted to join the communication network 100, then the connection and configuration unit 116 may also receive a notification of a communication time slot assigned to the client device 112. The communication time slot assigned to the client device 112 may be the same as or different from the preferred communication time slot requested by the client device 112 at block 604. Once the client device 112 receives its assigned communication time slot, the connection and configuration unit 116 can determine a time offset associated with the communication time slot. If the client device 112 is permitted to join the communication network 100, the flow continues at block 608. Otherwise, if the client device 112 is not permitted to join the communication network 100, the flow ends.
At block 608, one or more security handshake messages are exchanged with the central coordinator to establish a session key for subsequent communication with the central coordinator. As described above with reference to block 314 of
At block 610, the client device 112 determines to transmit one or more uplink packets to the central coordinator 102. As described above with reference to
At block 612, a time instant at which to begin transmission of the one or more uplink packets is determined based, at least in part, on the communication time slot assigned to the client device. As described above with reference to
At block 614, it is determined whether to transmit the uplink packets to the central coordinator. For example, the client device 112 can determine whether the communication time slot 216 assigned to the client device 112 has begun (e.g., whether the time instant determined at block 612 has elapsed). If it is determined that the communication time slot assigned to the client device 112 has begun, the flow continues at block 616. Otherwise, the flow loops back to block 614 where the client device 112 waits until the communication time slot 216 assigned to the client device 112 begins.
At block 616, the one or more uplink packets are transmitted to the central coordinator at the beginning of the communication time slot assigned to the client device. From block 616, the flow ends.
It is noted that, the central coordinator 102 may determine to transmit downlink data (e.g., control commands, audio data, video data, etc.) to a destination client device 112. The central coordinator 102 can access the time slot database 120 and can determine which communication time slot was assigned to the destination client device 112. The central coordinator 102 can then transmit the downlink data to the destination client device 112 during the appropriate communication time slot assigned to the destination client device 112. In some embodiments, if the central coordinator 102 has multiple types of data to transmit to the destination client device 112, the central coordinator 102 may determine which subset of the data should be transmitted to the destination client device 112 based on latency and delivery requirements associated with the different types of data. In some examples, the latency associated with control command data may be 4 ms, the latency associated with audio data may be 20 ms, and the latency associated with video data may be 32 ms. If the central coordinator 102 has video data and control command data to transmit to the destination client device 112, the central coordinator 102 can buffer the video data and can transmit the control command data in the communication time slot of the first communication superframe. During the client device's communication time slot of the second communication superframe, the central coordinator 102 can aggregate the buffered video data with new video data and transmit a packet comprising the aggregated video data to the destination client device 112. Alternately, during the client device's communication time slot of the first communication superframe, the central coordinator 102 can aggregate the control command data and at least a portion of the video data and transmit a packet comprising the data to the destination client device 112. During the client device's communication time slot of the second communication superframe, the central coordinator 102 can transmit a packet comprising the remaining video data to the destination client device 112.
To transmit to multiple client devices, the central coordinator 102 can identify the communication time slot associated with each of the multiple client devices. The central coordinator 102 can then transmit data to the multiple client devices during their respective communication time slots. For example, suppose that the central coordinator 102 determines to transmit data to a first client device, a second client device, and a third client device in the communication network 100. The central coordinator 102 can access the time slot database 120 and identify which communication time slots of the communication superframe were assigned to each of the client devices. With reference to
It should be understood that
It is also noted that in some embodiments, the communication range between the central coordinator 102 and the client devices may be very short (e.g., less than 20 feet). Accordingly, high data communication rates (e.g., using IEEE 802.11n communication protocols) may be used to transmit packets between the central coordinator 102 and each of the client devices and to minimize the time for which a packet is on the communication medium. Minimizing the amount of time utilized to transmit a packet can enable a larger number of packets to be transmitted within a communication superframe. In other words, because the communication superframe effectively enables integration of data streams associated with multiple client devices, minimizing the amount of time utilized to transmit a given packet can enable the central coordinator 102 to support a larger number of client devices and can enable a larger number of client devices to transmit their data streams within a communication superframe of a predetermined size.
As will be appreciated by one skilled in the art, aspects of the present inventive subject matter may be embodied as a system, method, or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, a software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present inventive subject matter are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the inventive subject matter. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The electronic device 700 also includes a communication unit 708. The communication unit 708 comprises a registration unit 712 and a channel switch unit 714. The communication unit 708 can execute functionality for registering client devices, assigning communication time slots to each of the registered client devices, communicating with the client devices during their respective assigned communication time slots, and switching (if needed) to an alternate communication channel with better performance, as described above with reference to
Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor unit 702. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processor unit 702, in a co-processor on a peripheral device or card, etc. Further, realizations may include fewer or additional components not illustrated in
While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, a mechanism for minimizing interference in a communication network as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations, or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.
This application claims the priority benefit of U.S. Provisional Application No. 61/645,978 filed on May 11, 2012.
Number | Date | Country | |
---|---|---|---|
61645978 | May 2012 | US |