Various embodiments relate generally to electrical and electronic hardware, computer software, human-computing interfaces, wired and wireless network communications, telecommunications, data processing, wearable devices, and computing devices. More specifically, disclosed are techniques for pairing devices using acoustic signals, among other things.
Personal area networks or ad hoc networks, such as Bluetooth, ZigBee, Z-Wave, and others, are becoming increasingly popular for interconnecting multiple computing devices. Conventionally, devices are generally paired or connected in an ad hoc network through the exchange of keys, addresses, or other information, using manual intervention or other mandatory processes.
Thus, what is needed is a solution for pairing devices without the limitations of conventional techniques.
Various embodiments or examples (“examples”) are disclosed in the following detailed description and the accompanying drawings:
Various embodiments or examples may be implemented in numerous ways, including as a system, a process, an apparatus, a user interface, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical, electronic, or wireless communication links. In general, operations of disclosed processes may be performed in an arbitrary order, unless otherwise provided in the claims.
A detailed description of one or more examples is provided below along with accompanying figures. The detailed description is provided in connection with such examples, but is not limited to any particular example. The scope is limited only by the claims and numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided for the purpose of example and the described techniques may be practiced according to the claims without some or all of these specific details. For clarity, technical material that is known in the technical fields related to the examples has not been described in detail to avoid unnecessarily obscuring the description.
The process of pairing may include creating secure communications between devices. Pairing may include creating a connection between devices, whereby the devices may transmit and receive data to and from each other. Once they are paired, devices may establish communications with each other, or if disconnected, they may reestablish communications with each other. Pairing may include generating or storing a shared key or link key, which may be used to authenticate the connection or trusted relationship between paired devices, to encrypt or decrypt communications between paired devices, to create an encryption key, and the like.
Pairing manager 110 may be configured to pair devices in an ad hoc network using acoustic signals. Pairing manager 110 may receive motion data from motion sensor 124 that prompts or triggers it to initiate a process of pairing. For example, device 101 may be bumped against another device, which may be a gesture or command signal for pairing with the other device. As another example, a user may tap or other provide a tactile or motion gesture that may initiate the pairing. Still, other command signals may be provided (e.g., a button press). Pairing manager 110 may receive an acoustic signal from media device 102 (or another device) at a microphone coupled to media device 101. An acoustic signal may be a sound wave, and may include sound, infrasound, ultrasound (e.g., ultrasonic), and the like. An acoustic signal may be composed of a compression wave that oscillates in the direction of travel through a medium (e.g., gas, air, etc.). An acoustic signal may be composed of molecules in the medium. An acoustic signal may be characterized by its frequency, amplitude, and other characteristics. An acoustic signal may be encoded to include data. For example, acoustic signals with different frequencies, amplitudes, or other characteristics may be used to transmit messages. Pairing manager 110 may use acoustic signal analyzer 112 to analyze, decode, or interpret an acoustic signal. In some examples, acoustic signal analyzer 112 may compare the acoustic signal received with one or more acoustic signal templates. An acoustic signal template may specify one or more criteria relating to a characteristic, such as a frequency range, amplitude range, feature (e.g., sudden change in frequency, etc.), duration, and the like, to, for example, identify a character, command, flag, or other meaning Acoustic signal templates may form a code, such as Morse code and the like, which may be used to communicate information. If acoustic signal analyzer 112 determines a match (e.g., a correlation) between an acoustic signal and an acoustic signal template, then acoustic signal analyzer 112 may determine the data encoded in the acoustic signal. In some examples, an acoustic signal from media device 102 may be encoded with data representing one or more parameters associated with media device 102. A parameter may include data representing a physical, functional, or other characteristic of device 102. A parameter may be an aspect that describes device 102. A parameter may or may not be unique to device 102. A parameter may be an address of device 102 (which may be unique or non-unique to device 102), a name (or other type of identifier) of device 102 (which may be unique or non-unique to device 102), one or more functionalities of device 102, and the like. A parameter may also be a number or word (or other type of identifier) that is generated by a device, such as a private key, a public key, a random number, and the like, which may be used to identify or authenticate the device. A parameter may be used to identify device 102. An acoustic signal from media device 102 may be used to identify media device 102. An acoustic signal received by media device 101 may be used by media device 101 to recognize another device that is to be paired with media device 101.
Pairing manager 101 may receive an electromagnetic or radio signal from media device 102 at an antenna coupled to media device 101. An electromagnetic signal may be a radio wave. An electromagnetic signal may be composed of translational waves that oscillate perpendicular to the direction of travel through a medium. An electromagnetic signal may be composed of photons, and may propagate in a vacuum or not in a vacuum. An electromagnetic signal may be used in data communications protocols such as Bluetooth, Wi-Fi, Near Field Communications, and the like. An electromagnetic signal may be encoded with data, using its frequency, amplitude, and other characteristics. For example, acoustic signals with different frequencies, amplitudes, or other characteristics may be used to transmit different messages, such as binary data or other data. In some examples, an electromagnetic signal from media device 102 may be encoded with data representing one or more parameters associated with media device 102. Pairing manager 101 may compare the one or more parameters encoded in the acoustic signal with the one or more parameters encoded in the electromagnetic signal to determine a match. Pairing manager 101 may then pair media device 101 and media device 102. For example, a match may be found on a parameter specifying an address of device 102. Pairing manager 101 may use the address of device 102 to pair with device 102. As another example, a match may be found on a parameter specifying a functionality of device 102. Pairing manager 101 may exchange one or more other electromagnetic signals with device 102 to pair with device 102. The one or more other electromagnetic signals may include data representing an address, key (e.g., public key, private key, etc.), or other information associated with device 102. The process of pairing may establish an ad hoc network between media device 101 and media device 102. Pairing may create a shared key or link key between media device 101 and media device 102. Pairing may create a secure connection between media device 101 and media device 102, which may be used to communicate information such as audio signals to be presented by media device 101 and media device 102, settings of media device 101 and media device 102, and the like.
Acoustic signal analyzer 212 may be configured to analyze acoustic signal 231 received at microphone 223 to determine the data encoded in acoustic signal 231. Microphone 223 may include one or more transducers or microphones. Microphone 223 may be activated to receive acoustic signal 231 based on a control signal from motion matcher 211 (described below) or another facility. Acoustic signal 231 may be received from device 202, which may be prompted to initiate a pairing with device 201. Acoustic signal 231 may be encoded with data representing a parameter associated with device 202, such as an address, name, functionality, feature, or the like of device 202. Acoustic signal 231 may be encoded using the characteristics of acoustic signal 231, such as its frequency, amplitude, duration, and the like. Acoustic signal analyzer 212 may analyze acoustic signal 231 to determine one or more of its characteristics. Acoustic signal analyzer 212 may compare acoustic signal 231 to one or more acoustic signal templates to determine a match. An acoustic signal template may include one or more conditions or criteria associated with an acoustic signal, and may specify one or more characteristics of an acoustic signal. An acoustic signal template may be associated with a character, code, command, flag, or other meaning. Acoustic signal analyzer 212 may compare acoustic signal 231 with the acoustic signal template and determine a match using pattern matching. Acoustic signal analyzer 212 may compare a characteristic of acoustic signal 231 with a condition and determine if acoustic signal 231 satisfies the condition. A match may be found within a certain tolerance or range. When a match with an acoustic signal template is found, acoustic signal analyzer 212 may determine the data encoded in acoustic signal 231 using the meaning or code associated with the acoustic signal template. Acoustic signal analyzer 212 may decode, interpret, or convert acoustic signal 231 into data, which may include data representing a parameter associated with device 202. Acoustic signal analyzer 212 may look up the code of an acoustic signal using a coding table (see, e.g.,
Communications facility 215 may include a wireless radio, control circuit or logic, antenna, transceiver, receiver, transmitter, resistors, diodes, transistors, or other elements that are used to transmit and receive data from other devices. In some examples, communications facility 215 may be implemented to provide a “wired” data communication capability such as an analog or digital attachment, plug, jack, or the like to allow for data to be transferred. In other examples, communications facility 215 may be implemented to provide a wireless data communication capability to transmit digitally-encoded data across one or more frequencies using various types of data communication protocols, such as Bluetooth, ZigBee, Wi-Fi, 3G, 4G, without limitation. An antenna may be any electrical device that may be used to convert electric power into electromagnetic or radio waves, and vice versa. An antenna may be omnidirectional, directional, vertical, dipole, or other types. An antenna coupled to communications facility 215 may be configured to receive electromagnetic signal 232, which may be encoded with data representing a parameter associated with device 202. Communications facility 215 may convert or decode electromagnetic signal 232 into data, including data representing a parameter associated with device 202. Communications facility 215 may also be used to receive other data from device 202, including additional parameters associated with device or other information that may be used to pair device 201 and device 202.
Parameter matcher 213 may be configured to compare the data representing a parameter associated with device 202 decoded from acoustic signal 231 and the data representing a parameter associated with device 202 decoded from electromagnetic signal 232, and to determine a match between the two parameters. For example, acoustic signal 231 may be encoded with an address of device 202. An address may be a substantially unique identifier of device 202. A Bluetooth address, for example, may be a 48-bit address, which may be presented as a 12-digit hexadecimal number. As another example, an address may be a non-unique identifier of an address. For example, a master device (or a device initiating a pairing) may assign an address to a slave device (or a device responding to a pairing request). Electromagnetic signal 232 may also be encoded with an address of device 202. Parameter matcher 213 may compare the address from acoustic signal 231 and the address from electromagnetic signal 232 and determine a match. Based on the match, pairing manager 210 may use the address of device 202 to identify device 202 as a device that has been prompted to pair with device 201. As another example, acoustic signal 231 may be encoded with a name of device 202. A name of device 202 may be a non-unique, user-friendly name that may be used to identify device 202. A name may include a brand name, a model name, a trademark, a manufacturer, a type of the device, and the like. For example, device 202 may be a Jambox® media device, produced by AliphCom of San Francisco, Calif. A name of device 202 may be “Jambox,” “media device,” “Jambox media device,” and the like. Electromagnetic signal 232 may also be encoded with a name of device 202. Parameter matcher 213 may compare the name from acoustic signal 231 and the name from electromagnetic signal 232 and determine a match. Based on the match, pairing manager 210 may use the name of device 202 to identify device 202 as a device that has been prompted to pair with device 201. In some examples, electromagnetic signal 232 may include the address of device 202 and another parameter associated with device 202 that is not the address of device 202 (e.g., a name of device 202). Pairing manager 210 may determine a match between the parameter from acoustic signal 231 and the parameter from electromagnetic signal 232, and then use the address of device 202 included in electromagnetic signal 232 to identify device 202 as a device that has been prompted to pair with device 201.
Pairing facility 214 may be configured to pair device 201 and device 202 based on the match determined by parameter matcher 213. For example, pairing facility 214 may create an ad hoc network between device 201 and device 202. Pairing facility 214 may enable secure communications between device 201 and device 202. Pairing facility 214 may create a shared key or link key between device 201 and device 202, which may be used to authenticate a connection or trusted relationship between device 201 and device 202, to exchange encrypted data between device 201 and device 202, and the like. A key may be a password or piece of information that may be used to authenticate, encrypt, or decrypt data. A shared key among multiple devices may be a key that is known to the multiple devices. For example, after devices 201-202 have been paired, and each has stored a link key, device 201 may transmit a random number to device 202, and device 201 and device 202 may each perform an operation as a function of the link key and the random number, resulting in a first output and a second output, respectively. Device 201 may receive the second output (which was computed by device 202) from device 202, and compare it with the first output (which was computed by device 201). If the two outputs are the same, then device 202 may be authenticated as a trusted device that shares a link key with device 201. In another example, devices 201-202 may use the link key to encrypt data or create encryption keys, and exchange the encrypted data with each other. Devices 201-202 may decrypt the data based on the like key. Then devices 201-202 may authenticate each other. Other methods of authentication and encryption may also be used. Pairing facility 214 may create a shared key between device 201 and device 202 based on parameters or other information associated with device 201 and device 202, which may include a key of device 201, a key of device 202, an address of device 201, an address of device 202, a random or pseudo-random number or nonce of device 201, a random or pseudo-random number or nonce of device 202, and the like.
Once the devices 201-202 are paired, devices 201-202 may further exchange data that may be used to interact with each other, to perform joint operations, and the like. For example, after being paired, devices 201-202 may be used to provide special sound effects, such as surround sound, two-dimensional (2D), or three-dimensional (3D) audio, and the like. Surround sound is a technique that may be used to enrich the sound experience of a user by presenting multiple audio channels from multiple speakers. 2D or 3D audio may be a sound effect produced by the use multiple speakers to virtually place sound sources in 2D or 3D space, including behind, above, or below the user, independent of the real placement of the multiple speakers. In some examples, at least two transducers operating as loudspeakers can generate acoustic signals that can form an impression or a perception at a listener's ears that sounds are coming from audio sources disposed anywhere in a space (e.g., 2D or 3D space) rather than just from the positions of the loudspeakers. In presenting special sound effects, different audio channels may be mapped to different speakers. For example, pairing manager 210 may prompt speaker 222 coupled to device 201 to generate an audio signal comprising a first audio channel. Pairing manager 210 may transmit a control signal to generate a second audio channel at device 202, and may transmit data representing the second audio channel to device 202. The control signal, or other data, may be transmitted to device 202 over the ad hoc network created by pairing facility 214. The control signal or other data transmitted to device 202 may be authenticated or encrypted based on a shared key or link key. As another example, after being paired, devices 201-202 may share settings with each other. A setting may be information used to adjust an operation of a device, and may include personalization or customization of the operation of a device. A setting may include, for example, sound settings (e.g., adjustment of bass, treble, etc.), alarm settings (e.g., a time at which an audio signal is presented), a playlist (e.g., a list of favorite songs), information about a user (e.g., demographic information, sex, age, etc.), and the like. Settings data may be communicated between devices 201-202 using an ad hoc network or secure connection. Still, pairing manager 210 may initiate or cause other operations to be performed by devices 201-202.
Motion matcher 211 may be configured to analyze motion data received from motion sensor 224 to determine whether a motion or gesture has been received to prompt or initiate the process of pairing devices using acoustic signals. Motion sensor 224 may be one or more sensors, and may include an accelerometer, gyroscope, inertial sensor, or other sensor that may be used to detect a motion or motion vector. A motion sensor may detect a motion vector with more than one component or axis, such as a 2- or 3-axis accelerometer. For example, device 201 may be configured to pair with another device using acoustic signals after device 201 has been “bumped” by a user. A bump may be associated with a change in acceleration of a device, such as when the device contacts, taps, knocks, hits, or collides with another object, such as another device. A user may bump device 201 against device 202, or another object. The bump may constitute a gesture or signal to device 201 to pair with another device using acoustic signals. Motion matcher 211 may store one or more templates or conditions associated with a “bump” or another motion used to prompt a pairing using acoustic signals. For example, a condition associated with a bump may include a sudden change in acceleration, in terms of magnitude, direction, and/or another parameter. A condition associated with a bump may include a threshold, and the change in motion data must be greater than the threshold in order for the condition to be met. Motion matcher 211 may compare motion data from motion sensor 224 to one or more templates or conditions to determine a match. If a match is found, then motion matcher 211 may prompt or enable pairing manager 210 to pair with another device using acoustic signals. Once a match is found, pairing manager 210 may attempt to pair with another device using acoustic signals for a certain time period. For example, pairing manager 210 may listen for an acoustic signal for a certain time period, e.g., 30 seconds, after a bump. After the time period, pairing manager 210 may deactivate microphone 223, or may stop analyzing acoustic signals received at microphone 223 using acoustic signal analyzer 212. Similarly, there may be a time period in which electromagnetic signal 232 should be received by device 201. Thus, in some examples, for pairing to successfully occur, device 202 may need to provide acoustic signal 231 and electromagnetic signal 232 within certain time periods after a bump or other gesture is received by device 201. Still, other command signals may be used to prompt pairing with another device using acoustic signals, such as a pressing of a button coupled to device 201, an entry of a command via user interface 221 of device 201, a detection of a proximity between device 201 and a user or a wearable device of a user, and the like. Sensor 225 may be used in lieu of or in addition to motion sensor 224 to detect a command signal to pair with another device using acoustic signals. Sensor 225 may include a location sensor (e.g., Global Positioning Service (GPS) receiver or other location sensor), a thermometer, an altimeter, a light sensor, a proximity sensor, and the like. A proximity sensor may, for example, determine the proximity of a device using the power or strength of a signal emitted from the device. A proximity sensor may, for example, determine the proximity of a device, person, or object using ultrasonic signals and the like. Sensor 225 may also be used for other purposes.
In some examples, after pairing manager 210 is prompted to pair with another device using acoustic signals, microphone 223 may be turned on to receive acoustic signals, and the acoustic signals may be processed by acoustic signal analyzer 212. In some examples, speaker 222 may also be turned on to generate an acoustic signal. Speaker 222 may include one or more transducers or loudspeakers. In some examples, device 201 may receive acoustic signal 231 at microphone 223 at substantially the same time as when device 201 transmits another acoustic signal at speaker 222. In some examples, device 201 may receive acoustic signal 231 within a certain time period before or after device 201 transmits another acoustic signal. The acoustic signal transmitted by device 201 may be encoded with data representing a parameter associated with device 201. Device 201 may also transmit an electromagnetic signal encoded with data representing a parameter associated with device 201. Device 202 may receive the acoustic signal and electromagnetic signal from device 201. Device 202 may have a pairing manager similar to pairing manager 210, which may compare the parameter from the acoustic signal from device 201 and the parameter from the electromagnetic signal from device 201. Thus, device 201 and device 202 may each perform a matching of data of an acoustic signal and data of an electromagnetic signal, and may each confirm or acknowledge a pairing with each other. For example, device 201 may determine a match between a parameter encoded in acoustic signal 231 and a parameter encoded in electromagnetic signal 232, and may transmit a request to device 202 to pair with device 202. Device 202 may also determine a match between a parameter encoded in an acoustic signal received by device 202 and a parameter encoded in an electromagnetic signal received by device 202. Device 202 may receive the request to pair from device 201. Device 202 may transmit a response to device 201 confirming or agreeing to pair with device 201. Devices 201 and 202 may exchange further information and be paired with each other.
User interface 221 may be configured to exchange data between device 201 and a user. User interface 221 may include one or more input-and-output devices, such as a keyboard, mouse, audio input (e.g., speech-to-text device), display (e.g., LED, LCD, or other), monitor, cursor, touch-sensitive display or screen, and the like. User interface 221 may be used to enter a user command to initiate a process of pairing using acoustic signals. User interface 221 may be used to create or modify an acoustic signal template, a coding table used for decoding an acoustic signal, or other information used for analyzing an acoustic signal. For example, a user may use a user interface to select an acoustic signal template that is stored in memory. A user may enter through the user interface a parameter associated with a device. A user may associate the selected acoustic signal template and the parameter, which may be a new or modified entry in a coding table. When a match is determined between this acoustic signal template and an acoustic signal that is received at the device, the acoustic signal may be decoded or interpreted as having data representing the parameter entered by the user. User interface 221 may be used to create or modify a parameter associated with device 201, such as its name, address, functionality, and the like. Still, user interface 221 may be used for other purposes.
In some examples, an acoustic signal template may be a pattern composed of characteristics or a range of characteristics of an acoustic signal, such as its frequency, amplitude, duration, and the like. As shown in
After device A 501 is prompted to pair using acoustic signals, device A 501 may transmit an acoustic signal encoded with data representing a parameter of device A 501, “Parameter A” 511. After device B 502 is prompted to pair using acoustic signals, device B 502 may transmit an acoustic signal encoded with data representing a parameter of device B 502, “Parameter B” 512. Substantially at the same time, or within a time period before or after the transmission of “Parameter A” 511, device A 501 may turn on its microphone to listen for acoustic signals, and may analyze the acoustic signals received. Device A 501 may receive the acoustic signal 512. Device B 502 may also turn on its microphone to listen for acoustic signals, and may analyze the acoustic signals received. Device B 502 may receive the acoustic signal 511. Device A 501 and device B 502 may analyze acoustic signals 512 and 511 to decode or interpret the data included in acoustic signals 512 and 511, respectively. The decoding may be done with a coding table. For example, an acoustic signal analyzer of device A 501 may compare acoustic signal 512 with one or more acoustic signal templates included in a coding table. After finding a match with an acoustic signal template, the acoustic signal analyzer of device A 501 may determine a meaning of acoustic signal 512. Similarly, device B 502 may determine a meaning of acoustic signal 511. Thus, device A 501 may determine that acoustic signal 512 is encoded with data representing “Parameter B” and device B 502 may determine that acoustic signal 511 is encoded with data representing “Parameter A.” Acoustic signals 511 and 512 may also be encoded with other data.
Device A 501 may also transmit an electromagnetic signal encoded with data representing “Parameter A” 513, and device B 502 may also transmit an electromagnetic signal encoded with data representing “Parameter B” 514. The electromagnetic signals 513 and 514 may be transmitted using a wireless communications protocol such as Bluetooth. The electromagnetic signals 513 and 514 may include data packets for transmitting the data representing “Parameter A” and “Parameter B,” respectively. In some examples, such data packets may be advertising packets or broadcast data packets. In some examples, such data packets may be transmitted as part of a connection request, a response to a connection request, a handshake process for pairing devices, and the like. A communications facility having an antenna coupled to device A 501 may receive electromagnetic signal 514 and a communications facility having an antenna coupled to device B 502 may receive electromagnetic signal 513. Device A 501 and device B 502 may decode or convert electromagnetic signals 514 and 513, respectively, into data. Thus, device A 501 may determine that electromagnetic signal 514 is encoded with data representing “Parameter A” and device B 502 may determine that electromagnetic signal 513 is encoded with data representing “Parameter B.” Electromagnetic signals 513 and 514 may also be encoded with other data.
Device A 501 may compute or perform a comparison 517 to compare the parameter received from acoustic signal 512 to the parameter received from acoustic signal 514, and device B 502 may perform a comparison 518 to compare the parameter received from acoustic signal 511 to the parameter received from acoustic signal 513. In some examples, comparisons 517 and 518 may determine a match. For example, if the parameter received from acoustic signal 512 and the parameter received from acoustic signal 514 are the same or substantially the same, or include a piece of information that is the same or substantially the same, then comparison 517 may determine a match. In some examples, comparisons 517 and 518 may determine a match based on a best match. For example, comparison 517 may determine that out of a plurality of acoustic signals received by device A 501 (not shown), acoustic signal 512 is encoded with a parameter or data that is a best match for the parameter or data of electromagnetic signal 514. A best match may be determined based on a level of similarity amongst one or more parameters, the weight or significance of one or more parameter types, and the like (see, e.g.,
In some examples, pairing may involve generating a shared key or link key between device A 501 and device B 502. The generation of a link key may involve a number of steps, including generation and exchange of nonces, generation and exchange of keys (e.g., private keys, public keys, etc.), and the like. In some examples, device A 501 may transmit an electromagnetic signal 515 to device B 502 including data representing “Key A,” and device B 502 may transmit an electromagnetic signal 516 to device A 501 including data representing “Key B.” In some examples, data representing “Key A” and “Key B” may be transmitted via other channels, such as an acoustic wave, or other. In some examples, “Key A” may be a public key of device A 501 and “Key B” may be a public key of device B 502. In some examples, device A 501 may perform a computation or determination 519 of a shared key as a function of “Key B,” and device B 502 may perform a computation 520 of a shared key as a function of “Key A.” Other input may also be used in computations 519 and 520. Based on determinations 519 and 520, a shared key may be derived by device A 501 and device B 502 and may be used by device A 501 and device B 502 to authenticate a pairing or trusted relationship between them. Under the Bluetooth specifications, for example, device A 501 and device B 502 each has a public-private key pair, which may be generated using an Elliptic Curve Diffie-Hellman (ECDH). Device A 501 may transmit “Key A” to device B 502, which may be the public key of device A 501. Device B 502 may transmit “Key B” to device A 501, which may be the public key of device B 502. Device A 501 may then compute a third key as a function of the public key of device B 502 and the private key of device A 501. Device B 502 may compute a fourth key as a function of the public key of device A 501 and the private key of device B 502. Using Diffie-Hellman encryption, or another methodology, the third key computed by device A 501 and the fourth key computed by device B 502 may be the same and may be used as a common key between device A 501 and device B 502. Further, in some examples, device A 501 may transmit a nonce or random number to device B 502, and device B 502 may transmit a nonce or random number to device A 501 (not shown). These nonces may be used to authenticate device A 501 and device B 502. In some examples, a link key created in the pairing of device A 501 and device B 502 may be generated as a function of the common key between device A 501 and device B, the nonces generated by device A 501 and device B, and/or other information. In some examples, the order of the transmission of signals and data may be different. For example, data representing “Key A” and “Key B” 515 and 516 may be transmitted before data representing “Parameter A” and “Parameter B” 513 and 514.
In some examples, “Parameter A” and “Parameter B” may be addresses of device A 501 and device B 502, respectively. The addresses may be any type of address or identifier of device A 501 and device B 502. The addresses may be used in a pairing process to identify the devices to be paired. For example, device A 501 may transmit its address using acoustic signal 511, and device B 502 may transmit its address using acoustic signal 512. Device A 501 may then transmit electromagnetic signal 513 encoded with an address of device A 501, and device B may transmit electromagnetic signal 514 encoded with an address of device B 502. The address data may be included in a header of a data packet transmitted using electromagnetic signals 513-514. Electromagnetic signals 513 and 514 may further be encoded with other information, including “Key A,” “Key B,” nonces, and others. Comparison 517 may determine a match between the addresses in acoustic signal 512 and electromagnetic signal 514, which may indicate that electromagnetic signal 513 originates from a device that is undergoing a process to pair using acoustic signals or has been prompted to pair with device A 501. Comparison 518 may determine a match between the addresses in acoustic signal 511 and electromagnetic signal 513. Device A 501 and device B 502 may exchange further data or data packets, such as electromagnetic signals 515 and 516, acoustic signals, or others. Each data packet may also include the address of the transmitting device, which may be used to determine that the data packet originates from a device that is undergoing a pairing process using acoustic signals. The information in the data packets exchanged, such as signals 513-516, may include “Key A,” “Key B,” other keys, nonces, and other information, which may be used to pair device A 501 and device B 502. A link key may be generated as a function of this information. The link key may be stored by device A 501 and device B 502. The link key may be used in subsequent communications between device A 501 and device B 502 to authenticate a trusted relationship. The link key may be used to encrypt communications between device A 501 and device B 502, or to create encryption keys to be used by device A 501 and device B 502.
In some examples, “Parameter A” and “Parameter B” may be a functionality of device A 501 and device B 502, respectively. For example, “Parameter A” may be “generating audio,” and “Parameter B” may be “generating audio.” The electromagnetic signal 513 generated by device A 501 may include “generating audio” as well as an address or identifier of device A 501 and other information (e.g., a connectable advertising packet, a connection request, etc.). The electromagnetic signal 514 generated by device B 502 may include “generating audio” as well as an address or identifier of device B 502 and other information (e.g., a connection request, a response to a connection request, etc.). Comparisons 517 and 518 may determine matches between signals 512 and 514 and between signals 511 and 513, respectively. Then the addresses included in electromagnetic signals 513-514 may be used to identify the devices that have been prompted to pair with each other. Device A 501 and device B 502 may exchange further data packets, including signals 515-516. An address of device A 501 and/or an address of device B 502 may be included in each data packet, or a header of each data packet. Device A 501 may receive a plurality of data packets, a subset of which include an address of device B 502. Device A 501 may identify the data packets including an address of device B as the data packets to use in the pairing with device B 502. The data exchanged may include “Key A,” “Key B,” other keys, nonces, and other information. Device A 501 and device B 502 may create a link key as a function of the data exchanged between device A 501 and device B 502.
As shown,
As shown,
In some examples, device A 601 may determine a match between data in an acoustic signal and data in an electromagnetic signal by determining a best match. A best match may be determined by a level of similarity between the parameters, a weight or significance of a parameter type, and the like. As shown, for example, acoustic signal 614 may be encoded with a name and a functionality of its source, electromagnetic signal 615 may be encoded with a name and a functionality of its source, and electromagnetic signal 616 may be encoded with one or more functionalities of its source. Device A 601 may determine that a name in signal 617 matches a name in signal 618 (e.g., “Jambox”), and a functionality in signal 617 matches a functionality in signal 619 (e.g., “generate audio”). In some examples, the significance of a match of one parameter (e.g., a name) may be greater than a match of another parameter (e.g., a functionality). Thus, device A 601 may determine a match between the data of signals 617 and 618, and may identify the source of signal 618 as the device to be paired with. Still, other ways of determining a match may be used.
In some examples, after a match is determined, device A 601 may perform an updating of the coding table 620. As shown for example, acoustic signal 617 may include a name (e.g., “Jambox”) and one functionality (e.g., “generate audio”), and electromagnetic signal 618 may include the name (e.g., “Jambox”) and another functionality (e.g., “generate vibration”). The acoustic signal 617 may be decoded using a coding table, which may map an acoustic signal template to a meaning. As discussed above, for example, device A 601 may determine that there is a match between the data of signals 617 and 618. The match may be based on a similarity of a subset of parameters included in signals 617 and 618 (e.g., the names in the signals 617 and 618 are the same). Device A 601 may determine that electromagnetic signal 618 includes an additional functionality of the source. Device A 601 may update the coding table to add the additional information. For example, the acoustic signal template that corresponds with acoustic signal 617 may originally map to the parameters, “Jambox” and “generate audio.” After updating the coding table, the acoustic signal template may map to the parameters, “Jambox” and “generate audio, generate vibration.” Still, other types of updates and modifications may be performed to the coding table.
According to some examples, computing platform 810 performs specific operations by processor 819 executing one or more sequences of one or more instructions stored in system memory 820, and computing platform 810 can be implemented in a client-server arrangement, peer-to-peer arrangement, or as any mobile computing device, including smart phones and the like. Such instructions or data may be read into system memory 820 from another computer readable medium, such as storage device 818. In some examples, hard-wired circuitry may be used in place of or in combination with software instructions for implementation. Instructions may be embedded in software or firmware. The term “computer readable medium” refers to any tangible medium that participates in providing instructions to processor 819 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks and the like. Volatile media includes dynamic memory, such as system memory 820.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read. Instructions may further be transmitted or received using a transmission medium. The term “transmission medium” may include any tangible or intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such instructions. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus 801 for transmitting a computer data signal.
In some examples, execution of the sequences of instructions may be performed by computing platform 810. According to some examples, computing platform 810 can be coupled by communication link 823 (e.g., a wired network, such as LAN, PSTN, or any wireless network) to any other processor to perform the sequence of instructions in coordination with (or asynchronous to) one another. Computing platform 810 may transmit and receive messages, data, and instructions, including program code (e.g., application code) through communication link 823 and communication interface 817. Received program code may be executed by processor 819 as it is received, and/or stored in memory 820 or other non-volatile storage for later execution.
In the example shown, system memory 820 can include various modules that include executable instructions to implement functionalities described herein. In the example shown, system memory 820 includes motion matching module 811, acoustic signal analyzer module 812, parameter matching module 813, and pairing module 814.
Although the foregoing examples have been described in some detail for purposes of clarity of understanding, the above-described inventive techniques are not limited to the details provided. There are many alternative ways of implementing the above-described invention techniques. The disclosed examples are illustrative and not restrictive.