Computing devices can communicate with each other using wireless technology, such as Bluetooth, which enables the devices to share data over a short distance. A computing device enabled with short-range communication technology can create a network by discovering and connecting with other short-range communication technology enabled computing devices. Once connected, the computing devices can share information with each other over the network.
The following detailed description refers to the accompanying drawings. The same reference numbers may be used in different drawings to identify the same or similar elements. In the following description, for purposes of explanation and not limitation, specific details are set forth, such as particular structures, architectures, interfaces, techniques, etc. In order to provide a thorough understanding of the various aspects of various embodiments. However, it will be apparent to those skilled in the art having the benefit of the present disclosure that the various aspects of the various embodiments may be practiced in other examples that depart from these specific details. In certain instances, descriptions of well-known devices, circuits, and methods are omitted so as not to obscure the description of the various embodiments with unnecessary detail.
Bluetooth is a wireless technology that can be used to enable computing devices to create a network (e.g., a piconet) and communicate over a short distance (e.g., 10 meters). Currently, Bluetooth technology can operate in 2.4 GHz range and is supported by two standards, Bluetooth Classic and Bluetooth Low Energy (LE). Bluetooth Classic can support two data rates, basic rate (BR), and enhanced data rate (EDR), and can be used for larger amounts of data than Bluetooth LE. Bluetooth LE can be optimized for low power consumption, and used in devices with limited battery life.
In general, a primary device (e.g., a Bluetooth headset, a Bluetooth speaker, Bluetooth earbuds) transitions between various primary states while establishing a connection with a secondary device (e.g., a smartphone, a laptop, a tablet). Initially, the primary device can be in a standby state, in which the device is unconnected with the secondary device. The primary device then transmits an inquiry as to any secondary devices within a threshold distance. The primary device then pages any secondary devices that respond to set up a physical channel and a logical channel and establish a connection. Once the connection is established, the primary device enters a connected state in which it is connected with at least one secondary device.
A primary Bluetooth device and a secondary Bluetooth device can connect using an inquiry process followed by a paging process. During the paging process, the secondary device can listen for paging messages from the primary device at regular intervals. If primary device does not hear a paging message from the primary device at one interval, the secondary device waits for the next interval to again listen for a paging message. As a result, the second device cannot connect with the primary Bluetooth device until the next interval. Embodiments, herein address this situation by providing techniques for permitting the secondary device to schedule listing for the paging message prior to the next interval.
Initially, the primary device 102 can engage in an inquiry process to discover a nearby secondary device 104. The primary device 102 can transmit an inquiry request to discover a nearby secondary device 104. Upon receiving the inquiry request, a secondary device 104 that is discoverable (e.g., the secondary device is turned on) can transmit an inquiry response that includes the secondary device's address, identifier, and other information to the primary device 102, such that the secondary device is discovered. Once the primary device 102 discovers the secondary device 104, the primary device 102 can proceed with the paging process. Furthermore, the primary device 102 and the secondary device 104 can set up the network (e.g., piconet) during the paging process. A paging process is described below.
At 110, the primary device 102 can transmit a paging message to be received by the secondary device 104. The primary device 102 can use a set of channels that are designated for paging to transmit the paging message. In some instances, the number of channels is 32 channels. The primary device 102 can separate the set of channels into two channel trains. For example, if there are 32 channels, the primary device 102 can separate the channels into two 16 channel trains. Each paging message can include the secondary device's identifier (e.g., a device access code (DAC)), and the primary device 102 can listen for a response from the secondary device 104.
If the primary device 102 does not receive a response from the secondary device 104, the primary device 102 can transmit paging messages using the next two channels of the channel train. This hopping sequence can repeat, for example, every 10 milliseconds (e.g., 16 slots). To provide the secondary device 104 ample opportunity to respond, the primary device 102 can repeat the process. For example, in some instances, the primary device 102 can repeat the process 256 times at 10 milliseconds each cycle for a total of 2.56 seconds.
The secondary device 104, and in particular, a scan core 106 of the secondary device 104, can be configured to be in a page scan state listen for a message from the primary device 102 over the set of channels. In some embodiments, the secondary device 104 can listen various page scan repetition modes. In the first mode, the secondary device 104 can continuously listen for a paging message from the primary device 102. In a second mode, the secondary device 104 can periodically listen for a page from the primary device 102 (e.g., every 1.28 seconds). In a third mode, the secondary device 104 can periodically listen on each channel (e.g., 11.25 milliseconds per channel) for a page from the primary device 102 every 2.56 seconds.
In response to a receiving a paging message, the secondary device 104 can transmit a paging response that includes the secondary device's DAC at 112. The paging response can confirm to the primary device 102 that the intended recipient device for the paging message at 110 is the device that received the paging message.
In response to receiving the paging response, the primary device 102 can suspend its frequency hopping generator and transmit a frequency hopping sequence (FHS) packet to the secondary device 104 at 114. As the primary device 102 and the secondary device 104 are not connected, it is likely that the devices are using the same frequency hopping sequence. The FHS packet includes primary device frequency information, primary device clock information, and other appropriate information for synchronizing the primary device 102 and the secondary device 104. The secondary device 104 can use the information to synchronize its clock with the primary device's clock. At 116, the secondary device 104 can transmit an FHS response message to the primary device indicating that it has synchronized with the primary device 102. In response to receiving the FHS response message, the primary device 102 can resume its frequency hopping and assign the secondary device 104 an address (e.g., an active member address (AMA)) for the network (e.g., piconet).
At 118, the primary device 102 can start a timer and transmit a poll message to the secondary device 104 to confirm that the secondary device 104 is using the primary device's frequency hopping sequence. At 120, the secondary device 104 can respond to the primary device 102 with a null message that is transmitted on the correct timer. The primary device 102 can establish a connection with the secondary device 104 based on the receiving the null packet prior to the expiration of the timer.
Both the main core 106 and the scan core 108 can be configured for page scanning. The main core 106 can be configured to scan for a paging message from the primary device 102 over a first duration (e.g., one duration every 1.28 seconds). As the scan core 106 is a low power core, the scan core 108 can be configured to scan for a paging message at a second duration (e.g., one duration every 300 seconds). One issue that can occur is that main core's activities (e.g., transmission) can suppress the scan core's activities. For example, only one of the main core 106 or the scan core 108 can transmit at any given time. Therefore, in some instances, the scan core 108 can detect a paging message from the primary device 102, and be unable to respond because the main core 106 is busy and suppresses the activities of the scan core 108. Busy can refer to a state of the main core 106, in which the main core's radio resources are being used (e.g., for a synchronous connection oriented (SCO) link, extended SCO (eSCO) link, Bluetooth (BT) link, low energy (LE) BT link, asynchronous connection less (ACL) link, LE ACL link, LE advertisement, thread scan, etc.), which prevents the scan core 108 from continuing the page scan process after it detects the paging message.
In a conventional system the scan core 108 can discard the DAC and wait until (e.g., 300 milliseconds after first scan core scan) to perform a second scan core scan for a paging message, or the main core 106 can perform a second main core scan (e.g., 1.28 seconds after first main core scan). However, this results in the secondary device 104 waiting for at least 300 millisecond to resume page scanning. The primary device 102 and the secondary device 104 could establish the connection sooner if a page scan occurred prior to the 300 milliseconds.
Embodiments herein address the above described issues by providing techniques for permitting a scan core 108 to receive a paging message from the primary device 102. The secondary device 104 can then determine whether the main core 106 is busy or can the main core 106 assist the scan core 108 with establishing a link with the primary device 102. If the main core 106 can assist the scan core 108, then the main core 106 will assist to establish the connection with the primary device 102. If, however, the main core 106 is busy, the scan core 108 can retain the time and frequency information from the received paging message. The secondary device 104 can use coordination and scheduling logic, and a known time interval for the primary device 102 transmitting scanning messages (e.g., once every 10 milliseconds) and frequency used to transmit the paging message to predict a schedule as to each subsequent paging message. The coordination and scheduling logic can then schedule a new predictive scan duration for the main core 106 to scan for paging messages based on the primary device's paging message schedule. This paging message schedule-based scanning duration can occur prior to the main core's previously scheduled scanning duration and the scan core's previously scheduled scanning duration. Therefore, if the main core 106 receives a paging message before either an expiration of a 300 millisecond interval or an expiration of a 1.28 second interval, the primary device 102 and the secondary device 104 can establish a connection faster than if the secondary device did not schedule the paging message-based scanning duration for the main core 106.
In a conventional paging process, the scan core 204 would discard the paging message information and the scan core 204 would perform a second SC scan 210 after a time interval passes (e.g., after 300 milliseconds). In the herein described paging process, the secondary device can determine the time the paging message was received and the frequency used to transmit the paging message. The secondary device can further use the determined timing and frequency information to predict the arrival of a next paging message from the primary device. For example, the secondary device can be configured with reference timing information for paging messages (e.g., a primary device transmits a paging message once every 10 milliseconds). Based on the time that the scan core 204 received the paging message, the secondary device can determine the next time that a paging message from the primary device can be expected. For example, if the scan core 204 received a first paging message at time x, the secondary device can predict a schedule indicating that a subsequent paging messages is to be received at x+10 ms, x+20 ms, and so forth.
The secondary device can further configure the main core 202 with a paging message schedule and cause the main core 202 to perform a scan during a predictive MC scan duration 212 based on the schedule. As illustrated in
During the predictive MC scan duration 212, the main core 202 can detect a paging message from the primary device. Based on the detecting the paging message, the secondary device can perform the paging process as described in
In some instances, the main core 302 is busy each time that the scan core 304 performs a scan for a paging message. Therefore, even if the scan core 304 detects a paging message, the main core 302 will be unable to assist with establishing a connection with the primary device. In a conventional paging process, the secondary device may need to wait until the second MC scan duration 306 to detect a paging message from the primary device. As illustrated, the scan core 304 can detect a paging message, including a secondary device identifier and transmit a message to the coordination and scheduling logic of the secondary device to determine a schedule of predicted paging message from the primary device. The coordination and scheduling logic can further configure the main core 302 to perform a scan at a predictive MC scan duration 308 based on the schedule. As illustrated, even if the scan core's scan for a paging message coincide with MC busy durations, the predictive MC scan 308 permits the secondary device to establish a connection with the primary device faster than waiting for the second MC scan 306. In some instances, the connection with the primary device can be established 1 second faster than if the secondary device waited until the second MC scan 306 to detect the paging message.
As indicated above, the scan core's transmission capability might be suppressed by main core's activities. Therefore, if the scan core 304 is scanning for a page during a time duration that the main core 302 is busy, even if the scan core 304 detects a page, the main core 302 may not assist with the paging process. Furthermore, if the scan core 304 is scanning for a page, even if the main core 302 is busy, the scan core 304 is drawing power from the secondary device. Therefore, in order to preserve power and possibly extend a battery life, the secondary device can use a predictive algorithm to predict when the main core 304 is busy. The secondary device can then schedule the scan core 304 to power down during main core busy durations. The scheduling can include scheduling the scan core 304 to scan for a paging message during a period in which the main core 302 is not busy, or adjusting a previously scheduled scan core duration, such that the SC scan duration does not occur simultaneously to a MC busy duration.
In a conventional system the scan core 408 may continuously scan for a paging message from the starting time of the first SC scan duration 10 to the ending time of the second SC scan duration 412. Therefore, even during the first transmission duration 406, in the conventional system the scan core 408 can scan simultaneously scan as the main core 402 is busy. The scan core's page message scanning requires energy and can lead to draining the secondary devices battery. As the main core 402 is busy during the first transmission duration, the battery drain may from page scanning can be unnecessary. As illustrated via the dashed lines, the herein described techniques can be used to schedule the page message scanning, such that the first SC scan duration 410 and the second SC scan duration 412 do not occur at the same time as the first transmission duration 406. Various method for scheduling a scanning duration to not occur during a busy duration are described with more particularity with respect to
One issue that can occur for scheduling an SC scan, is whether a time interval between too busy durations is long enough to perform an SC scan. As illustrated, a gap between a first MC busy duration 416 and a second MC busy duration 418 may or may not include enough time to perform the page scanning. For example, the secondary device can determine (e.g., using a predictive algorithm) an ending time for the first MC busy duration 416, and a starting time for the second MC busy duration 418. The secondary device can further use this information to determine a length of time of the first gap 414. For example, by subtracting the starting time of the second MC busy duration 418 from the ending time of the first MC busy duration 416. The secondary device can then compare the length of time of the first gap 414 to a threshold length of time. As illustrated, the length of time is less than the threshold length of time, therefore the secondary device may elect to not schedule an SC scan for a time period corresponding to the first gap 414.
As another example, the secondary device can determine (e.g., using a predictive algorithm) the ending time of the second MC busy duration 418 and the starting time of a third MC busy duration 420. The secondary device can further use this information to determine a length of time of the second gap 422. For example, by subtracting the starting time of the second MC busy duration 418 from the ending time of the first MC busy duration 416. The secondary device can then compare the length of time of the second gap 422 to a threshold length of time. As illustrated, if the length of time is greater than the threshold length of time, the secondary device may elect to schedule an SC scan for a time period corresponding to the second gap 422.
The techniques described herein can also lead to increased scan time. As illustrated below the SC scan durations are scheduled outside of MC busy durations. In other words, the scan core 404 is not expending energy scanning for paging messages during MC busy durations. As such, the time that the scan core 404 spends scanning for paging messages is time that the main core 402 and scan core 404 can assist to complete the paging process and establish a connection with a primary device.
If, however, the length of time of the MC reception duration 804 is greater than the threshold duration time, the secondary device can schedule an updated SC scan duration 808. This can occur whether there has been a previously schedule SC scan duration 808 or the scan core 806 was not scheduled to perform any paging message scan. If there was a previously scheduled SC scan duration 808, the secondary device can adjust the starting time from T2 to T3. The secondary device can further adjust the ending time from T6 to T4. If the scan core 806 was not previously scheduled to perform a paging message scan, then the secondary device can schedule an SC scan duration from T3 to T4, where a length of time from T3 to T4 is greater than the threshold duration time. During the updated SC scan duration 808, the scan core 806 can scan for a paging message from a primary device. In the event that the scan core 806 detects a paging message, the main core 802 can assist with the paging process.
At 1102, a secondary device can start or resume a paging procedure to detect a paging message from a primary device. The paging message can include a secondary device ID, that the primary device obtained from a previous inquiry process between the primary device and the secondary device. During the paging process, both a main core and a scan core of the secondary device can scan for a paging message from the primary device.
At 1104, the secondary device can determine whether the main core has scanned the secondary device ID. If not, the secondary device can resume the paging process at 1102. If the main core has scanned the secondary device identifier in a paging message from the primary device, the secondary device can establish a connection with the primary device at 1006, as described in
At 1108, the secondary device can determine whether the scan core has detected the secondary device identifier in a paging message from the primary device. If the scan core has not detected the secondary device identifier, the secondary device can resume the paging process at 1102.
If the scan core has detected the secondary device identifier, the secondary device can determine whether the main core is busy at 1110. For example, the secondary device can determine whether the main core resources are being used, such that the main core cannot assist the paging process. If the main core is not busy then the secondary device can establish a connection with the primary device at 1006, as described in
If the main core is busy, the secondary device can predict a schedule of the main core for instance that the main core is busy and instances that the main core is not busy at 1112. For example, the secondary device can use a predictive algorithm to predict a schedule of the main core. The predictive algorithm can use as inputs transmission, reception patterns of the main core, types of transmissions and reception that the main core is currently engaging, system time, and other appropriate inputs.
At 1114, the secondary device can determine whether the main core has detected the secondary device identifier in a paging message from the primary device. If the main core has detected the secondary device identifier, the secondary device can establish a connection with the primary device at 1006, as described in
At 1204, the method can include the first computing device determining, by the first core of the first computing device, that a second core of the first computing device is performing an operation that prevents completion of a paging process for establishing a connection with the second device. For example, if the second core (e.g., main core) is transmitting, then the first core (e.g., scan core) cannot simultaneously transmit a paging message response.
At 1206, the method can include the first computing device determining a second duration for a second paging message based at least in part on determining that the second core is performing the operation. The first computing device can predict a schedule of the second core, including a time interval that the second core is not busy. In addition, the first computing device can predict a schedule of the paging messages from the second computing device. For example, the second computing device can be configured to transmit paging messages at designated time interval (e.g., once every x milliseconds) and using a designated set of frequencies. The first computing device can be configured with the paging message schedule, and based on the schedule, the first computing device can predict a timing of future paging messages. The first computing device can further detect the frequency of the received paging message. The first computing device can configure the main core to listen for a paging message at that frequency.
At 1208, the method can include the first computing device causing, by the first computing device, the second core to scan for the second paging message from the second computing device at the second duration.
At 1210, the method can include the first computing device receiving, by the second core of the first computing device, the second paging message at the second duration. The second paging message and include the first computing device identifier.
At 1212, the method can include the first computing device transmitting, by the second core of the first computing device, a paging response for establishing the connection with the second device. For example, the secondary device can engage in the paging process with the second computing device as described in
At 1304, the method can include a first computing device determining the operation of the first core prevents transmission of a paging message response for establishing a connection with a second computing device via a short range transmission protocol. If, for example, the main core is engaged in a transmission, then the scan core cannot also simultaneously transmit a paging response message to the primary device. The two transmissions can interfere with each other and result in unusable information to the primary device. As any energy expended by the scan during a main core busy state cannot be used to complete the paging process, the secondary device can conserve power by not having the scan core scan during this time period.
At 1306, the method can include a first computing device determining a third duration for the paging message scan such that the operation of a first core does not prevent the transmission of the paging message response. The secondary device can adjust the starting time and the ending time of the SC scan duration, such that the scan core is not scanning for a paging message during a time that the main core is busy. In this sense, the secondary device can conserve power by not having the scan core perform a scanning operation while the main core is busy.
At 1308, the method can include a first computing device causing the second core to scan for a paging message during the third duration. Based on the detecting the paging message during the third duration, the secondary device can perform the rest of the paging process as described in
Any of the above-described examples may be combined with any other example (or combination of examples), unless explicitly stated otherwise. The foregoing description of one or more implementations provides illustration and description but is not intended to be exhaustive or to limit the scope of embodiments to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of various embodiments.
Although specific embodiments have been described, various modifications, alterations, alternative constructions, and equivalents are also encompassed within the scope of the disclosure. Embodiments are not restricted to operation within certain specific data processing environments but are free to operate within a plurality of data processing environments. Additionally, although embodiments have been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that the scope of the present disclosure is not limited to the described series of transactions and steps. Various features and aspects of the above-described embodiments may be used individually or jointly.
Further, while embodiments have been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of the present disclosure. Embodiments may be implemented only in hardware, or only in software, or using combinations thereof. The various processes described herein can be implemented on the same processor or different processors in any combination. Accordingly, where components or modules are described as being configured to perform certain operations, such configuration can be accomplished, e.g., by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as microprocessors) to perform the operation, or any combination thereof. Processes can communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions, and other modifications and changes may be made thereunto without departing from the broader spirit and scope as set forth in the claims. Thus, although specific disclosure embodiments have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including,” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments and does not pose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.
Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is intended to be understood within the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
Preferred embodiments of this disclosure are described herein, including the best mode known for carrying out the disclosure. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. Those of ordinary skill should be able to employ such variations as appropriate, and the disclosure may be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein.
All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
In the foregoing specification, aspects of the disclosure are described with reference to specific embodiments thereof, but those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above-described disclosure may be used individually or jointly. Further, embodiments can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive.
This application claims the benefit to U.S. Provisional Application No. 63/409,703, filed Sep. 23, 2022, the disclosures which is incorporated by reference in its entirety and for all purposes.
Number | Date | Country | |
---|---|---|---|
63409703 | Sep 2022 | US |