Content-Based Synchronization of Similar Data Packets Received by Asynchronous Wireless Receivers - Patent application
Patent Information
- Application Number
- JP2023569966
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-05-12
- Filing Date
- 2022-05-11
- Publication Date
- 2025-05-19
- Estimated Expiration
- 2042-05-11
AI Technical Summary
Existing location determination systems for wireless transmitters using asynchronous receivers face challenges in accurately synchronizing and correlating data packets due to the lack of a common clock, leading to increased complexity, cost, and reduced accuracy.
A method and system for synchronizing data packets received by separate asynchronous receivers based on the content of the packets, using identifiers calculated from the data packets, such as cryptographic hash functions, to correlate similar packets and establish a common time base, allowing for accurate synchronization without the need for synchronized clocks.
This approach reduces complexity and cost by eliminating the need for synchronized receivers, enhances accuracy and reliability by correlating packets based on their content, and improves the efficiency of location determination systems.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] Related Applications This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 187,437, filed May 12, 2021, the entire contents of which are incorporated herein by reference. [Background technology]
[0002] The present invention, in some of its embodiments, relates to synchronizing data packets transmitted by a wireless transmitter, and more particularly, but not exclusively, to synchronizing similar data packets transmitted by a wireless transmitter that are received by multiple asynchronous receivers based on the content of the data packets.
[0003] As mobile-based technologies advance at rapid and dramatic rates, the deployment of mobile devices is continually increasing for a wide range of applications, services, systems, platforms, and / or infrastructure, ranging from commercially oriented services, to agricultural and environmental systems, to military applications.
[0004] One such function of mobile-based services and systems relates to location, i.e., determining the location of a wireless device. To address this need, various techniques and algorithms have been developed to provide reliable location, positioning, and / or tracking solutions for mobile devices.
[0005] These solutions may include satellite-based services, such as Global Positioning System (GPS) sensors that may be coupled to the mobile device. Other techniques, such as triangulation, may be based on deploying static receivers configured to receive wireless signals transmitted by the mobile device and calculating the location of the wireless device by aggregating received data calculated for the received wireless signals.
[0006] Each location technology may necessarily bring its advantages and limitations with respect to accuracy, reliability, robustness, cost, and durability, to name a few. Summary of the Invention
[0007] According to a first aspect of the present invention there is provided a method of synchronising data packets received by a separate asynchronous receiver from a wireless transmitter, the method comprising using one or more processors, the using comprising: asynchronously receiving a plurality of identifiers (IDs) for each one of a plurality of data packets transmitted by one or more wireless transmitters over one or more wireless transmission channels and received by a plurality of separate asynchronous receivers, each of the plurality of IDs being associated with a respective received data calculated by one of the plurality of receivers; - Correlating among similar data packets received by at least some of the plurality of receivers based on the ID; - outputting the correlation ID combined with the associated received data to one or more devices configured to jointly process the received data associated with at least a portion of the correlation ID; This is intended to carry out the above.
[0008] According to a second aspect of the present invention there is provided a system for synchronising data packets received by a separate asynchronous receiver from a wireless transmitter, the system comprising one or more processors configured to execute code comprising: - code instructions for asynchronously receiving a plurality of identifiers (IDs) for each one of a plurality of data packets transmitted by one or more wireless transmitters over one or more wireless transmission channels and received by a plurality of separate asynchronous receivers, each of the plurality of IDs being associated with a respective received data calculated by one of the plurality of receivers; - code instructions for correlating among similar data packets received by at least some of the plurality of receivers based on the ID; - code instructions for outputting the correlation ID combined with the associated received data to one or more devices configured to jointly process the received data associated with at least a portion of the correlation ID; Includes.
[0009] In a further implementation form of the first and / or second aspect, the similar correlated data packets correspond to one or more data packets transmitted by one or more wireless transmitters that are received by at least some of the receivers.
[0010] In a further implementation form of the first and / or second aspect, the received data associated with each of the received data packets includes at least a received signal strength indicator (RSSI) of the respective received data packet.
[0011] In a further embodiment of the first and / or second aspect, each of the receivers is further configured to associate each received data packet with a time of arrival (TOA) of the respective data packet.
[0012] In a further implementation form of the first and / or second aspect, the IDs of at least some of the plurality of data packets are unique in time with respect to preceding and / or subsequent data packets transmitted by one or more wireless transmitters during at least a predetermined period of time.
[0013] In a further embodiment of the first and / or second aspect, the identity of each of the plurality of data packets is calculated based on at least a portion of the respective data packet.
[0014] In a further embodiment of the first and / or second aspect, at least a portion of each data packet includes one or more fields of each data packet defined by one or more communication protocols used to transmit each data packet over one or more wireless transmission channels.
[0015] In a further embodiment of the first and / or second aspect, the identity of the data packet is further calculated based on one or more network parameters of the one or more wireless transmission channels.
[0016] In a further embodiment of the first and / or second aspect, the ID of the data packet is further calculated based on device IDs of the one or more wireless transmitters extracted from one or more of the plurality of data packets to establish an association between the one or more data packets and the one or more wireless transmitters.
[0017] In a further implementation form of the first and / or second aspect, the ID of at least a portion of the plurality of data packets is calculated using one or more arbitrary length content mapping functions applied to at least a portion of each data packet, the one or more arbitrary length content mapping functions being part of the group consisting of hash functions, cryptographic hash functions, and CRC functions.
[0018] In an alternative embodiment of the first and / or second aspect, a common time base is established among the receivers based on the reception times of at least some of the correlated data packets.
[0019] In a further embodiment of the first and / or second aspect, at least some of the plurality of data packets are correlated based on a common time base.
[0020] In a further embodiment of the first and / or second aspect, at least some of the multiple receivers are synchronized based on a common time base.
[0021] In an alternative embodiment form of the first and / or second aspect, a common sampling time base is established for at least a portion of the plurality of receivers based on the common time base, the common sampling time base defining a sampling time for each of a plurality of wireless transmission channels used by the at least one wireless transmitter to transmit a plurality of data packets.
[0022] In a further implementation form of the first and / or second aspect, the one or more devices include an integration unit of a composite receiver including a plurality of receivers, the integration unit configured to aggregate received data associated with the correlation ID to generate transformed received data.
[0023] In a further implementation form of the first and / or second aspect, the one or more devices include a locator system configured to calculate a position of one or more wireless transmitters relative to at least some of the receivers based on received data associated with the correlation ID.
[0024] In a further embodiment of the first and / or second aspect, the calculated positions of one or more wireless transmitters are relative to at least some of the receivers.
[0025] In a further embodiment of the first and / or second aspect, the calculated positions of the one or more wireless transmitters are absolute positions calculated based on predetermined positions of at least some of the receivers.
[0026] In an alternative embodiment of the first and / or second aspect, one or more of the plurality of receivers are calibrated according to known locations of the wireless transmitters.
[0027] Other systems, methods, features and / or advantages of the present disclosure will be or become apparent to one with skill in the art upon examination of the following figures and detailed description, and all such additional systems, methods, features and advantages are intended to be included within this description and protected by the accompanying claims.
[0028] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although methods and materials similar or equivalent to those described herein can be used in the practice or testing of the present invention, exemplary methods and / or materials are described below. In case of conflict, the present patent specification, including definitions, will control. Furthermore, the materials, methods, and examples are illustrative only and are not intended to be necessarily limiting.
[0029] Implementations of the methods and / or systems of the present invention may include performing or completing selected tasks automatically. Further, depending on the actual instruments and devices of the present method and / or system embodiments, some selected tasks may be implemented by hardware, software, or firmware, or a combination thereof, using an operating system.
[0030] For example, hardware for performing selected tasks according to embodiments of the invention may be implemented as a chip or circuit. As software, selected tasks according to embodiments of the invention may be implemented as a number of software instructions being executed by a computer using any suitable operating system. In an exemplary embodiment of the invention, one or more tasks according to exemplary embodiments of the methods and / or systems described herein are performed by a data processor, such as a computing platform for executing a number of instructions. Optionally, the data processor includes volatile memory for storing instructions and / or data, and / or non-volatile storage, e.g., a magnetic hard disk and / or removable media, for storing instructions and / or data. Optionally, a network connection is also provided. A display and / or a user input device, such as a keyboard or mouse, are also optionally provided.
[0031] Some embodiments of the invention are herein described, by way of example only, with reference to the accompanying drawings, in which: Reference is now made in particular detail to the drawings, stressing that the matter shown is for purposes of illustrative discussion of embodiments of the invention by way of example, and in this regard the description using the drawings will make apparent to those skilled in the art how embodiments of the invention may be practiced. [Brief description of the drawings]
[0032] [Figure 1] Referring now to the drawings, there is shown a schematic diagram of an exemplary system for synchronizing data packets transmitted by a wireless transmitter and received by multiple asynchronous receivers based on the content of the data packets, in accordance with some embodiments of the present invention. [Diagram 2] 1 is a flowchart of an exemplary process performed to generate received data for received data packets transmitted by a wireless transmitter and to synchronize similar data packets based on the content of the data packets in accordance with some embodiments of the present invention. [Figure 3A] 1 is a schematic diagram of an example data packet structure used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets, according to some embodiments of the present invention. [Figure 3B] 1 is a schematic diagram of an example data packet structure used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets, according to some embodiments of the present invention. [Figure 4A] 4 is a schematic diagram of an exemplary reception event sequence of a data packet transmitted by a wireless transmitter according to some embodiments of the present invention. [Figure 4B] 4 is a schematic diagram of an exemplary reception event sequence of a data packet transmitted by a wireless transmitter according to some embodiments of the present invention. [Figure 4C] 4 is a schematic diagram of an exemplary reception event sequence of a data packet transmitted by a wireless transmitter according to some embodiments of the present invention. [Diagram 5] FIG. 2 is a schematic diagram of correlating example event streams generated by multiple asynchronous receivers for data packets transmitted by a wireless transmitter, in accordance with some embodiments of the present invention. [Figure 6] FIG. 1 is a schematic diagram of an exemplary composite receiver constructed from multiple asynchronous receivers and an integration unit configured to correlate between similar data packets transmitted by a wireless transmitter that are received by at least some of the receivers, in accordance with some embodiments of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0033] The present invention, in some of its embodiments, relates to synchronizing data packets transmitted by a wireless transmitter, and more particularly, but not exclusively, to synchronizing similar data packets transmitted by a wireless transmitter that are received by multiple asynchronous receivers based on the content of the data packets.
[0034] Locating a wireless transmission device may be performed by deploying multiple separate receivers at different locations to receive wireless signals transmitted by the wireless transmitter and calculating the location of the wireless transmitter based on the received wireless signals.
[0035] The wireless transmitter may transmit wireless signals over one or more wireless transmission channels employing one or more wireless transmission technologies, such as cellular transmission, wireless local area network (LAN) transmission (e.g., Wi-Fi), Bluetooth transmission, radio frequency (RF) transmission, and / or similar transmission technologies utilizing one or more frequency bands known in the art.
[0036] Each receiver may be configured to calculate received data for each wireless signal, and specifically for each data packet carried (modulated, encoded, etc.) by a wireless signal transmitted by one of the wireless transmitters that the respective receiver intercepts. The received data, e.g., a received signal strength indicator (RSSI) indicative of the strength, angle of arrival (AOA), time of arrival (TOA), and / or the like of a signal received at the receiver, may be calculated, derived, and / or determined using one or more methods, architectures, and / or implementations known in the art.
[0037] Calculating the location of the wireless transmitter based on the received wireless signals may be performed using one or more wireless location methods, techniques, and / or algorithms known in the art, such as triangulation and / or similar methods that may be based on received data calculated for the received wireless signals.
[0038] Since the location of the wireless transmitter is calculated based on differences in reception (e.g., RSSI, AOA, etc.) of wireless signals at different receivers, the reception differences between the receivers should relate to similar wireless signals, i.e., signals corresponding to the same wireless signal transmitted by the wireless transmitter.
[0039] Correlation between similar radio signals is particularly important, and in fact is essential, for determining the location of a mobile radio transmitter during operation, because the location of the mobile radio transmitter is dynamic, such that each set of similar radio signals corresponds to a particular radio signal transmitted by the radio transmitter while located at a particular location at a particular time. If not properly correlated, signals received by different receivers may correspond to different radio signals transmitted by the radio transmitter at different times while located at different locations.
[0040] According to some embodiments of the present invention, methods, systems, and computer program products are provided for synchronizing and correlating similar wireless signals transmitted by a wireless transmitter and received by multiple asynchronous receivers that do not share a synchronized clock.
[0041] Specifically, similar data packets carried (modulated, encoded, encapsulated) by a radio signal that correspond to the same one or more data packets transmitted by a radio transmitter may be correlated (synchronized) based on the content of the data packets.
[0042] As previously mentioned, wireless signals transmitted by a wireless transmitter carry (modulate, encode, etc.) data packets that may be received by multiple receivers and correlated together based on their content. However, for brevity, the terms "wireless signal" and "data packet" may be used interchangeably throughout this disclosure. For example, references to the content of a wireless signal may actually relate to the content of a data packet carried by the wireless signal. In another example, the time of receipt of a data packet may actually relate to the time of receipt of a wireless signal carrying the data packet.
[0043] Typically, the content of most of the data packets transmitted by a wireless transmitter is unique in time compared to the content of preceding and / or subsequent data packets, at least for a certain period of time, e.g., 10, 15, 20 packets and / or similar packets.
[0044] Each of the asynchronous receivers, which may include one or more antennas configured to receive wireless transmission signals transmitted in one or more frequency bands, may be further configured to at least partially decode data carried by the received wireless signals. For example, each receiver may identify at least raw data bits of a data packet encoded in the received wireless signal. However, the receiver may be further configured to divide the raw bits of the data packet into bytes and meaningful fields according to one or more known network and / or communication protocols, in particular according to one or more communication protocols employed by the wireless transmitter. Such data packet division may typically include identifying at least the header and payload of the data packet, including the data fields of the data packet, e.g., source, destination, packet size, packet type, payload description information, and / or the like.
[0045] Thus, each of the receivers receiving the data packets carried by the wireless signal transmitted by the wireless transmitter may calculate received data, e.g., RSSI, AOA, and / or the like, for each received data packet, and may further associate each received data packet with its respective received data. The receiver may further associate each received data packet with a respective reception time, e.g., a time of arrival (TOA), indicating the time of reception of each data packet by each receiver.
[0046] Each of the receivers may further calculate an identifier (ID) of each of the received data packets based on the content of each data packet and / or a portion of the data packet, e.g., based on payload data, one or more headers, fields, and / or the like defined by one or more network and / or communication protocols used to transmit each data packet and / or the like. For example, if only low bits are supported, the ID of each received data packet may be calculated based on low bits of each received data packet and / or a portion thereof. In another example, assuming the receiver is capable of decoding the network in encoding of the network and / or communication protocol, the ID of each of the received data packets may be calculated based on values of one or more data fields of each received data packet.
[0047] Additionally, the receiver may calculate and / or generate an ID for one or more of the received data packets by applying one or more arbitrary-length content mapping functions, such as cryptographic hash functions, hash functions, cyclic redundancy check (CRC) functions, and / or similar functions, to at least a portion of the content of each data packet.
[0048] Optionally, the ID may also be calculated based on one or more network parameters indicative of the wireless transmission channel used by the originating wireless transmitter to transmit the data packet.
[0049] Optionally, the ID may also be calculated based on a device ID identified in the received data packet, which indicates the originating wireless transmitter.
[0050] Each of the receivers may then transmit the calculated ID for each received data packet combined with the calculated received data for each data packet to one or more synchronization units, eg, a consolidation unit.
[0051] Since most of the data packets transmitted by a wireless transmitter are typically unique in time, at least over a certain period of time, the IDs of these data packets may also be unique in time, at least over a certain period of time.
[0052] Thus, similar data packets received by multiple different receivers but corresponding to the same data packet transmitted by the wireless transmitter can be correlated and synchronized by the synchronization unit based on their ID, i.e., data packets with the same ID can be considered as similar data packets and thus correlated together.
[0053] Optionally, the synchronization unit may establish a common time base between at least some of the receivers of the plurality of receivers based on the correlated data packets. The synchronization unit receiving the IDs from the receivers may determine the respective reception times of the data packets received at each receiver to identify the time difference between the receivers. Thus, the synchronization unit may map each received data packet to the common time base according to the identified time difference for each receiver that received each data packet. Thus, the common time base may be established based on the timing of reception events at the plurality of receivers.
[0054] Furthermore, the synchronization unit may correlate one or more similar data packets according to a common time base. For example, data packets received by different receivers may thus be received by the synchronization unit at different times. However, if such data packets are simultaneously mapped to a common time base, these data packets may be considered to be similar because they correspond to the same data packet transmitted by a wireless transmitter at a particular time and thus may be correlated together.
[0055] Furthermore, the synchronization unit may establish a common sampling time base for at least a portion of the receivers based on the common time base, which may define a sampling time and, optionally, an order for sampling a plurality of wireless transmission channels used by the wireless transmitter to transmit a data packet.
[0056] The synchronization unit may then output the correlation ID, combined with the associated received data, to one or more devices, systems, services, and / or the like configured to collaboratively process the received data associated with at least a portion of the correlation ID for one or more applications.
[0057] A first such important application is to calculate and / or determine the location of a wireless transmitter based on received data of correlation IDs calculated for similar data packets by multiple separate and asynchronous receivers receiving similar correlated data packets.
[0058] According to some embodiments of the present invention, at least a portion of the receiver used to determine the location of the wireless transmitter may be calibrated according to the known locations of one or more wireless transmitters. The known locations of the wireless transmitters may be determined, provided, and / or otherwise obtained using one or more other tracking, positioning, and / or locating systems, services, platforms, and / or infrastructures, such as using a Global Positioning System (GPS), map-based services, and / or the like. In particular, the receiver may be calibrated by comparing the received data or the transformed received data with an expectation of the received data that should be received from the known location of the wireless transmitter, or by calculating its location and comparing the case with the known location.
[0059] Another application that may benefit from jointly processing received data associated with at least some of the correlation IDs is directed to calculating transformed received data based on the received data associated with the correlation IDs. For example, one or more composite receivers may be constructed from multiple asynchronous receivers that do not share a common clock.
[0060] Each of the receivers may be connected to one or more antennas of the receiver and configured to receive data packets transmitted by one or more wireless transmitters and generate respective received data. The receivers may further calculate an ID for each received data packet based on the content of the data packet as previously described herein and associate the ID of each packet with the calculated received data for the received data packet.
[0061] The composite receiver may further include an integration unit configured to correlate between similar data packets received by different asynchronous receivers based on their IDs, for example to calculate the direction of travel (AOA) of the received data packets and / or the like, by aggregating received data associated with correlated similar data packets, in order to calculate the transformed received data.
[0062] The transformed received data received from one or more composite receivers may further be correlated based on the calculated IDs for similar data packets and may be used, for example, to calculate the location of a wireless transmitter.
[0063] Correlating similar data packets received by an asynchronous receiver based on the content of the received data packets can provide significant advantages and benefits compared to existing systems and methods for synchronizing similar wireless signals transmitted by wireless transmitters.
[0064] First, some existing systems, most of which do not rely on synchronous receivers, may correlate similar data packets received by different synchronous receivers based on their reception timing. Such synchronization of receivers may provide significant limitations. One such limitation is the need to use high-end receivers with advanced clock circuits and / or timing mechanisms that support external synchronization. Such high-end receivers may be more complex, more expensive, subject to higher failure rates, and / or similar properties. Furthermore, using receivers from different vendors that may support different clock synchronization specifications and / or protocols may be limited and / or significantly complicated and may increase the cost of receiver deployment. Furthermore, extensive wiring and cable infrastructure may be required to distribute synchronous clocks among receivers that may be significantly distant from each other, thus further increasing the cost and / or complexity of receiver deployment.
[0065] On the other hand, correlation of similar data packets based on content can be performed using asynchronous receivers, thus completely eliminating the need for any synchronization equipment, infrastructure, and / or the like, which can be highly complex and / or costly, thus significantly reducing the complexity and / or cost of receiver deployment. Furthermore, since the receivers do not need to be synchronized, simple low-end receivers from different vendors can optionally be used, further reducing the cost of the receivers.
[0066] Moreover, even when the receivers are synchronized as required by existing methods, at least some of the receivers may receive data packets originating from different wireless transmitters that are necessarily unrelated to each other at a particular time, for applications such as geolocation of the wireless transmitters, improving the reception of data packets transmitted by the wireless transmitters and / or the like. On the other hand, by correlating the data packets based on their content, there is no risk of mixing data packets originating from different wireless transmitters, since the correlation is content-based rather than time-based, and the content of packets transmitted from different wireless transmitters may be essentially different.
[0067] Furthermore, by correlating data packets based on IDs that are also calculated based on network parameters of the wireless transmission channels used by the wireless transmitters, the probability of mixing data packets received from different wireless transmission channels can be reduced and possibly eliminated, thus increasing the accuracy, reliability, and / or robustness of similar data packet correlation. Furthermore, by correlating data packets based on their IDs that are also calculated based on device IDs of the wireless transmitters, the probability of mixing data packets transmitted from different wireless transmitters can be reduced and possibly eliminated, thus further improving the accuracy, reliability, and / or robustness of similar data packet correlation.
[0068] Furthermore, by calculating the ID using an arbitrary length content mapping function, such as a cryptographic hash function, a hash function, a CRC and / or other such function, the size of the ID may be significantly reduced and therefore the computing resources, e.g., processing resources, processing time, storage resources, network resources, and / or the like, required for transmitting the ID, storing the ID, searching for matching IDs that indicate similar data packets, and / or the like may be significantly reduced.
[0069] Whenever successful correlation of similar data packets occurs, a common time base may be established, adjusted, and updated, and the common time base may be used to correlate other data packets that may not contain unique data content in time, further improving the accuracy, reliability, and / or robustness of the correlation. In particular, this may enable correlation of similar data packets based on reception timing as done by existing methods, while achieving that correlation without the need for complex and / or costly synchronous receivers. Rather, the common clock base is maintained and updated pursuant to content-based correlation of time-specific data packets, while the common clock base may be used for time-based correlation of data packets that are not time-specific relative to preceding and / or succeeding data packets.
[0070] By establishing a common sampling time base, the efficiency, reliability, and / or robustness of content-based correlation of similar data packets may be significantly improved. This may be particularly advantageous when a receiver may be configured to monitor multiple wireless transmission channels used for transmitting data packets. In such a scenario, different receivers may sample different wireless transmission channels at different times, which may result in the inability to correlate similar data packets with each other. By instructing each receiver to a specific sampling time and, optionally, a sampling order (reception of data packets) that is synchronized to the sampling times of the other receivers, the synchronization unit may ensure that multiple receivers, and possibly all receivers, are synchronized to the sampling time of the same wireless transmission channel.
[0071] Calibrating the receiver based on known locations of the wireless transmitters can serve to significantly reduce complex and / or costly calibration operations to calibrate the receiver as may be required by existing methods. One or more simple wireless transmitters can be deployed to transmit data packets that can be received by the receivers and correlated together. Based on the correlation data calculated by each receiver for the correlated data packets and the received data, the receivers can be easily and simply calibrated. Furthermore, one or more existing services, systems, and / or platforms can be used for calibration, for example, one or more managed fleets, where each vehicle is equipped with a GPS sensor to record and report its location and is capable of transmitting a wireless signal that can be received by the receivers.
[0072] Before describing at least one embodiment of the invention in detail, it is to be understood that the invention is not necessarily limited in its application to the details of construction and the arrangement of components and / or methods set forth in the following description and / or illustrated in the drawings and / or examples. The invention is capable of other embodiments or of being practiced or carried out in various ways.
[0073] As will be appreciated by one of ordinary skill in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be referred to generally herein as a "circuit," "module," or "system." Additionally, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied therein.
[0074] Any combination of one or more computer readable media may be utilized. A computer readable storage medium may be a tangible device that can hold and store instructions used by an instruction execution device. A computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer readable storage media includes the following: portable computer disks, hard disks, random access memory (RAM), read only memory (ROM), erasable program read only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read only memory (CD-ROM), digital versatile disks (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves with instructions stored thereon, and any suitable combination of the foregoing. A computer-readable storage medium as used herein should not, itself, be construed as a primary signal, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or an electrical signal transmitted over a communication line.
[0075] Computer program code including computer readable program instructions embodied in a computer readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
[0076] The computer-readable program instructions described herein can be downloaded to each computing / processing device from a computer-readable storage medium or can be downloaded to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage within a computer-readable storage medium within each computing / processing device.
[0077] Computer readable program instructions for carrying out operations of the present invention may be written in any combination of one or more programming languages, including, for example, assembler instructions, Instruction Set Architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-set data, or either source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, or similar languages, and conventional procedural programming languages such as the "C" programming language or similar programming languages.
[0078] The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, partially on the user's computer as a stand-alone software package and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, an electronic circuit, including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuit to perform aspects of the invention.
[0079] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0080] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or part of an instruction, which includes one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions represented in the blocks may occur in a different order than that shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order depending on the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart diagrams, as well as combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or acts, or executes a combination of dedicated hardware and computer instructions.
[0081] Referring now to the drawings, FIG. 1 is a schematic diagram of an exemplary system for synchronizing data packets transmitted by a wireless transmitter and received by multiple asynchronous receivers based on the content of the data packets, in accordance with some embodiments of the present invention.
[0082] The synchronization system 100, e.g., a server, a computing node, a cluster of computing nodes, a device, an apparatus, and / or the like, may be configured to synchronize data packets carried (modulated, encoded, encapsulated, etc.) by wireless signals transmitted by one or more of the wireless transmitters 102 and received by at least a portion of a plurality of separate asynchronous receivers 1004, e.g., by at least two separate receivers 104 located at different locations.
[0083] The wireless transmitter 102, having one or more radio interfaces for transmitting wireless signals over one or more radio transmission channels, may transmit wireless signals according to one or more wireless transmission technologies, such as cellular transmission, wireless local area network (LAN) transmission (e.g., Wi-Fi), Bluetooth transmission, radio frequency (RF) transmission, and / or the like, utilizing one or more frequency bands known in the art. Data carried by the wireless signals transmitted by the wireless transmitter 102, for example, data packets, may be encoded and / or encapsulated according to one or more communication protocols known in the art, such as, for example, GSM, CDMA, LTE, WiMAX, IEEE 802.11, and / or the like standards.
[0084] While one or more of the wireless transmitters 102 may be stationary devices located at fixed locations, the wireless transmitters 102 may also include mobile wireless devices that are at least temporarily in operation and / or stationary. Such wireless transmitters 102 may include, for example, mobile devices used by one or more users, such as phones, tablets, wearable devices (e.g., watches, goggles, tags, etc.). In another example, the wireless transmitters 102 may include one or more vehicle devices that may be incorporated into, mounted on, attached to, and / or otherwise coupled to one or more manually operated and / or at least partially autonomous vehicles, such as cars, trucks, motorcycles, bicycles, trains, trams, drones, unmanned aerial vehicles (UAVs), and / or the like.
[0085] Each of the receivers 104 may include one or more antennas for intercepting radio transmission signals transmitted in one or more frequency bands and thus may be capable of receiving (intercepting) radio transmission signals from a spectrum of frequencies. In particular, each of the receivers 104 may be configured to receive data packets carried by radio signals transmitted by one or more of the wireless transmitters 102.
[0086] The receiver 104 may further be configured to decode data contained in the data packets, at least in raw bit form. Optionally, the receiver 104 may be capable of dividing the raw bits of the data packets into bytes and meaningful fields according to one or more of the network and / or communication protocols employed by the wireless transmitter 102. Such division of the data packets may typically include identifying at least the header and payload of the data packets. The header typically includes a data field defined by the communication protocol to include information related to each data packet, such as a source (originating node), a destination (target node), a packet size, a packet type, a description of the information in the payload, and / or the like. The payload may include data. The data in one or more payloads of the data packets may be optionally encrypted, and in some cases, one or more payloads of the data packets may be empty.
[0087] Each of the receivers 104 may be configured to calculate received data for each received wireless signal, specifically for each received data packet transmitted by one of the wireless transmitters 102. The received data calculated by the receivers 104 for each received data packet may include, for example, RSSI, angle of arrival (AOA), and / or the like.
[0088] Each of the receivers 104 may apply one or more methods, architectures, and / or implementations known in the art to calculate, derive, and / or determine the received data. For example, one or more of the receivers 104 including multiple antennas may calculate the received data for each data packet based on reception parameters (e.g., time, angle, RSSI, etc.) of each packet at each of the multiple antennas of the multiple antennas that are correlated based on the timing of the receiver 104 known in the art. Each of the receiving units may be connected to a respective one of the multiple antennas of the receiver 104 and may be further configured to calculate respective received data for each received wireless signal, specifically for each received data packet carried by the received wireless signal. An integration unit of the receiver 104 may collect and aggregate the received data calculated by the multiple receiving units to calculate transformed received data for each received data packet, e.g., with respect to the direction of the originating wireless transmitter 102 that transmitted the received wireless signal and / or the like.
[0089] Each of the receivers 104 may typically operate based on a local clock, e.g., a timing mechanism, a clock circuit, a counter unit, and / or the like, which may be further used to calculate the TOA of the received data and / or portions thereof, e.g., one or more data packets received by each receiver 104.
[0090] However, although each of the receivers 104 may include a local clock, the multiple separate receivers 104 are asynchronous with respect to one another, meaning that no common clock is shared among the receivers 104 to synchronize their local clocks. Thus, for example, mechanisms, infrastructure (e.g., beacons, wires, cables, etc.), protocols, and / or the like may be deployed to synchronize, share, distribute, and / or otherwise establish a common clock among the receivers 104.
[0091] Optionally, the location, eg, geolocation, of the receiver 104 is predefined and known to the synchronization system 100 .
[0092] Synchronization system 100 may include an input / output (I / O) interface 110 for connecting to and communicating with receiver 104, a processor 112, and storage for storing data and code (program store).
[0093] The I / O interface 110 may include one or more wired and / or wireless network interfaces for communicating with the receiver 104, such as a local area network (LAN) interface, a wide area network (WAN) interface, a wireless LAN (WLAN) interface, a cellular interface, a controller area network (CAN) bus interface, and / or similar interfaces. The I / O interface 110 may further include one or more wired and / or wireless interconnect communication interfaces, which may employ a network topology, a point-to-point topology, and / or similar topologies, such as a serial port (e.g., RS-232, RS-422, RS-485, etc.), a universal serial bus (USB) port, an RF communication channel, a proprietary interconnect, etc.
[0094] Thus, the synchronization system 100 may communicate with the receivers 104v via the I / O interface 210. The communication link connecting the synchronization system 100 with the receivers 104 may employ one or more technologies, topologies, and / or protocols. For example, the I / O interface 110 may connect to one or more networks, such as a LAN network, a WLAN network, and / or similar networks, that may connect to all of the receivers 104. In another exemplary deployment, the receivers 104 may be divided into groups each connected to one of the multiple networks to which the I / O interface 110 is connected, such that the synchronization system 100 may communicate with the receivers 104 via the multiple networks. In another exemplary deployment, the synchronization system 100 may communicate with one or more of the receivers 104 via a dedicated communication channel established between the synchronization system 100 and each of the receivers 104 via the I / O interface 110, such as a serial communication channel, an RF communication channel, and / or similar channel.
[0095] The processor 112 may be homogeneous or heterogeneous, and may include one or more processing nodes arranged for parallel processing as a cluster and / or as one or more multi-core processors. The storage 114 may include one or more non-transient, non-volatile, persistent memory devices and / or arrays, such as ROM, flash arrays, hard drives, solid-state drives (SSDs), magnetic disks, and / or the like, for data and / or program store. The storage 114 may also include one or more volatile memory devices and / or arrays, such as RAM devices, cache memories, and / or the like, useful for temporary storage of data and / or program store. The storage 114 may optionally include one or more networked storage resources accessible via the I / O interface 110, such as storage servers, network-attached storage (NAS), and / or the like.
[0096] The processor 112 may execute one or more software modules, such as processes, scripts, applications, agents, utilities, tools, operating systems (OS), drivers, plug-ins, patches, updates, and / or the like, each of which includes a number of program instructions stored in a non-transitory medium (program store) such as the storage 114 and executed by one or more processors, such as the processor 112. The processor 112 may further include, integrate, utilize, and / or facilitate one or more hardware modules (elements) integrated and / or coupled to the synchronization system 100. Hardware modules may include, for example, circuits, components, integrated circuits (ICs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), digital signal processors (DSPs), advanced encryption standard (AES) engines, and / or the like.
[0097] Thus, the processor 112 may execute one or more functional modules, such as a packet synchronizer 120 implemented by one or more software modules, one or more hardware modules, and / or a combination thereof.
[0098] Although the synchronization system 100 may be a separate and independent entity from the receivers 104, such as a server, a computing node, a cluster of computing nodes, and / or the like connected to multiple receivers 104, the synchronization system 100 may optionally be integrated into one or more of the receivers 104 such that each of the receivers 104 executes the packet synchronizer 120.
[0099] Optionally, synchronization system 100, and in particular packet synchronizer 120, may be implemented as one or more cloud-based computing services, platforms, and / or infrastructures, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and / or the like, such as Amazon Web Services (AWS), Google Cloud, Microsoft Azure, and / or the like.
[0100] FIG. 2 is a flowchart of an exemplary process performed to generate received data for received data packets transmitted by a wireless transmitter and to synchronize similar data packets based on the content of the data packets in accordance with some embodiments of the present invention.
[0101] The exemplary process 200 may be performed by at least some of each of the receivers 104, in particular by receivers 104 that receive data packets transmitted by one or more of the wireless transmitters 102 over one or more wireless transmission channels. Each such receiver 104 may perform a respective instance of the process 200 to calculate received data for each received data packet and transmit a received data packet associated (combined) with the received data to the synchronization unit 100.
[0102] An example process 210 may be performed, for example, by a packet synchronizer 120 implemented by the synchronization system 100 to receive data packets received by the receivers 104 and correlate similar data packets, i.e., data packets transmitted by a particular wireless transmitter 102 and received by multiple receivers 104. In particular, the packet synchronizer 120 may synchronize the data packets by correlating similar data packets based on the content of the data packets, which may be unique at least over a predetermined period of time, such as a period of several seconds (e.g., 3 seconds, 4 seconds, 5 seconds, etc.) and / or thousands of cycles, which may translate to a similar length.
[0103] For simplicity, process 200 and process 210 are presented for synchronizing data packets transmitted by a single wireless transmitter 102 by correlating similar data packets transmitted by the wireless transmitter 102 and received by at least some of the receivers 104. However, this should not be construed as limiting, as process 200 and process 210 may be extended to synchronize data packets transmitted by multiple wireless transmitters 102 by correlating similar data packets transmitted by the multiple wireless transmitters 102 and received by the receivers 104.
[0104] As shown at 202, the process 200, which may be performed by multiple receivers 104, begins with each receiver 104 receiving one or more data packets transmitted by the wireless transmitter 102 over one or more of the wireless transmission channels.
[0105] Naturally, process 200 can be initiated and executed only by receivers 104 that are capable of receiving radio signals transmitted by the wireless transmitter 102, specifically, by operational receivers 104 that are within range of a transmission channel used by the wireless transmitter 102 to transmit a radio signal carrying a data packet.
[0106] The receipt of each data packet transmitted by the wireless transmitter 102 may be viewed as a receive event. Typically, because the wireless transmitter 102 may transmit multiple data packets, the receiver 104 may create a sequence of receive events that are associated with or correspond to each one of the received data packets transmitted by the wireless transmitter 102.
[0107] When one or more of the receivers 104 receive data packets originating from multiple wireless transmitters 102, the sequence of receive events generated by each receiver 104 may include receive events corresponding to the data packets originating from the multiple source wireless transmitters 102.
[0108] Each of the receivers 104 may further assign a reception time (timestamp) to each reception event indicating the time of reception of each data packet. The receivers 104 may calculate, derive, and / or generate the reception time of each of the received data packets based on their local clock.
[0109] As shown in step 204, each of the receivers 104 may calculate received data for each received data packet emitted from the wireless transmitter 102, i.e., for each receive event.
[0110] The received data calculated by the receiver 104 may include at least the RSSI of each received data packet, in particular an RSSI indicative of the signal strength at the receiver of the received radio transmission signal carrying each received data packet.
[0111] However, the reception data calculated by one or more of the receivers 104 for one or more of the received data packets may further include one or more additional reception parameters related to each received data packet. For example, the additional reception parameters calculated for one or more of the received data packets (reception events) may include the AOA of each data packet received by the antenna array of each receiver 104, in particular the AOA of the received radio transmission signal carrying each data packet. In another example, the additional reception parameters calculated by one or more of the receivers 104 for one or more of the received data packets may include a timestamp, e.g., a TOA of each received data packet. The receiver 104 may calculate the TOA, as known in the art, according to, for example, the signal rise of the first bit of each data packet. In another example, the additional reception parameters calculated by one or more of the receivers 104 for one or more of the received data packets may include the type and / or technology of the transmission channel employed to transmit each received data packet, e.g., cellular, Wi-Fi, Bluetooth, and / or the like.
[0112] As indicated at step 206, each of the receivers 104 may further calculate an identifier (ID) for each received data packet based on the content of each data packet, or based at least in part on the content of each data packet.
[0113] The receivers 104 may apply one or more techniques, methods, and / or algorithms to calculate an ID for each received data packet. However, while different techniques, methods, and / or algorithms may be applied to calculate data packet IDs, all of the receivers 104 should follow the same technique, method, and / or algorithm for calculating the ID to ensure consistency and the ability to later correlate between similar IDs.
[0114] For example, assume that one or more of the receivers 104 do not know the communication protocol used to encapsulate one or more data packets. In such a case, since at least some of the receivers 104 may be unable to parse these data packets, all of the receivers 104 may therefore calculate an ID for each data packet based on the raw bits of each data packet and / or a portion thereof. For example, the receivers 104 may calculate an ID for a data packet based on the entire bit stream identified in each data packet. In another example, the receivers 104 may calculate an ID for a data packet based on one or more predefined segments of the raw bit stream (bit sequence) identified in each data packet, e.g., a predefined number of initial bits counted from the beginning of each data packet.
[0115] In another example, if the receiver 104 is configured and capable of recognizing one or more of the network protocols and / or communication protocols used to encode and / or encapsulate one or more of the data packets, the receiver 104 may calculate an ID for each recognized data packet based on one or more data fields of each data packet defined by the respective communication protocol used to transmit the respective data packet over the wireless transmission channel.
[0116] Data packets transmitted by a particular wireless transmitter 102 may typically differ from one another in their content. Differences in the content of the data packets may result from different data contained in the data packets or different parameters in their headers.
[0117] Because the content of each data packet transmitted by the transmission device 102 may differ at least slightly (e.g., by one bit) from its preceding and / or subsequent data packets, the ID calculated based on the content of each data packet may be unique in time with respect to the preceding and / or subsequent data packets, at least during a predetermined period of time.
[0118] Optionally, the receiver 104 may calculate one or more IDs of the data packets based on one or more network parameters of the wireless transmission channel, for example, the WLAN (e.g., Wi-Fi) on which each data packet is received. The network parameters, which may include, for example, a network ID, a unique network radio characteristic (UNRC), a service set identifier (SSID), a network type, a network channel, a network subchannel, and / or the like, may uniquely identify each wireless transmission channel relative to other wireless transmission channels. Because one or more of the receivers 104 may receive data packets transmitted via different simultaneous wireless transmission channels, calculating the ID based on the network parameters may help to further distinguish data packets received from different wireless transmission channels. For example, two wireless networks (e.g., Wi-Fi) using the same transmission channel may have at least partially overlapping coverage areas, such that one or more of the receivers 104 may occasionally receive one or more packets transmitted via a first wireless network and one or more packets transmitted via a second wireless network. In such cases, correlating data packets based on network parameters may ensure that correlated packets originate from the same transmitter 102 over the same wireless network.
[0119] Optionally, the receiver 104 may also calculate one or more IDs of the data packets based on the device ID of the wireless transmitter 102 that transmitted each data packet, such as a media access controller (MAC) address of the wireless transmitter 102, the S / N of the wireless transmitter 102, and / or the like. Because one or more of the receivers 104 may receive data packets transmitted from multiple different wireless transmitters 102, optionally over the same wireless transmission channel (network), calculating the ID based on the device ID may help to further distinguish data packets originating from different wireless transmitters 102.
[0120] 3A and 3B, there are shown schematic diagrams of exemplary data packet structures used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets, in accordance with some embodiments of the present invention.
[0121] As seen in FIG. 3A, a Wi-Fi MAC frame for encapsulating data packets into a frame as known in the prior art may consist of a header, a frame body, and a frame check sequence (FCS). The header holds information about the frame, the frame body carries the data that needs to be transmitted, and the FCS is calculated for the header and the frame body. The combined binary content of one or more data fields defined by the header may be used to calculate an ID of each data packet (frame), which may be sufficiently unique with respect to other data packets, at least during a predetermined period of time, because with a significantly high probability, the value of this field may not repeat (recur) in subsequent data packets. For example, the value of the "To Destination System (DS)" field, the value of the "From DS" field, the value of the "Address 1|" field, and the value of the FCS field may be used to calculate a sufficiently unique ID, which may be unique in time, at least during a predetermined period of time. One or more of the data fields, in particular such data fields that contribute to the uniqueness of each data packet, may be used by the receiver 104, for example, to calculate a unique ID for each data packet.
[0122] As seen in Figure 3B, a Wi-Fi duration / ID field known in the art may be constructed by a duration value, an association identifier (AID) value, and a number of reserved values. Since the duration value may be different for each data packet transmitted during at least a given period, an ID of each data packet that may be calculated based on the duration value may be sufficiently unique for each data packet during at least a given period, i.e., unique in time during at least a given period. One or more of these data fields may also be used by the receiver 104, for example, to calculate a unique ID for each data packet.
[0123] Optionally, the receiver 104 may apply one or more arbitrary-length content mapping functions, e.g., cryptographic hash functions, hash functions, CRC functions, and / or similar functions, to calculate an ID for each data packet. This may be done to reduce the size of the IDs calculated for one or more of the data packets, thus reducing computing resources, e.g., processing resources, storage resources, and / or network resources required to transmit, store, and / or process the IDs of the data packets. The receiver 104 may calculate the ID for each data packet, i.e., by applying the arbitrary-length content mapping function to all the content of each data packet. However, the receiver 104 may calculate the ID for each data packet by applying the arbitrary-length content mapping function to only a portion of the data packet, e.g., one or more fields, data payload, and / or the like. For example, the receiver 104 may calculate the ID for each data packet by applying a hash function to calculate a hash value based on at least a portion of the content of each data packet, e.g., the data payload, the data payload and source address fields, and / or the like of each data packet. Additionally, the receiver 104 may utilize one or more hardware modules, such as an AES encryption engine that uses a known encryption key to generate a hash value that serves as an ID for one or more of the data packets. This may be particularly advantageous for modern CPUs that include AES acceleration HW, which may reduce computation time, computing resources, and / or power consumption.
[0124] Thus, to associate each data packet with its respective received data, the reception event created by each of the receivers 104 for each received data packet may include the respective ID calculated for the received data packet, the reception data calculated by each receiver 104 for each data packet, and optionally the reception time of each data packet.
[0125] 4A, 4B, and 4C, which are schematic diagrams of an exemplary reception event sequence for a data packet transmitted by a wireless transmitter, according to some embodiments of the present invention.
[0126] As seen in FIG. 4A, one or more data packets may be carried by a wireless transmission signal transmitted by a wireless transmitter, such as the wireless transmitter 102. The data packets may be encoded according to one or more protocols and / or encoding schemes such that each data packet may be represented as a raw bit stream (bit sequence). Furthermore, each of the data packets may typically include one or more data fields defined by a network protocol and / or communication protocol applied by the wireless transmitter 102 to transmit the data packets over the wireless transmission channel. For example, each data packet may have a header and a data payload. The header and / or payload may further include one or more data fields, such as a source address (originating node), a destination address (target node), a packet size, a packet type, an information description of the payload, and / or the like. The payload, which may include data, may be optionally encrypted, and in some cases, one or more data payloads of a data packet may be empty.
[0127] Reception of each data packet by each receiver, such as the receiver 104, may be defined as a respective reception event E402. For example, at t1, the receiver 104 may receive a first data packet D1 and may calculate an identifier ID1 for the received data packet D1. The receiver 104 may generate a first reception event E1·402-1 that associates the received data packet D1, specifically the identifier ID1, with the respective received data R1, e.g., RSSI. The receiver 104 may further assign a reception time (timestamp) T1 to the reception event E1·402-1 that indicates the reception time, e.g., t1, of the data packet D1. In another example, at t2, the receiver 104 may receive a second data packet D2 and may calculate an identifier ID2 for the received data packet D2. The receiver 104 may generate a second reception event E2·402-2 that associates the received data packet D2, specifically the identifier ID2, with the respective received data R2. The receiver 104 may further assign a reception time T2 to the reception event E1·402-1, which indicates the reception time, e.g., t2, of the data packet D2. In another example, at t3, the receiver 104 may receive a third data packet D3 and calculate an identifier ID3 for the received data packet D3. The receiver 104 may generate a third reception event E3·402-3 that associates the received data packet D3, and in particular the identifier ID3, with the respective received data R3. The receiver 104 may further assign a reception time (timestamp) T3 to the reception event E3·402-3, which indicates the reception time, e.g., t3, of the data packet D3.
[0128] As seen in FIG. 4B, an exemplary receive event sequence 404 generated by the receiver 104 for multiple receive data packets transmitted by the wireless transmitter 102 may include multiple receive events 402, such as a first receive event E1·402-1, a second receive event E2·402-2, a third receive event E3·402-3, a fourth receive event E4·402-4, up to an nth receive event E(n) 402-n, and so on.
[0129] Thus, each reception event E(i) associating each received data packet with each received data may include an identifier ID calculated for each data packet D received by the receiver 104, each received data R calculated by the receiver 104 for each data packet D, and optionally a reception time T of each data packet D. For example, the reception event E1·402-1 may include an identifier ID1 calculated for the data packet D1, received data R1 associated with the data packet D1, and a reception time T1 of the data packet D1, the reception event E2·402-2 may include an identifier ID2 calculated for the data packet D2, received data R2 associated with the data packet D2, and a reception time T2 of the data packet D2, the reception event E3·402-3 may include an identifier ID3 calculated for the data packet D3, received data R3 associated with the data packet D3, and a reception time T3 of the data packet D3, the reception event E4·402-4 may include an identifier ID4 calculated for the data packet D4, received data R4 associated with the data packet D4, and a reception time T4 of the data packet D4, and the reception event E(n) 402-n may include an identifier IDn calculated for the data packet Dn, received data Rn associated with the data packet Dn, and a reception time Tn of the data packet Dn.
[0130] 4C, another exemplary receive event sequence 404-2 may be generated by a particular receiver 104 for multiple receive data packets transmitted by multiple wireless transmitters 102, e.g., two wireless transmitters 102A and 102B. Thus, the receive event sequence 404-2 may include multiple receive events 402 corresponding to data packets originating from the wireless transmitter 102A and / or the wireless transmitter 102B. For example, a first receive event E1_A 402-1_A, a second receive event E2_A 402-2_A, and a third receive event E3_A 402-3_A may correspond to a first receive data packet, a second receive data packet, and a third receive data packet, respectively, originating from the wireless transmitter 102A. Further, the first receiving event E1_A 402-1_B, the second receiving event E2_B 402-2_B, and the third receiving event E3_B 402-3_B may correspond to a first receiving data packet, a second receiving data packet, and a third receiving data packet, each of which is transmitted from the wireless transmitter 102A.
[0131] Thus, the first reception event E1_A 402-1_A may include an identifier ID1_A calculated for each first data packet D1_A, received data R1_A calculated for the data packet D1_A, and a reception time T1_A of the data packet D1_A at the specific receiver 104. The second reception event E2_A 402-2_A may include an identifier ID2_A calculated for each second data packet D2_A, received data R2_A calculated for the data packet D2_A, and a reception time T2_A of the data packet D2_A at the specific receiver 104. The third reception event E3_A 402-3_A may include an identifier ID3_A calculated for each third data packet D3_A, received data R3_A calculated for the data packet D3_A, and a reception time T3_A of the data packet D3_A at the specific receiver 104.
[0132] Similarly, the first reception event E2_B 402-1_B may include an identifier ID1_B calculated for the first data packet D1_B, received data R1_B calculated for the data packet D1_B, and a reception time T1_B of the data packet D1_B at the specific receiver 104. The second reception event E2_B 402-2_B may include an identifier ID2_B calculated for each second data packet D2_B, received data R2_B calculated for the data packet D2_B, and a reception time T2_B of the data packet D2_B at the specific receiver 104. The third reception event E3_B 402-3_B may include an identifier ID3_B calculated for each third data packet D3_B, received data R3_B calculated for the data packet D3_B, and a reception time T3_B of the data packet D3_B at the specific receiver 104.
[0133] Referring again to FIG.
[0134] As shown at 208, each of the receivers 104 may transmit the calculated ID for the received data packet to the synchronization system 100, specifically to the packet synchronizer 120. In particular, each of the receivers 104 may transmit to the packet synchronizer 120 a respective receive event generated for each data packet received from one of the wireless transmitters 102, where each receive event may include the calculated ID for each data packet, the calculated receive data for each data packet, and optionally the receive time of each data packet. Because each of the receivers 104 may receive multiple data packets from the wireless transmitters 102, the receivers 104 may actually transmit an event sequence including multiple receive events to the packet synchronizer 120.
[0135] As previously described herein, the receiver 104 may communicate with the packet synchronizer 120 via the I / O interface 110 and one or more of wired and / or wireless communication channels and / or communication networks deployed and / or established to connect between the receiver 104 and the synchronization system 100.
[0136] As shown at 212, process 210 may be performed, for example, by a packet synchronizer 120 implemented by synchronization system 100, and may begin with packet synchronizer 120 receiving calculated IDs for data packets received by receivers 104 from wireless transmitters 102. Each of the received data packets calculated by packet synchronizer 120 for each received data packet may be associated with a received data packet calculated by each of receivers 104 for each received data packet.
[0137] In particular, the packet synchronizer 120 may receive from each of the receivers 104 a respective event sequence generated by each of the receivers 104 for a data packet received by each of the receivers 104 from the wireless transmitter 102. As previously described herein, the receive event sequence generated by each of the receivers 104 may include a respective ID calculated for each of the data packets, receive data calculated by each of the receivers 104 for each of the data packets, and optionally a receive time of each of the data packets at each of the receivers 104.
[0138] Because separate receivers 104 may be asynchronous with respect to one another, the packet synchronizer 120 may asynchronously receive multiple receive event sequences from multiple different receivers 104 .
[0139] As shown at 214, the packet synchronizer 120 may synchronize the received data packets, specifically by correlating received reception events between similar data packets received by different receivers 104 based on the IDs calculated for the data packets.
[0140] Similar data packets are data packets that correspond to the same data packet transmitted by the wireless transmitter 102 and received by at least some of the receivers 104. This means that a particular data packet transmitted by the wireless transmitter 102 that is received by multiple receivers 104 may give rise to multiple similar data packets, each one received by each one of the receivers 104. It should be noted that there may be multiple sets of similar data packets, each set corresponding to a respective one of the multiple data packets transmitted by the wireless transmitter 102. For example, a first data packet transmitted by the wireless transmitter 102 may be received by multiple receivers 104, whereby the received data packet forms a first set of similar data packets corresponding to the first data packet. A second data packet transmitted by the wireless transmitter 102 may also be received by multiple receivers 104, whereby the received data packet forms a second set of similar data packets corresponding to the second data packet.
[0141] However, because the receivers 104 are asynchronous with each other and with the synchronous system 100 as well, data packets received by the receivers 104 that correspond to the same data packets transmitted by the wireless transmitter 102 may be received asynchronously by the packet synchronizer 120 from the receivers 104.
[0142] Thus, the packet synchronizer 120 may use the ID calculated for the received data packets to correlate similar data packets that correspond to the same data packets transmitted by the wireless transmitter 102, and thus synchronize together at least some of the similar data packets. Because the ID is unique in time, at least for a given period of time, the packet synchronizer 120 may successfully correlate similar data packets together.
[0143] In particular, the packet synchronizer 120 may synchronize similar data packets by comparing the IDs of the data packets and correlating among data packets having equal ID values. Because each ID is calculated based on the content of each data packet, data packets having the same content, and thus the same ID, may correspond to the same data packet transmitted by the wireless transmitter 102 and may thus be correlated together.
[0144]
[0036] Referring now to FIG. 5, we see a schematic diagram of correlating example event streams generated by multiple asynchronous receivers for data packets transmitted by a wireless transmitter, in accordance with some embodiments of the present invention.
[0145] As can be seen, a packet synchronizer, such as packet synchronizer 120, may receive three event streams 404, specifically, event stream 404(i) received from receiver 104(i), event stream 404(j) received from receiver 104(j), and event stream 404(k) received from receiver 104(k). As previously described herein, event stream 404(i) may include a number of events Ex_(i) 402-x(i) (x=1, 2, 3, ...) corresponding to data packets received by receiver 104(i), event stream 404(j) may include a number of events Ex_(j) 402-x(j) corresponding to data packets received by receiver 104(j), and event stream 404(k) may include a number of events Ex_(k) 402-x(k) corresponding to data packets received by receiver 104(k).
[0146] As can be seen, each of the event streams 404 includes only events corresponding to data packets that are actually received (intercepted) by the respective receiver 104. Thus, if a particular receiver 104 does not receive a particular data packet, the particular receiver 104 may not generate a respective reception event for the particular data packet, and such reception event may not be transmitted to the packet synchronizer 120 obviously. For example, seven data packets D(x) through D(x+6) may be transmitted by a wireless transmitter such as the wireless transmitter 102, but the receiver 104(i) may receive only five of the seven data packets, e.g., it may receive data packets D(x), D(x+1), D(x+3), D(x+5), and D(x+6), but may not receive data packets D(x+2) and D(x+4). In another example, receiver 104(j) may also receive only five of the seven data packets, e.g., receive data packets D(x+1), D(x+2), D(x+3), D(x+5), and D(x+6), but not receive data packets D(x) and D(x+4). In another example, receiver 104(k) may also receive six of the seven data packets, e.g., receive data packets D(x), D(x+1), D(x+3), D(x+4), D(x+5), and D(x+6), but not receive data packet D(x+2).
[0147] Thus, the event stream 404(i) received from the receiver 104(i) may include event E1(i) 402-1(i) including an ID1(i) calculated for data packet x and each of the received data R1(i), event E2(i) 402-2(i) including an ID2(i) calculated for data packet D(x+1) and each of the received data R2(i), event E3(i) 402-3(i) including an ID3(i) calculated for data packet D(x+3) and each of the received data R3(i), event E4(i) 402-4(i) including an ID4(i) calculated for data packet D(x+5) and each of the received data R4(i), event E5(i) 402-5(i) including an ID5(i) calculated for data packet D(x+6) and each of the received data R5(i), etc.
[0148] The event stream 404(j) received from the receiver 104(j) may include an event E1(j) 402-1(j) including an ID1(j) calculated for the data packet D(x+1) and each of the received data R1(j), an event E2(j) 402-2(j) including an ID2(j) calculated for the data packet D(x+2) and each of the received data R2(j), an event E3(j) 402-3(j) including an ID3(j) calculated for the data packet D(x+3) and each of the received data R3(j), an event E4(j) 402-4(j) including an ID4(j) calculated for the data packet D(x+5) and each of the received data R4(j), an event E5(j) 402-5(j) including an ID5(j) calculated for the data packet D(x+6) and each of the received data R5(j), etc.
[0149] The event stream 404(k) received from the receiver 104(k) includes an event E1(k) 402-1(k) including an ID1(k) calculated for the data packet D(x+1) and each of the received data R1(k), an event E2(k) 402-2(k) including an ID2(k) calculated for the data packet D(x+1) and each of the received data R2(k), and an event E3(k) 402-3(k) including an ID3(k) calculated for the data packet D(x+3) and each of the received data R3(k). The event events may include event E4(k) 402-4(k) including an ID4(k) calculated for data packet D(x+4) and each of the received data R4(k), event E5(k) 402-5(k) including an ID5(k) calculated for data packet D(x+5) and each of the received data R5(k), and event E6(k) 402-6(k) including an ID6(k) calculated for data packet D(x+6) and each of the received data R5(k), etc.
[0150] As will be apparent, the event streams 404(i), 404(j), and 404(k) may be shifted in time relative to one another because the receivers 104(i), 104(j), and / or 104(k) may be asynchronous with one another. Furthermore, each of the receivers 104(i), 104(j), and / or 104(k) may fail to receive one or more of the data packets transmitted by the wireless transmitter 102.
[0151] However, despite the time shift between the receivers 104 and potential missing data packets at one or more of the receivers 104, the packet synchronizer 120 may correlate between similar data packets based on their content, and in particular based on the ID of the data packet calculated based at least in part on the content of the data packet.
[0152] For example, the packet synchronizer 120 may identify that ID2(i) is equal to ID1(j) and ID2(k) because ID1(j) and ID2(k) are all calculated for the same data packet D(x), and thus may correlate event E2(i) 402-2(i) with events E1(j) 402-1(j) and E2(k) 402-2(k). In another example, the packet synchronizer 120 may identify that ID3(i) is equal to ID3(j) and ID3(k) because ID3(j) and ID3(k) are all calculated for the same data packet D(x+3), and thus may correlate event E3(i) 402-3(i) with events E3(j) 402-1(j) and E3(k) 402-3(k). In another example, the packet synchronizer 120 may identify that ID4(i) is equal to ID4(j) and ID5(k) because ID4(j) and ID5(k) are all calculated for the same data packet D(x+5) and may correlate event E4(i) 402-4(i) with events E4(j) 402-4(j) and E5(k) 402-5(k). In another example, the packet synchronizer 120 may identify that ID5(i) is equal to ID5(j) and ID6(k) because ID5(j) and ID6(k) are all calculated for the same data packet D(x+6) and may correlate event E5(i) 402-5(i) with events E5(j) 402-5(j) and E6(k) 402-6(k).
[0153] The packet synchronizer 120 may correlate among similar packets received by all three receivers 104(i), 104(j), and 104(k), and the packet synchronizer 120 may optionally correlate among similar packets received by only two of the receivers 104(i), 104(j), and 104(k). For example, a data packet D(x) is received by receiver 104(i) and receiver 104(k), while receiver 104(j) fails to receive it. In such a case, the packet synchronizer 120 may identify that ID1(i) is equal to ID1(k) and may correlate event E1(i) 402-1(i) with event E1(k) 402-1(k).
[0154] As will be apparent, events Ex(i), Ex(j), and Ex(k) may be shifted relative to one another, e.g., shifted in index, because receiver 104(i), receiver 104(j), and receiver 104(k) may possibly not receive one or more of the different data packets. For example, because receiver 104(i) did not receive data packets D(x+2) and D(x+4), while receiver 104(j) failed to receive data packets D(x) and D(x+4), and receiver 104(k) failed to receive data packet D(x+2), events Ex(i), Ex(j), and Ex(k) calculated for data packets received from receivers 104(i), 104(j), and 104(k) are each shifted relative to one another, e.g., have a shifted index.
[0155] However, because the correlation is performed according to the ID of the data packets calculated based on the content of the data packets, the packet synchronizer 120 may easily recover from such lost and / or index-shifted events and continue correlating subsequent sets of similar data packets represented by similar events. For example, as described herein above, the packet synchronizer 120 may identify that ID2(i) is equal to ID1(j) and ID2(k) and may correlate event E2(i) 402-2(i) with events E1(j) 402-1(j) and E2(k) 402-2(k).
[0156] Referring again to FIG.
[0157] Optionally, the packet synchronizer 120 establishes a common time base among at least some of the multiple receivers 104 based on the reception times of the correlated data packets.
[0158] For example, as described herein above, each of the receivers 104 may assign a receive time to each receive event corresponding to the reception of a particular data packet, where the receive time indicates the reception time of each data packet by each receiver 104. The packet synchronizer 120 may analyze the receive times assigned to correlated data packets, i.e., analyze correlated receive events by different receivers 104, and establish a common time base according to the receive times of the different receivers 104.
[0159] The packet synchronizer 120 may apply one or more techniques and / or implementations to establish the common time base. For example, the packet synchronizer 120 may establish the common time base based on timing information received at a receive event from a selected one of the receivers 104. In another example, the packet synchronizer 120 may establish the common time base based on a local timing mechanism (e.g., a clock) of the synchronization system 100.
[0160] After correlating similar receive events received from at least some of the receivers 104, the packet synchronizer 120 may calculate a time shift between receive times of correlated receive events corresponding to similar data packets received by at least some of the different receivers 104 and may appropriately identify relative shifts at each of the at least some of the different receivers 104 relative to a common time base. For example, assume that the packet synchronizer 120 has correlated between receive events received from a first receiver 104, a second receiver 104, and a third receiver 104. Further, assuming that the correlated receive event received from the first receiver 104 is assigned by the first receiver 104 with a receive time shifted by +1 clock (period) compared to the common time base, the correlated receive event received from the second receiver 104 may be assigned by the second receiver 104 with a receive time shifted by +2 clocks compared to the common time base, and the correlated receive event received from the third receiver 104 may be assigned by the third receiver 104 with a receive time shifted by -1 clock compared to the common time base. In such a case, the packet synchronizer 120 may determine that the clock of the first receiver 104 leads the clock of the second receiver 104 by one clock cycle and lags the clock of the third receiver 104 by two clock cycles.
[0161] Furthermore, upon successfully correlating between received events corresponding to similar data packets based on IDs calculated based on the content of the similar data packets (step 216), the packet synchronizer 120 may update and / or adjust the common time base as appropriate.
[0162] Optionally, after the common time base is established, the packet synchronizer 120 may correlate between receive events received from different receivers 104 according to the common time base. For example, according to the common time base, the packet synchronizer 120 may determine that a receive event received from a first receiver 104 is one clock cycle earlier than a data packet received from a second receiver 104. In such a case, the packet synchronizer 120 may correlate between one or more receive events received from the first receiver 104 and each receive event received from the second receiver 104 one clock cycle later.
[0163] By correlating the received events based on a common time base, the performance and / or accuracy of the content-based correlation may be significantly improved because the packet synchronizer 120 may need to analyze only a significantly smaller number of received events received from the first receiver 104 and the second receiver 104 that are close in time to each other as derived based on a time difference between the two receivers 104, such as a clock time difference. Furthermore, by analyzing only a significantly smaller number of received events received from the first receiver 104 and the second receiver 104 that are determined by the packet synchronizer 120 to be close in time based on a common time base, and thus potentially correlated, the computing resources consumed by the packet synchronizer 120 may be significantly reduced.
[0164] Furthermore, correlating data packets based on received events, and thus a common time base, may be particularly useful for similar data packets transmitted by the wireless transmitter 102 that have content that is not sufficiently unique compared to the content of the preceding and / or subsequent data packets transmitted by the wireless transmitter 102. Because the content of these insufficiently unique subsequent data packets is significantly similar, and possibly identical, the IDs calculated for these subsequent insufficiently unique data packets may also be identical and / or significantly identical. Because the subsequent data packets (events) may have identical IDs, the packet synchronizer 120 may not be able to distinguish between successive received events with indistinguishable IDs received from the receivers 104, and thus may not be able to correlate them based on ID (content). However, in such cases, the packet synchronizer 120 may correlate between data packets received from different receivers 104 based on a common time base, specifically based on the relative shift of the clock associated with the events received from each of the receivers 104, compared to the common time base.
[0165] According to some embodiments of the present invention, the packet synchronizer 120 may further establish a common sampling time base for at least some of the receivers 104 based on the common time base. The common sampling time base may define a sampling time and, optionally, an order for sampling each of the multiple wireless transmission channels used by the one or more wireless transmitters 102 to transmit the multiple data packets.
[0166] One or more of the receivers 104 may be configured to monitor and sample multiple wireless transmission channels. The multiple wireless transmission channels may include, for example, multiple different channels, e.g., multiple different networks (e.g., Wi-Fi, cellular, etc.) to which one or more of the wireless transmitters 102 are connected. In another example, the multiple wireless transmission channels may include multiple sub-channels and / or frequency bands that make up one or more multi-channel communication channels (links). Wi-Fi is one such exemplary multi-channel communication channel, built, for example, from 16 sub-channels that may be used to transmit data between peers. Another example of a multi-channel communication channel is Frequency Division Multiple Access (FDMA), which includes multiple frequency bands that may be assigned for use (communication) by one or more users.
[0167] Thus, each of the receivers 104 configured to monitor multiple wireless transmission channels may, for example, periodically, continuously, and / or similarly scan the multiple wireless transmission channels according to its local clock and sample, i.e., intercept and / or receive, data packets transmitted via the sampled wireless transmission channels at the sampling times.
[0168] However, since the receivers 104 are asynchronous with respect to each other, it is clear that the receivers 104 may also be asynchronous with respect to the sampling times of each of the multiple transmission channels. Thus, at the same time, at least some of the receivers 104 may monitor (scan) different wireless transmission channels, which may result in a situation where very few, and possibly no, data packets are received by the multiple receivers 104 via the same wireless transmission channel. This lack of synchronization may, of course, significantly reduce the efficiency, reliability, and / or robustness of the content-based correlation and synchronization of data packets performed by the packet synchronizer 120, since very few similar data packets may be identified. This limitation may necessarily depend on the number of different wireless transmission channels sampled by the receivers 104, and may increase as the number of sampled channels increases.
[0169] To overcome the sampling synchronization limitation, the packet synchronizer 120 may establish a common sampling time base that may define a time for sampling each of the multiple wireless transmission channels. In particular, the packet synchronizer 120 may establish the common sampling time base based on a common time established for the multiple receivers 104. The packet synchronizer 120 may then instruct one or more of the receivers 104 to sample the multiple wireless transmission channels according to the common sampling time base, specifically according to the deviation of each receiver 104 from the common time base.
[0170] The sampling order of the multiple wireless transmission channels may also be essential to properly synchronize the sampling of the multiple receivers 104. In some embodiments, the sampling order may be predefined and applied to the receivers 104. However, in some embodiments, the packet synchronizer 120 may further instruct the receivers to sample the multiple wireless transmission channels according to a common sampling order (scheme), which may be predefined and / or dynamically adjusted, adapted, and / or changed.
[0171] Thus, using a common sampling time base to instruct one or more of the receivers 104 to sample a particular wireless transmission channel at a particular sampling time, the packet synchronizer 120 may coordinately synchronize the sampling of the multiple wireless transmission channels by at least some of the multiple receivers 104. By synchronizing the receivers 104 to scan, monitor, and receive data packets over the same wireless transmission channel, the number of similar data packets received by the multiple receivers 104 may be significantly increased, which in turn may significantly improve the efficiency, reliability, and / or robustness of the packet synchronizer 120 in synchronizing and correlating similar data packets based on their content.
[0172] For example, assume that based on the common sampling base, the packet synchronizer 120 identifies that the sampling time of the particular wireless transmission channel by the first receiver 104 is two clock cycles earlier than the sampling time of the particular wireless transmission channel by the second receiver 104. In such a case, the packet synchronizer 120 may establish a common sampling time base, for example according to the clock of the first receiver 104, and instruct the second receiver 104 to sample the particular wireless transmission channel at the same time that the first receiver 104 samples the particular wireless transmission channel.
[0173] Furthermore, after a common time base is established, the packet synchronizer 120 may synchronize among the multiple receivers 104 according to (based on) the common time base. As previously described herein, the receivers 104 may use respective local clocks that are asynchronous with each other. Thus, by using a common time base, the packet synchronizer 120 may synchronize at least some of the receivers 104. Specifically, rather than actually synchronizing the receivers 104 with each other, the packet synchronizer 120 may synchronize data, i.e., receive data calculated for receive events received from the asynchronous receivers 104, e.g., one or more receive events indicative of the receive times of received data packets.
[0174] As shown in step 216, the packet synchronizer 120 may output the correlation ID combined with the associated received data, optionally along with their time of receipt, to one or more apparatus, such as a processing unit, device, system, server, cloud-based service, and / or platform, and / or the like, configured to process the received data associated with at least a portion of the correlation ID for one or more applications.
[0175] In particular, the devices may be configured to jointly process received data associated with at least a portion of the correlation ID, meaning that multiple received data sets associated with at least a portion of the correlation ID may be processed, applied, and / or used together for one or more applications.
[0176] Packet synchronizer 120 may output output data, i.e., correlation IDs and their associated received data, via one or more interfaces provided by I / O interface 110. For example, packet synchronizer 120 may transmit the output data to one or more remote devices via one or more of the network interfaces of I / O interface 110. In another example, packet synchronizer 120 may transmit the output data to one or more devices connected to one or more interconnect ports of I / O interface 110.
[0177] In some embodiments, the packet synchronizer 120 may execute the process 210 in real time to correlate and synchronize data packets transmitted by the wireless transmitter 102 that are received by at least some of the receivers 104. However, according to some embodiments, the receive events received from the receivers 104, including the ID of the received data packet associated with each received data packet, may be stored, for example in the synchronization system 100, for example in the storage 114. At any later point in time, the packet synchronizer 120 may restore, fetch, and / or retrieve the stored receive events and offline, i.e., retroactively correlate between receive events corresponding to similar packets based on their ID.
[0178] According to some embodiments of the present invention, an apparatus for receiving received data associated with a correlation ID includes an integration unit of a composite receiver including multiple receivers 104. The integration unit may be configured to aggregate received data associated with at least a portion of the correlation ID that may be converted into a correlated data packet in order to calculate, generate, and / or derive the transformed received data, e.g., the direction (AOA) from which the correlated data packet is received, i.e., the direction of the outgoing wireless transmitter 102 and / or the like.
[0179]
[0046] Referring now to FIG. 6, it can be seen that there is a schematic diagram of an exemplary composite receiver constructed from multiple asynchronous receivers and an integration unit configured to correlate between similar data packets transmitted by a wireless transmitter that are received by at least some of the receivers, in accordance with some embodiments of the present invention.
[0180] An exemplary composite receiver 600 may include multiple asynchronous receivers, such as receiver 104 and a merging unit 602 configured to correlate between similar data packets transmitted by a wireless transmitter, such as wireless transmitter 102, that are received by at least a portion of receiver 104.
[0181] The combined receiver 600 may be constructed using one or more architectures, structures, and / or deployments. For example, the combined receiver 600 may be constructed as a single package, a single rack, box, and / or the like that physically includes multiple receivers 104 and the integrated unit 602. However, the combined receiver 600 may employ a distributed architecture in which at least some of the receivers 104 and / or the integrated unit 602 are separate and mechanically uncoupled. In another example, the integrated unit 602 may be integrated, coupled, and / or attached to one or more of the receivers 104.
[0182] The integration unit 602 may receive the correlation IDs, their associated received data, and optionally associated received time data from a synchronization system such as synchronization system 100, and in particular from a packet synchronizer such as packet synchronizer 120 implemented by synchronization system 100.
[0183] Optionally, the composite receiver 600 and / or the integration unit 602 may integrate and / or include the synchronization system 100. Additionally, the integration unit 602 may communicate directly with the receivers 104 and may facilitate the synchronization system 100 such that the integration unit 602 may cause the packet synchronizer 120 to perform the process 210 for synchronizing and correlating similar data packets received by at least some of the receivers 104 based on the content of the received data packets.
[0184] The integration unit 602 may include one or more processors configured to execute one or more software modules and may further utilize one or more hardware modules available in the composite receiver 600. Thus, the integration unit 602 may execute one or more functional modules utilized by one or more software modules, one or more of the hardware modules, and / or a combination thereof. For example, the integration unit 602 may execute one or more functional modules for aggregating received data associated with at least a portion of a correlation ID to calculate, generate, and / or derive transformed received data, e.g., AOA, i.e., direction of the outgoing wireless transmitter 102 and / or the like.
[0185] The combined receiver 600 may output the transformed received data calculated by the integration unit 602, optionally together with an associated correlation ID, to one or more apparatuses, devices, services, and / or the like configured to use the transformed received data for one or more applications. For example, the combined receiver 600 may provide (e.g., transmit) the transformed received data to one or more locator systems configured to determine and / or calculate a position of the wireless transmitter 102.
[0186] According to some embodiments of the present invention, an apparatus for receiving received data associated with a correlation ID includes a locator system configured to determine and / or calculate a location of the wireless transmitter 102 based on the received data, specifically the correlated received events, computed by the receiver 104 and associated with at least a portion of the correlation ID.
[0187] Optionally, the locator system may integrate and / or include the synchronization system 100. Additionally, the locator system may communicate with the receivers 104, and the integration unit 602 may facilitate the synchronization system 100 such that the packet synchronizer 120 may execute the process 210 for synchronizing and correlating similar data packets received by at least some of the receivers 104 based on the content of the received data packets. The locator system may further communicate with one or more composite receivers, such as the composite receiver 600, to receive received data of correlated similar data packets, specifically converted received data generated by the composite receiver 600 based on correlation IDs of similar data packets received by the multiple receivers 104 of the composite receiver 600.
[0188] Each of the correlated receive events corresponding to a similar data packet may be received from a different one of the receivers 104 and thus associated with each received data that is dependent on the position of the wireless transmitter 102 relative to each receiver 104, e.g., each RSSI, each AOA, and / or the like.
[0189] The locator system may apply one or more methods, techniques, and / or algorithms known in the art to calculate the position of the wireless transmitter 102 based on the received data calculated and received from the receiver 104. For example, the locator system may use one or more triangulation algorithms that use respective AOAs associated with correlated receive events corresponding to similar data packets to calculate the position of the wireless transmitter 102.
[0190] Optionally, the locator system may receive transformed received data from one or more combined receivers 600 and may be further configured to calculate a position of the wireless transmitter 102 based on the transformed received data, such as the direction of the wireless transmitter 102 and / or similar directions as known in the art.
[0191] The position of the wireless transmitter 102 calculated by the locator system may be a relative position and / or an absolute position.
[0192] If the actual location (geolocation) of the receiver 104 is not available to the locator system, the locator system may be able to calculate only the relative location of the wireless transmitter 102 with respect to the receiver 104, specifically with respect to at least some of the receivers 104 that received the correlated receive events used to calculate the location of the wireless transmitter 102. Such relative location calculations may be very efficient for calculating relative locations between multiple separate wireless transmitters 102. For example, the relative location may be calculated between two wireless transmitters 102 associated with two different vehicles. In another example, the relative location may be calculated between two separate wireless transmitters 102, one associated with a vehicle and the other associated with a pedestrian. The locator system may first calculate the relative location of each of the wireless transmitters 102 with respect to at least some of the receivers 104, specifically with respect to the receivers 104 that received similar data packets and generated respective receive events that were successfully correlated together by the locator system. The locator system may then calculate the relative position between the two wireless transmitters 102 based on the relative positions of the two wireless transmitters 102 compared to the receiver 104 .
[0193] If the actual positions (geolocations) of the receivers 104 are available to the locator system, the locator system may calculate the absolute position of the wireless transmitter 102 based on the absolute receiver positions of at least some of the receivers 104 that received correlated receive events corresponding to similar data packets.
[0194] According to some embodiments of the present invention, at least a portion of the receiver, particularly one capable of calculating AOA received data used by a locator system to determine the location of wireless transmitter 102, may be calibrated according to the known location of wireless transmitter 102. Such a receiver, referred to as an AOA-enabled receiver described later in this specification, may include, for example, composite receiver 600. In another example, an AOA-enabled receiver may include one or more receivers 104 that include an antenna array and thus are capable of calculating an AOA for data packets received from wireless transmitter 102, as known in the art.
[0195] The position of the wireless transmitter 102 may be provided externally to one or more of the locator system and / or AOA-enabled receivers using one or more methods and / or techniques. For example, one or more GPS sensors may be coupled (e.g., embedded, mounted, attached, etc.) with the wireless transmitter 102 and report the position (location), specifically the geolocation, of the wireless transmitter 102. The position of the wireless transmitter 102, which may be recorded by the wireless transmitter 102 itself and / or by one or more tracking systems configured to track the wireless transmitter 102, may be provided (e.g., transmitted) to one or more of the locator system and / or AOA-enabled receivers. In another example, the position, e.g., map coordinates and / or similar location of a waypoint where the wireless transmitter 102 is currently located, may be reported to one or more of the locator system and / or AOA-enabled receivers.
[0196] Based on the known location of the wireless transmitter 102, which may be referred to as the “ground truth,” combined with received data calculated by the AOA-enabled receiver, one or more of the locator system and / or AOA-enabled receivers may calibrate the receiver 104 with that ground truth location.
[0197] For example, assume that a locator system suitably supported by AOA-enabled receivers is configured to determine the location of wireless transmitter 102 based on the AOA. In such a case, at least some of the AOA-enabled receivers, specifically those AOA-enabled receivers that are within range of wireless transmitter 102, may receive wireless signals transmitted by wireless transmitter 102 while located at known locations. Each of the AOA-enabled receivers may then calibrate itself according to the AOA of each of the received wireless signals transmitted by wireless transmitter 102 compared to the known location of wireless transmitter 102.
[0198] Additionally, the position of the wireless transmitter 102 may be known at multiple locations, thus providing multiple "ground truth" points. For example, the wireless transmitter 102 may travel between multiple known locations at which it is at least temporarily stationary. In another example, multiple wireless transmitter 102 locations may be known, specifically, locations at which the wireless transmitter 102 is at least temporarily stationary. Using multiple known (ground truth) locations to calibrate an AOA-enabled receiver may significantly improve calibration accuracy.
[0199] Additionally, one or more existing services, systems, platforms, and / or infrastructures may be used to calibrate the AOA-enabled receiver. For example, the calibration may be performed according to known locations of one or more vehicles in one or more managed fleets operated by an operator. Such managed fleets may include, for example, one or more public transportation services including multiple vehicles, such as buses, trains, trams, taxis, and / or the like. In another example, the managed fleets may include autonomous vehicle services, such as self-rental car services, self-rental scooter services, self-rental bike services, and / or the like.
[0200] Each vehicle in such a managed fleet typically includes one or more GPS sensors, thus facilitating a means for establishing the vehicle's known location, and one or more mobile data network modules, such as wireless transmitter 102, for transmitting wireless signals that can be used for calibration. Additionally, at least some of the vehicles in the managed fleet may be at least temporarily stationary for at least a predetermined period of time sufficient to obtain a location accurate enough for calibration, e.g., parked, unused, stopped at a bus stop, stopped at a gas station, stopped at a charging post, and / or the like. While the vehicles are stationary, GPS coordinates may be accumulated, and an average may be calculated for the accumulated GPS coordinates vehicle to improve the accuracy of the vehicle's known location to within a few meters. Additionally, each vehicle in the fleet may be assigned a unique ID to identify each vehicle in the plurality of fleets.
[0201] The locations of all vehicles, particularly while stationary, may be shared and / or provided to AOA enabled receivers, e.g., transmitted over one or more networks, such as over the Internet using one or more data sharing protocols and / or any other predefined data protocols known in the art, to the AOA enabled receivers. Additionally, while it is possible for all vehicles to transmit their locations to AOA enabled receivers, in some deployments the locations of all vehicles may be provided to only a limited number of AOA enabled receivers, or may be provided to a single AOA enabled receiver that may optionally be distributed while fixing known vehicle locations to other receivers 104.
[0202] One or more of the AOA-enabled receivers, particularly those within transmission range of one or more stationary vehicles in the fleet, may receive radio signals transmitted from each stationary vehicle and calibrate based on reception data calculated for the received radio signals compared to the known location of each stationary vehicle identified by its ID. The AOA-enabled receivers may calibrate against ground truth, for example, applying one or more calibration schemes described herein above based on AOA and / or the like.
[0203] Optionally, by sharing the determined locations of the fleet (described in process 210), the synchronization system 100 using AOA-enabled receivers may help return to the operator of the fleet the determined locations of one or more of the fleet, allowing the operator to track those vehicles more accurately. The synchronization system 100 may provide the operator of the fleet with a determined location for one or more of the fleet, for example, for transmission continuously, periodically, and / or upon request by the operator. This may allow an alternative tracking location for the operator to track the fleet, which may help overcome limitations of the primary tracking schemes, for example, weak and / or distorted GPS signals, which may significantly reduce the accuracy, reliability, and / or robustness of GPS-based location tracking. Furthermore, the location determined by the locator system for one or more of the fleet in operation (moving) may be significantly more accurate than GPS tracking, which is very limited for moving objects. The reason is that GPS tracking is based on the accumulation of GPS coordinates, and therefore only a few GPS coordinate readings, typically a single GPS coordinate reading, for a moving object, so the readings are not very accurate.
[0204] The description of various embodiments of the present invention is presented for illustrative purposes, but is not intended to be exhaustive or limiting of the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used in this specification is chosen to best explain the principles of the embodiments, practical applications, or technical improvements over the art found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0205] It is anticipated that during the life of the patent which matures from this application, many related systems, methods, and computer programs will be developed, and the scope of the terms wireless transmission techniques, wireless transmission protocols, and antenna arrays is intended to include, a priori, all such new technologies.
[0206] As used herein, the term "about" means ±10%.
[0207] The terms "comprises," "comprising," "includes," "including," "having," and their cognates mean "including but not limited to." This term encompasses the terms "consisting of" and "consisting essentially of."
[0208] The phrase "consisting essentially of" means that the composition or method may include additional components and / or steps, but only if the additional components and / or steps do not materially alter the basic and novel characteristics of the claimed composition or method.
[0209] As used herein, the singular forms "a," "an," and "the" include plural referents unless the context clearly indicates otherwise. For example, the term "a compound" or "at least one compound" can include multiple compounds, including mixtures thereof.
[0210] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment described as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments and / or to exclude the incorporation of features from other embodiments.
[0211] As used herein, the word "optionally" is used to mean "provided in some embodiments and not provided in other embodiments." Any particular embodiment of the present invention may include more than one "optional" feature, unless such features are inconsistent.
[0212] Throughout this application, various embodiments of the invention may be presented in a range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of the invention. Thus, the description of a range should be considered to specifically disclose all possible subranges as well as individual numerical values within that range. For example, description of a range such as 1 to 6 should be considered to specifically disclose subranges such as 1 to 3, 1 to 4, 1 to 5, 2 to 4, 2 to 6, 3 to 6, etc., and individual numerical values within that range, e.g., 1, 2, 3, 4, 5, and 6. This applies regardless of the breadth of the range.
[0213] Whenever a numerical range is given herein, it is meant to include any recited numbers (fractional or integer) within the given range. The phrases "ranging / ranges between" a first and a second designation number, and "ranging / ranges from" a first designation number "to" a second designation number, are used interchangeably herein and are meant to include the first and second designation numbers and all fractional and integer numbers therebetween.
[0214] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment described as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments and / or to exclude the incorporation of features from other embodiments.
[0215] As used herein, the word "optionally" is used to mean "provided in some embodiments and not provided in other embodiments." Any particular embodiment of the present invention may include more than one "optional" feature, unless such features are inconsistent.
[0216] It is also understood that certain features of the invention that are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention that are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination, or as appropriate in any other described embodiment of the invention. Certain features described in the context of various embodiments are not to be regarded as essential features of those embodiments, unless the embodiment cannot function without those elements.
[0217] While the invention has been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications, and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications, and variations that fall within the spirit and broad scope of the appended claims.
[0218] It is the intention of the applicant that all publications, patents, and patent applications mentioned herein may be incorporated herein by reference in their entirety as if each individual publication, patent, or patent application was specifically and individually indicated to be incorporated herein by reference. Furthermore, citation or identification of any reference in this application should not be construed as an admission that such reference is available as prior art to the present invention. To the extent that section headings are used, they should not be construed as necessarily limiting. Additionally, any priority documents of this application are hereby incorporated herein by reference in their entirety.
Claims
1. 1. A packet synchronisation apparatus for synchronising data packets received by a separate asynchronous receiver from a wireless transmitter, comprising: a network interface configured to asynchronously receive a plurality of identifiers (IDs), each ID associated with a respective data packet from a plurality of data packets transmitted by at least one wireless transmitter over at least one wireless transmission channel, the plurality of data packets being received by a plurality of separate asynchronous receivers that do not share a common time base, each of the plurality of IDs associated with a respective received data calculated by one of the plurality of receivers; a processor configured to correlate similar data packets received by at least some of the plurality of receivers based on matching IDs; an output interface configured to output the correlated IDs together with received data associated with the correlated IDs to at least one external device configured to jointly process received data associated with at least a portion of the correlated IDs; A packet synchronizer comprising:
2. 2. The packet synchronizer of claim 1, wherein the similar correlated data packets correspond to at least one identical data packet transmitted by the at least one wireless transmitter that is received by the at least some of the receivers.
3. 2. The packet synchronizer of claim 1, wherein the received data associated with each received data packet comprises at least a received signal strength indicator (RSSI) value of the respective received data packet.
4. 2. The packet synchronizer of claim 1, wherein each of the receivers is further configured to associate each received data packet with a time of arrival (TOA) of each of the respective data packets.
5. 2. The packet synchronizer of claim 1, wherein the IDs of at least some of the plurality of data packets are unique in time with respect to preceding and subsequent data packets transmitted by the at least one wireless transmitter during at least a predetermined period of time.
6. 2. The packet synchronizer of claim 1, wherein the ID of each of the plurality of data packets is calculated based at least in part on the content of the respective data packet.
7. 7. The packet synchronizer of claim 6, wherein the at least a portion of each of the data packets comprises at least one field of each of the data packets, the at least one field being defined by a communications protocol used to transmit each of the data packets over the at least one wireless transmission channel.
8. 8. The packet synchronization device of claim 7, wherein the ID of the data packet is further calculated based on at least one network parameter of the at least one wireless transmission channel, the at least one network parameter comprising one or more of a network ID, a service set identifier (SSID), a network type, a network channel, and a network sub-channel.
9. 8. The packet synchronization device of claim 7, wherein the ID of the data packet is further calculated based on a device ID of the at least one wireless transmitter, the device ID being extracted from the at least one of the plurality of data packets to associate the at least one data packet with the at least one wireless transmitter.
10. 2. The packet synchronization device of claim 1, wherein the IDs of at least some of the plurality of data packets are calculated using at least one arbitrary-length content mapping function applied to at least some of the respective data packets, the at least one arbitrary-length content mapping function being selected from the group consisting of a hash function, a cryptographic hash function, and a CRC function.
11. The packet synchronizer of claim 1 , wherein the processor is further configured to establish a common time base among the multiple receivers based on reception times of the at least some of the correlated data packets.
12. 12. The packet synchronizer of claim 11, wherein at least a portion of the plurality of data packets are correlated based on the common time base.
13. The packet synchronizer of claim 11 , wherein at least a portion of the plurality of receivers are synchronized based on the common time base.
14. The packet synchronization device of claim 11, wherein the processor is further configured to establish a common sampling time base for at least some of the plurality of receivers based on the common time base, the common sampling time base defining a sampling time for each of a plurality of wireless transmission channels used by the at least one wireless transmitter to transmit the plurality of data packets.
15. 2. The packet synchronization apparatus of claim 1, wherein the at least one external device comprises an integration unit of a composite receiver comprising the plurality of receivers, the integration unit configured to aggregate the received data associated with the correlated IDs to generate transformed received data.
16. 2. The packet synchronization device of claim 1, wherein the at least one external device comprises a locator system configured to calculate a location of the at least one wireless transmitter relative to the at least some receivers based on the received data associated with the correlated IDs.
17. 17. The packet synchronizer of claim 16, wherein the calculated position of the at least one wireless transmitter is a relative position with respect to the at least some receivers.
18. 17. The packet synchronizer of claim 16, wherein the calculated position of the at least one wireless transmitter is an absolute position calculated based on predetermined positions of the at least some receivers.
19. A packet synchronization device as described in claim 16, wherein at least one of the plurality of receivers is calibrated according to a known position of the wireless transmitter.
20. 1. A packet synchronization method for synchronizing data packets received by separate asynchronous receivers from a wireless transmitter, comprising: asynchronously receiving, via a network interface, a plurality of identifiers (IDs), each ID associated with a respective data packet from a plurality of data packets transmitted by at least one wireless transmitter over at least one wireless transmission channel, the plurality of data packets being received by a plurality of separate asynchronous receivers that do not share a common time base, each of the plurality of IDs being associated with a respective received data calculated by one of the plurality of receivers; correlating, by a processor, similar data packets received by at least some of the plurality of receivers based on matching IDs; outputting the correlated IDs together with received data associated with the correlated IDs via an output interface to at least one external device configured to jointly process the received data associated with at least a portion of the correlated IDs; A packet synchronization method comprising: