This patent application relates generally to electronic apparatuses. Particularly, this patent application relates to syncing data across the electronic apparatuses.
With recent advances in technology, prevalence and proliferation of content creation and delivery have increased greatly in recent years. In particular, interactive content such as virtual reality (VR) content, augmented reality (AR) content, mixed reality (MR) content, and content within and associated with a real and/or virtual environment (e.g., a “metaverse”) has become appealing to consumers. Wearable devices, such as a wearable eyewear, wearable headsets, head-mountable devices, and smartglasses, have gained in popularity as forms of wearable systems. Users may have devices in addition to such wearable devices, including smartphones, smartwatches, and laptops, to name a few types of devices. As a result, users may have a relatively wide variety of devices to track, configure, and use.
Features of the present disclosure are illustrated by way of example and not limited in the following figures, in which like numerals indicate like elements. One skilled in the art will readily recognize from the following that alternative examples of the structures and methods illustrated in the figures can be employed without departing from the principles described herein.
For simplicity and illustrative purposes, the present application is described by referring mainly to examples thereof. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present application. It will be readily apparent, however, that the present application may be practiced without limitation to these specific details. In other instances, some methods and structures readily understood by one of ordinary skill in the art have not been described in detail so as not to unnecessarily obscure the present application. As used herein, the terms “a” and “an” are intended to denote at least one of a particular element, the term “includes” means includes but not limited to, the term “including” means including but not limited to, and the term “based on” means based at least in part on.
Disclosed herein are apparatuses and methods for syncing data across multiple electronic apparatuses in a secure and efficient manner. The electronic apparatuses are referenced herein as “apparatuses.” As discussed herein, a processor of an apparatus may determine that an input data has been received from or collected by an input device of the apparatus and may determine that the input data is to be synced with data stored on a remote apparatus. The processor may determine whether the input data is to be synced based on, for instance, the type of the input data, whether the input data has changed since a synchronization event, and/or the like. In some examples, the input data may be synced across the apparatuses to provide consistent user experience across the apparatuses as well as to ensure that consistent data is stored across the apparatuses.
The processor may also encrypt the input data based on a determination that the input data is to be synced with data stored on the remote apparatus and may output the encrypted input data. The processor may output the encrypted input data directly to the remote apparatus via a local connection, such as a Bluetooth™ connection, a Wifi connection, or the like. In addition, or alternatively, the processor may output the encrypted input data to a server from which the remote apparatus may retrieve the encrypted input data.
According to examples disclosed herein, the processor may determine whether the input data is to be synced and may output the input data based on a determination that the input data is to be synced. As a result, the processor may not output all of the input data that the processor receives, but instead, may output certain types of input data, e.g., input data that the processor has determined is to be synced. A technical improvement afforded through implementation of the features of the present disclosure may thus be that the amount of data that the processor outputs may significantly be reduced, which may improve the battery life of the apparatus.
According to examples disclosed herein, the processor may encrypt the input data prior to outputting the inputted data to a remote apparatus or a server. In some examples, the processor may encrypt the input data in a manner that may prevent the server from being able to decrypt the input data and thus, the input data may be passed through the server to the remote apparatus without the server identifying the contents of the input data. For instance, the processor may encrypt the input data using a key that is known to the remote apparatus but that is unknown to the server. Through implementation of features disclosed herein, the input data may securely be communicated to the remote apparatus, which may enhance security associated with the communication of the input data.
As also shown in
According to examples, the interface components 110 may enable direct wireless communication with a remote apparatus 120a as denoted by the dashed line 122. In these examples, the wireless communication may be made through a Bluetooth™ connection with the remote apparatus 120a, a WiFi connection with the remote apparatus 120a, or the like.
In addition or in other examples, the interface components 110 may enable the apparatus 100 to communicate to a server 130 via a network 140, which may be the Internet and/or a combination of the Internet and other networks. The communication between the apparatus 100 and the network 140 is denoted by the dashed line 124. In these examples, the interface components 110 may enable the apparatus 100 to communicate to an access point, a gateway, etc., through a Bluetooth™ connection, a Wifi connection, an Ethernet connection, or the like. The interface components 110 may additionally or alternatively include hardware and/or software to enable the apparatus 100 to communicate to the network 140 via a cellular connection.
The remote apparatuses 120a-120n may each be a smart device, such as smartglasses, a VR headset, an AR headset, a smartwatch, a smartphone, a tablet computer, and/or the like. In addition, each of the remote apparatuses 120a-120n may include components similar to those discussed with respect to the apparatus 100. In this regard, the remote apparatuses 120a-120n may communicate with other remote apparatuses 120a-120n and/or the server 130 in manners similar to those discussed above with respect to the apparatus 100.
The input device 102 may additionally or alternatively include any suitable device that may track a feature of the apparatus 100 and/or a user of the apparatus 100. For instance, the input device 102 may include a sensor, a global positioning system device, a step counter, etc. By way of particular example, the input device 102 may track a health-related condition of the user, such as the user's heartrate, blood pressure, movements, steps, etc.
The processor 104 may perform various processing operations and may control operations of various components of the apparatus 100. The processor 104 may be a semiconductor-based microprocessor, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other hardware device. The processor 104 may be programmed with software and/or firmware that the processor 104 may execute to control operations of the components of the apparatus 100.
The memory 106, which may also be termed a computer-readable medium 106, may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions 200-206. The memory 106 may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, or an optical disc. For instance, the memory 106 may have stored thereon instructions that the processor 104 may fetch and execute. The data store 108 may also be a computer-readable medium similar to the memory 106. In some examples, the data store 108 and the memory 106 may be the same component.
The processor 104 may execute the instructions 200 to determine that an input data 112 has been received from or collected by the input device 102. The input data 112 may be an instruction that a user has inputted to the apparatus 100 through the input device 102. For instance, the input data 112 may include an instruction by a user to change a setting on the apparatus 100, such as a language used by the apparatus 100 to communicate with the user, a gender of a user assistant voice on the apparatus 100, a background color scheme of images displayed on the apparatus 100, a volume setting of the apparatus 100, and/or the like. The input data 112 may also or alternatively include inputs to another device, such as taking an action from one device to another device, synchronizing alerts between devices, identifying locations of devices on other devices, etc.
By way of particular example, the apparatus 100 may be a smartphone and the remote apparatus 120a may be a pair of smartglasses. In this example, a user of the apparatus 100 may set a theme or interface setting of the apparatus 100 to a certain type of theme or interface setting. For instance, the user may set the apparatus 100 to use a female voice when communicating with the user via audio. In addition, by syncing such input data 112 on the remote apparatus 120a, the remote apparatus 120a may provide a backup location for storage of the input data 112.
In addition, or as other examples, the input data 112 may be data pertaining to a tracked feature of the apparatus 100 and/or a user of the apparatus 100. The tracked feature may include a geographic location of the apparatus 100 as determined by a GPS device, a number of steps that a user of the apparatus 100 has taken over a certain time period, the user's heartrate, the user's blood pressure, the estimated amount of calories that the user has burned over a certain time period, etc. As an example, the remote apparatus 120a may be used to identify the location of the apparatus 100 using the input data 112. As another example, the input data 112 may be data pertaining to well-being content, such as meditation music/videos, meditation podcasts, success stories, etc., that the user may listen to or watch on their devices. As a further example, the input data 112 may be data pertaining to a user's audio journey, e.g., a user may say something as a way to reflect on their day on the apparatus 100.
The processor 104 may execute the instructions 202 to determine that the input data 112 is to be synced with data stored on a remote apparatus 120a. The processor 104 may determine whether the input data 112 includes a type of data that is to be synced with the data stored on the remote apparatus 120a. For instance, a list of the types of data that are to be synced with the data stored on a remote apparatus 120a or on multiple remote apparatuses 120a-120n may be stored in the data store 108. The types of data that are to be synced with the data on the remote apparatus(es) 120a-120n may include any of the types of data discussed above and may be stored in a look-up table or other suitable format. The types of data that are not to be synced may include types of data that may be specific to the apparatus 100 and that may thus not be applicable to the remote apparatus(es). In some examples, instead of the types of data that are to be synced being stored in the data store 108, the types of data that are not to be synced may be stored in the data store 108.
In addition, the processor 104 may determine the type of the input data 112 and may compare that type against the list of the types of data. Based on the comparison, the processor 104 may determine that the input data 112 is or is not to be synced with the data on the remote apparatus 120a. That is, based on a determination that the input data 112 includes a type of data that is to be synced with the data on the remote apparatus 120a, the processor 104 may determine that the input data 112 is to be synced with the data on the remote apparatus 120a. However, based on a determination that the input data 112 does not include a type of data that is to be synced with the data on the remote apparatus 120a, the processor 104 may determine that the input data 112 is not to be synced with the data on the remote apparatus 120a.
In addition, or alternatively, to determine whether the input data 112 is to be synced with the data on the remote apparatus 120a, the processor 104 may determine whether the input data 112 includes data that has been changed from a prior synchronization event. In other words, the processor 104 may determine whether the input data 112 matches a previously stored input data 112 or differs from a previously stored input data 112. By way of example in which the input data 112 is a voice assistant setting, the processor 104 may determine whether the input data 112 is a change to the voice assistant setting.
The processor 104 may determine that the input data 112 is to be synced with the remote apparatus 120a based on a determination that the input data 112 includes data that has been changed from the prior synchronization event. In some examples, the processor 104 may determine that the input data 112 is to be synced based on both a determination that the input data 112 has been changed and is a type of data that is to be synced. However, based on a determination that the input data 112 is not data that has been changed and/or does not match a type of data that is to be synced, the processor 104 may determine that the input data 112 is not to be synced with the remote apparatus 120a. The processor 104 may determine that the input data is data that has been changed, for instance, in instances in which the input data 112 is not currently stored on the remote apparatus 120a, e.g., the input data 112 constitutes new data for the remote apparatus 120.
The processor 104 may execute the instructions 204 to encrypt the input data 112 based on a determination that the input data 112 is to be synced with the data on the remote apparatus 120a. The processor 104 may employ any suitable encryption technique to encrypt the input data 112. For instance, the processor 104 may employ an end-to-end encryption (E2EE) method, such as, RSA, AES, Elliptic Curve Cryptography (ECC), or the like. In addition, in employing E2EE, the processor 104 may combine both symmetric and asymmetric encryption by using a secure key exchange protocol such as Diffie-Hellman to generate and share a symmetric key. This symmetric key may be used to encrypt and decrypt the actual input data 112. In one regard, by using E2EE to encrypt the input data 112, the input data 112 may be communicated to the server 130 without the server 130 being able to decrypt and view the input data 112. As a result, the input data 112 may be kept private from the server 130.
The processor 104 may execute the instructions 206 to output the encrypted input data 112. According to examples, the processor 104 may automatically output the encrypted input data 112 to the network 140 via the connection 124 when the connection 124 between the apparatus 100 and the network 140 is established. In addition, the processor 104 may address the encrypted input data 112, which may be IP packets, to be delivered to the server 130. In these examples, the remote apparatus(es) 120a may obtain the encrypted input data 112 from the server 130 via the network 140. As discussed herein, the input data 112 may be encrypted using E2EE in which the remote apparatus(es) 120a may be the opposite end of the encryption pair and thus, the server 130 may not be able to decrypt and view the input data 112.
In other examples, the processor 104 may determine whether the apparatus 100 has connected to the remote apparatus 120a via a local connection, e.g., a Bluetooth™, a Wifi connection, or the like, and may communicate the encrypted input data 112 to the remote apparatus 120a based on a determination that the apparatus 100 is in communication with the remote apparatus 120a. In these examples, the processor 104 may wait to output the encrypted input data 112 to the remote apparatus 120a until the connection has been established. In other words, the processor 104 may not output the encrypted input data 112 until and unless the connection has been established, which may conserve a battery life of the apparatus 100.
In any of the examples discussed herein, the remote apparatus(es) 120a-120n that obtains the encrypted input data 112 may update the data stored on the remote apparatus(es) 120a-120n with the input data 112. Thus, for instance, the remote apparatus(es) 120a-120n may have common settings and/or themes as the apparatus 100. By way of particular example, the remote apparatus(es) 120a-120n may have the same voice assistant settings as the apparatus 100. As a result, the user experiences may be consistent across the apparatus 100 and the remote apparatuses 120a-120n without requiring that the user manually change the settings across all of the apparatuses 100, 120a-120n. Additionally, other types of data, such as a user's health condition may automatically be shared across the apparatuses 100, 120a-120n.
The processor 104 may execute the instructions 300 to receive remote data 114 from a remote apparatus 120a. The remote data 114 may be similar to the input data 112, but may have been collected or received by the remote apparatus 120a and communicated to the apparatus 100. According to examples, the apparatus 100 may directly receive the remote data 114 from a remote apparatus 120a via the local connection 122. In other examples, the apparatus 100 may receive the remote data 114 from the server 130 via the connection 124 with the network 140. In either of these examples, the remote apparatus 120a may have received or collected the remote data 114 on the remote apparatus 120a, for instance, an input device (not shown) of the remote apparatus 120a.
In some examples, the remote apparatus 120a may have encrypted the remote data 114 prior to communicating the remote data 114 to the apparatus 100. For instance, the remote apparatus 120a may have encrypted the remote data 114 using an E2EE scheme. In these examples, the processor 104 may have the decryption key and may thus decrypt the encrypted remote data 114 using the decryption key. The processor 104 may also analyze the decrypted remote data 114.
Particularly, the processor 104 may execute the instructions 302 to determine whether the remote data 114 includes a type of data that is to be synced with data stored on the apparatus 100, e.g., the data store 108. For instance, the processor 104 may determine a type of the remote data 114 and may compare that type with the types of data that are to be synced with data stored on the data store 108. The processor 104 may determine that the remote data 114 is to be synced based on a determination that the remote data 114 type matches a type of data that is to be synced.
In addition, or alternatively, the processor 104 may determine whether the remote data 114 includes data that has been changed from a prior synchronization event. In other words, the processor 104 may determine whether the remote data 114 is an updated version of the data in a prior synchronization event. The processor 104 may determine that the remote data 114 is to be synced with the data stored on the apparatus 100 based on a determination that the remote data 114 includes data that has been changed. In some examples, the processor 104 may compare timestamps associated with the remote data 114 and the stored data and may determine that the remote data 114 is to be synced if the timestamp of the remote data 114 is later than the timestamp of the stored data. In addition, the processor 104 may determine that the remote data 114 is not to be synced with the stored data based on a determination that the remote data 114 includes data that has not been changed, e.g., is the same as the stored data.
The processor 104 may execute the instructions 304 to sync the remote data 114 with the data stored on the apparatus 100 based on a determination that the remote data 114 is to be synced. The processor 104 may sync the remote data 114 with the stored data by, for instance, replacing the stored data with the remote data 114 or adding the remote data 114 to the stored data. According to examples, the remote apparatuses 120a-120n may execute similar operations to sync the input data 112 when the remote apparatuses 120a-120n receive the input data 112 from the apparatus 100.
As shown, the features of the apparatus 100 may integrate with schema management modules to use the storage and sync schemas 402 to create a local storage layer (load store 404) for the input data 112 that is to be synced with a remote apparatus 120a or to sync remote data 114 that is to be synced with data on the apparatus 100. The processor 104 may use a mixture of code-gen+custom code to create the ORM layer (in the SDK 406) for clients to use to securely access their data and ensure forward and backwards compatibility. The processor 104 may also integrate with a privacy module 408, a transport module 410, and a sync module 412 to enable end-to-end encrypted data syncs across the apparatuses 100, 120a-120n. The processor 104 may further integrate with a tethered device (remote apparatus 120a) and an untethered device (server 130) through remote and tethered transports and may ensure eventual input data 112 syncs. The processor 104 may still further integrate with the server 130, which may manage data, sync metadata, and E2EE keys. The processor 104 may still further integrate with a store and sync logger module 416 to ensure that consistent logging is done for all storage and sync use cases.
Schemas may enable consistency for cross platform data access. As a result, schema definitions of each data type may be available on the apparatuses 100, 120a-120n. The storage ORM schemas may be used to define the data models, data access queries, etc., that a use case may need. The configuration schemas may capture the storage and sync policies for those data types such as:
According to examples, the privacy module 408 may enable the privacy of data types that are getting synced via the server 130 to the remote apparatuses 120a-120n. The privacy module 408 may support the following modes:
Various manners in which the processor 104 of the apparatus 100 may operate are discussed in greater detail with respect to the method 500 depicted in
At block 502, the processor 104 may determine that an input data 112 has been received from or collected by the input device 102. The input data 112 may be an instruction that a user has inputted to the apparatus 100 through the input device 102, data pertaining to a tracked feature of the apparatus 100 and/or a user of the apparatus 100.
At block 504, the processor 104 may determine that the input data 112 is to be synced with data stored on a remote apparatus 120a. As discussed herein, the processor 104 may determine that the input data 112 is to be synced based on the type of the input data 112 matching a certain type of data, based on the input data 112 being different from data at a previous synchronization event, and/or the like. For instance, the processor 104 may determine whether the input data 112 includes a type of data that is to be synced with the data stored on the remote apparatus to determine whether the input data 112 on the apparatus 100 is to be synced with data stored on the remote apparatus 120a. In addition, the processor 104 may determine that the input data is to be synced with the data stored on the remote apparatus based on a determination that the input data comprises a type of data that is to be synced with the data on the remote apparatus.
In addition, or alternatively, the processor 104 may determine whether the input data 112 includes data that has been changed from a prior synchronization event to determine whether the input data 112 on the apparatus 100 is to be synced with data stored on the remote apparatus 120a. The processor 104 may also determine that the input data 112 is to be synced with data stored on the remote apparatus 120a based on a determination that the input data 112 includes data that has been changed from the prior synchronization event.
At block 506, the processor 104 may encrypt the input data 112 based on a determination that the input data 112 is to be synced. The processor 104 may encrypt the input data 112 in any suitable manner, such as by using an end-to-end scheme as discussed herein. In addition, the processor 104 may encrypt the input data 112 using an encryption key that the server 130 may not possess and thus, may not be able to decrypt the inputted input data 112. The processor 104 may encrypt the input data 112 in this manner in instances in which the processor 104 is to output the encrypted input data 112 to the server 130.
At block 508, the processor 104 may output the encrypted input data 112. The processor 104 may output the encrypted input data 112 directly to the remote apparatus 120a and/or to the server 130 via a network 140.
Some or all of the operations set forth in the method 500 may be included as a utility, program, or subprogram, in any desired computer accessible medium. In addition, the method 500 may be embodied by a computer program, which may exist in a variety of forms both active and inactive. For example, they may exist as machine-readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.
Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.
In the foregoing description, various inventive examples are described, including devices, systems, methods, and the like. For the purposes of explanation, specific details are set forth in order to provide a thorough understanding of examples of the disclosure. However, it will be apparent that various examples may be practiced without these specific details. For example, devices, systems, structures, assemblies, methods, and other components may be shown as components in block diagram form in order not to obscure the examples in unnecessary detail. In other instances, well-known devices, processes, systems, structures, and techniques may be shown without necessary detail in order to avoid obscuring the examples.
The figures and description are not intended to be restrictive. The terms and expressions that have been employed in this disclosure are used as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof. The word “example” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
Although the methods and systems as described herein may be directed mainly to digital content, such as videos or interactive media, it should be appreciated that the methods and systems as described herein may be used for other types of content or scenarios as well. Other applications or uses of the methods and systems as described herein may also include social networking, marketing, content-based recommendation engines, and/or other types of knowledge or data-driven systems.
This patent application claims the benefit of priority to U.S. Provisional Patent Application No. 63/501,051, filed on May 9, 2023, entitled “Sync Data Across Apparatuses,” the disclosure of which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63501051 | May 2023 | US |