Application control for ranging

By exposing the ranging request API in the operating system, allowing the application of the operating characteristics of the specified ranging, and the operating system selects the appropriate ranging mechanism, the problem that the ranging process in the prior art is difficult to meet application needs, and a flexible and efficient ranging process is achieved.

CN120153673APending Publication Date: 2025-06-13GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280101780.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-11-21
Publication Date
2025-06-13

AI Technical Summary

Technical Problem

In the process of distance measurement, it is difficult for the prior art to dynamically select appropriate distance measurement mechanisms according to the application's needs, resulting in the inability to meet the application's different operating characteristics requirements for distance measurement.

Method used

By exposing the ranging request API in the operating system of the device, the operating characteristics of the specified ranging are allowed to be applied, and the operating system selects the appropriate mechanism from a number of available ranging mechanisms in response to the application's ranging request.

Benefits of technology

It realizes dynamic selection of the ranging mechanism according to the needs of the application, and meets the different operating characteristics requirements of the application for ranging, such as power budget, safety, accuracy and delay, improving the flexibility and efficiency of the ranging process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120153673A_ABST
    Figure CN120153673A_ABST
Patent Text Reader

Abstract

Methods and systems for application control ranging. An operating system of a device receives a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, and specifies one or more operating characteristics that the application requests the ranging to have. The operating system then selects a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application. Further, based at least on the selection, the operating system causes the device to implement the selected ranging mechanism in response to the ranging request.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] An electronic device may be equipped with ranging technology that enables the device to determine how far away another device is located from the device and, possibly, where the other device is located (e.g., the orientation of the distance). Such ranging technology can help facilitate various useful features.

[0002] For example, ranging can help facilitate meetings between people, such as helping to guide users towards each other. More specifically, the device of a first user may apply ranging to determine how far away the device of a second user is located and to determine the angle at which the orientation of the device of the second user is relative to the device of the first user. Based on the result of the ranging, the device of the first user can then present a graphical depiction of the distance and direction to the device of the second user on a display for the first user to see, and then the first user can conveniently use the graphical depiction as a basis for moving closer to the second user.

[0003] As another example, ranging can help facilitate the unlocking of a security system. For example, a user's device may include a digital key that enables unlocking a security system such as a car or a house and is configured to unlock the security system only when the security system is close enough to the user's device (such as when the security system is located within a predefined threshold short distance from the user's device). In this case, the user's device may apply ranging to determine how close the security system is to the user's device and, in response to determining from the ranging that the security system is close enough to the user's device, may then allow the use of the digital key to unlock the security system.

[0004] Other examples are possible. Summary of the Invention

[0005] A representative device may be equipped with multiple ranging mechanisms that the device may use to perform ranging between the device and a given other device. For example, the device may include multiple radios, circuitry, and / or other modules, each configured to operate according to a corresponding air interface protocol that the other device may also use. Further, the device may include one or more antennas that the device may use as a basis for participating in ranging using a given such protocol.

[0006] Such a device may include an operating system (e.g., Android, chromeOS, Windows, or Linux among other possibilities), and may run one or more applications configured to interact with the operating system to trigger ranging. For example, the operating system may expose an application programming interface (API) that defines a ranging request that can be used to trigger and adapt the ranging to an identifier associated with the other device. Thus, an application on the device may make an API call for the ranging request to the operating system, and the operating system may respond to the API call by participating in the requested ranging. For example, in response to a ranging request from an application, the operating system may first establish a data connection with the other device, exchange ranging capabilities and / or other parameters with the other device over the data connection, and then select and invoke a supported ranging mechanism to determine the distance and / or relative angle between the device and the other device.

[0007] This process can isolate the application from the knowledge of the underlying ranging mechanism that the operating system invokes to perform the requested ranging. For example, the API call may not specify which ranging mechanism the operating system should invoke, the operating system may not inform the application which ranging mechanism the operating system invokes, and the application may not know which ranging mechanism the operating system invokes.

[0008] However, the API call can enable the application to exert some control over the selection of the ranging mechanism by specifying one or more operational characteristics that the application requests the ranging to have. For example, the API call may allow the application to specify not only the identity associated with the other device as an argument, but also one or more operational characteristics that the application requests the ranging to have as an argument. Examples of such operational characteristics may include but are not limited to (i) the power budget of the ranging, (ii) the security of the ranging, (iii) the accuracy of the ranging, and (iv) the latency of the ranging. Given that the application specifies one or more such operational characteristics that the application requests the ranging to have, the operating system can then select the ranging mechanism at least based on determining that: the selected ranging mechanism will have the one or more operational characteristics. For example, the operating system may select the ranging mechanism based on determining that: the selected ranging mechanism will meet or exceed the specified operational characteristics.

[0009] Enabling the application to exert this type of control over the operating system's selection of the ranging mechanism can usefully allow the selection and use of a ranging mechanism that takes into account one or more requirements, expectations, or scenarios of the application.

[0010] Thus, in one aspect, a method for application control of ranging is disclosed. The method includes receiving a ranging request from an application on a device into the operating system of the device, the ranging request requesting ranging between the device and another device, and the ranging request specifying one or more operating characteristics that the application requests the ranging to have. Additionally, the method includes the operating system selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application. Further, the method includes the operating system causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selection.

[0011] In another aspect, a device is disclosed. The device includes a processor, a non-transitory data storage device, and an operating system stored in the non-transitory data storage device and executable by the processor and defining program instructions executable by the processor to perform operations. The operations include receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, and the ranging request specifying one or more operating characteristics that the application requests the ranging to have. Additionally, the operations include selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application. Further, the operations include causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selection.

[0012] In yet another aspect, a non-transitory computer-readable medium storing defined instructions is disclosed, the instructions executable by a processor of a device to cause the device to perform operations such as those described above.

[0013] In still another aspect, a system is disclosed that includes various components for performing each of the operations described herein.

[0014] These and other aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description and, where appropriate, referring to the drawings. Further, it should be understood that the descriptions provided in this summary and the following are intended to illustrate the invention by way of example only and not by way of limitation. BRIEF DESCRIPTION OF THE DRAWINGS

[0015] Figure 1 is an illustration of example distance and angle measurements between two example devices.

[0016] Figure 2 is a simplified block diagram of an example device.

[0017] Figure 3It is an example illustration of mapping data related to operation characteristics of one or more application requests and ranging mechanisms retrieved in response to ranging requests.

[0018] Figure 4 It is a flowchart depicting an example method. Detailed implementation

[0019] Example methods, apparatuses, and systems are described herein. However, it should be understood that any disclosed embodiment is not necessarily to be construed as more preferred or advantageous than other embodiments, unless so stated. Further, it should be understood that variations from the specifically disclosed arrangements and processes are possible. For example, various disclosed entities, components, connections, operations, and other elements can be added, omitted, distributed, replicated, relocated, reordered, combined, or otherwise changed. Additionally, it should be understood that various disclosed technical operations can be at least partially implemented by a processing unit programmed to perform the operation or programmed to cause one or more other entities to perform the operation. Example ranging between apparatuses

[0020] As described above, ranging between apparatuses can involve determining the distance between the apparatuses and / or determining the angular orientation of one of the apparatuses relative to the other. For example, given two apparatuses D1 and D2, ranging can involve determining the distance between the physical locations of D1 and D2 and / or determining the angular orientation defined by the physical location and orientation of one of the apparatuses relative to the other in Cartesian or polar coordinates. Figure 1 An example of the distance and angular orientation between apparatuses D1 and D2 is generally shown.

[0021] This disclosure assumes that a given apparatus D1 will participate in ranging between it and another apparatus D2. In such an arrangement, at least one of the two apparatuses can be in motion, while the other apparatus can be in motion or can be stationary. For example, D1 can be in motion while D2 is stationary, such that D1 moves relative to D2. Alternatively, D1 can be stationary while D2 is in motion, such that D2 moves relative to D1. In either case, D1 can participate in ranging to determine the distance between D1 and D2 and / or the angular orientation of D2 relative to D1.

[0022] Apparatuses D1 and D2 can take any of various forms. Examples include but are not limited to mobile phones, tablet computers, laptop computers, gaming devices, wearable devices, package tracking devices, livestock tracking devices, appliances, wireless-equipped key fobs, and Internet of Things (IoT) or other machine-to-machine (M2M) devices.

[0023] Device D1 may have a user interface, such as a display screen or other interface, through which the device can be configured to present the results of its ranging. For example, D1 can be configured to present on the display screen the numerical value or other indication of the determined distance from it to D2. Alternatively or additionally, D1 can be configured to present on the display screen an arrow determined to be pointing to D2, which can enable the user of D1 to approach the location of D2 (if applicable). Alternatively, the results of the ranging can be provided to another entity for presentation and / or processing.

[0024] Further, device D1 can repeat the ranging. For example, D1 can periodically determine its distance from D2 and / or the orientation angle of D2 relative to D1, and can present the ranging results. Further, as the distance between D1 and D2 decreases (i.e., as D1 moves closer to D2, and / or as D2 moves closer to D1), D1 can change the periodicity and / or form of the ranging, such as by ranging more frequently or with greater granularity. Examples of ranging mechanisms

[0025] As described above, various ranging mechanisms can be possible. Among other possibilities, these ranging mechanisms can utilize wireless signal transmission communication between D1 and D2 and / or can involve communication with one or more centralized positioning systems. Further, each ranging mechanism can have corresponding operating characteristics, among other possibilities, such as corresponding power budgets, corresponding security, corresponding accuracy, corresponding latency, and corresponding capabilities in establishing distance and / or establishing angular orientation.

[0026] For some ranging mechanisms, D1 and D2 can initially enter into a data communication session with each other (e.g., via peer-to-peer wireless communication, and / or via WiFi, cellular, or other network communication). Through this data communication session, D1 and D2 can then exchange data to facilitate the calculation of distance and / or angular orientation. For example, D1 and D2 can exchange data about the ranging mechanism they will use and can agree on the wireless channel through which they will participate in ranging signal transmission with each other. Further, D1 and D2 can exchange information about wireless signal transmission with each other.

[0027] Ranging mechanisms for determining the distance between D1 and D2 based on wireless signal transmission between D1 and D2 can take various forms, among other possibilities, by utilizing the signal strength and / or signal propagation time between D1 and D2, and / or by utilizing the corresponding positioning of D1 and D2.

[0028] Regarding distance determination based on signal strength, for example, if D2 broadcasts a signal distinguishable by D1, D1 can receive the signal, measure the received strength of the signal as a Received Signal Strength Indicator (RSSI) value, and convert the RSSI value into a distance between the devices. D1 can use information about the power level of D2's broadcast and / or knowledge of the relative distances corresponding to various RSSI levels as a basis for converting the RSSI into a distance. For example, if an RSSI value of -50 decibels per milliwatt (dBm) represents a distance of 1 meter (1m) between the devices, and if each decrease of -6 dBm in RSSI represents a doubling of the distance between the devices, then D1 can assume that an RSSI value of -56 dBm represents a distance of 2m between the devices, and D1 can assume that an RSSI of -72 dBm represents a distance of 4m between the devices, and so on. Alternatively, if D1 broadcasts a signal distinguishable by D2, D2 can measure the RSSI of the signal and report the measured RSSI to D1, and then D1 can convert the RSSI into a distance between the devices, or D2 can convert the RSSI into a distance value and report the distance value to D1.

[0029] This ranging mechanism based on signal strength or other ranging mechanisms can be relatively simple and fast, and have a relatively low power budget. However, among other problems, they may suffer from errors and inaccuracies due to signal reflections and interference from obstacles. Further, this type of ranging by itself will not allow determination of the angular orientation between the devices.

[0030] On the other hand, distance determination based on signal propagation time can involve wirelessly sending one or more pulses (e.g., frames) between D1 and D2, measuring the time of flight for each such transmission, and using the speed of light as a basis for converting the measured time of flight into a measurement of the distance between the devices. For example, ranging can involve separately calculating the time of flight for each of a plurality of such pulses sent in quick succession from D1 to D2, calculating the average of those times of flight, and converting the calculated average time of flight into a determined distance between the devices. Alternatively, ranging can involve separately calculating the time of flight for each such pulse, converting the calculated time of flight into a distance value, and calculating the average of the calculated distance values as the determined distance between the devices.

[0031] For example, D1 can send one or more timestamped pulses to D2, and for each pulse, D2 can record its reception time, and calculate the time of flight as the difference between the transmission time and the reception time and report this time of flight back to D1. Taking into account the speed of light, D1 can then convert the calculated time of flight of D2 into the distance between D1 and D2, possibly taking into account any processing, encoding, and / or other non-distance delays. Alternatively, for each pulse, D2 can record its reception time, calculate the time of flight, convert the calculated time of flight into the distance between D1 and D2, and report the calculated distance to D1. Further, such calculations can be averaged over a set of such pulses.

[0032] Alternatively, in a one-sided two-way ranging process, D1 can send one or more timestamped polling pulses to D2, and for each polling pulse, D2 can send a corresponding response pulse to D1, and D1 can calculate the round-trip time (RTT) (e.g., round-trip delay (RTD)) as the total time from when D1 sends the polling pulse to when D1 receives the response pulse (again possibly taking into account any processing, encoding, and / or other non-distance delays). Then, D1 can consider half of this RTT as a measurement of the time of flight between D1 and D2 and can convert this time of flight into the distance between D1 and D2.

[0033] Alternatively, in a two-sided two-way ranging process, D1 and D2 can perform a combination of two one-sided two-way ranging processes. For example, D1 can send one or more timestamped polling pulses to D2, and for each polling pulse, D2 can send both a corresponding response pulse and its own timestamped polling pulse to D1, for which D1 can respond to D2 with its own corresponding response pulse. For each such exchange, D1 can then calculate the RTT for D1's poll of D2 and D2's corresponding response, while D2 can calculate and report to D1 the RTT for D2's poll of D1 and D1's corresponding response. Then, D1 can use the combination of those two RTT calculations (again taking into account any processing, encoding, and / or other non-distance delays) as a basis for calculating the time of flight between D1 and D2 and can convert this time of flight into the distance between D1 and D2.

[0034] These ranging mechanisms based on signal propagation time or other ranging mechanisms may be more accurate than ranging based on signal strength, but may also require tightly synchronized clocks, which may or may not be possible in some cases. Further, due to their need for additional wireless communication and their additional processing, they may have an increased power budget. Additionally, these types of ranging may not themselves allow determination of the angular orientation between devices.

[0035] On the other hand, distance determination based on the respective positions of D1 and D2 can involve determining the respective positions of D1 and D2 in a common coordinate system and calculating the difference between those determined positions as the determined distance between the devices.

[0036] Determining the respective positions of devices D1 and D2 in a common coordinate system itself can take various forms. For example, either device or each device can utilize a Global Navigation Satellite System (GNSS) such as the Global Positioning System (GPS), thereby using a GNSS receiver to receive time-stamped signals from each of a plurality of GNSS satellites at known orbital positions and performing triangulation or trilateration based on those signals to determine its geographical location. As another example, either device or each device can utilize cellular, WiFi, or other such broadcast signals, thereby using a receiver to receive signals from a plurality of base stations or access nodes at known geographical positions and performing triangulation or trilateration based on those signals to determine its geographical location.

[0037] If each device has determined its respective position, one device can report its determined position to the other device, and that other device can compare that position with its own determined position to calculate the distance between the devices. For example, D2 can report the determined position of D2 to D1, and then D1 can calculate the distance between D1 and D2 as the difference between the determined position of D1 and the determined position of D2. This form of distance measurement can also facilitate determining the angular orientation of D1 with respect to D1.

[0038] This distance measurement mechanism or other distance measurement mechanisms involving determining and comparing the respective positions of D1 and D2 may be even more accurate than some other distance measurement mechanisms, but may have an additional increased power budget and latency due to their use of positioning mechanisms such as, for example, GNSS or cellular radio communication. On the other hand, these types of distance measurements can support not only distance determination but also angular orientation determination.

[0039] Other distance measurement mechanisms for determining the angular orientation of D2 with respect to D1 can also take various forms, also utilizing triangulation, trilateration, and / or other techniques. For example, the phase difference of arrival technique can be used to determine the angular orientation of D2 with respect to D1.

[0040] The angle of the position of D2 with respect to D1 can be measured with respect to a defined plane at D1. One way to measure this angle is to use a multi-antenna array (e.g., a linear antenna array) at D1, where the antennas are arranged in a plane (e.g., spaced apart from each other by at least the carrier wavelength) ) and the point at issue is the phase difference of a given signal received at each antenna of the plane. That is, when D1 receives a pulse signal from D2, D1 can determine the phases of the signals received separately at each antenna, and based on a comparison of those phases, can determine the direction of arrival of the signal relative to the plane of the antenna array (e.g., from 0 degrees to 180 degrees). If D1 determines that the phases of the signals at each antenna are the same, D1 can infer that D2 is oriented at 90 degrees to the plane. However, if D1 determines that there is a difference between the phases at each antenna, D1 can use that phase difference as a basis for calculating the angle of arrival of the signal from D2 and thus calculating the orientation of D2 relative to the plane. Given this determination of the orientation of D2 and given the determination of the distance between D1 and D2, D1 can then further determine the position of D2 relative to D1 defined in Cartesian or polar coordinates.

[0041] This type of ranging mechanism for determining the angle of orientation of D2 relative to D1 or other such ranging mechanisms can be relatively fast and also have a relatively low power budget. Further, the level of accuracy of this type of ranging can depend on factors such as, for example, the carrier frequency used for signal transmission and / or, for example, the design of the antenna array. Further, while this type of ranging mechanism may not itself determine distance, it can be combined with one or more other mechanisms to facilitate both distance determination and angle of orientation determination. For example, distance can be calculated based on signal strength and / or signal delay while also measuring the angle based on the phase difference.

[0042] As described above, ranging for determining the distance between D1 and D2 and / or the angular orientation of D2 relative to D1 can also or alternatively involve communication with a centralized positioning system. For example, D1 can participate in network communication with the system, which is configured to calculate or otherwise determine the respective positions of D1 and D2 in a common coordinate system and report the associated ranging information to D1. For example, D1 can send a request to the system to range between D1 and D2 via WiFi, cellular, or other connection. After authorizing D1, the system can then interact with both D1 and D2 to determine their respective positions, possibly by using GNSS or other technologies. The system can then report these determined positions to D1 in response, and D1 can compare these positions to determine the distance and / or angular orientation, or the system can determine and report the distance and / or angular orientation to D1.

[0043] This type of ranging can be highly accurate, especially when it involves the use of GNSS, etc. However, this type of ranging may also have a relatively high latency and power budget due to its increased communication with the centralized system and possibly its use of GNSS and / or one or more other such technologies.

[0044] Among other examples, the example ranging mechanisms discussed above may differ in their operational characteristics based on their particular implementations.

[0045] For example, the operational characteristics of a ranging mechanism may vary based on the air interface protocol or wireless communication technology used for ranging. For example, ranging using some form of WiFi or Bluetooth signal transmission may have relatively low accuracy, while ranging using ultra-wideband (UWB) signal transmission (which uses very narrow pulses and operates at very high frequencies and wide spectral ranges) may have much higher accuracy. Further, ranging using some forms of Bluetooth (e.g., Bluetooth Low Energy (BLE), with RSSI measurements) may have lower accuracy than ranging using other forms of Bluetooth (e.g., Bluetooth High Accuracy Distance Measurement (HADM)). Still further, ranging by interacting with a centralized positioning system may be highly accurate.

[0046] Still further, these or other ranging mechanisms may differ in their security levels, such as their ability to help prevent relay or man-in-the-middle attacks (e.g., spoofing). For example, some forms of UWB-based ranging may provide a very high level of security compared to WiFi- or Bluetooth-based ranging. Further, ranging by interacting with a secure centralized positioning system (such as a cellular carrier's mobile positioning system, etc.) may also be highly secure.

[0047] In addition, some ranging mechanisms may differ in their power budgets based on their security levels, accuracy levels, and / or other operational characteristics. For example, one type of ranging with variable security levels may use more energy when operating at a higher security level than when operating at a lower security level. Similarly, one type of ranging with variable accuracy levels may use more energy when operating at a higher accuracy level than when operating at a lower accuracy level. Example Application-Based Control of Ranging

[0048] As described above, the operating system of the device can be configured to allow an application to exert some control over the ranging process by enabling the application to request one or more operating characteristics that the application desires to have for ranging. For example, the operating system can expose an API through which any given application on the device can request ranging and can specify one or more requested operating characteristics of the ranging. After receiving such an API call from the application, the operating system can then select a ranging mechanism from among multiple ranging mechanisms, where the selection is based at least in part on one or more operating characteristics requested by the application. In this way, since the one or more requested operating characteristics vary from ranging request to ranging request (e.g., from application to application and / or from environment to environment), the operating system can correspondingly select and invoke different ranging mechanisms to help achieve different application goals.

[0049] Figure 2 is a block diagram of an example device 200, showing some of the components that may be present in the device to facilitate performance of the operations described herein. Figure 2 may represent an example arrangement of device D1 and / or an example arrangement of device D2.

[0050] As Figure 2 shown, the example device 200 includes a wireless communication module 202, a user interface 204, a processor 206, and a non-transitory data storage device 208, all of which may be integrated and / or communicatively linked together in various ways (such as via a system bus, a network, or other connection mechanism 210).

[0051] The wireless communication module 202 may include various components to facilitate wireless communication between the device 200 and other entities, among other possibilities, such as wireless communication between the device 200 and another device that may be an object of ranging and / or between the device 200 and a local area network or a wide area network (e.g., a WiFi network and / or a cellular network). Among other possibilities, each wireless communication module may be configured to support communication according to a respective air interface protocol different from that of each other wireless communication module and / or according to a different air interface protocol version or communication mechanism from that of each other wireless communication module. For example, the wireless communication module 202 may include WiFi, Bluetooth, UWB, and cellular (e.g., 4G, 5G, 6G, etc.) modules. Each of these modules may be individually addressable and controllable. However, one or more of such modules may be co-located on a common chipset or other unit, and some of the modules may share the use of one or more components.

[0052] As shown, example wireless communication module 202 can include one or more radio devices 212, one or more amplifiers 214, and one or more antennas 216. The one or more radio devices can include one or more radio transmitters configured to modulate a baseband signal onto a radio frequency (RF) carrier, and one or more radio receivers configured to demodulate a baseband signal from one or more RF carriers. The one or more amplifiers can be configured to amplify outbound signals for transmission and / or amplify inbound signals for processing. And the one or more antennas can be configured to transmit and / or receive RF signals. Wireless communication module 102 can further include various circuitry and / or other logic to facilitate operation according to an example air interface protocol, such as facilitating one or more example ranging mechanisms.

[0053] User interface 204 can include one or more components for facilitating interaction with a user of device 200, if applicable. For example, user interface 204 can include various output components, such as a display screen, speakers, indicator lights, and a haptic feedback interface, as well as associated circuitry and / or other logic for facilitating operation of those output components. Further, user interface 204 can include various input components, such as a touchscreen interface integrated with the display screen, a microphone, and a keypad, as well as associated circuitry and / or other logic for facilitating operation of those input components.

[0054] Processor 206 can include one or more general-purpose processors (e.g., one or more microprocessors, etc.) and / or one or more special-purpose processors (e.g., application-specific integrated circuits, etc.). Further, non-transitory data storage device 208 can include one or more volatile and / or non-volatile storage components (e.g., read-only memory, random access memory, flash storage, cache memory, etc.), and can be integrated with processor 206, in whole or in part.

[0055] As shown, data storage device 208 can store program instructions 218, which can be executable by processor 206 to perform the various operations described herein. Specifically as shown, program instructions 218 can represent an operating system 220 of the device and one or more applications 222 installed on the device.

[0056] In accordance with these program instructions 218, the operating system 220 can control various services and features of the device 200 and can manage the applications 222, thereby providing APIs that can be used by the applications to utilize these services and features. For example, the APIs can enable an application to submit a ranging request and specify the requested operational characteristics of the requested ranging in order to facilitate the selection and invocation of an appropriate ranging mechanism. To facilitate this, the operating system 220 can be configured to interact with one or more wireless communication modules to trigger and / or coordinate ranging in accordance with a ranging mechanism (among other possibilities, such as one or more of the ranging mechanisms described above).

[0057] The applications 222 can in turn include one or more native applications and / or one or more third-party applications. Each such application can be installed on the operating system 220 and thus on the device, and can be executed by causing the processor 206 to execute the instructions of the application.

[0058] When the device 200 is executing or is set to execute one or more operations in response to the program instructions of a given application, the application can be considered to be running on the device. Further, an application may run in the foreground state or the background state from time to time. An application may be in the foreground state when it is in focus and / or has user-perceivable activity (whether started or paused). While when an application is not in the foreground state, the application may be in the background state. For example, given multiple windows (each window representing an application running on the device), if a given window has focus, its application may be considered to be in the foreground state, while if a given window does not have focus, its application may be considered to be running in the background state.

[0059] As Figure 2 further shown, the data storage device 208 can also store reference data 224, which the processor 206 can access in accordance with the program instructions 218 to facilitate the execution of various device operations.

[0060] In accordance with the above discussion, the reference data 224 can include mapping data 226 (e.g., mapping tables and / or other logical data structures) that associates respective sets of operational characteristics with respective ranging mechanisms. The device can be pre-configured with such mapping data and / or can build this data over time through machine learning or other techniques. By referring to such mapping data 226, the processor 206 can select a ranging mechanism based on one or more operational characteristics that the application requests the ranging to have, such that the processor 206 can then invoke the selected ranging mechanism in response to the application's request.

[0061] In an example implementation involving machine learning, a processor can evaluate ranging performance data over time to programmatically establish or update a correlation between specific operational characteristics and specific ranging mechanisms. For example, the device can be pre - configured with an initial set of mapping data correlating certain operational characteristics with certain ranging mechanisms, such as data indicating that certain ranging mechanisms may have certain operational characteristics or certain combinations of operational characteristics. When the processor applies the mapping data over time to select a ranging mechanism that the mapping data indicates will likely have a specific operational characteristic, the processor can evaluate the actual resulting operational characteristics of the selected ranging mechanism to determine whether the ranging mechanism has the operational characteristics indicated by the mapping data and / or to what extent it has the operational characteristics indicated by the mapping data (effectively acting as a machine - learning loss function), and the device can modify the mapping data based on that evaluation.

[0062] For example, if the mapping data indicates that a given ranging mechanism may have a low level of latency, but if the device determines in practice that the ranging mechanism typically has a medium or high level of latency, the device can respond to that determination by modifying the mapping data to alternatively indicate that the given ranging mechanism may have a medium or high level of latency. Thereafter, when the device applies the mapping data, thus attempting to determine which ranging mechanism to select based on one or more specified operational characteristics, the device will use the updated mapping data, which has an improved correlation between the operational characteristics and the mapping data.

[0063] Figure 3 An example of such mapping data 226 is shown as a representative table, where each row (i) in the first column specifies a corresponding set S of operational characteristics of ranging, and (ii) in the second column specifies a ranging mechanism M that is considered to correspond to the set S in the first column.

[0064] As Figure 3 described, the example table can define each set S of operational characteristics as a bit string, where the bits at predefined positions have values representing the corresponding operational characteristics of ranging. For example, the bit string can include eight bits, where every two bits represent a low value (e.g., 01), a medium value (e.g., 10), or a high value (e.g., 11) of a corresponding operational characteristic, or are empty (e.g., 00) if the operational characteristic is not specified. For example, the first two bits can represent the power budget, the second two bits can represent the accuracy level, the third two bits can represent the safety level, and the fourth two bits can represent the latency. Further, although not shown, the example table can define each ranging mechanism M as a corresponding binary code interpretable by the processor 206 to represent a specific ranging mechanism, such as using a specific air - interface protocol for ranging and / or using one or more specific mechanisms, such as those discussed above.

[0065] In an example implementation, when application 222 attempts to have the device participate in ranging, the application can issue a ranging request API call to operating system 220. Further, the application can include various arguments in the API call, and thus the API call can carry various arguments to enable operating system 220 to process the ranging request.

[0066] For example, the application can include in the API call an identifier associated with another device that will be the target of the ranging, e.g., an identifier associated with D2 discussed above. This can be an identifier that will enable device 200 to initiate a communication session with another device and / or otherwise facilitate ranging between device 200 and another device. For example, this can be an account identifier of another device or an account identifier of a user of another device.

[0067] Further, application 222 can include in the API call a specification of one or more operational characteristics that the application requests the ranging to have. The specification can be in the form of a bit string, such as those described above, or can be in another form that the operating system will interpret to represent one or more operational characteristics requested by the application. For example, the specification can specify a power budget that the application wants the ranging to have, a security level that the application wants the ranging to have, an accuracy level that the application wants the ranging to have, and / or a latency level that the application wants the ranging to have. The application may not know which one or more ranging mechanisms the operating system may be able to use to satisfy such requests, but these requests may enable the operating system to make a suitable choice (or attempt to make a suitable choice).

[0068] As a specific example, if device 200 is battery-powered and the application has reason to conserve the device's battery energy (e.g., to avoid having operating system 220 stop the application if the application uses too much battery energy), and if lower security ranging may use less battery energy, then the application can choose to request low or medium security ranging instead of high security ranging. As another example, if the application has reason to obtain very high accuracy ranging, such as if the application will use the ranging as a basis for triggering the unlocking of a security system (such as a car or a house), then the application can choose to request high accuracy ranging instead of low or medium accuracy ranging.

[0069] After receiving the API call from application 222, operating system 220 may read the identifier of another device from the API call, and operating system 220 may use the identifier as a basis for participating in processing to establish, for example, an initial data communication session between device 200 and another device using one of wireless communication modules 202. Through this data communication session, the operating system may exchange information about the ranging capabilities of device 200 and the ranging capabilities of another device to attempt to establish a set of ranging mechanisms supported by both device 200 and the other device.

[0070] Further, operating system 220 may read from the API call a specification of one or more operating characteristics that the application 222 requests for ranging to have, and operating system 220 may use the specified one or more operating characteristics as a basis for selecting a ranging mechanism from the set of available ranging mechanisms (e.g., from the set of ranging mechanisms supported by both device 200 and the other device). For example, operating system 220 may refer to mapping data such as the above to determine a ranging mechanism corresponding to the operating characteristics requested by one or more applications.

[0071] Then, operating system 220 may invoke the selected ranging mechanism, i.e., cause device 200 to implement the selected ranging mechanism. For example, operating system 220 may signal a particular wireless communication module 202 and possibly coordinate the operation of the particular wireless communication module to participate in the selected ranging mechanism. Through this ranging process, operating system 220 may thus determine the distance between device 200 and another device and / or the angular orientation of the positioning and orientation of the other device relative to device 200. This ranging may or may not be perfect; the distance and / or angular orientation may not be exactly correct, but may alternatively be a best effort estimate given the selected ranging mechanism and environment.

[0072] As described above, the result of this ranging may be data indicating the positioning and orientation of device 200 and another device and / or the angular orientation of the other device relative to device 200. Operating system 220 may return this data to the application in response to the application's API call. The application may then use this data. For example, the application may present a representation of the determined distance and / or angular orientation on its user interface 204.

[0073] In another implementation, the operating system 220 can use the operation characteristics requested by one or more applications as the basis for selecting more than one ranging mechanism to be invoked in response to an application's request. For example, the operating system 220 can decide to invoke a first ranging mechanism (e.g., a BLE-based ranging mechanism) based on one or more operation characteristics, and use the threshold proximity (tightness) detected by this mechanism as a trigger or threshold for then invoking a second ranging mechanism (e.g., a UWB-based ranging mechanism), perhaps to produce improved ranging results or for one or more other purposes.

[0074] Further, in addition to considering the operation characteristics requested by one or more applications, the operating system 220 can also consider one or more other factors as an additional basis for selecting the ranging mechanism to be invoked in response to an application's request.

[0075] An example of an additional factor is the foreground or background state of the application. For example, the operating system 220 can have data indicating the current foreground / background state of the application, and can refer to this data after receiving a ranging request from the application, and use this data as an additional basis for selecting the ranging mechanism. For example, depending on whether the application is in the foreground state or the background state, the operating system 220 can filter the set of available ranging mechanisms, and then the operating system 220 can make a selection from this set of available ranging mechanisms based on one or more operation characteristics requested by the application.

[0076] As a specific example, if the operating system 220 thus determines that the requesting application is in the foreground state rather than the background state, then at least based on this determination, the operating system 220 may weigh its selection of the ranging mechanism to support a ranging mechanism that may use more energy. And if the operating system 220 thus determines that the requesting application is in the background state rather than the foreground state, then at least based on this determination, the operating system 220 may weigh its selection of the ranging mechanism to support a ranging mechanism that may use less energy.

[0077] Figure 4 is a flowchart depicting an example method that can be performed in accordance with the present disclosure to facilitate application control of ranging.

[0078] As Figure 4As shown, at block 400, the method includes the operating system of the device receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, and the ranging request specifying one or more operating characteristics that the application requests the ranging to have. Additionally, at block 402, the method includes the operating system selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application. Further, at block 404, the method includes the operating system causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selection.

[0079] As discussed above, ranging can involve determining the distance between a device and another device and / or determining the angular orientation of another device relative to the device.

[0080] Further, as discussed above, the operating system can have access to mapping data that correlates ranging mechanisms with operating characteristics of ranging, in which case the act of selecting a ranging mechanism based at least on the one or more operating characteristics requested by the application can involve (i) determining a given ranging mechanism by referring to the mapping data, the mapping data correlating the given ranging mechanism with one or more operating characteristics, and (ii) selecting the given ranging mechanism as the ranging mechanism based at least on the determination.

[0081] As further discussed above, examples of one or more operating characteristics that can be requested by an application can include the power budget of the ranging and / or the security of the ranging. Further or alternatively, examples of one or more operating characteristics that can be requested by an application can include the accuracy of the ranging and / or the latency of the ranging.

[0082] Additionally, as discussed above, the act of selecting a ranging mechanism can be further based on determining whether the application is currently operating in a foreground state or a background state.

[0083] Further, as discussed above, the ranging request can additionally specify an identity associated with the other device, which can facilitate the requested ranging.

[0084] As further discussed above, the present disclosure also contemplates a device having a processor, a non-transitory data storage device, and an operating system stored in the non-transitory data storage device and executable by the processor, wherein the operating system defines program instructions executable by the processor to perform operations (such as those discussed above). Further, the present disclosure contemplates a non-transitory computer-readable medium having stored thereon an operating system that defines instructions executable by a processor of a device to cause the device to perform such operations.

[0085] In some implementations, the operating system can respond to a ranging request from an application by selecting a ranging mechanism based on determining that the selected ranging mechanism will meet or exceed specified operating characteristics of the application, based on the operating system's evaluation of previous ranging requests from the application, based on resources available to the operating system, and / or based on one or more other considerations. For example, if an application requests accurate and secure ranging every ten minutes and low-quality ranging every minute, and if conditions are such that the device is free to provide accurate and secure ranging more frequently than every ten minutes, then the operating system can select and invoke accurate and secure ranging for the application even when the application requests low-quality ranging.

[0086] Example embodiments have been described above. However, those skilled in the art should understand that changes and modifications can be made to these embodiments without departing from the true scope and spirit of the invention.

Claims

1. A method for controlling an application for ranging, the method comprises: receiving, by an operating system of a device, a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, and the ranging request specifying one or more operating characteristics that the application requests the ranging to have; selecting, by the operating system, a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application; and causing, by the operating system and based at least on the selection, the device to implement the selected ranging mechanism in response to the ranging request.

2. The method according to claim 1, wherein the ranging comprises determining a distance between the device and the other device.

3. The method according to claim 2, wherein the ranging comprises determining an angular orientation of the other device relative to the device.

4. The method according to claim 1, wherein the operating system has access to mapping data correlating ranging mechanisms with operating characteristics of ranging, and wherein the ranging mechanism is selected based at least on the one or more operating characteristics requested by the application comprises: determining, by referring to the mapping data, a given ranging mechanism that correlates the given ranging mechanism with the one or more operating characteristics; and selecting, based at least on the determination, the given ranging mechanism as the ranging mechanism.

5. The method according to claim 1, wherein the one or more operating characteristics requested by the application comprise at least one operating characteristic selected from the group consisting of (i) a power budget of the ranging and (ii) a security of the ranging.

6. The method according to claim 1, wherein the one or more operating characteristics requested by the application comprise at least one operating characteristic selected from the group consisting of (i) an accuracy of the ranging and (ii) a latency of the ranging.

7. The method according to claim 1, wherein the selection of the ranging mechanism is further based on determining whether the application is currently operating in a foreground state or a background state.

8. The method according to claim 1, wherein the ranging request further specifies an identity associated with the other device, the identity facilitating the requested ranging.

9. A device, comprises: a processor; a non-transitory data storage device; and an operating system stored in the non-transitory data storage device and executable by the processor, the operating system defining program instructions executable by the processor to perform operations, the operations including: receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, and the ranging request specifying one or more operating characteristics that the application requests the ranging to have, selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application, and causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selection.

10. The apparatus according to claim 9, wherein the ranging includes determining a distance between the apparatus and the other apparatus.

11. The apparatus according to claim 10, wherein the ranging includes determining an angular orientation of the other apparatus relative to the apparatus.

12. The apparatus according to claim 9, wherein the operating system has access to mapping data that correlates ranging mechanisms with operating characteristics of the ranging, and wherein the ranging mechanism is selected based at least on the one or more operating characteristics requested by the application comprising: determining a given ranging mechanism by referring to the mapping data that correlates the given ranging mechanism with the one or more operating characteristics; and selecting the given ranging mechanism as the ranging mechanism based at least on the determination.

13. The apparatus according to claim 9, wherein the one or more operating characteristics requested by the application include at least one operating characteristic selected from the group consisting of (i) a power budget of the ranging and (ii) a security of the ranging.

14. The apparatus according to claim 9, wherein the one or more operating characteristics requested by the application include at least one operating characteristic selected from the group consisting of (i) an accuracy of the ranging and (ii) a latency of the ranging.

15. The apparatus according to claim 9, wherein the selection of the ranging mechanism is further based on determining whether the application is currently operating in a foreground state or a background state.

16. The apparatus according to claim 9, wherein the ranging request further specifies an identity associated with the other apparatus, the identity facilitating the requested ranging.

17. A non - transitory computer - readable medium storing thereon an operating system defining instructions executable by a processor of a device to cause the device to perform operations, the operations comprising: receiving, from an application on the device, a ranging request that requests ranging between the device and another device, and the ranging request specifies one or more operating characteristics that the application requests the ranging to have; selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operating characteristics requested by the application; and causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selection.

18. The non - transitory computer - readable medium according to claim 17, wherein the ranging includes determining at least one of a distance between the device and the other device and an angular orientation of the other device relative to the device.

19. The non - transitory computer - readable medium according to claim 17, wherein the operating system has access to mapping data that correlates ranging mechanisms with operating characteristics of the ranging, and wherein the ranging mechanism is selected based at least on the one or more operating characteristics requested by the application comprising: determining a given ranging mechanism by referring to the mapping data that correlates the given ranging mechanism with the one or more operating characteristics; and Select the given ranging mechanism as the ranging mechanism based at least on the determination.

20. The non-transitory computer-readable medium of claim 17, wherein the one or more operational characteristics requested by the application include at least one operational characteristic selected from the group consisting of (i) the power budget of the ranging, (ii) the security of the ranging, (iii) the accuracy of the ranging, and (iv) the latency of the ranging.