Facilitating control procedures via services adapted to BLE connectivity.

By setting MD bits to indicate additional data in BLE protocols, connection events are maintained, allowing timely responses to control procedures, addressing premature closure issues in BLE devices.

JP7894090B2Active Publication Date: 2026-07-23TEXAS INSTRUMENTS INC
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
TEXAS INSTRUMENTS INC
Filing Date
2021-08-09
Publication Date
2026-07-23

AI Technical Summary

Technical Problem

Current Bluetooth Low Energy (BLE) protocols close connection events prematurely when devices lack additional data to transmit, preventing timely responses to control procedure requests without complex and expensive software and hardware solutions.

Method used

Utilizing More Data (MD) bits to maintain connection events by setting them to indicate additional data, even when none is available, allowing devices to respond to control procedures within the same event.

Benefits of technology

This approach reduces control procedure completion time by keeping connection events open, enabling devices to respond to control requests without additional hardware or software complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007894090000001
    Figure 0007894090000001
  • Figure 0007894090000002
    Figure 0007894090000002
  • Figure 0007894090000003
    Figure 0007894090000003
Patent Text Reader

Abstract

The first Bluetooth device (100) includes a transceiver (111) configured to receive a control procedure packet (107) from the second Bluetooth device during a Bluetooth connection event (102) of a Bluetooth connection between the first Bluetooth device and a second Bluetooth device (101). The first Bluetooth device also includes a controller (112) coupled to the transceiver and configured to set a more data bit (118) of a response packet (116) to the control procedure packet to a first value (119) corresponding to keeping the Bluetooth connection event open, regardless of whether the first Bluetooth device has more data (MD) to send to the second Bluetooth device. The transceiver is also configured to send the response packet to the second Bluetooth device during the Bluetooth connection event.
Need to check novelty before this filing date? Find Prior Art

Description

Summary of the Invention

[0001] According to at least one example of the present disclosure, a first Bluetooth device includes a transceiver configured to receive a control procedure packet from a second Bluetooth device during a Bluetooth connection event of a Bluetooth connection between the first Bluetooth device and the second Bluetooth device. The first Bluetooth device also includes a controller coupled to the transceiver, the controller being configured to set the more data (MD) bits of a response packet to a first value regardless of whether the first Bluetooth device has more data to send to the second Bluetooth device. The first value corresponds to keeping the Bluetooth connection event open. The transceiver is further configured to send a response packet to the second Bluetooth device during the Bluetooth connection event.

[0002] In at least one example, the data field of the response packet is empty.

[0003] In at least one example, the MD bits of the control procedure packet are set to a second value indicating that the second Bluetooth device has no more data to send.

[0004] In at least one example, the transceiver is further configured to receive a second packet from the second Bluetooth device during the Bluetooth connection event based on the MD bits of the response packet being set to the first value.

[0005] In at least one example, the controller is configured to generate a second packet to be sent to the second Bluetooth device during the Bluetooth connection event and following the response packet, the second packet including control information in response to the control procedure packet.

[0006] In at least one example, the first Bluetooth device further includes a transmit data queue for storing data to be sent by the first Bluetooth device to a second Bluetooth device, and the controller is configured to set the MD bit of a response packet to a first value when the transmit data queue is empty.

[0007] In at least one instance, the first value is 1.

[0008] According to at least one example of this disclosure, a computer program product includes a computer-readable instruction, which, when executed by the processor of a first Bluetooth device, causes the first Bluetooth device to receive a control procedure packet from the second Bluetooth device during a Bluetooth connection event of a Bluetooth connection between the first Bluetooth device and the second Bluetooth device. The computer-readable instruction further causes the first Bluetooth device to set the more data bit of the response packet to the control procedure packet to a first value, regardless of whether the first Bluetooth device has more data (MD) to send to the second Bluetooth device. The first value corresponds to keeping the Bluetooth connection event open. The computer-readable instruction further causes the first Bluetooth device to send a response packet to the second Bluetooth device during the Bluetooth connection event.

[0009] In at least one instance, the data field of the response packet is empty.

[0010] In at least one example, the MD bit of the control procedure packet is set to a second value indicating that the second Bluetooth device has no more data to transmit.

[0011] In at least one example, the computer-readable instruction is further configured to cause a first Bluetooth device to receive a second packet from a second Bluetooth device during a Bluetooth connection event, based on the fact that the MD bit of the response packet is set to a first value.

[0012] In at least one example, the computer-readable instruction is further configured to cause the first Bluetooth device to generate a second packet to be sent to the second Bluetooth device during the Bluetooth connection event and following the response packet. The second packet includes control information in response to the control procedure packet.

[0013] In at least one example, the computer-readable instruction is further configured to cause the first Bluetooth device to set the MD bit of the response packet to a first value when the transmit data queue of the first Bluetooth device is empty.

[0014] In at least one instance, the first value is 1.

[0015] According to at least one example of this disclosure, a method implemented by a first Bluetooth device includes receiving a control procedure packet from a second Bluetooth device during a Bluetooth connection event of a Bluetooth connection between the first Bluetooth device and the second Bluetooth device. The method further includes setting the more data bit of a response packet to the control procedure packet to a first value, regardless of whether the first Bluetooth device has more data (MD) to send to the second Bluetooth device. The first value corresponds to keeping the Bluetooth connection event open. The method further includes sending a response packet to the second Bluetooth device during the Bluetooth connection event.

[0016] In at least one instance, the data field of the response packet is empty.

[0017] In at least one example, the MD bit of the control procedure packet is set to a second value indicating that the second Bluetooth device has no more data to transmit.

[0018] In at least one example, this method further includes receiving a second packet from a second Bluetooth device during a Bluetooth connection event, based on the fact that the MD bit of the response packet is set to a first value.

[0019] In at least one example, the method further includes generating a second packet to be sent to a second Bluetooth device during a Bluetooth connection event and following a response packet, the second packet including control information in response to a control procedure packet.

[0020] In at least one example, this method further includes setting the MD bit of the response packet to a first value when the transmit data queue of the first Bluetooth device is empty.

[0021] Next, refer to the attached drawings for a detailed explanation of various examples. [Brief explanation of the drawing]

[0022] [Figure 1] This is a block diagram showing a first Bluetooth device that is communicatively coupled to and communicating with a second Bluetooth device during a Bluetooth connection event, according to various examples.

[0023] [Figure 2] This figure shows packet streams following various examples.

[0024] [Figure 3] This is a timing diagram following various examples.

[0025] [Figure 4] It is a timing diagram according to various examples.

[0026] [Figure 5] It is a flowchart showing methods according to various examples.

Mode for Carrying Out the Invention

[0027] In a Bluetooth Low Energy (BLE) packet, a More Data (MD) bit (in the MD bit field of the BLE packet header) indicates whether the device has additional data to transmit. When the MD bits in packets from a central device and a peripheral device indicate that these devices do not have more data to transmit, the current connection event between the devices is closed, thereby preventing the transmission of additional packets during the connection event. Currently, without complex and expensive software and / or hardware, a peripheral and a central device cannot respond to a control procedure request from a central device or a peripheral device within the time period required by the peripheral and central devices to respond to a packet containing a control procedure request (e.g., the inter-frame interval specified by the protocol). Thus, when a peripheral or central device receives a control procedure request and does not have more data to transmit, the peripheral or central device sets the MD bit of the packet that the peripheral or central device transmits in response to the control procedure request to indicate that the peripheral or central device does not have more data to transmit. When the peripheral device and the central device do not have additional data to transmit, the peripheral device or the central device will close the connection event without substantially responding to the control procedure request. In this scenario, the peripheral device or the central device has to wait until the next connection event to substantially respond to the control procedure request, resulting in a delay.

[0028] The examples described herein use MD bits in a novel way to facilitate control procedures (e.g., BLE stack control procedures and / or application-level control procedures) using MD bits to prevent connection events from closing, regardless of whether peripheral and central devices have more data to transmit. In some examples, a device (e.g., a peripheral or central device) responding to a control procedure (e.g., a responding device) initiated by another device (e.g., a starting device) sets the MD bits to indicate that the responding device has more data to transmit, even when the responding device does not have more data to transmit to the starting device, in order to maintain the connection event so that the responding device can substantially respond to the control procedure request during the connection event in which the control procedure request is transmitted. This substantially reduces the control procedure completion time.

[0029] Figure 1 is a block diagram of an exemplary Bluetooth device 100 (e.g., a first Bluetooth device), where Bluetooth device 100 is communicatively coupled to and communicates with Bluetooth device 101 (e.g., a second Bluetooth device) during a Bluetooth connection event 102 (e.g., a single Bluetooth connection event) of a Bluetooth connection between Bluetooth device 100 and Bluetooth device 101 (e.g., a second Bluetooth device). In some examples, Bluetooth device 100 is a peripheral device and Bluetooth device 101 is a central device. In other examples, Bluetooth device 100 is a central device and Bluetooth device 101 is a peripheral device. In some examples, Bluetooth device 100 and Bluetooth device 101 are BLE devices, and Bluetooth connection event 102 is a BLE connection event of a BLE connection between Bluetooth device 101 and Bluetooth device 100.

[0030] As used herein, the term Bluetooth connection event 102 (e.g., BLE connection event) refers to the connection period that occurs during a connection interval between a central device and a peripheral device. The connection interval begins at a first anchor point where the central device begins transmitting a data physical channel (PDU) to the peripheral and ends before a subsequent anchor point (the anchor point immediately following the first anchor point) where the central device begins transmitting a PDU.

[0031] The Bluetooth device 101 includes a transceiver 103 and a controller 105 coupled to the transceiver 103. The controller 105 includes a packet generator 106 configured to generate, create, construct, and / or provide one or more packets for transmission to the Bluetooth device 100 during a Bluetooth connection event 102. For example, one or more packets generated, created, constructed, and / or provided by the packet generator 106 for transmission (e.g., to the Bluetooth device 100) may include one or more control procedure packets (such as a control procedure packet 107).

[0032] As used herein, the term "control procedure packet" refers to a packet (e.g., control procedure packet 107) that contains control information (e.g., encryption request) corresponding to a control procedure (e.g., encryption procedure). The control procedure packet (e.g., control procedure packet 107) may include a locally generated control payload (e.g., a control payload generated by a controller such as controller 105) or a payload provided from a higher layer (e.g., a BLE host or BLE application). In the example where the control procedure packet (e.g., control procedure packet 107) includes a payload provided from a higher layer, the controller (e.g., controller 105) wraps the payload in a link-layer data PDU to provide the control procedure packet. In the example where the control procedure packet (e.g., control procedure packet 107) includes a payload provided from a higher layer, the control procedure packet is considered a data packet at the link layer.

[0033] In some examples, the control procedure corresponding to control procedure packet 107 is initiated by the Bluetooth device 101. In some examples where the control procedure corresponding to control procedure packet 107 is initiated by the Bluetooth device 101, control procedure packet 107 is the first packet of the control procedure.

[0034] In other examples, the control procedure corresponding to control procedure packet 107 is initiated by Bluetooth device 100. In these examples, Bluetooth device 100 sends a control procedure packet (not shown) to Bluetooth device 101 before Bluetooth device 101 sends control procedure packet 107.

[0035] The control procedure packet 107 includes fields such as the MD field 108. Although Figure 1 only shows the MD field 108 within the control procedure packet 107, the control procedure packet 107 may include one or more additional fields, such as data fields. In some examples, Bluetooth device 101 has no data to send to Bluetooth device 100 (e.g., when the control procedure packet 107 is generated). In these examples, the controller 105 is configured to set the MD bit 109 of the MD field 108 of the control procedure packet 107 to a second value 110, based on and / or indicating that Bluetooth device 101 has no data to send to Bluetooth device 100 (e.g., when the control procedure packet 107 is generated). The second value 110 corresponds to the end / close of the Bluetooth connection event 102. For example, if, during Bluetooth connection event 102, a series of packets exchanged between Bluetooth device 101 and Bluetooth device 100 contain an MD bit set to a second value 110, Bluetooth connection event 102 terminates / closes in response to the MD bit of the series of packets set to a first value 110. Bluetooth device 101 is configured to use transceiver 103 to send control procedure packets 107 (for example, to Bluetooth device 100) during Bluetooth connection event 102. In some examples, the control procedure packets 107 are sent at the anchor point of Bluetooth connection event 102. In other examples, the control procedure packets 107 are sent at a non-anchor point of Bluetooth connection event 102.

[0036] The Bluetooth device 100 includes a transceiver 111 and a controller 112 coupled to the transceiver 111. In the example shown in Figure 1, the Bluetooth device 100 also includes a memory 113 coupled to the controller 112, the memory 113 storing processor-readable instructions 114. In some examples, the controller 112 is configured to execute the processor-readable instructions 114 in order to perform one or more operations described herein. The Bluetooth device 100 also includes a transmit data queue 115 coupled to the controller 112, the transmit data queue 115 is configured to store data for transmission by the Bluetooth device 100.

[0037] The transceiver 111 is configured to receive a control procedure packet 107 from the Bluetooth device 101 during a Bluetooth connection event 102. The controller 112 is configured to generate a response packet 116 in response to the control procedure packet 107. The response packet 116 includes an MD field 108 and may include one or more other fields, such as a data field 117.

[0038] Controller 112 is configured to set the MD bit 118 of the MD field 108 of response packet 116 to a first value 119, regardless of whether Bluetooth device 100 has data to send to Bluetooth device 101 (for example, when response packet 116 is generated). For example, controller 112 includes a response packet generator 121, which is configured to generate a response packet 116 that includes the MD bit 118 set to a first value 119, even when Bluetooth device 100 has no data to send to Bluetooth device 101. Bluetooth device 100 is further configured to use transceiver 111 to send response packet 116 to Bluetooth device 101 during Bluetooth connection event 102.

[0039] The first value 119 corresponds to keeping the Bluetooth connection event 102 open. In some cases, the first value 119 is 1 and the second value 110 is 0.

[0040] Setting the MD bit 118 of the response packet 116 regardless of whether the Bluetooth device 100 has data to send to the Bluetooth device 101 when the response packet 116 is generated means that the Bluetooth device 100 sets the MD bit 118 of the response packet 116 regardless of whether the Bluetooth device 100 has data to send to the Bluetooth device 101 when the response packet 116 is generated. For example, in the case where the data field 117 is empty, the Bluetooth device 100 is configured to set the MD bit 118 to a first value 119, even if the data field 117 of the response packet 116 is empty. Alternatively or additionally, in the case where the transmit data queue 115 of the Bluetooth device 100 is empty (for example, when the response packet 116 is generated), the Bluetooth device 100 is configured to set the MD bit 118 to a first value 119.

[0041] In some examples (for example, the first example), the Bluetooth device 100 (for example, the controller 112) is further configured to set the MD bit 118 of the response packet 116, regardless of whether the Bluetooth device 100 has data to send to the Bluetooth device 101 (for example, when the response packet 116 is generated), when 1) a control procedure between the Bluetooth device 100 and the Bluetooth device 101 has been initiated (for example, by the Bluetooth device 100) or has been previously initiated (for example, by the Bluetooth device 100 or the Bluetooth device 101) and has not yet been completed, and 2) the response packet 116 will not complete the control procedure (for example, based on or in response to these decisions or detections). In some of the first examples, before generating a response packet 116, the controller 112 is configured to determine whether 1) a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (e.g., by Bluetooth device 100) and / or has been initiated previously (e.g., by Bluetooth device 100 or Bluetooth device 101) and has not yet been completed, and 2) whether the response packet 116 will complete the control procedure.

[0042] In some examples, the controller 112 is configured to determine whether a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (e.g., by Bluetooth device 100) and / or whether it has been pre-initiated (e.g., by Bluetooth device 100 or Bluetooth device 101) and is not yet completed, based on the format and / or content of a control procedure packet (e.g., control procedure packet 107) from Bluetooth device 101, and according to the relevant protocol defining the control procedure packets. For example, the controller 112 may at least partially parse the control procedure packet 107 to determine that it is a control procedure packet based on the format and / or content of the control procedure packet 107. The controller 112 may also determine, based on the relevant protocol defining the control procedure packets, that the control procedure packet 107 does not complete the control procedure (for example, the controller 112 may determine that the control procedure packet 107 does not correspond to the final packet of the control procedure as defined by the relevant protocol). Thus, the controller 112 may be configured to determine, based on the format and / or content of the control procedure packet from Bluetooth device 101 (e.g., control procedure packet 107) and according to the relevant protocol defining the control procedure packets, whether the control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (e.g., by Bluetooth device 100) and / or has been pre-initiated (e.g., by Bluetooth device 100 or Bluetooth device 101) and is not yet complete.

[0043] In some examples, when the controller 112 determines that a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (e.g., by Bluetooth device 100) and / or has been previously initiated (e.g., by Bluetooth device 100 or Bluetooth device 101) and is not yet completed, the controller 112 is further configured to determine whether the response packet 116 substantially completes the control procedure. The controller 112 may be configured to determine whether the response packet 116 substantially completes the control procedure based on whether the response packet 116 substantially responds to the control procedure packet 107 and / or whether the relevant protocol indicates that the completion of the control procedure involves subsequent packets (e.g., packets following the response packet 116). For example, the response packet 116 cannot substantially respond to the control procedure indicated in the control procedure packet 107. For example, Bluetooth device 100 may not have enough time to adequately process (e.g., parse) the control procedure packet 107 and / or to generate a substantial response to the control procedure (e.g., to the control procedure packet 107) within the time period set for Bluetooth device 100 to respond to the control procedure packet 107 (e.g., required depending on the frame interval specified by the protocol). Therefore, in this example, the control procedure indicated by the control procedure packet 107 will not be completed in response to Bluetooth device 101 receiving and processing the response packet 116. In this example, controller 112 may be configured to determine that the response packet 116 does not complete the control procedure based on the fact that the response packet 116 does not contain a substantial response to the control procedure packet 107. Alternatively or additionally, in another example, the relevant protocol may be defined such that the control procedure includes subsequent packets (e.g., packets following the response packet 116). In this example, controller 112 may be configured to determine that the response packet 116 does not complete the control procedure based on the relevant protocol.

[0044] Therefore, in at least some of the first examples, the controller 112 is further configured to set the MD bit 118 of the response packet 116, regardless of whether Bluetooth device 100 has data to send to Bluetooth device 101 (for example, when the response packet 116 is generated), based on or in response to determining or detecting that 1) a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated in advance (for example, by Bluetooth device 100 or Bluetooth device 101) and has not yet been completed, and 2) the response packet 116 will not complete the control procedure.

[0045] In some other examples (e.g., the second example), the Bluetooth device 100 (e.g., controller 112) is further configured to set the MD bit 118 of the response packet 116, regardless of whether the Bluetooth device 100 has data to send to the Bluetooth device 101 (e.g., when the response packet 116 is generated), (e.g., based on or in response to these decisions or detections) when 1) a control procedure between the Bluetooth device 100 and the Bluetooth device 101 has been initiated (e.g., by the Bluetooth device 100) or has been initiated in advance (e.g., by the Bluetooth device 100 or the Bluetooth device 101) and has not yet been completed, 2) a response packet 116 will not complete the control procedure, and 3) the Bluetooth device 100 owes the Bluetooth device 101 a control procedure packet corresponding to a control procedure as defined by the relevant protocol. In some of the second examples, before generating the response packet 116, the controller 112 is configured to determine whether 1) a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (e.g., by Bluetooth device 100) and / or has been initiated previously (e.g., by Bluetooth device 100 or Bluetooth device 101) and has not yet been completed; 2) whether the response packet 116 will complete the control procedure; and 3) whether Bluetooth device 100 owes Bluetooth device 101 a control procedure packet corresponding to a control procedure as defined by the relevant protocol.

[0046] In some examples where the controller 112 is configured to determine whether a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (for example, by Bluetooth device 100) and / or whether it has been pre-initiated (for example, by Bluetooth device 100 or Bluetooth device 101) and is not yet completed, the controller 112 is configured to determine, as described above, whether a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated (for example, by Bluetooth device 100) and / or whether it has been pre-initiated (for example, by Bluetooth device 100 or Bluetooth device 101) and is not yet completed, the controller 112 is further configured to determine, as described above, whether the response packet 116 substantially completes the control procedure. In some examples, when the controller 112 determines that the response packet 116 will not substantially complete the control procedure, the controller 112 is further configured to determine whether the Bluetooth device 100 owes the Bluetooth device 101 a control procedure packet corresponding to the control procedure based on the relevant protocol. For example, the relevant protocol may indicate that the Bluetooth device 100 owes the Bluetooth device 101 a control procedure packet corresponding to the control procedure in order to complete the control procedure.

[0047] Therefore, in at least some of the second examples, the controller 112 is further configured to set the MD bit 118 of the response packet 116, regardless of whether Bluetooth device 100 has data to send to Bluetooth device 101 (for example, when the response packet 116 is generated), based on or in response to determining or detecting that 1) a control procedure between Bluetooth device 100 and Bluetooth device 101 has been initiated in advance (e.g., by Bluetooth device 100 or Bluetooth device 101) and has not yet been completed, 2) the response packet 116 will not complete the control procedure, and 3) Bluetooth device 100 owes Bluetooth device 101 a control procedure packet corresponding to a control procedure as defined by the relevant protocol. Bluetooth device 101 is configured to receive the response packet 116 during the Bluetooth connection event 102. In response to receiving a response packet 116 in which the MD bit 118 is set to a first value 119, the Bluetooth device 101 (e.g., controller 105) is configured to generate a second packet 120 for transmission to the Bluetooth device 100 during the Bluetooth connection event 102. In some examples, the second packet 120 is empty (e.g., it contains neither control information nor data). In these examples, the controller 105 is configured to set the MD bit 122 to a second value 110 based on the fact that the Bluetooth device 101 has no data to transmit to the Bluetooth device 100 (e.g., when the second packet 120 is generated).

[0048] In some examples, the Bluetooth device 101 may be configured not to generate and transmit a second packet 120 if the response packet 116 contains an MD bit 118 set to a second value 110. For example, the Bluetooth device 101 may not have any additional data to transmit to the Bluetooth device 100. In these examples, the Bluetooth connection event 102 may terminate in response to the Bluetooth device 101 receiving a response packet 116 in which the MD bit 118 is set to a second value 110. Therefore, in some cases (for example, when Bluetooth devices 100 and 101 have no more data to transmit), regardless of whether Bluetooth device 100 has more data to transmit, by setting the MD bit 118 of the response packet 116 to a first value 119, Bluetooth device 100 may keep the Bluetooth connection event 102 open (resulting in Bluetooth device 101 generating and transmitting a second packet 120), thereby providing Bluetooth device 100 with an opportunity to substantially respond to the control procedure (as shown in the control procedure packet 107) during the Bluetooth connection event 102 and after the transmission of the response packet 116.

[0049] Bluetooth device 101 is configured to send a second packet 120 to Bluetooth device 100 using transceiver 103 during Bluetooth connection event 102. Bluetooth device 100 is configured to receive the second packet 120 using transceiver 111 during Bluetooth connection event 102. In some examples, following Bluetooth device 100 receiving the second packet 120, controller 112 is configured to generate a second response packet 123 to send to Bluetooth device 101 during Bluetooth connection event 102. In some examples, the second response packet 123 contains control information in response to a control procedure shown in control procedure packet 107. To illustrate using an example where control procedure packet 107 contains LL_ENC_REQ, the control information in the second response packet 123 may include LL_ENC_RSP (e.g., an encrypted response to an encrypted request). In some examples, as described above with reference to MD bit 118, the MD bit 124 of the second response packet 123 is set to the first value 119, regardless of whether Bluetooth device 100 has data to send to Bluetooth device 101 (for example, when the second response packet 123 is generated).

[0050] In some examples, the second response packet 123 is generated and transmitted by the Bluetooth device 100 in response to the Bluetooth device 100 receiving the second packet 120.

[0051] In another example, the second response packet 123 is generated and transmitted by Bluetooth device 100 in response to Bluetooth device 100 receiving a different packet (not shown) (e.g., an "intermediate" response packet) transmitted by Bluetooth device 101 during the Bluetooth connection event 102. For example, Bluetooth device 100 may generate and transmit a first intermediate response packet (not shown) in response to Bluetooth device 100 receiving the second packet 120. The first intermediate response packet may include an MD bit set to a first value 119, and the first intermediate response packet may be empty (e.g., it may not contain data or control information). Bluetooth device 101 may receive the first intermediate response packet and, in response to receiving the first intermediate response packet, may transmit a second intermediate response packet. The second intermediate response packet may include an MD bit set to a second value 110, and the second intermediate response packet may be empty (e.g., it may not contain data or control information). Bluetooth devices 101 and 100 may exchange intermediate response packets (e.g., empty packets) with MD bits set as described with reference to the first and second intermediate response packets until Bluetooth device 100 generates and transmits a second response packet 123 which may contain control information in response to a control procedure indicated in the control procedure packet 107.

[0052] Therefore, when Bluetooth device 100 does not have more data, Bluetooth device 100 keeps Bluetooth connection event 102 open by setting the MD bits (e.g., 118, 124) in the MD field 108 of the response packet (e.g., 116, 123) to a first value 119, thereby allowing Bluetooth devices 101 and 100 to exchange more packets during Bluetooth connection event 102, and enabling the completion of a control procedure (e.g., an encryption control procedure) during a single Bluetooth connection event, which otherwise would have required multiple Bluetooth connection events to complete the control procedure (in some examples).

[0053] Figure 2 shows an example of a packet stream 200 of packets communicated between Bluetooth device 100 and Bluetooth device 101 in Figure 1 during a Bluetooth connection event 201 (e.g., a single Bluetooth connection event). Bluetooth connection event 201 may correspond to Bluetooth connection event 102 in Figure 1. The time interval between packets may correspond to the T_IFS interval.

[0054] The packet includes a control procedure packet 202, which is generated by the Bluetooth device 101 in Figure 1 at the anchor point of the connection event and sent to the Bluetooth device 100 in Figure 1. The control procedure packet 202 includes LL_Enc_Req (e.g., encryption request). The control procedure packet 202 in Figure 2 may correspond to the control procedure packet 107 in Figure 1. In the example shown in Figure 2, since the Bluetooth device 101 in Figure 1 has no additional data to send, the MD bit 224 of the control procedure packet 202 is set to a second value 226 (e.g., "0"). In some examples, the second value 226 corresponds to the second value 110 in Figure 1. In some examples, the duration for sending the control procedure packet 202 is 264 microseconds.

[0055] The packet further includes a response packet 204, which is generated by the Bluetooth device 100 in Figure 1 in response to the Bluetooth device 100 in Figure 1 receiving the control procedure packet 202 in Figure 2, and sent to the Bluetooth device 101 in Figure 1. The response packet 204 in Figure 2 may correspond to the response packet 116 in Figure 1. In some examples, the duration for sending the response packet 204 is 80 microseconds. The MD bit 228 of the response packet 204 in Figure 2 is set to a first value 225, which corresponds to "1". The first value 225 in Figure 2 may correspond to the first value 119 in Figure 1. The response packet 204 in Figure 2 is empty (for example, it contains neither data nor control information). Therefore, in this example, the response packet 204 is generated to include the MD bit 228, which corresponds to the first value 225, even if the response packet 204 is empty. This results in keeping the Bluetooth connection event 201 open.

[0056] The packet further includes packet 206, which is generated by Bluetooth device 101 in Figure 1 and sent to Bluetooth device 100 in Figure 1. In some examples, the duration for sending packet 206 is 80 microseconds. Packet 206 is empty (e.g., it contains neither data nor control information), and the MD bit 230 of packet 206 is set to a second value 226 (e.g., "0"). Packet 206 may correspond to the second packet 120 in Figure 1.

[0057] The packet further includes a response packet 208, which is generated by the Bluetooth device 100 in Figure 1 and sent to the Bluetooth device 101 in Figure 1. In some examples, the duration for sending the response packet 208 is 80 microseconds. The response packet 208 is empty (for example, it contains neither data nor control information), and the MD bit 232 of the response packet 208 is set to a first value 225, even if the response packet 208 is empty. The response packet 208 may correspond to the first intermediate response packet described above with reference to Figure 1.

[0058] The packet further includes a response packet 210, which is generated by the Bluetooth device 101 in Figure 1 and sent to the Bluetooth device 100 in Figure 1. In some examples, the duration for sending the response packet 210 is 80 microseconds. The response packet 210 is empty (e.g., it contains neither data nor control information), and the MD bit 234 of the response packet 210 is set to a second value 226 (e.g., "0"). The response packet 210 may correspond to the second intermediate response packet described above with reference to Figure 1.

[0059] The packet further includes a response packet 212, which is generated by the Bluetooth device 100 in Figure 1 and sent to the Bluetooth device 101 in Figure 1. In some examples, the duration for sending the response packet 212 is 80 microseconds. The response packet 212 includes an LL_ENC_Rsp (encrypted response) in response to the LL_Enc_Req of the control procedure packet 202, and the MD bit 236 of the response packet 212 is set to a first value 225, even if the transmit data queue 115 of the Bluetooth device 100 in Figure 1 is empty. The response packet 212 may correspond to a second response packet 123 in Figure 1.

[0060] The packet further includes packet 214, which is generated by Bluetooth device 101 in Figure 1 and sent to Bluetooth device 100 in Figure 1. In some examples, the duration for sending packet 214 is 80 microseconds. Packet 214 is empty (e.g., it contains neither data nor control information), and the MD bit 238 of packet 214 is set to a second value 226 (e.g., "0").

[0061] The packet further includes packet 216, which is generated by Bluetooth device 100 in Figure 1 and sent to Bluetooth device 101 in Figure 1. In some examples, the duration for sending packet 216 is 80 microseconds. Packet 216 is empty (for example, it contains neither data nor control information), and the MD bit 240 of packet 216 is set to a first value 225, even if packet 216 is empty.

[0062] Therefore, as seen in the packet stream 200 in the example of Figure 2, the Bluetooth device 100 in Figure 1 keeps the Bluetooth connection event 102 open by setting the MD bits 228 and 232 of response packets 204 and 208 to a first value 225, thereby enabling the Bluetooth device 100 in Figure 1 to respond to the control procedure packet 202 in response packet 212 to provide a control information response within the Bluetooth connection event 102, when the connection event would be closed if the MD bit 228 of response packet 204 were set to a second value 226, thus preventing the Bluetooth device 100 from substantially responding to the encryption request in the control procedure packet 202.

[0063] Figure 3 shows an example of a timing diagram 300 of at least several packets transmitted between Bluetooth devices 301 and 302 during a Bluetooth connection event (e.g., a single Bluetooth connection event). The packets in timing diagram 300 include one or more control procedure packets corresponding to control procedures between Bluetooth devices 301 and 302. In some examples, Bluetooth devices 301 and 302 in Figure 3 correspond to Bluetooth devices 101 and 100 in Figure 1, respectively. In addition, the Bluetooth connection event corresponding to Figure 3 (e.g., the Bluetooth connection event during which the packets in Figure 3 are transmitted and / or received between Bluetooth devices 301 and 302) may correspond to Bluetooth connection event 102 in Figure 1.

[0064] In the example shown in Figure 3, Bluetooth device 302 is configured to set the MD bit of each packet in Timing Diagram 300 to a first value (e.g., the first value 119 in Figure 1), with the exception of the last packet in Timing Diagram 300, which is configured to be transmitted by Bluetooth device 302 to Bluetooth device 301 (during the execution of the control procedure), regardless of whether Bluetooth device 302 has data to transmit (e.g., when the packet is generated).

[0065] Timing diagram 300 includes a packet 308 (e.g., a control procedure packet) sent by Bluetooth device 301 to Bluetooth device 302. Packet 308 contains control information (e.g., an encryption request) and may correspond to the control procedure packet 107 in Figure 1. In some examples, when Bluetooth device 301 generates packet 308, the MD bit of packet 308 is set to a second value (e.g., the second value 110 in Figure 1) based on the fact that Bluetooth device 301 has no data to send to Bluetooth device 302.

[0066] Timing diagram 300 includes one or more packet exchanges 310 of packets that are alternately transmitted between Bluetooth device 301 and Bluetooth device 302. Each packet (of one or more packet exchanges 310) transmitted by Bluetooth device 302 has an MD bit set to a first value, regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when it generates the packet (for example, regardless of). In one example, Bluetooth device 302 has no data to send to Bluetooth device 301 during one or more packet exchanges 310. In this example, Bluetooth device 302 sets the MD bit of each packet (of one or more packet exchanges 310) transmitted from Bluetooth device 302 to Bluetooth device 301 (even though Bluetooth device 302 has no data to send to Bluetooth device 301 during one or more packet exchanges 310) to a first value.

[0067] Alternatively or additionally, in some examples, since Bluetooth device 301 has no data to send to Bluetooth device 302 when at least one packet is generated, at least one packet (of one or more packet exchanges 310) sent by Bluetooth device 301 has an MD bit set to a second value.

[0068] In an example where the MD bit of packet 308 and / or one or more MD bits of packets (of one or more packet exchanges 310) transmitted by Bluetooth device 301 are set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from terminating / closing by setting the MD bit of each packet (of one or more packet exchanges 310) transmitted by Bluetooth device 302 to a first value (for example, when a packet is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0069] Timing diagram 300 includes a response packet 312 (e.g., a control procedure packet) sent by Bluetooth device 302 to Bluetooth device 301 in response to the final packet of one or more packet exchanges 310. The response packet 312 includes control information (e.g., an encrypted response) in response to packet 308. In some examples, the response packet 312 corresponds to the second response packet 123 in Figure 1 or the response packet 212 in Figure 2. Bluetooth device 302 sets the MD bit of the response packet 312 to a first value regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when the response packet 312 is generated. For illustrative purposes, in some examples, Bluetooth device 302 has no data to send to Bluetooth device 301 (e.g., when the response packet 312 is generated), and still Bluetooth device 302 sets the MD bit of the response packet 312 to a first value.

[0070] In an example where the MD bit of the final packet of one or more packet exchanges 310 transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of the response packet 312 to a first value (for example, when the packet is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0071] Timing diagram 300 includes one or more packet exchanges 315 of packets that are transmitted as substitutes between Bluetooth device 301 and Bluetooth device 302. Each packet (of one or more packet exchanges 315) transmitted by Bluetooth device 302 has an MD bit set to a first value, regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when it generates the packet. In one example, Bluetooth device 302 has no data to send to Bluetooth device 301 during one or more packet exchanges 315, but Bluetooth device 302 still sets the MD bit of each packet (of one or more packet exchanges 315) transmitted by Bluetooth device 302 to Bluetooth device 301 to the first value.

[0072] Alternatively or additionally, since Bluetooth device 301 has no data to send to Bluetooth device 302 when at least one packet is generated, at least one packet (of one or more packet exchanges 315) sent by Bluetooth device 301 has an MD bit set to a second value.

[0073] In an example where the MD bit of one or more packets (of one or more packet exchanges 315) transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 315) to a first value (for example, when a packet is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0074] Timing diagram 300 includes a packet 316 (e.g., a control procedure packet) sent by Bluetooth device 302 to Bluetooth device 301 in response to the final packet of one or more packet exchanges 315. Packet 316 contains control information. For example, packet 316 may contain LL_START_ENC_REQ (e.g., encryption request start). Bluetooth device 302 sets the MD bit of packet 316 to a first value regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when packet 316 is generated. For illustrative purposes, in some examples, Bluetooth device 302 has no data to send to Bluetooth device 301 (e.g., when packet 316 is generated), and still Bluetooth device 302 sets the MD bit of packet 316 to a first value.

[0075] In an example where the MD bit of the final packet (of one or more packet exchanges 315) transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of packet 316 to a first value (for example, when packet 316 is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0076] Timing diagram 300 includes one or more packet exchanges 318 of packets that are alternately transmitted between Bluetooth device 301 and Bluetooth device 302. Each packet (of one or more packet exchanges 318) transmitted by Bluetooth device 302 has an MD bit set to a first value, regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when Bluetooth device 302 generates the packet. In one example, Bluetooth device 302 has no data to send to Bluetooth device 301 during one or more packet exchanges 318, but Bluetooth device 302 still sets the MD bit of each packet (of one or more packet exchanges 318) transmitted by Bluetooth device 302 to Bluetooth device 301 to the first value.

[0077] Alternatively or additionally, since Bluetooth device 301 has no data to send to Bluetooth device 302 when at least one packet is generated, at least one packet (of one or more packet exchanges 318) sent by Bluetooth device 301 has an MD bit set to a second value.

[0078] In an example where the MD bit of one or more packets (of one or more packet exchanges 318) transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 318) to a first value (for example, when a packet is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0079] Timing diagram 300 includes a packet 320 (e.g., a control procedure packet) sent by Bluetooth device 301 to Bluetooth device 302 in response to the final packet of one or more packet exchanges 318. The packet 320 contains control information. For example, packet 320 may include LL_START_ENC_RSP (e.g., Encryption Response Start). Bluetooth device 302 sets the MD bit of packet 320 to a first value regardless of whether Bluetooth device 3012 has data to send to Bluetooth device 301 when packet 320 is generated. For illustrative purposes, in some examples, Bluetooth device 302 has no data to send to Bluetooth device 301 (e.g., when packet 320 is generated), and still Bluetooth device 302 sets the MD bit of packet 320 to a first value.

[0080] In an example where the MD bit of the final packet (of one or more packet exchanges 318) transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of packet 320 to a first value (for example, when packet 320 is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0081] Timing diagram 300 includes one or more packet exchanges 322 of packets that are transmitted alternately between Bluetooth device 301 and Bluetooth device 302. Each packet (of one or more packet exchanges 322) transmitted by Bluetooth device 302 to Bluetooth device 301 has an MD bit set to a first value, regardless of whether Bluetooth device 302 has data to send to Bluetooth device 301 when it generates the packet. In one example, Bluetooth device 302 has no data to send to Bluetooth device 301 during one or more packet exchanges 322, and still Bluetooth device 302 sets the MD bit of each packet (of one or more packet exchanges 322) transmitted by Bluetooth device 302 to Bluetooth device 301 to the first value.

[0082] Alternatively or additionally, since Bluetooth device 301 has no data to send to Bluetooth device 302 when at least one packet is generated, at least one packet (of one or more packet exchanges 322) sent by Bluetooth device 301 has an MD bit set to a second value.

[0083] In an example where the MD bit of one or more packets (of one or more packet exchanges 322) transmitted by Bluetooth device 301 is set to a second value, Bluetooth device 302 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 322) to a first value (for example, when a packet is generated, even if Bluetooth device 302 has no data to send to Bluetooth device 301).

[0084] Timing diagram 300 includes a packet 324 sent by Bluetooth device 302 to Bluetooth device 301 in response to the final packet of one or more packet exchanges 322. Packet 324 contains control information to complete the 5-way encryption control procedure. For example, packet 324 may include LL_START_ENC_RSP (e.g., Encryption Response Start).

[0085] Since packet 324 is the final packet configured to be sent by Bluetooth device 302 to Bluetooth device 301 during the control procedure (for example, as defined by the relevant protocol), Bluetooth device 302 sets the MD bit of packet 324 to a certain value based on whether Bluetooth device 302 has data to send to Bluetooth device 301 when packet 324 is generated. In one example, Bluetooth device 302 has no data to send to Bluetooth device 301 when packet 324 is generated. In this example, Bluetooth device 302 sets the MD bit of packet 324 to a second value.

[0086] In an example where the MD bit of the final packet (one or more packet exchanges 322) transmitted by the Bluetooth device 301 is set to the second value, and the MD bit of packet 324 is set to the second value, the Bluetooth connection event ends.

[0087] Figure 4 shows an example of a timing diagram 400 of at least several packets transmitted between Bluetooth devices 401 and 402 during a Bluetooth connection event (e.g., a single Bluetooth connection event). The packets in timing diagram 400 include one or more control procedure packets corresponding to control procedures between Bluetooth devices 401 and 402. In some examples, Bluetooth devices 401 and 402 in Figure 4 correspond to Bluetooth devices 101 and 100 in Figure 1, respectively. In addition, the Bluetooth connection event corresponding to Figure 4 (e.g., the Bluetooth connection event during which the packets in Figure 4 are transmitted and / or received between Bluetooth devices 401 and 402) may correspond to Bluetooth connection event 102 in Figure 1.

[0088] In the example shown in Figure 4, when Bluetooth device 402 owes Bluetooth device 401 a control procedure packet (for example, when Bluetooth device 402 is configured to send the next control procedure packet to Bluetooth device 401), Bluetooth device 402 is configured to set the MD bit of each packet in the packets of timing diagram 400 to a first value (for example, the first value 119 in Figure 1), with the exception of the last packet in the packets of timing diagram 400 that Bluetooth device 402 is configured to send to Bluetooth device 401 (during the execution of the control procedure), regardless of whether Bluetooth device 402 has data to send (for example, when the packet is generated). In addition, in the example shown in Figure 4, when Bluetooth device 401 owes Bluetooth device 402 a control procedure packet (for example, when Bluetooth device 401 is configured to send the next control procedure packet to Bluetooth device 402), Bluetooth device 401 is configured to set the MD bit of each packet in the packets of Timing Diagram 400 that Bluetooth device 401 is configured to send to Bluetooth device 402 (during the execution of the control procedure) to a first value, regardless of whether Bluetooth device 401 has data to send (for example, when the packet is generated).

[0089] Timing diagram 400 includes a packet 408 (e.g., a control procedure packet) sent by Bluetooth device 401 to Bluetooth device 402. Packet 408 contains control information (e.g., an encryption request) and may correspond to the control procedure packet 107 in Figure 1. In some examples, when Bluetooth device 401 generates packet 408, the MD bit of packet 408 is set to a second value (e.g., the second value 110 in Figure 1) based on the fact that Bluetooth device 401 has no data to send to Bluetooth device 402.

[0090] Bluetooth devices 401 and 402 are configured to operate according to relevant protocols indicating that the next control procedure packet (of the control procedure) following packet 408 should be sent by Bluetooth device 402. In other words, Bluetooth device 402 owes Bluetooth device 401 the control procedure packet in response to packet 408.

[0091] Timing diagram 400 includes one or more packet exchanges 410 of packets that are alternately transmitted between Bluetooth device 401 and Bluetooth device 402. Because Bluetooth device 402 owes Bluetooth device 401 a control procedure packet in response to packet 408, each packet (of one or more packet exchanges 410) transmitted by Bluetooth device 402 has an MD bit set to a first value, regardless of whether Bluetooth device 402 has data to send to Bluetooth device 401 when it generates the packet (for example, regardless of). In one example, Bluetooth device 402 has no data to send to Bluetooth device 401 during one or more packet exchanges 410. In this example, Bluetooth device 402 sets the MD bit of each packet (of one or more packet exchanges 410) transmitted from Bluetooth device 402 to Bluetooth device 401 (even though Bluetooth device 402 has no data to send to Bluetooth device 401 during one or more packet exchanges 410) to a first value.

[0092] Alternatively or additionally, in some examples, since Bluetooth device 401 has no data to send to Bluetooth device 402 when at least one packet is generated, at least one packet (of one or more packet exchanges 410) sent by Bluetooth device 401 has an MD bit set to a second value.

[0093] In an example where the MD bit of packet 408 and / or one or more MD bits of packets (of one or more packet exchanges 410) transmitted by Bluetooth device 401 are set to a second value, Bluetooth device 402 prevents the Bluetooth connection event from terminating / closing by setting the MD bit of each packet (of one or more packet exchanges 410) transmitted by Bluetooth device 402 to a first value (for example, when a packet is generated, even if Bluetooth device 402 has no data to send to Bluetooth device 401).

[0094] Timing diagram 400 includes a response packet 412 (e.g., a control procedure packet) sent by Bluetooth device 402 to Bluetooth device 401 in response to the final packet of one or more packet exchanges 410. The response packet 412 includes control information (e.g., an encrypted response) in response to packet 408. In some examples, response packet 412 corresponds to the second response packet 123 in Figure 1 or response packet 212 in Figure 2. Because Bluetooth device 402 owes Bluetooth device 401 a control procedure packet in response to packet 408, Bluetooth device 402 sets the MD bit of response packet 412 to a first value regardless of whether Bluetooth device 402 has data to send to Bluetooth device 401 when response packet 412 is generated. For illustrative purposes, in some examples, Bluetooth device 402 has no data to send to Bluetooth device 401 (e.g., when response packet 412 is generated), and still Bluetooth device 402 sets the MD bit of response packet 412 to a first value.

[0095] In an example where the MD bit of the final packet of one or more packet exchanges 410 transmitted by Bluetooth device 401 is set to a second value, Bluetooth device 402 prevents the Bluetooth connection event from ending / closing by setting the MD bit of the response packet 412 to a first value (for example, when the packet is generated, even if Bluetooth device 402 has no data to send to Bluetooth device 401).

[0096] Bluetooth devices 401 and 402 are configured to operate according to relevant protocols indicating that the next control procedure packet (of the control procedure) following the response packet 412 should be sent by Bluetooth device 402. In other words, Bluetooth device 402 is indebted to Bluetooth device 401 for the control procedure packets following the response packet 412.

[0097] Timing diagram 400 includes one or more packet exchanges 415 of packets that are transmitted alternately between Bluetooth device 401 and Bluetooth device 402. Because Bluetooth device 402 owes Bluetooth device 401 a control procedure packet in response to packet 408, each packet (of one or more packet exchanges 415) transmitted by Bluetooth device 402 has an MD bit set to a first value, regardless of whether Bluetooth device 402 has data to send to Bluetooth device 401 when it generates the packet. In one example, Bluetooth device 402 has no data to send to Bluetooth device 401 during one or more packet exchanges 415, and still Bluetooth device 402 sets the MD bit of each packet (of one or more packet exchanges 415) transmitted by Bluetooth device 402 to Bluetooth device 401 to a first value.

[0098] Alternatively or additionally, since Bluetooth device 401 has no data to send to Bluetooth device 402 when at least one packet is generated, at least one packet (of one or more packet exchanges 415) sent by Bluetooth device 401 has an MD bit set to a second value.

[0099] In an example where the MD bit of one or more packets (of one or more packet exchanges 415) transmitted by Bluetooth device 401 is set to a second value, Bluetooth device 402 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 415) to a first value (for example, when a packet is generated, even if Bluetooth device 402 has no data to send to Bluetooth device 401).

[0100] Timing diagram 400 includes a packet 416 (e.g., a control procedure packet) that is sent by Bluetooth device 402 to Bluetooth device 401 in response to the final packet of one or more packet exchanges 415. Packet 416 contains control information. For example, packet 416 may contain LL_START_ENC_REQ (e.g., encryption request start). Because Bluetooth device 402 owes Bluetooth device 401 the control procedure packet when packet 416 is generated, Bluetooth device 402 sets the MD bit of packet 416 to a first value, regardless of whether Bluetooth device 402 has data to send to Bluetooth device 401 when packet 416 is generated. For illustrative purposes, in some examples, Bluetooth device 402 has no data to send to Bluetooth device 401 (e.g., when packet 416 is generated), and still Bluetooth device 402 sets the MD bit of packet 416 to a first value.

[0101] In an example where the MD bit of the final packet (of one or more packet exchanges 415) transmitted by Bluetooth device 401 is set to a second value, Bluetooth device 402 prevents the Bluetooth connection event from ending / closing by setting the MD bit of packet 416 to a first value (for example, when packet 416 is generated, even if Bluetooth device 402 has no data to send to Bluetooth device 401).

[0102] Bluetooth devices 401 and 402 are configured to operate according to relevant protocols indicating that the next control procedure packet (of the control procedure) following packet 416 should be sent by Bluetooth device 401. In other words, Bluetooth device 401 is indebted to Bluetooth device 402 for the control procedure packets following packet 416.

[0103] Timing diagram 400 includes one or more packet exchanges 418 of packets that are alternately transmitted between Bluetooth device 401 and Bluetooth device 402. Because Bluetooth device 401 owes Bluetooth device 402 control procedure packets, each packet (of one or more packet exchanges 418) transmitted by Bluetooth device 401 has an MD bit set to a first value, regardless of whether Bluetooth device 401 has data to send to Bluetooth device 402 when Bluetooth device 401 generates the packet. In one example, Bluetooth device 401 has no data to send to Bluetooth device 402 during one or more packet exchanges 418, and still Bluetooth device 401 sets the MD bit of each packet (of one or more packet exchanges 418) transmitted by Bluetooth device 401 to Bluetooth device 402 to a first value.

[0104] Alternatively or additionally, since Bluetooth device 402 has no data to send to Bluetooth device 401 when at least one packet is generated, at least one packet (of one or more packet exchanges 418) sent by Bluetooth device 402 has an MD bit set to a second value.

[0105] In an example where the MD bit of one or more packets (of one or more packet exchanges 418) transmitted by Bluetooth device 402 is set to a second value, Bluetooth device 401 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 418) to a first value (for example, when a packet is generated, even if Bluetooth device 401 has no data to send to Bluetooth device 402).

[0106] Timing diagram 400 includes a packet 420 (e.g., a control procedure packet) sent by Bluetooth device 401 to Bluetooth device 402 in response to the final packet of one or more packet exchanges 418. The packet 420 contains control information. For example, the packet 420 may include LL_START_ENC_RSP (e.g., Encryption Response Start). Because Bluetooth device 401 owes Bluetooth device 402 the control procedure packet when the packet 420 is generated, Bluetooth device 401 sets the MD bit of the packet 420 to a first value, regardless of whether Bluetooth device 401 has data to send to Bluetooth device 402 when the packet 420 is generated. For illustrative purposes, in some examples, Bluetooth device 401 has no data to send to Bluetooth device 402 (e.g., when the packet 420 is generated), and still Bluetooth device 401 sets the MD bit of the packet 420 to a first value.

[0107] In an example where the MD bit of the final packet (of one or more packet exchanges 418) transmitted by Bluetooth device 402 is set to a second value, Bluetooth device 401 prevents the Bluetooth connection event from ending / closing by setting the MD bit of packet 420 to a first value (for example, when packet 420 is generated, even if Bluetooth device 401 has no data to send to Bluetooth device 402).

[0108] Bluetooth devices 401 and 402 are configured to operate according to relevant protocols indicating that the next control procedure packet (of the control procedure) following packet 420 should be sent by Bluetooth device 402. In other words, Bluetooth device 402 owes Bluetooth device 401 the control procedure packets following packet 420.

[0109] Timing diagram 400 includes one or more packet exchanges 422 of packets that are alternately transmitted between Bluetooth device 401 and Bluetooth device 402. Because Bluetooth device 402 owes Bluetooth device 401 control procedure packets, each packet (of one or more packet exchanges 422) transmitted by Bluetooth device 402 to Bluetooth device 401 has an MD bit set to a first value, regardless of whether Bluetooth device 402 has data to transmit to Bluetooth device 401 when it generates the packet. In one example, Bluetooth device 402 has no data to transmit to Bluetooth device 401 during one or more packet exchanges 422, and still Bluetooth device 402 sets the MD bit of each packet (of one or more packet exchanges 422) transmitted by Bluetooth device 402 to Bluetooth device 401 to a first value.

[0110] Alternatively or additionally, since Bluetooth device 401 has no data to send to Bluetooth device 402 when at least one packet is generated, at least one packet (of one or more packet exchanges 422) sent by Bluetooth device 401 has an MD bit set to a second value.

[0111] In an example where the MD bit of one or more packets (of one or more packet exchanges 422) transmitted by Bluetooth device 401 is set to a second value, Bluetooth device 402 prevents the Bluetooth connection event from ending / closing by setting the MD bit of each packet (of one or more packet exchanges 422) to a first value (for example, when a packet is generated, even if Bluetooth device 402 has no data to send to Bluetooth device 401).

[0112] Timing diagram 400 includes a packet 424 sent by Bluetooth device 402 to Bluetooth device 401 in response to the final packet of one or more packet exchanges 422. Packet 424 contains control information to complete the 5-way encryption control procedure. For example, packet 424 may include LL_START_ENC_RSP (e.g., Encryption Response Start).

[0113] Since packet 424 is the final packet configured to be sent by Bluetooth device 402 to Bluetooth device 401 during the control procedure (for example, as defined by the relevant protocol), Bluetooth device 402 sets the MD bit of packet 424 to a certain value based on whether Bluetooth device 402 has data to send to Bluetooth device 401 when packet 424 is generated. In one example, Bluetooth device 402 has no data to send to Bluetooth device 401 when packet 424 is generated. In this example, Bluetooth device 402 sets the MD bit of packet 424 to a second value.

[0114] In an example where the MD bit of the final packet (one or more packet exchanges 422) transmitted by the Bluetooth device 401 is set to the second value, and the MD bit of packet 424 is set to the second value, the Bluetooth connection event ends.

[0115] Figure 5 shows a flowchart of an example of how it is implemented by the first Bluetooth device. The first Bluetooth device may correspond to the Bluetooth device 100 in Figure 1.

[0116] Method 500 includes, in 502, receiving a control procedure packet from the second Bluetooth device during a BLE connection event between the first Bluetooth device and the second Bluetooth device. The control procedure packet may correspond to the control procedure packet 107 in Figure 1, and the connection event may correspond to the Bluetooth connection event in Figure 1. In some examples, the MD bit of the control procedure packet is set to a second value indicating that the second Bluetooth device has no more data to transmit. For example, the MD bit 109 of the control procedure packet 107 in Figure 1 may be set to the second value 110 in Figure 1.

[0117] Method 500 includes setting the MD bit of the response packet to the control procedure packet to a first value, regardless of whether the first Bluetooth device has more data to send to the second Bluetooth device, in 504. The first value corresponds to keeping the connection event open. For example, the response packet may correspond to response packet 116 in Figure 1, and the Bluetooth device 100 in Figure 1 may set the MD bit 118 in response packet 116 in Figure 1 to the first value 119, as described above with reference to Figure 1. In some examples, the data field of the response packet is empty, as described above with reference to response packet 116 in Figure 1. In some examples, the MD bit of the response packet is set to the first value when the transmit data queue of the first Bluetooth device is empty, as described above with reference to Figure 1.

[0118] Method 500 includes, in 506, sending a response packet to a second Bluetooth device during a connection event. For example, Bluetooth device 100 in Figure 1 may send a response packet 116 to Bluetooth device 101 in Figure 1 during a Bluetooth connection event 102, as described above with reference to Figure 1.

[0119] In some examples, method 500 further includes receiving a second packet from a second Bluetooth device during a connection event, based on the fact that the MD bit of the response packet is set to a first value. For example, the second packet may correspond to the second packet 120 in Figure 1, and the Bluetooth device 100 in Figure 1 may receive the second packet 120 in Figure 1 from the Bluetooth device 101 in Figure 1 during the Bluetooth connection event 102 in Figure 1, as described above with reference to Figure 1.

[0120] In some examples, method 500 further includes generating a second packet to be sent to a second Bluetooth device during the connection event and following the response packet. The second packet includes control information in response to the control procedure packet. For example, the second packet may correspond to the second response packet 123 in Figure 1, which may include control information in response to the control procedure packet 107 in Figure 1, as described above with reference to Figure 1.

[0121] Examples of this disclosure further include computer program products, which, when executed by a processor, cause a Bluetooth device to perform functions, operations, or processes described herein. For example, the processor may correspond to the controller 112 in Figure 1, and the functions or operations may include those described above with reference to the Bluetooth device 100 in Figure 1.

[0122] The term “coupled” is used throughout this specification. This term may encompass connections, communications, or signaling paths that enable a functional relationship consistent with this description. For example, if device A generates a signal to control device B in order to perform a certain action, in the first example, device A is coupled to device B, or in the second example, device A is coupled to device B via intermediary component C, such that device B is controlled by device A via a control signal generated by device A, provided that intermediary component C does not substantially alter the functional relationship between device A and device B.

[0123] A device “configured” to perform a certain task or function may be configured (e.g., programmed and / or hardwired) by the manufacturer at the time of manufacture to perform that function, and / or may be configurable (or reconfigurable) by the user after manufacture to perform that function and / or other additional or alternative functions. Such configuration may be through the device’s firmware and / or software programming, through the device’s hardware components and interconnection structure and / or layout, or a combination thereof.

[0124] Some components may be described herein as belonging to a particular process technology, but these components may be interchangeable with components from other process technologies.

[0125] Modifications are possible in the examples described, and other examples are also possible within the scope of the claims.

Claims

1. It is an electronic device, A transceiver configured to receive control packets during a wireless connection event, A controller coupled to the transceiver, configured to set the more data field of the response packet to the control packet to a first value, regardless of whether the electronic device has more data to transmit when the control procedure is not completed, wherein the first value indicates that the electronic device has more data to transmit. Includes, An electronic device wherein the transceiver is further configured to transmit the response packet during the wireless connection event.

2. The electronic device according to claim 1, An electronic device in which the data field of the response packet is empty.

3. The electronic device according to claim 1, An electronic device in which the MoreData field of the control packet is set to a second value.

4. The electronic device according to claim 1, An electronic device wherein the transceiver is further configured to receive a second packet during the radio connection event based on the fact that the more data field of the response packet is set to the first value.

5. The electronic device according to claim 1, An electronic device wherein the controller is further configured to generate a second packet following the response packet during the wireless connection event, the second packet containing control information in response to the control packet.

6. The electronic device according to claim 1, The system further includes a transmission data queue for storing data relating to the electronic device to be transmitted, An electronic device wherein the controller is further configured to set the more data field of the response packet to the first value, regardless of whether the transmit data queue is empty.

7. The electronic device according to claim 1, An electronic device in which the first value is 1.

8. The electronic device according to claim 1, Receiving a control packet during the aforementioned wireless connection event includes receiving the control packet from a wireless device. The wireless connection event is a wireless connection event of a wireless connection between the electronic device and the wireless device, The controller is further configured to set the more data field to the first value, regardless of whether the electronic device has more data to transmit to the wireless device. An electronic device wherein the transceiver is further configured to transmit the response packet to the wireless device during the wireless connection event.

9. The electronic device according to claim 1, An electronic device wherein the controller is further configured to set the more data field to the first value when the electronic device does not have more data to transmit.

10. The electronic device according to claim 9, An electronic device in which the data field of the response packet is empty.

11. The electronic device according to claim 9, An electronic device in which the MoreData field of the control packet is set to a second value.

12. The electronic device according to claim 1, The first value indicates that the transmission data queue of the electronic device has more data. The controller is further configured to set the more data field to the first value when the transmit data queue of the electronic device is empty.

13. The electronic device according to claim 1, An electronic device in which the response packet is a Bluetooth Low Energy (BLE) packet.

14. It is a method, The first wireless device receives a control packet from the second wireless device during a wireless connection event of the wireless connection between the first wireless device and the second wireless device, When the control procedure is not completed, the first wireless device sets the more data field of the response packet to the control packet to a first value, regardless of whether the first wireless device has more data to transmit to the second wireless device, wherein the first value is set to a first value that indicates the first wireless device has more data to transmit. The first wireless device transmits the response packet to the second wireless device during the wireless connection event, Methods that include...

15. The method according to claim 14, A method in which the data field of the aforementioned response packet is empty.

16. The method according to claim 14, A method wherein the more data field of the control packet is set to a second value indicating that the second wireless device does not have any more data to transmit.

17. The method according to claim 14, A method further comprising the first wireless device receiving a second packet from the second wireless device during the wireless connection event based on the fact that the more data field of the response packet is set to the first value.

18. The method according to claim 14, A method comprising the first wireless device generating a second packet to be transmitted to the second wireless device following the response packet during the wireless connection event, the second packet comprising control information in response to the control packet.

19. The method according to claim 14, A method further comprising setting the more data field of the response packet to the first value when the transmit data queue of the wireless device is empty.