Abstract:
A device implements multiple protocols that share overlapping resources. In some cases, a first operation, such as a scan, may have a resource conflict with a second operation associated with a different protocol. In some cases, determining grant normal priority level requests associated with the first operation over those at the normal priority level associated with the second operation may lead to operator-noticeable degradation in device performance. A protocol controller may request a selected portion of the first operation at a low priority level. Requesting the selected portion at the low priority level may allow the second operation to selectively override the portion of the first operation. The selective overriding of the first operation may allow for execution of the first and second operations without operator-noticeable performance degradation.

Description:
PRIORITY CLAIM 
     This application claims priority to provisional application Ser. No. 61/858,861, filed 26 Jul. 2013, which is entirely incorporated by reference. 
    
    
     TECHNICAL FIELD 
     This disclosure relates to wireless communication, and coexistence in wireless communication devices. 
     BACKGROUND 
     Rapid advances in electronics and communication technologies, driven by immense customer demand, have resulted in the widespread adoption of mobile communication devices. The extent of the proliferation of such devices is readily apparent in view of some estimates that put the number of wireless subscriber connections in use around the world at nearly 80% of the world&#39;s population. Furthermore, other estimates indicate that (as just three examples) the United States, Italy, and the UK have more mobile phones in use in each country than there are people living in those countries. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows an example of user equipment. 
         FIG. 2  shows an example set of scan requests. 
         FIG. 3  shows an example set of continuous scan requests at the normal personal area network (PAN) priority level. 
         FIG. 4  shows an example scenario with normal priority ANT scan requests being granted over the normal PAN priority level requests. 
         FIG. 5  shows an example scenario with normal priority level ANT scan requests denied in favor of normal PAN priority level requests. 
         FIG. 6  shows an example set of scan requests. 
         FIG. 7  shows an example scenario with scan request grants. 
         FIG. 8  shows example logic for resource request priority assignment. 
     
    
    
     DETAILED DESCRIPTION 
     The discussion below relates to resource sharing priority in a wireless coexistence environment on a device such as user equipment. Multiple communication stacks or protocols may share hardware elements such as antenna, oscillators, antennas, baseband processors, and/or other transceiver elements. In some cases, various instances of the hardware elements may support use by one protocol at a time, but not multiple protocols simultaneously. For example, the ANT protocol utilizes hardware elements used by personal area network (PAN) protocols, such as Bluetooth (BT) and Bluetooth Low Energy (BLE). For example scenario, a PAN protocol scan and an ANT scan may use overlapping resources that may lack support for both scans simultaneously. If the full PAN scan is given priority over the ANT scan, ANT performance may degrade. Similarly, if the full ANT scan is given priority over the PAN scan, PAN performance may degrade. The techniques and architectures discussed below discuss selecting multiple priority levels for one or more of the scans such that the scans may be given partial access the overlapping resources. The partial access by the multiple protocols may mitigate the performance degradation associated with allowing a full scan for a single one of the multiple protocols. 
       FIG. 1  shows an example of user equipment  100  (“UE  100 ”). The UE  100  is a smartphone in this example, but the UE may be any electronic device. The techniques described for implementing priority in resource sharing may be used in a wide array of different types of devices. Accordingly, the smartphone example described below provides just one example context for explaining the resource priority sharing techniques. 
     As one example, the UE  100  may be a 2G, 3G, or 4G/LTE cellular phone capable of making and receiving wireless phone calls, and transmitting and receiving data using 802.11 a/b/g/n/ac/ad (“WiFi”), BT, BLE, ANT, Near Field Communications (NFC), or any other type of wireless technology. The UE  100  may also be a smartphone that, in addition to making and receiving phone calls, runs any number or type of applications. The UE  100  may, however, be virtually any device that transmits and receives information, including as additional examples a driver assistance module in a vehicle, an emergency transponder, a pager, a satellite television receiver, a networked stereo receiver, a computer system, music player, a workout monitor, pedometer, smart watch, or virtually any other device. 
       FIG. 1  shows an example of the UE  100  in communication with a network controller  150 , such as an enhanced Node B (eNB) or other base station. The network controller  150  and UE  100  establish communication channels such as the control channel  152  and the data channel  154 , and exchange data. In this example, the UE  100  supports one or more Subscriber Identity Modules (SIMs), such as the SIM1  102 . Electrical and physical interface  106  connects SIM1  102  to the rest of the user equipment hardware, for example, through the system bus  110 . 
     The UE  100  includes communication interfaces  112 , system logic  114 , and a user interface  118 . The system logic  114  may include any combination of hardware, software, firmware, or other logic. The system logic  114  may be implemented, for example, with one or more systems on a chip (SoC), application specific integrated circuits (ASIC), discrete analog and digital circuits, and other circuitry. The system logic  114  is part of the implementation of any desired functionality in the UE  100 . In that regard, the system logic  114  may include logic that facilitates, as examples, decoding and playing music and video, e.g., MP3, MP4, MPEG, AVI, FLAC, AC3, or WAV decoding and playback; running applications; accepting user inputs; saving and retrieving application data; establishing, maintaining, and terminating cellular phone calls or data connections for, as one example, Internet connectivity; establishing, maintaining, and terminating wireless network connections, Bluetooth connections, or other connections; and displaying relevant information on the user interface  118 . The user interface  118  and the inputs  128  may include a graphical user interface, touch sensitive display, voice or facial recognition inputs, buttons, switches, speakers and other user interface elements. Additional examples of the inputs  128  include microphones, video and still image cameras, temperature sensors, vibration sensors, rotation and orientation sensors, headset and microphone input/output jacks, Universal Serial Bus (USB) connectors, memory card slots, radiation sensors (e.g., IR sensors), and other types of inputs. 
     The system logic  114  may include one or more processors  116  and memories  120 . The memory  120  stores, for example, control instructions  122  that the processor  116  executes to carry out desired functionality for the UE  100 . The control parameters  124  provide and specify configuration and operating options for the control instructions  122 . The memory  120  may also store any BT, ANT, BLE, WiFi, 3G, or other data  126  that the UE  100  will send, or has received, through the communication interfaces  112 . The UE  100  may include a power management unit integrated circuit (PMUIC)  134 . In a complex device like a smartphone, the PMUIC  134  may be responsible for generating as many as thirty (30) different power supply rails  136  for the circuitry in the UE  100 . In various implementations, the system power may be supplied by a power storage device, such as a battery  182   
     In the communication interfaces  112 , Radio Frequency (RF) transmit (Tx) and receive (Rx) circuitry  130  handles transmission and reception of signals through one or more antennas  132 . The communication interface  112  may include one or more transceivers. The transceivers may be wireless transceivers that include modulation/demodulation circuitry, digital to analog converters (DACs), shaping tables, analog to digital converters (ADCs), filters, waveform shapers, filters, pre-amplifiers, power amplifiers and/or other logic for transmitting and receiving through one or more antennas, or (for some devices) through a physical (e.g., wireline) medium. 
     In some implementations, the UE  100  may use communication interfaces  112  to maintain a network connection  140  to a peripheral device  142 . The connection  140  may include a PAN connection, ANT connection, or other network connection. The UE  100  may scan the bandwidth ranges of the connection  140  to discover devices and maintain connections, such as the connection  140 . 
     The transmitted and received signals may adhere to any of a diverse array of formats, protocols, modulations (e.g., QPSK, 16-QAM, 64-QAM, or 256-QAM), frequency channels, bit rates, and encodings. As one specific example, the communication interfaces  112  may include transceivers that support transmission and reception under the 2G, 3G, BT, WiFi, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA)+, and 4G/Long Term Evolution (LTE) standards. The techniques described below, however, are applicable to other wireless communications technologies whether arising from the 3rd Generation Partnership Project (3GPP), GSM Association, 3GPP2, IEEE, or other partnerships or standards bodies. 
     As just one implementation example, the communication interface  112  and system logic  114  may include a BCM82128 chip. These devices or other similar system solutions may be extended as described below to provide the additional functionality described below. These integrated circuits, as well as other hardware and software implementation options for the UE  100 , are available from Broadcom Corporation of Irvine Calif. 
     Chips which support multiple functionalities may be referred to as “combo chips”. A combo chip may support Bluetooth, Bluetooth Low Energy, wireless local area networking (WLAN), and ANT. In some cases, these protocols may share resources (e.g. bandwidth, hardware and antenna, etc.). Different protocols may have different usage profiles. To allow for operation of these protocols, resources may be scheduled for usage. For example, a protocol may reserve a resource for a given period. Scheduler circuitry  113  may be configured to facilitate resource sharing. 
     Various protocols may operate independently. In some cases, a particular resource may be requested by multiple protocols at the same time resulting in a collision. The scheduler circuitry  113  may use multiple priority levels to handle collisions. In some implementations, when two or more requests overlap, the highest priority request may be granted. 
     The UE  100  may implement multiple priority levels, e.g., normal, high (e.g., higher than normal), and highest (e.g., higher than normal and high). The priority levels may have specific names. In some implementations, an ANT controller may use levels such as a normal priority level, above audio transfer priority, and above voice call priority. For example, these priority levels may include a “Normal priority level, an “Above the advanced audio distribution profile (A2DP) priority level”, and an “Above the synchronous connection oriented (SCO) priority level”. 
     The scheduler circuitry  113  may treat activity from a PAN controller as normal activity, audio transfer activity, voice call activity, or as other activity types. For example, these priority levels may include, “Normal PAN Activity” priority level, “A2DP activity” priority level, and an “SCO activity” priority level. Control software for the ANT system, e.g., the protocol stack, can direct the PAN controller to schedule ANT activity on one of the different priority levels. The ANT system may acquire operational resources in this manner. 
     An ANT scan is an activity by which the ANT control software detects devices (e.g. sensors, etc.) within range. In some cases, ANT scans are performed regularly to facilitate connectivity with proximate devices (e.g. collect sensor data, poll devices, etc.). In some cases, an ANT scan receive window size may be about 1250 μs, but other sizes are also possible. 
     In some implementations, the scheduler  113  may receive requests for repeated ANT scans (e.g. from an ANT protocol stack) and receive requests for continuous (or continual) PAN scans (e.g. from a Bluetooth or BLE protocol stack). In some cases, a collision may occur in a coexistence environment. In cases of collisions, some ANT requests may be denied or some PAN requests may be denied. The requests with higher priority may be granted over lower priority requests. 
     In an example, the ANT scan may be implemented to alternately use the “Normal priority level” and “above A2DP priority level”. In the example, ANT scan are requested using “Normal priority level” and “Above A2DP priority level”. The ANT control software may use one “Above A2DP priority level” per six requests. This may ensure the operation of other protocols is not unduly interrupted. 
       FIG. 2  shows an example set  200  of scan requests. The example set  200  includes five normal priority level requests  202 . A high priority level request  206  follows the normal priority level request  202 . 
     In the example, the PAN controller may make requests for continuous scans at a normal PAN priority level.  FIG. 3  shows an example set  300  of continuous scan requests  304  at the normal PAN priority level. 
     In some cases, the five normal priority level requests may collide with normal PAN priority level requests for scans from the PAN protocol. 
     When collisions occur, an ANT scan request or a PAN scan request may be denied. In some cases, the denial of a scan may not reduce performance to a point where an operator of the UE  100  may notice the reduction. However, when a large portion of scans are denied, performance may be degraded by a noticeable amount. For example, an operator may not notice a connection delay to a new device of 100s of milliseconds or up to a few seconds. However, extended delays of tens of seconds or minutes may degrade the operator&#39;s experience. 
     Colliding normal priority and normal PAN priority scan requests may result in different outcomes depending on whether normal ANT requests are given priority over normal PAN requests or vice versa. 
       FIG. 4  shows an example scenario  400  with normal priority ANT scan requests  202  being granted over the normal PAN priority level requests  304 ,  404 . In the example scenario  400 , the ANT normal priority level scan requests  202  may be treated as higher priority than the continuous PAN scan request  304 ,  404  by the PAN scheduler circuitry  113 . Because the ANT scan requests  402  are treated as higher priority, the ANT scan requests  202  may be granted. The overlapping normal PAN priority level requests  404  are denied. In such cases, there may be no effect on ANT scan performance. 
     If the ANT scan is treated as higher priority, some portion of the PAN continuous scan request may be denied. For example, a continuous BLE scan may be granted when no ANT requests are made. For the example repeating group of six ANT scans, an example continuous BLE scan request may be granted about 30% of its requested bandwidth. This may or may not degrade performance by an operator noticeable amount. 
       FIG. 5  shows an example scenario  500  with normal priority level ANT scan requests  502  denied in favor of normal PAN priority level requests  304 . In the example scenario  500 , the overlapping ANT normal priority level scans  502  may be treated as lower priority than the continuous PAN scan request  304  by the scheduler circuitry  113 . Because the ANT scan requests  502  are treated as lower priority, the normal priority ANT scan requests  502  may be denied and the high priority ANT scan request  206  may be granted over the denied normal PAN priority request  404 . Many ANT scan requests  502 ,  206  may be denied (e.g. five out of six may be denied) and the continuous PAN scan request  504  may be largely uninterrupted (e.g. 90% of the PAN scan bandwidth may be granted). In such cases, the allocation of resources may cause an operator-noticeable effect on ANT scan performance. 
     In some implementations, a low priority level may be used. The low priority level may be lower priority than the normal priority level. Some ANT scan requests may be made at the low priority level. Other scan requests, e.g., scan requests, and/or other request types may be granted over low priority level ANT scan requests. 
     In some cases, ANT scan requests may be made using a combination of low priority level requests, normal priority level requests, and high priority level requests.  FIG. 6  shows an example set  600  of scan requests. In the example set  600 , the UE  100  may make three ANT scan requests  608  at the low priority level, two ANT scan requests  202  at the normal priority level, and one ANT scan request  206  at the high priority level for the six requests per group. 
     In some implementations, normal priority level ANT scan requests may be granted over PAN scan requests. The low priority level ANT scan requests may be denied in favor of the PAN scan request. The low priority level assignment may allow for a selected portion of the ANT scans to be overridden by the PAN scans.  FIG. 7  shows an example scenario  700  with scan request grants. The low priority ANT scan requests  708  may be overridden by the continuous PAN scan request  304 . The normal priority ANT scan requests  202  may be granted over the corresponding overlapping portions of the continuous PAN scan request  404  by the scheduler circuitry  113 . The scheduler circuitry  113  may grant the ANT controller and the PAN controller an appreciable portion of their respective scan requests. For example, 50% of the ANT scans may be granted along with a grant of about 68% of the requested Bluetooth scans. The ANT protocol and PAN protocol may have degradation small enough that no noticeable effect is experienced by the operator of the UE  100 . 
     In some implementations, multiple priority levels may be assigned to PAN activity. For example, a low priority level may be assigned to a portion of the PAN scan and a normal PAN priority level may be applied to another portion of the scan. The example priority assignments to the PAN scans may allow a selected portion of the PAN scan to be overridden by the ANT scan. 
     The priority requests may also implement other patterns of priority level. For example, a two low priority level (L) requests may be made for every normal priority level (N) request with a high priority (H) request once every eight requests (e.g. L-L-N-L-L-N-L-L-H). Two N requests may be made for every L request, (e.g. N-N-L-N-N-L-N-N-H). Alternatively or additionally, other patterns may be shorter or longer than these examples. 
     Alternatively or additionally, the priority may be assigned dynamically based on grant or denial history. For example, after three denied scans an A request may be made. Other historical information may also be used. A history of device connections for one or more the protocols may be used. For example, usage of a particular protocol may be associated with a particular time of day, day of week, type of day, or date. In an example, an operator may tend to use a connection to an ANT device for a morning workout, but rarely make ANT device connections at other times. Hence, in the morning a smaller share of ANT scan request by the ANT controller may be made at a priority level likely to be denied by the scheduler. In another example, after a certain period of non-usage, the relative portion of normal and/or high priority scan request for a protocol may be reduced. 
     Alternatively or additionally, priority may be randomly assigned to a set of requests, e.g., stochastically or pseudo-randomly, or other probabilistic determination, to meet a given ratio of level requests For example, a selected ratio may include 60% L requests, 35% N request, and 5% H requests. 
     Additionally or alternatively, the priority system may be applied to other ANT and/or PAN operations for which resource scheduling is used (e.g. data transmission, audio transfer, voice calling, or other operations). 
     The principles and architectures discussed may be applied to other coexistence systems. Virtually any priority based collision resolution scheme may implement such priority level schemes accordingly. 
       FIG. 8  shows example logic  800  for resource request priority assignment. In various implementations, the example logic  800  may be used by a PAN controller, ANT controller, and/or scheduling circuitry to assign priority to resource requests. The logic  800  may generate a resource request ( 802 ). The logic  800  may access priority information ( 804 ). For example, the logic may access historical data related to resource usage, grants, device connections, and/or other historical data. In another example, the priority information may include a pattern by which priority is assigned. In another example, the priority information may include a randomly generated number on which the logic  800  may base its priority assignment. Based on the priority information, the logic  800  may determine that some resource requests should allow overriding ( 805 ). For example, based on historical data, the logic  800  may determine that the majority of PAN scan requests have been denied. In the example, the logic may determine to allow some ANT scan requests to be overridden in response. The logic  800  may select a portion of resource requests for which to allow overriding by colliding requests ( 806 ). In various implementations, the selection of the portion may be based on the priority information. Responsive to the selection of the proportion, the logic  800  may determine a priority level for the resource request ( 808 ). The logic  800  may assign the priority level to the resource request ( 810 ). 
     The logic  800  may override some requests within the portion for which overriding is allowed ( 812 ). The logic  800  may monitor the overrides for their effect on the priority information ( 814 ). If the overrides affect the priority information, the logic may return to  805 . In the example above, the logic may have previously determined the majority of PAN requests have been denied based on historical data. However, ins some cases, after allowing some ANT requests to be overridden, the majority of ANT requests may be denied. The logic  800  may then review the updated priority information and determine if changes should be made. 
     In some implementations, to allow for overriding the logic  800  may attempt to create a priority slot for PAN scans within an upcoming group of ANT scans. For example, an upcoming group of ANT scan requests at the normal ANT priority level may cause a portion of PAN scan requests at the normal PAN priority level to be rejected. If the portion is large enough to create an operator noticeable effect on performance, the logic  800  may change a portion of the upcoming group of ANT scan request to the low priority level to create a priority slot by which an increased portion of the PAN scan requests may pre-empt the predetermined portion of the ANT scans. 
     The methods, devices, processing, and logic described above may be implemented in many different ways and in many different combinations of hardware and software. For example, all or parts of the implementations may be circuitry that includes an instruction processor, such as a Central Processing Unit (CPU), microcontroller, or a microprocessor; an Application Specific Integrated Circuit (ASIC), Programmable Logic Device (PLD), or Field Programmable Gate Array (FPGA); or circuitry that includes discrete logic or other circuit components, including analog circuit components, digital circuit components or both; or any combination thereof. The circuitry may include discrete interconnected hardware components and/or may be combined on a single integrated circuit die, distributed among multiple integrated circuit dies, or implemented in a Multiple Chip Module (MCM) of multiple integrated circuit dies in a common package, as examples. 
     The circuitry may further include or access instructions for execution by the circuitry. The instructions may be stored in a tangible storage medium that is other than a transitory signal, such as a flash memory, a Random Access Memory (RAM), a Read Only Memory (ROM), an Erasable Programmable Read Only Memory (EPROM); or on a magnetic or optical disc, such as a Compact Disc Read Only Memory (CDROM), Hard Disk Drive (HDD), or other magnetic or optical disk; or in or on another machine-readable medium. A product, such as a computer program product, may include a storage medium and instructions stored in or on the medium, and the instructions when executed by the circuitry in a device may cause the device to implement any of the processing described above or illustrated in the drawings. 
     The implementations may be distributed as circuitry among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be implemented in many different ways, including as data structures such as linked lists, hash tables, arrays, records, objects, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library, such as a shared library (e.g., a Dynamic Link Library (DLL)). The DLL, for example, may store instructions that perform any of the processing described above or illustrated in the drawings, when executed by the circuitry. 
     Various implementations have been specifically described. However, many other implementations are also possible.