Claims
- 1. A Bluetooth controller receiving Bluetooth data packets according to predetermined receive time slots of a Bluetooth protocol, comprising:
a first data storage; a hardware circuit that stores data from a plurality of Bluetooth data packets received into the storage according to the predetermined receive time slots; and a processor performing tasks related to the receipt of Bluetooth data packets; said circuit handling the storing of data in a timely manner according to the predetermined receive time slots without requiring the processor to perform operations at time critical points in relation to the predetermined receive time slots.
- 2. The controller of claim 1, wherein the circuit stores data in the data storage using an indicator that indicates a location in the storage where the data from the Bluetooth data packets is to be stored.
- 3. The controller of claim 2, wherein said controller also transmits Bluetooth data packets according to predetermined transmission time slots of a Bluetooth protocol, wherein the circuit also retrieves data from a second data storage using at least one pointer of a format in the second data storage for a next Bluetooth data packet to be transmitted.
- 4. The controller of claim 3, said format comprising a next start pointer to indicate a location in the second storage from which data for the next Bluetooth data packet to be transmitted is to be retrieved, and a previous pointer indicating a location in the second storage from which data for a previous Bluetooth data packet transmitted has been retrieved.
- 5. The controller of claim 4, wherein after retrieval of data located between the previous and start pointers for a Bluetooth data packet to be transmitted, the circuit causes the previous start pointer to be set to a value equal to that of the next start pointer and the next start pointer set to a new value for a next Bluetooth data packet to be transmitted.
- 6. The controller of claim 5, wherein the circuit detects a condition where a prior Bluetooth data packet transmission by the controller is unsuccessful, and the circuit causes the data to be retrieved from a location in the second storage indicated by a previous start pointer so that data that has not been successfully transmitted is re-transmitted.
- 7. The controller of claim 6, wherein when the condition is detected, the circuit causes the next starting pointer to be re-set to the value of the previous starting pointer.
- 8. The controller of claim 3, wherein the circuit comprises a composer that constructs a Bluetooth data packet to be transmitted by combining data retrieved from the second storage with information related to packet type, packet data length, acknowledgement of receipt of successful past transmissions or lack thereof and whether the packet has been transmitted before.
- 9. The controller of claim 3, wherein the circuit extracts and stores data from the Bluetooth data packets received into the first storage and retrieves data from the second storage and forms Bluetooth data packets to be transmitted without using any additional storage.
- 10. The controller of claim 2, wherein said indicator comprises a length field value.
- 11. The controller of claim 1, wherein the first and/or second storage forms a portion of a host memory.
- 12. The controller of claim 1, wherein the circuit comprises a hardware decomposer that extracts information from the Bluetooth data packets received related to packet type, packet data length, acknowledgement of receipt of successful past transmissions or lack thereof and whether the packet has been transmitted before.
- 13 The controller of claim 1, wherein the processor is an 8-bit processor operating at a frequency not more than about 8 MHz.
- 14. The controller of claim 1, said first storage being a HCI buffer or L2CAP buffer.
- 15. The controller of claim 1, said first storage having capacity to store data for more than one Bluetooth data packet.
- 16 A Bluetooth controller transmitting Bluetooth data packets according to predetermined transmission time slots of a Bluetooth protocol, comprising:
a data storage; a hardware circuit that sequentially retrieves data from the storage data for a plurality of Bluetooth data packets to be transmitted sequentially according to the predetermined transmission time slots; and a processor performing tasks related to the transmission of Bluetooth data packets; said circuit handling the sequential retrieval of data in a timely manner according to the predetermined transmission time slots without requiring the processor to perform operations at time critical points in relation to the predetermined transmission time slots.
- 17. The controller of claim 16, wherein the data is retrieved in the data storage using a format that includes at least one pointer that points to a location in the storage where the data for a Bluetooth data packet to be transmitted is to be retrieved.
- 18. The controller of claim 17, said format comprising a next start pointer to indicate a location in the storage from which data for a next Bluetooth data packet to be transmitted is to be retrieved, and a previous pointer indicating a location in the storage from which data for a previous Bluetooth data packet has been retrieved.
- 19. The controller of claim 18, wherein after retrieval of data between the previous and start pointers for a Bluetooth data packet, the circuit causes the previous start pointer to be set to a value equal to that of the next start pointer and the next start pointer to be set to a new value for a next Bluetooth data packet to be transmitted.
- 20. The controller of claim 16, wherein the circuit comprises a composer that constructs an Bluetooth data packet by combining data retrieved from the storage with information related to packet type, packet data length, acknowledgement of receipt of successful past transmissions or lack thereof and whether the packet has been transmitted before.
- 21. The controller of claim 16, wherein the circuit retrieves data from the storage and forms Bluetooth data packets to be transmitted without using any additional storage.
- 22. The controller of claim 16, wherein the processor is an 8-bit processor operating at a frequency not more than about 8 MHz.
- 23. The controller of claim 16, said storage being a HCI ACL buffer or L2CAP buffer.
- 24. The controller of claim 16, said storage having capacity to store data for more than one Bluetooth data packet.
- 25. The controller of claim 16, wherein the storage forms a portion of a host memory.
- 26. A bluetooth controller transmitting FHS packet(s) according to predetermined transmission time slots of a Bluetooth protocol, comprising:
a native clock; a packet composer that forms a FHS packet with clock information from the native clock, said composer being a hardware circuit; and a processor; said composer forming said formed FHS packet with said clock information in a timely manner according to the predetermined transmission time slots without requiring the processor to perform operations at time critical points in relation to the predetermined transmission time slots.
- 27. The controller of claim 26, wherein said composer comprises a multiplexer receiving information concerning address information of a Bluetooth device to which the FHS packet is to be sent, said composer forming the FHS packet so that it includes such information.
- 28. The controller of claim 27, wherein said composer further comprises a state machine controlling said multiplexer to form said FHS packet.
- 29. The controller of claim 26 wherein said composer comprises a multiplexer receiving information concerning information concerning whether such FHS packet has been sent before, said composer forming the FHS packet so that it includes such information.
- 30. The controller of claim 26, wherein said composer comprises a multiplexer receiving information concerning information concerning whether a FHS packet has been correctly received or not by the controller, said composer forming the FHS packet so that it includes such information.
- 31. The controller of claim 26, wherein said composer inserts into said FHS packet a time value from the native clock when forming said FHS packet substantially within a transmission time slot that contains such time value without requiring the processor to perform operation(s) at time critical point(s) in relation to such transmission time slot.
- 32. A bluetooth controller receiving FHS packet(s) according to predetermined receive time slots of a Bluetooth protocol, comprising:
a native clock; a packet decomposer that extracts from a FHS packet received from another Bluetooth device clock information from such device, and that derives a clock offset between a clock of such device and the native clock, said decomposer being a hardware circuit; and a processor; said decomposer extracting clock information from said received FHS packet and deriving said clock offset in a timely manner according to the predetermined receive time slots without requiring the processor to perform operations at time critical points in relation to the receive time slots.
- 33. The controller of claim 32, wherein said decomposer comprises a plurality of latches receiving information concerning packet type information, information concerning whether such received FHS packet has been sent before and/or whether a FHS packet has been correctly received or not by the controller, address information of a Bluetooth device from which the FHS packet is received, said decomposer comprising a loading signal generator circuit generating loading signals causing the packet type, address and clock information to be stored into predetermined latches.
- 34. The controller of claim 33, wherein said generator circuit comprises a state machine.
- 35. The controller of claim 32, wherein said decomposer extracts a time value from the received FHS packet and calculates a clock offset between such value and a value of the native clock substantially within a receive time slot that contains such value of the native clock without requiring the processor to perform operation(s) at time critical point(s) in relation to the receive time slot.
- 36. A Bluetooth controller receiving Bluetooth ACL data packets according to predetermined receive time slots of a Bluetooth protocol, comprising:
a plurality of buffers for storing data from the received Bluetooth ACL data packets; and a hardware circuit that stores data from the Bluetooth ACL data packets received into one of the buffers according to the predetermined receive time slots; and wherein at least one of said buffers is assigned to a pool for use exclusively by the circuit for time period(s), each of said buffers in the pool containing information concerning an expiration time marking an end point of a time period during which the circuit is granted permission to use such buffer exclusively.
- 37. The controller of claim 36, wherein the circuit causes one of said plurality of buffers that it is granted exclusive use to be released from the pool when such buffer is full.
- 38. The controller of claim 36, wherein the circuit causes one of said plurality of buffers that it is granted exclusive use to be released from the pool when the controller receives a L2CAP packet.
- 39. The controller of claim 36, further comprising a native clock, and a device that computes said expiration time from clock information from the native clock and a predetermined expiration time out period.
- 40. The controller of claim 39, wherein said circuit obtains exclusive use of a buffer in the pool, and said device causes said expiration time to be stored in such buffer.
- 41. The controller of claim 36, further comprising a device that scans the expiration time of each buffer in the pool and causes each of the buffers in the pool whose expiration time has been reached to be released from the pool.
- 42. The controller of claim 41, further comprising a watch dog timer that causes said device to scan the buffer(s) in the pool periodically.
- 43. A Bluetooth controller controlling transfer of Bluetooth ACL data packets according to predetermined time slots of a Bluetooth protocol between it and one or more Bluetooth devices, comprising:
a plurality of buffers for storing data related to the transfer of Bluetooth ACL data packets; a hardware circuit that accesses the buffers for the transfer of Bluetooth ACL data packets according to the predetermined time slots; a processor performing tasks related to the transfer of Bluetooth ACL data packets; and an arbitration device that enables the processor or the circuit, but not both simultaneously, to have sole control of at least one of said plurality of buffers.
- 44. The controller of claim 43, wherein the controller transfers Bluetooth ACL data packets between it and a plurality of Bluetooth devices, wherein said plurality of buffers are controlled by the processor, the circuit and the device so that any one of said plurality of buffers is usable for supporting transfer of Bluetooth ACL data packets between said controller and said plurality of Bluetooth devices.
- 45. The controller of claim 44, wherein up to two buffers are controlled by the circuit to support transfer of Bluetooth ACL data packets between said controller and one of said plurality of Bluetooth devices.
- 46. The controller of claim 45, wherein the device comprises two digital bits of a register for arbitrating between the processor and the circuit for control of each of the up to two buffers in supporting transfer of Bluetooth ACL data packets between said controller and one of said plurality of Bluetooth devices.
- 47. The controller of claim 46, wherein when a first of the two bits defining a done bit is of a first value, the processor has sole control of a corresponding buffer and is permitted to assign the corresponding buffer to be under sole control of the circuit, and when said done bit is of a second value, the circuit has sole control of a corresponding buffer.
- 48. The controller of claim 47, wherein when a first of the two bits defining a done bit is of a first value, the processor is permitted to assign the corresponding buffer to be under sole control of the circuit for supporting transfer of Bluetooth ACL data packets between said controller and one of said plurality of Bluetooth devices.
- 49. The controller of claim 47, wherein the processor checks value of a done bit corresponding to each of a first and a second buffer used in supporting transfer of Bluetooth ACL data packets between said controller and one of said plurality of Bluetooth devices before assigning said two buffers for use by the circuit.
- 50. The controller of claim 49, wherein when the done bits of two corresponding buffers are both of the first value, the processor checks the second bits of the device corresponding to the two buffers to determine which of the corresponding buffers is to be assigned for use by the circuit.
- 51. The controller of claim 50, wherein when the second bits are of the same value, the processor assigns the first of the two buffers for use by the circuit, and when the second bits are of different values, the processor assigns the second of the two buffers for use by the circuit.
- 52. The controller of claim 49, wherein when only one of the done bits of two corresponding buffers is of the second value, the processor assigns the buffer corresponding to the done bit of the second value for use by the circuit.
- 53. The controller of claim 47, wherein the circuit changes the value of said done bit corresponding to a buffer assigned to it by the processor from the second to the first value when the circuit releases such buffer back to processor control.
- 54. The controller of claim 53, wherein the circuit changes the value of said second bit corresponding to a buffer assigned to it by the processor from the second to the first value when the circuit releases such buffer back to processor control.
- 55. The controller of claim 47, wherein the processor causes the done bits of two corresponding buffers to be set to the first value, and the second bits of two corresponding buffers to be set to equal values upon start of transmission of Bluetooth ACL data packets to at least one Bluetooth device.
- 56. The controller of claim 47, wherein the processor causes the done bits of two corresponding buffers to be set to the second value, and the second bits of two corresponding buffers to be set to equal values upon start of receipt of Bluetooth ACL data packets from at least one Bluetooth device.
- 57. A Bluetooth controller transferring Bluetooth data packets according to predetermined time slots of a Bluetooth protocol between the controller and up to seven Bluetooth devices, comprising:
one or more first indicators for each of the up to seven Bluetooth devices, indicating whether there is data that is to be transferred between the controller and such Bluetooth device; and a hardware circuit that checks, during each of the predetermined time slots defining a current time slot, the first indicator(s) to determine whether there is data that is to be transferred between the controller and any of the up to seven Bluetooth devices, wherein during a time slot subsequent to the current time slot, the circuit causes data to be transferred between the controller and one of the up to seven Bluetooth devices that is determined by the circuit that there is data transfer during the current time slot between the controller and such Bluetooth device.
- 58. The controller of claim 57, further comprising a processor performing tasks related to the transfer of Bluetooth data packets, wherein said circuit causes data to be transferred between the controller and one of the up to seven Bluetooth devices that is determined by the circuit for which there is data to be transferred during the current time slot between the controller and such Bluetooth device, without requiring the processor to perform operations at time critical points in relation to the current time slot or the time slot subsequent thereto.
- 59. The controller of claim 57, further comprising a memory storing an address of one of the up to seven Bluetooth devices that is determined by the circuit that there is data transfer during the current time slot between the controller and such Bluetooth device, wherein the circuit causes to be stored in the memory the address of such one Bluetooth device.
- 60. The controller of claim 59, wherein when an address of a Bluetooth device is stored in the memory, the circuit causes data to be transferred between the controller and the Bluetooth device during a subsequent time slot.
- 61. The controller of claim 60, wherein when the memory has no valid address of any Bluetooth device therein and the first indicator(s) indicate(s) that there is data to be transferred between the controller and a plurality of Bluetooth devices, the circuit selects one of the plurality of Bluetooth devices and causes data to be transferred between the controller and the selected Bluetooth device.
- 62. The controller of claim 61, wherein the circuit selects one of the plurality of Bluetooth devices according to a preset order.
- 63. The controller of claim 61, wherein the circuit causes an address of the selected Bluetooth device to be written into the memory.
- 64. The controller of claim 57, wherein when the first indicator(s) indicate(s) that there is data to be transferred between the controller and a plurality of Bluetooth devices, the circuit selects one of the plurality of Bluetooth devices and causes data to be transferred between the controller and the selected Bluetooth device.
- 65. The controller of claim 64, wherein the circuit selects one of the plurality of Bluetooth devices according to a preset order.
- 66. The controller of claim 57, wherein the circuit scans the first indicator(s) indicate(s) to determine whether there is data to be transferred between the controller and a plurality of corresponding Bluetooth devices.
- 67. The controller of claim 57, wherein when the circuit determines that data transfer between the controller and one of the up to seven Bluetooth devices has been completed, it causes a corresponding one of the first indicator(s) to be altered to so indicate.
- 68. The controller of claim 57, wherein when the first indicator(s) indicate that there is data to be transferred between the controller and more than one of the up to seven Bluetooth devices, the circuit selects at random one of such more than one Bluetooth devices for transfer of data between such device and the controller.
- 69. A method for controlling the storage of data in Bluetooth data packets received according to predetermined receive time slots of a Bluetooth protocol, comprising:
providing a first data storage; providing a hardware circuit that stores data from a plurality of Bluetooth data packets received into the storage according to the predetermined receive time slots; and using a processor to perform tasks related to the receipt of Bluetooth data packets; causing said circuit to handle the storing of data in a timely manner according to the predetermined receive time slots without requiring the processor to perform operations at time critical points in relation to the predetermined receive time slots.
- 70. A method for controlling the retrieval of data for Bluetooth data packets to be transmitted according to predetermined transmission time slots of a Bluetooth protocol, comprising:
providing a data storage; providing a hardware circuit that sequentially retrieves data from the storage data for a plurality of Bluetooth data packets to be transmitted sequentially according to the predetermined transmission time slots; and causing a processor to perform tasks related to the transmission of Bluetooth data packets; causing said circuit to sequentially retrieve data in a timely manner according to the predetermined transmission time slots without requiring the processor to perform operations at time critical points in relation to the predetermined transmission time slots.
- 71. A method for controlling the formation of FHS packet(s) according to predetermined transmission time slots of a Bluetooth protocol, comprising:
providing a native clock; and forming a FHS packet with clock information from the native clock using a hardware circuit; and wherein said FHS packet with said clock information is formed in a timely manner according to the predetermined transmission time slots without requiring any processor to perform operations at time critical points in relation to the predetermined transmission time slots.
- 72. A method for obtaining clock offset information from FHS packet(s) received from another Bluetooth device according to predetermined receive time slots of a Bluetooth protocol, comprising:
providing a native clock; and extracting clock information from a received FHS packet and deriving said clock offset in a timely manner according to the predetermined receive time slots without requiring any processor to perform operations at time critical points in relation to the receive time slots.
- 73. A method for controlling the expiration of a time period during which a buffer is exclusively controlled to support receipt of Bluetooth ACL data packets from a Bluetooth device according to predetermined receive time slots of a Bluetooth protocol, comprising:
providing a plurality of buffers for storing data from the received Bluetooth ACL data packets; using a hardware circuit to store data from the Bluetooth ACL data packets received into one of the buffers according to the predetermined receive time slots; and assigning at least one of said buffers to a pool for use exclusively by the circuit for time period(s), and identifying each of said buffers in the pool with an expiration time marking an end point of a time period during which the circuit is granted permission to use such buffer exclusively.
- 74. A method for controlling transfer of Bluetooth ACL data packets according to predetermined time slots of a Bluetooth protocol between it and one or more Bluetooth devices, comprising:
providing a plurality of buffers for storing data related to the transfer of Bluetooth ACL data packets; using a hardware circuit to access the buffers for the transfer of Bluetooth ACL data packets according to the predetermined time slots; providing a processor performing tasks related to the transfer of Bluetooth ACL data packets; and arbitrating between the processor and the circuit so that the processor or the circuit, but not both simultaneously, has sole control of at least one of said plurality of buffers.
- 75. A method for transferring Bluetooth data packets according to predetermined time slots of a Bluetooth protocol between the controller and up to seven Bluetooth devices, comprising:
providing one or more first indicators for each of the up to seven Bluetooth devices, indicating whether there is data that is to be transferred between the controller and such Bluetooth device; and checking, during each of the predetermined time slots defining a current time slot, the first indicator(s) to determine whether there is data that is to be transferred between the controller and any of the up to seven Bluetooth devices, wherein during a time slot subsequent to the current time slot; and causing data to be transferred between the controller and one of the up to seven Bluetooth devices that is determined to have data transfer during the current time slot between the controller and such Bluetooth device.
- 76. An Bluetooth device transferring Bluetooth data packets according to predetermined time slots of a Bluetooth protocol, comprising:
at least one buffer storing HCI level ACL/SCO or L2CAP data packets; and a hardware circuit that stores data from a plurality of Bluetooth data packets received into, or retrieves data for a plurality of Bluetooth data packets to be transmitted from, the at least one buffer according to the predetermined time slots; and a processor performing tasks related to the transfer of Bluetooth data packets; said circuit handling the storing or retrieval of data in a timely manner according to the predetermined time slots without requiring the processor to perform operations at time critical points in relation to the predetermined time slots.
- 77. The device of claim 76, wherein the circuit segments and retrieves data from the at least one buffer and converts segments of data retrieved from the at least one buffer from HCI level ACL/SCO or L2CAP data packet format to Bluetooth data packet format.
- 78. The device of claim 77, wherein the circuit retrieves data from the at least one buffer and assembles data from a plurality of Bluetooth data packets into a HCI level ACL/SCO or L2CAP data packet, or segments a HCI level ACL/SCO or L2CAP data packet and stores the segmented data into the at least one buffer.
- 79. The device of claim 78, wherein the circuit stores or retrieves data without employing any other storage.
- 80. An Bluetooth device, transferring Bluetooth data packets according to predetermined time slots of a Bluetooth protocol, comprising:
a HCI; at least one buffer storing HCI level ACL/SCO or L2CAP data packets; and a hardware circuit that stores data from a plurality of Bluetooth data packets received into, or retrieves data for a plurality of Bluetooth data packets to be transmitted from, the at least one buffer according to the predetermined time slots; a processor performing tasks related to the transfer of Bluetooth data packets; said circuit handling the storing or retrieval of data in a timely manner according to the predetermined time slots without requiring the processor to perform operations at time critical points in relation to the predetermined time slots; and a memory controller controlling access to the buffer by the generator and the HCI.
- 81. The device of claim 80, said device further comprising a host driver, said controller controlling access to the buffer by the circuit and the host driver.
- 82. An Bluetooth device, transferring Bluetooth data packets according to predetermined time slots of a Bluetooth protocol, comprising:
a host driver; at least one buffer storing HCI level ACL/SCO or L2CAP data packets; a hardware circuit that stores data from a plurality of Bluetooth data packets received into, or retrieves data for a plurality of Bluetooth data packets to be transmitted from, the at least one buffer according to the predetermined time slots; a processor performing tasks related to the transfer of Bluetooth data packets; said circuit handling the storing or retrieval of data in a timely manner according to the predetermined time slots without requiring the processor to perform operations at time critical points in relation to the predetermined time slots; and a memory controller controlling access to the buffer by the generator and the HCI.
CROSS REFERENCE TO RELATED APPLICATION
[0001] This application is a continuation-in-part application of U.S. patent application Ser. No. 09/709,995, filed Nov. 8, 2000.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09709995 |
Nov 2000 |
US |
Child |
10052877 |
Oct 2001 |
US |