METHODS AND SYSTEMS FOR TRANSMITTING DATA OVER A WIRELESS NETWORK
20230262008 · 2023-08-17
Inventors
Cpc classification
H04W4/80
ELECTRICITY
A63B71/0616
HUMAN NECESSITIES
H04W4/06
ELECTRICITY
A63B2225/50
HUMAN NECESSITIES
H04L49/9089
ELECTRICITY
A63B2225/20
HUMAN NECESSITIES
International classification
Abstract
An aspect of the invention provides a method of transmitting data over a wireless network. The method includes maintaining a plurality of data packets within a first buffer and encoding at least some of the data packets within the first buffer inside a first broadcast packet. A broadcasting device transmits the first broadcast packet over the wireless network. The method further includes maintaining a plurality of data packets within a second buffer and encoding at least some of the data packets within the second buffer inside a second broadcast packet. The broadcasting device transmits the second broadcast packet over the wireless network. The method further includes, on detecting overflow of the first buffer, removing a data packet from the first buffer and adding the removed data packet to the second buffer.
Claims
1. A method of transmitting data over a wireless network comprising: maintaining a plurality of data packets within a first buffer; encoding at least some of the data packets within the first buffer inside a first broadcast packet; a broadcasting device transmitting the first broadcast packet over the wireless network; maintaining a plurality of data packets within a second buffer; encoding at least some of the data packets within the second buffer inside a second broadcast packet; the broadcasting device transmitting the second broadcast packet over the wireless network; and on detecting overflow of the first buffer, removing a data packet from the first buffer and adding the removed data packet to the second buffer.
2. The method of claim 1, wherein the broadcasting device comprises a Bluetooth beacon.
3. The method of claim 2, wherein the broadcasting device comprises a Bluetooth Low Energy (BLE) beacon.
4. The method of claim 2, wherein the wireless network comprises a Bluetooth network.
5. The method of claim 1, further comprising: encoding, within a data packet, a bounce event detected on a trampoline by a sensor; and adding the data packet to the first buffer.
6. The method of claim 5 wherein the bounce event comprises an impact bounce event or a depart bounce event.
7. The method of claim 1, further comprising maintaining the plurality of data packets within the first buffer as a First In First Out (FIFO) queue.
8. The method of claim 1, further comprising: associating the data packets in the first buffer with respective sequence numbers; and on detecting overflow of the first buffer, selecting for removal a data packet based at least partly on the sequence number associated to the data packet.
9. The method of claim 8 wherein selecting for removal the data packet comprises selecting for removal a data packet having the lowest sequence number when compared with other data packets maintained within the first buffer.
10. The method of claim 1, further comprising encoding each of the data packets within the first buffer inside the first broadcast packet.
11. The method of claim 1, further comprising encoding each of the data packets within the second buffer inside the second broadcast packet.
12. The method of claim 1, further comprising the broadcasting device transmitting the first broadcast packet over the wireless network to a computing device.
13. A data transmission system comprising: a first buffer having stored therein a plurality of data packets; a second buffer having stored therein a plurality of data packets; a buffer manager configured to, on detecting overflow of the first buffer, remove a data packet from the first buffer and add the removed data packet to the second buffer; and a broadcasting device configured to: transmit at least some of the data packets within the first buffer as a first broadcast packet over the wireless network, and transmit at least some of the data packets within the second buffer as a second broadcast packet over the wireless network.
14-16. (canceled)
17. The system of claim 13 wherein the buffer manager is configured to maintain the plurality of data packets within the first buffer as a First In First Out (FIFO) queue.
18. The system of claim 13, wherein: the data packets in the first buffer are associated with respective sequence numbers; and on detecting overflow of the first buffer, the buffer manager is configured to select for removal a data packet based at least partly on the sequence number associated to the data packet.
19. The system of claim 18, wherein the buffer manager is configured to select for removal the data packet by selecting for removal a data packet having the lowest sequence number when compared with other data packets maintained within the first buffer.
20. The system of claim 13, wherein the first broadcast packet includes each of the data packets within the first buffer.
21. The system of claim 13, wherein the second broadcast packet includes each of the data packets within the second buffer.
22. A computer-readable medium having stored thereon computer-executable instructions that, when executed by at least one processor, cause the at least one processor to perform a method of transmitting data over a wireless network, the method comprising: maintaining a plurality of data packets within a first buffer; encoding at least some of the data packets within the first buffer inside a first broadcast packet; transmitting the first broadcast packet over the wireless network; maintaining a plurality of data packets within a second buffer; encoding at least some of the data packets within the second buffer inside a second broadcast packet; transmitting the second broadcast packet over the wireless network; and on detecting overflow of the first buffer, removing a data packet from the first buffer and adding the removed data packet to the second buffer.
23. (canceled)
24. The computer-readable medium of claim 22, the computer-executable instructions further causing the at least one processor to: detect a bounce event on a trampoline; encode the bounce event within a data packet; and add the data packet to the first buffer.
25-30. (canceled)
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0040] Preferred forms of the methods and systems for transmitting data over a wireless network will now be described by way of example only with reference to the accompanying figures in which:
[0041]
[0042]
[0043]
[0044]
[0045]
DETAILED DESCRIPTION
[0046]
[0047] An athlete 114 impacting the trampoline mat causes an impact event. The sensor 112 detects the impact event. The sensor 112 checks an internal clock associated to the sensor 112. The sensor 112 then generates an impact event timestamp based on its internal clock.
[0048] Similarly, the athlete departing the trampoline mat causes a depart event. The sensor 112 detects the depart event and checks its internal clock to generate a depart event timestamp.
[0049] The impact event timestamps and depart event timestamps are transmitted to a broadcasting device such as a beacon transmitter 116. In an embodiment, beacon transmitter 116 comprises a Bluetooth Low Energy (BLE) beacon.
[0050] Beacon 116 encodes the impact event timestamps and depart event timestamps within Bluetooth advertisement packets to be broadcast over a wireless network 120 to other devices and components attached to the wireless network 120. In an embodiment, wireless network 120 comprises a Bluetooth network.
[0051] A computing device 140 is connected to the wireless network 120. The computing device 140 receives the impact event timestamps and depart event timestamps from the sensor 112. Examples of processors include mobile phones, tablets, laptops and desktop computers.
[0052] In an embodiment the computing device 140 calculates time-of-flight for athlete 114 based at least partly on differences between impact event timestamps and depart event timestamps. For example, the time-of-flight for athlete 114 can be calculated from the respective differences between consecutive depart event timestamps and impact event timestamps received from sensor 112.
[0053] In an embodiment the beacon transmitter 116 (see
[0054] Beacon transmitter 116 is a one-way transmitter to a receiving device. In practice there will be multiple receiving devices connected to the wireless network 120. Computing device is one such receiving device, or is connected to a receiving device.
[0055] Beacon transmitter 116 broadcasts a globally unique identifier which is received by computing device 140. Software or an app on computing device 140 uses the globally unique identifier to permit the computing device 140 to locate itself within some proximity of beacon transmitter 116.
[0056]
[0057] Data packet 200 includes a sequence number 202. In an embodiment, sequence number increments for each data packet. Computing device 140 is able to identify a missing data packet by identifying an interruption in consecutive sequence numbers associated to received data packets.
[0058] Data packet 200 may include a packet type 204. In an embodiment packet type 204 comprises a first value signalling a variable length packet type or a second value signalling a fixed length packet type.
[0059] If data packet 200 is a variable length packet type, it includes a length 206 which indicates a number of bytes of data that follow. It also includes data 208 encoding a bounce event. If data packet 200 is a fixed length packet type, it will not include a length 206 and will instead include data 208 concatenated to sequence number 202 and packet type 204.
[0060] In an embodiment, packet type 204 is an identifier that describes an event or message that is being sent. Examples of packet types include impact bounce event, depart bounce event, battery level and sensor name. Sensor 112 and computing device 140 maintain a common list or lookup table specifying a relationship between a packet type value and a packet type. For example, a first packet type value may correspond to an impact bounce event and a second packet type value may correspond to a depart bounce event.
[0061] Data packets that represent impact bounce events, depart bounce events, or a battery level are typically fixed length. Therefore, a packet type value that corresponds to an impact bounce event, a depart bounce event, or a battery level also specifies that the data packet is a fixed length packet.
[0062] Data packets that represent a sensor name are typically variable length. Therefore, a packet type that corresponds to a sensor name also specifies that the data packet is a variable length packet.
[0063]
[0064] Beacon transmitter 116 (see
[0065] Where an advertisement packet has a maximum size of 32 bytes, there will be approximately 23 bytes available for encoding bounce data. In an embodiment, impact and depart bounce events require 4 bytes of data. Data packets such as data packet 200 therefore require 4 bytes of data.
[0066] A maximum of 5 bounce data events may therefore be simultaneously stored in a single advertisement packet. First buffer 302 and second buffer 304 are shown as each comprising up to five data packets.
[0067] In an embodiment the data packets are maintained as a First In First Out (FIFO) queue. Data packets are added to first buffer 302 as indicated by arrow 310. Where there are already five data packets in first buffer 302, it would not be possible to add a new data packet without overflowing first buffer 302. The oldest data packet is therefore dropped from the queue as indicated by arrow 312.
[0068] In an embodiment, each of the data packets is assigned a sequence number such as sequence number 202 (see
[0069] A first advertisement packet continually transmitted from beacon transmitter 116 contains the data packets maintained in first buffer 302. As data packets are added to, and removed from, first buffer 302, the contents of first advertisement packet transmitted from beacon transmitter 116 changes.
[0070] Shown in
[0071] In an embodiment, buffer manager 320 is implemented as a plurality of computer-executable instructions executed by at least one processor. Buffer manager 320 is configured to detect overflows in first buffer 302 and to remove data packets from first buffer 302 on detecting an overflow. Buffer manager 320 is further configured to add, to second buffer 304, data packets removed from first buffer 302.
[0072] In an embodiment, beacon transmitter 116 is configured to transmit multiple simultaneous advertisements over wireless network 120. In an embodiment, a second advertisement packet continually transmitted from beacon transmitter 116 contains the data packets maintained in second buffer 304. As data packets are added to, and removed from, second buffer 304, the contents of second advertisement packet transmitted from beacon transmitter 116 changes.
[0073] In an embodiment, an additional beacon transmitter, or a plurality of additional beacon transmitters, are each connected to wireless network 120 (see
[0074] Providing second buffer 304 in addition to first buffer 302 provides an additional 23 bytes of data within which to store bounce events. Multiple buffers can be used as a chain of FIFO queues for data packets to be pushed into once they drop out of the previous advertisement.
[0075] As described above, impact and depart bounce events each consume 4 bytes of data. A maximum of 5 bounce events can be simultaneously stored in a single advertisement. For average sized bounces this works out to be around 3 seconds of continuous jump activity. A bounce event is broadcast for around 3 seconds after the event has occurred before it is dropped from the advertisement.
[0076] The maximum advertisement rate permitted by the BLE protocol is 10 hz, giving approximately 30 opportunities for the computing device 140 to receive a bounce event. Adding a second buffer and second advertisement provides space for 10 bounce events which corresponds to around 7 seconds of bounce visibility. As each advertisement is still able to be broadcast at a maximum of 10 Hz there are twice as many opportunities to observe each bounce event.
[0077]
[0078] A clock management module 404 includes for example high frequency crystal oscillator, a low frequency crystal oscillator, low frequency RC oscillator, high frequency RC oscillator, auxiliary high frequency RC oscillator and/or ultra low frequency RC oscillator.
[0079] An energy management module 406 includes a voltage regulator, DC-DC converter, brown-out detector, voltage monitor and/or power-on reset.
[0080] In an embodiment the sensor 400 further includes radio transceiver 408, serial interfaces 410 and/or I/O ports 412. Timers and triggers 414 include timer/counter, low energy timer, pulse counter, protocol timer, watchdog timer, real time counter and calculator and/or cryotimer.
[0081] An analog I/F 416 includes ADC, Analog comparator and/or IDAC. Other modules 418 include a crypto module and/or CRC module.
[0082] At least some of the modules are connected to other modules by 32-bit bus 420 and/or Peripheral Reflex System (PRS) 422.
[0083]
[0084] Example computing devices include, but are not limited to, personal computers, server computers, hand-held or laptop devices, mobile devices, multiprocessor systems, consumer electronics, mini computers, mainframe computers, and distributed computing environments that include any of the above systems or devices. Examples of mobile devices include mobile phones, smartphones, tablets, and Personal Digital Assistants (PDAs).
[0085] Although not required, embodiments are described in the general context of ‘computer readable instructions’ being executed by one or more computing devices. In an embodiment, computer readable instructions are distributed via tangible computer readable media.
[0086] In an embodiment, computer readable instructions are implemented as program modules. Examples of program modules include functions, objects, Application Programming Interfaces (APIs), and data structures that perform particular tasks or implement particular abstract data types. Typically, the functionality of the computer readable instructions is combined or distributed as desired in various environments.
[0087] Shown in
[0088] A server 520 is shown by a dashed line notionally grouping processing unit 510 and memory 515 together.
[0089] In an embodiment, computing device 505 includes additional features and/or functionality. One example is removable and/or non-removable additional storage including, but not limited to, magnetic storage and optical storage. Such additional storage is illustrated in
[0090] In an embodiment, computer readable instructions to implement one or more components provided herein are maintained in storage 525.
[0091] In an embodiment, storage 525 stores other computer readable instructions to implement an operating system and/or an application program. Computer readable instructions are loaded into memory 515 for execution by processing unit 510, for example.
[0092] Memory 515 and storage 525 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 505. Any such computer storage media may be part of device 505.
[0093] In an embodiment, computing device 505 includes at least one communication connection 540 that allows device 505 to communicate with other devices. The at least one communication connection 540 includes one or more of a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device 505 to other computing devices.
[0094] In an embodiment the at least one communication connection 540 includes Bluetooth L.E. components. The communication connection 540 is configured to receive bounce event timings from the sensor 112 and/or sensor 132.
[0095] In an embodiment, communication connection(s) 540 facilitate a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication connection(s) 540 transmit and/or receive communication media.
[0096] Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” includes a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
[0097] In an embodiment, device 505 includes at least one input device 545 such as a physical keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Device 505 also includes at least one output device 550 such as one or more displays, speakers, printers, and/or any other output device.
[0098] Input device(s) 545 and output device(s) 550 are connected to device 505 via a wired connection, wireless connection, or any combination thereof. In an embodiment, an input device or an output device from another computing device is/are used as input device(s) 545 or output device(s) 550 for computing device 505.
[0099] In an embodiment, components of computing device 505 are connected by various interconnects, such as a bus. Such interconnects include one or more of a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), firewire (IEEE 13104), and an optical bus structure. In an embodiment, components of computing device 505 are interconnected by a network. For example, memory 515 in an embodiment comprises multiple physical memory units located in different physical locations interconnected by a network.
[0100] It will be appreciated that storage devices used to store computer readable instructions may be distributed across a network. For example, in an embodiment, a computing device 555 accessible via a network 560 stores computer readable instructions to implement one or more embodiments provided herein.
[0101] Computing device 505 accesses computing device 555 in an embodiment and downloads a part or all of the computer readable instructions for execution. Alternatively, computing device 505 downloads portions of the computer readable instructions, as needed. In an embodiment, some instructions are executed at computing device 505 and some at computing device 555.
[0102] In an embodiment, a client application 585 is provided as a thin client application configured to run within a web browser. In an embodiment the client application 585 is provided as an application on a user device. It will be appreciated that application 585 in an embodiment is associated to computing device 505 or another computing device.
[0103] The foregoing description of the invention includes preferred forms thereof. Modifications may be made thereto without departing from the scope of the invention, as defined by the accompanying claims.