WO2018187878A1 - Interoperable device and service discovery for expedited wireless access to exposed services at proximate devices - Google Patents

Interoperable device and service discovery for expedited wireless access to exposed services at proximate devices Download PDF

Info

Publication number
WO2018187878A1
WO2018187878A1 PCT/CA2018/050455 CA2018050455W WO2018187878A1 WO 2018187878 A1 WO2018187878 A1 WO 2018187878A1 CA 2018050455 W CA2018050455 W CA 2018050455W WO 2018187878 A1 WO2018187878 A1 WO 2018187878A1
Authority
WO
WIPO (PCT)
Prior art keywords
wireless communication
location
mobile device
proximate electronic
proximate
Prior art date
Application number
PCT/CA2018/050455
Other languages
French (fr)
Inventor
Timothy Jing Yin SZETO
Original Assignee
Nanoport Technology Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanoport Technology Inc. filed Critical Nanoport Technology Inc.
Publication of WO2018187878A1 publication Critical patent/WO2018187878A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/023Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/63Location-dependent; Proximity-dependent
    • H04W12/64Location-dependent; Proximity-dependent using geofenced areas
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/50Secure pairing of devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication

Definitions

  • This disclosure relates to mobile devices, and more particularly to discovering electronic devices in proximity to a mobile device.
  • a mobile device may be able to cast audio or video wirelessly to a proximate set of speakers or a display using a medium-range wireless communications modality, such as Wi-FiTM, or a short-range wireless communication modality, such as BluetoothTM.
  • a medium-range wireless communications modality such as Wi-FiTM
  • a short-range wireless communication modality such as BluetoothTM.
  • wireless communication modality refers to any technology for wireless communication according to an established standard for transmitter behavior, receiver behavior, and/or communication protocol.
  • Discovery and wireless connection of a mobile device with a proximate electronic device can be idiosyncratic or difficult, particularly when the devices have not previously communicated with one another using the chosen wireless communication modality.
  • Various handshaking steps may be required to establish a wireless communication session between the devices and to access services of one device from the other. The handshaking steps may vary between wireless communication modalities.
  • handshaking between a first device and a second device that have not previously used that wireless communication modality may entail the following steps: [0006] - the first device enters an inquiry state in which it broadcasts packets containing an inquiry access code on multiple hop frequencies, effectively inviting any proximate BluetoothTM devices to respond
  • the second device detects the packet from the first device on the hop frequency to which it is listening and, after a random backoff delay, responds with its own device address and clock synchronization information
  • the first device having learned the device address of the second device from the response, enters a "paging" state in which it broadcasts ID packets containing the second device's address on multiple hop frequencies to invite the second device to connect [0009] - the second device, while in a "page scanning” state, receives from the first device the ID packet containing its own device address and sends an acknowledgement, at which time it assumes the role of a "slave" relative to the "master" role assumed by the first device
  • the steps involved in establishing a wireless connection between a mobile device and a proximate electronic device using a Wi-FiTM protocol are different from those used for BluetoothTM, and may include:
  • IP internet protocol
  • wireless communication modalities e.g. BluetoothTM
  • BluetoothTM provide for "non-discoverable" modes of operation in which an electronic device is effectively invisible or silent from the perspective of a proximate mobile device. Discovery and connection with a proximate electronic device operating in that mode may be difficult if not impossible.
  • SDP Service Discovery Protocol
  • L2CAP Logical Link Control and Adaptation Protocol
  • PDU request/response protocol data units
  • proximate electronic devices when a wireless connection is made to a proximate electronic device, it may be difficult to ascertain the suitability of that device for particular purposes. For example, it may be difficult to ascertain whether proximate electronic devices are suitable for playing video, displaying images, playing audio, or other purposes.
  • a method of expediting wireless access, from a mobile device, to exposed services at proximate electronic devices via a medium-range or shorter wireless communication modality not previously used between the mobile device and the proximate electronic devices comprising: based on a location descriptor indicative of a current location of a mobile device, identifying a set of proximate electronic devices at the location; for each of the proximate electronic devices in the set, further identifying: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless
  • FIG. 1 is a schematic depiction of electronic devices at a location;
  • FIG. 2 schematically illustrate a discovery server for facilitating discovery of services at the electronic devices of FIG. 1 ;
  • FIGS. 3, 4 and 5 schematically depict the structure of various database records of the discovery server of FIG. 2;
  • FIGS. 6A and 6B schematically depict operations for configuring the electronic devices of FIG. 1;
  • FIG. 7 depicts a graphical user interface displayed at one of the electronic devices of FIG. 1 during its configuration as shown in FIGS. 6A and 6B;
  • FIG. 8 is a schematic depiction of a mobile device
  • FIG. 9 is a schematic depiction of memory of the mobile device of FIG. 8;
  • FIG. 10 illustrates a graphical user interface displayed at the mobile device of FIG. 8;
  • FIG. 11 schematically depicts, as a flowchart, operations for discovering proximate electronic devices and exposed services thereof for expedited wireless access to the services;
  • FIG. 12 is a schematic depiction of an example scenario in which a guest mobile device becomes proximate to the electronic devices at the location of FIG. 1;
  • FIG. 13 schematically depicts an example discovery object generated by the discovery server of FIG. 2 for the scenario of FIG. 12;
  • FIGS. 14 and 15 schematically depict an outcome of the device and service discovery operations of FIG. 11 for the example scenario depicted in FIG. 12;
  • FIG. 16 depicts multiple electronic devices, in communication with a network and server, exemplary of embodiments;
  • FIG. 17 is a block diagram of an example device;
  • FIG. 18 is a block diagram of memory at the device of FIG. 17.
  • FIGS. 19 and 20 schematically illustrate the discovery of interoperable proximate devices at a location.
  • FIG. 1 schematically depicts a room 1000 inside a residential or commercial building.
  • the example room 1000 is an enclosed space to which access may be controlled, e.g. via a mechanical deadbolt lock opened by a physical key. It will be appreciated that the room 1000 is a form of location and may alternatively be referred to as such.
  • the room 1000 of FIG. 1 contains three electronic devices: a smart television (TV) 1010, a laptop computer 1020 and a smart thermostat 1030.
  • the electronic devices 1010, 1020, and 1030 are, in certain respects, conventional.
  • each device includes dedicated hardware specific to the type of device ⁇ e.g. in the case of the TV 1010, a digital tuner, demultiplexer, MPEG decoder, image processor, LED display, speakers and other components.
  • the electronic devices at location 1000 are geographically proximate to one another - for example within one hundred meters of each other.
  • each of the devices 1010, 1020 and 1030 comprises at least one microprocessor communicatively coupled to a storage medium (memory) storing executable software.
  • the software at each device includes operating system software for basic device functions and higher-level application software.
  • application software at smart TV 100 may include applications ("apps") for accessing different types of media or content, e.g., NetflixTM, SpotifyTM, YouTubeTM or AmazonTM Prime Video.
  • the apps may be preloaded at the devices 110, 1020 and 1030 at the factory or may be subsequently downloaded by the device user, via an "app store" or other post-market digital distribution mechanism.
  • each of the electronic devices 1010, 1020 and 1030 is equipped for internet connectivity.
  • the device may incorporate "set-top box" hardware for accessing the Internet 1050 directly via a broadband internet (e.g. coaxial cable) connection.
  • the device may be equipped to access the Internet 1050 via wireless LAN, e.g. Wi-FiTM via an internet-connected access point 1040.
  • Devices 1020 and 1030 accordingly include suitable antennas, transceivers and software for Wi-FiTM wireless communication, confirming to associated standard(s) such as IEEE 802.11 a/b/g/n/ac for example.
  • the smart TV 1010 may also be factory-equipped with Wi-FiTM capabilities. It will be appreciated that Wi-FiTM is an example of a medium-range wireless communication modality having a typical range of about one hundred meters.
  • Each of the electronic devices 1010, 1020 and 1030 is also equipped for wireless communication via a short-range wireless communication modality, specifically BluetoothTM.
  • the TV 1010 and laptop 1020 may use BluetoothTM to facilitate use of peripheral devices such as wireless keyboards or pointing devices (e.g. mice), whereas the smart thermostat 1030 may use BluetoothTM to facilitate wireless communication with nearby temperature sensors.
  • the devices 1010, 1020 and 1030 therefore include suitable antennas, transceivers and software for BluetoothTM wireless communication, e.g. according to standard IEEE 802.15.1.
  • medium-range or shorter is used to refer to wireless communication modalities operable over distances of about one hundred meters or less.
  • Examples of medium-range or shorter wireless communication modalities include but are not limited to: Wi-FiTM; BluetoothTM; ZigbeeTM; TransferJetTM; NFC (the latter two possibly being considered an ultra-short range wireless communication modality); Z-WaveTM and DECT (used by enterprise and hospital wireless phone systems).
  • Wi-FiTM Wi-FiTM
  • BluetoothTM Wireless Fidelity
  • NFC the latter two possibly being considered an ultra-short range wireless communication modality
  • Z-WaveTM and DECT used by enterprise and hospital wireless phone systems.
  • electronic devices 1010, 1020 and 1030 of FIG. 1 are equipped with two medium-range or shorter wireless communication modalities (Wi-FiTM and BluetoothTM).
  • broadband cellular network technology e.g. 3G, 4G/LTE, is not considered as a medium-range or shorter wireless communication modality because its range can extend for greater distances, e
  • each of the devices at location 1000 requires some form of modality-specific and device-specific security credentials in order to establish medium-range or shorter wireless communication sessions with that device using that modality.
  • security credentials include but are not limited to a Wi-FiTM network SSID whose broadcast has been disabled or "hidden," a network password (encryption key, e. WEP key or WPA/WPA2 passphrase), an otherwise undisclosed BluetoothTM identifier, or a BluetoothTM pairing code.
  • the security credentials for the devices of FIG. 1 are summarized ii Table 1 below:
  • Table 1 Security Credentials of Electronic Devices at Location 1000
  • the SSIDs and passwords for the three devices 1010, 1020 and 1030 may actually be the same, e.g. if the devices all use the same access point 1040 for Wi-FiTM connectivity. This is not necessarily always the case for electronic devices at the same location.
  • the BluetoothTM addresses BTADDR0001, BTADDR0002, BTADDR0003 are distinct.
  • the identifiers in Table 1 are symbolic. For example, actual BluetoothTM addresses must have 12 hexadecimal characters.
  • Each of the electronic devices 1010, 1020 and 1030 provides a variety of services.
  • a "service” is an operation that invokes or effects functionality at, or using the resources of, a device.
  • the functionality may for example be associated with a particular input interface (e.g., a sensor such as a microphone or CCD device of a camera); a particular output interface, e.g., a display screen, a speaker; a particular software functionality (e.g.,
  • services include an image display service for displaying (still) images in common formats (e.g. jpg or .gif), a video playing service for playing video in common video formats (e.g.
  • the laptop computer 1020 provides similar services to the TV 1010, among others.
  • the smart thermostat 1030 provides a temperature sensing service. The services may be implemented using operating system-specific API calls and/or proprietary formats.
  • each of the devices 1010, 1020 and 1030 is configured with "receiver" software.
  • the receiver software facilitates automatic wireless connectivity with suitably configured, complementary mobile devices that become proximate to the devices 1010, 1020 and 1030 and may wish to invoke an exposed service at one of the devices. This functionality may be referred to using the trademark EncountersTM.
  • receiver devices electronic devices that have been customized with the receiver software are referred to either as “receiver devices” or “host devices.”
  • a device to act as a receiver device is described below in conjunction with FIGS. 6A and 6B.
  • mobile devices that have been configured to be complementary to receiver devices are referred to herein either as “sender devices” or “guest devices.”
  • the latter term connotes the fact that the devices may not normally be attendant at that location, and for this reason, may not have previously established wireless communication with resident receiver devices using a medium-range or shorter modality.
  • the configuration of a device to act as a sender device is described below.
  • a discovery server is deployed, e.g. at a central or remote location.
  • An example discovery server 1200 is schematically depicted in FIG. 2.
  • server 1200 includes at least one processor coupled to memory storing a discovery database 1202.
  • the database 1202 is a SQL database, which is a form of relational database.
  • Database 1202 may also be implemented as a NoSQL database.
  • the discovery server 1200 may be implemented as a cloud service, e.g. using Microsoft® AzureTM or AmazonTM Web Services, and may be distributed across multiple physical devices.
  • database 1202 may be implemented as a distributed database such as, e.g., a CouchcaseTM or FirebaseTM database.
  • the discovery server 1200 may be considered to perform a "matchmaking" role. In that role, the server 1200 periodically and pre-emptively apprises or updates participating mobile "sender” devices (as described below) with information about receiver devices known to be at the same location as, and therefore proximate to, the mobile device. The updates may occur periodically, e.g. responsive to location updates from
  • Each update sent to a mobile device not only identifies what receiver devices are proximate, but also what services are exposed (i.e. available for invocation by proximate sender devices) at each those devices.
  • the updates also provide addressing information— including any necessary security credentials (e.g. as shown in Table 1 above)— to the mobile device. This is done to facilitate the automatic establishment of wireless
  • the "matchmaking" performed at discovery server 1200 may be considered to match participating mobile sender devices with a dynamically changing set of proximate receiver devices using co-location as the matchmaking criterion.
  • the pre- emptive nature of the updates i.e. the fact that the updates are made automatically and dynamically, even before the mobile device has expressed any intention of invoking a service to be performed at one of the receiver devices at its current location— greatly simplifies and expedites wireless access to services at proximate electronic devices should they become needed.
  • discovery database 1202 primarily stores two types of records in respective separate database tables: user records 1204 and host device records 1206.
  • User records 1204 typically consist of user information of the same type that is typically collected by contemporary web-based services such as FacebookTM or GmailTM.
  • This user information typically includes a username (possibly taking the form of a unique email address or phone number), password, and name (first name and surname).
  • Host device records 1206 are more substantial. Fundamentally, each device record corresponds to a participating host device, including information such as unique host device ID and the location of the device. In turn, each host device contains one or more service records. Each service record represents an exposed service at that host device and provides information required for invoking the service. Moreover, each service record itself contains one or more "route" records. A route record represents a wireless communication modality available at the containing host device for accessing the containing service. It is within this record that the above-mentioned address and security access information specific to that wireless
  • the corresponding service record representing that service may contain a single "route” record representing only the Wi-FiTM modality and no "route” record representing the BluetoothTM modality, with the rationale that BluetoothTM is poorly suited for meeting the data transmission demands of casting video whereas Wi-FiTM is well-suited for that purpose.
  • the same host device provides a
  • the corresponding service record representing that service may contain a single “route” record representing only the BluetoothTM modality, with that the rationale that BluetoothTM is particularly suited for meeting the low communication latency demands of controlling mouse cursor input whereas Wi-FiTM is less well-suited.
  • the route for a particular service may be limited to one or more ultra-short range wireless modalities (e.g., NFC) if the service is particularly sensitive and it is undesirable for the service to be accessed at a distance (e.g., a service to transfer funds between the devices).
  • a service record may store an order of preference.
  • the class attributes include: bluetoothMacAddress - a BluetoothTM address (empty for non-BluetoothTM devices) brand - an identifier of the host device manufacturer (e.g., SamsungTM, HTCTM, etc.) CREATOR - constructor of object from serialized message
  • modelNumber an identifier of the manufacturer-assigned model number of the host device
  • pluginServices - a list of exposed services (see FIG. 4)
  • type - an indicator of a type of device of the host device
  • userDefinedContext a list of strings comprising user-defined context identifiers, e.g. describing an intended use of the device, properties (like "wall mounted display")
  • example host device class diagram 1300 of FIG. 3 includes:
  • DescribeContents() - describe if there are any special data types, like file descriptors stored in the object
  • FIG. 4 schematically depicts an example UML class diagram 1400 that can be used to represent an exposed service at a particular host device.
  • the class attributes include:
  • example service class diagram 1400 of FIG. 4 includes:
  • DescribeContents() - describe if there are any special data types, like file descriptors stored in the object
  • FIG. 5 schematically depicts an example UML class diagram 1500 that can be used to represent a "route" or wireless communication modality by which the containing service may be accessed.
  • the class attributes include: address - Service address. Address can be a URI, BLE address, TCP network address type - string that describes the transport protocol type, possibly encoding multiple attributes e.g. BluetoothTM/BLE/ZigbeeTM connections used, link-local connection or server based TCP/UDP communication
  • FIGS. 6A and 6B schematically depict, in the form of a UML sequence diagram, operations 1600 for customizing (configuring) the smart TV 1010 of FIG. 1 with receiver software so that it may act as a host device.
  • the operations 1600 may for example be performed by an owner 1602 of the TV 1010 subsequent to its purchase, or at the factory.
  • a user may for example interact with the TV 1010 using a wireless keyboard or remote control to effect operations 1600.
  • the same methodology can be used to configure other electronic devices, such as laptop 1020 and thermostat 1030, as host devices.
  • the user 1602 may open a provided web link (operation 1604, FIG. 6A) to trigger download 1606 of the EncountersTM receiver software 1608 from an Application Store 1610.
  • the receiver software 1608 is downloaded in the form of an
  • AndroidTM application package (APK), a package file format used by the AndroidTM operating system for distribution and installation of software.
  • API AndroidTM application package
  • the user 1602 Upon completion of downloading, the user 1602 starts 1612 (i.e. executes) the receiver software 1608 for the first time.
  • the user 1602 either registers for EncountersTM, e.g. by specifying new user credentials comprising a username, password, name, email address, and mobile telephone number (e.g. as for known social media platforms such as FacebookTM), or logs in using existing login credentials (operations 1614 and 1616, FIG. 6A).
  • a new user record 1204 (FIG. 2) is defined based on the supplied user credentials.
  • the receiver software 1608 automatically generates a new EncountersTM device identifier (operation 1618, FIG. 6A) and, in operation 1620, sends the identifier to the discovery server 1200.
  • Operation 1622 checks whether a number of allowed host devices has been exceeded and, if so, permits the user to purchase additional devices before registration continues.
  • an SMS verification code is sent to the user for entry to verify that the device 1010 is indeed owned by the user 1602.
  • contextual information refers to contextual information about a device.
  • contextual information can include information regarding a device's surroundings, its operating
  • an important aspect of a device's context is its location.
  • the location may for example be determined using a position receiver (e.g. GPS receiver) at the device or, for devices lacking such a receiver, by appropriate use of geolocation tools, which may be web- based.
  • the contexts are considered "private” or “secret” in that they are isolated from the user and are not user-editable or even viewable by the owner or other users (to prevent bad actors from falsifying characteristics). Private contexts may be intended solely for matching services (and optionally for location verification). This can be distinguished from "public" contexts such as #livingroom, which are user defined and can be exposed to other users, and which may be used by those other users for targeting devices.
  • a location descriptor of a device describes a current location of the device.
  • Various formats and degrees of precision may be used.
  • One format of location descriptor is a natural language format, using ASCII characters capable of being read and understood by a human user e.g. #boardrooml23mainstreetNY10001.
  • a possible advantage of using a natural language format is that human users may be able to define location descriptors that are meaningful to them.
  • FIG. 7 depicts an example graphical user interface (GUI) 1700 displayed at smart TV 1010 during the course of its configuration as a host device.
  • GUI graphical user interface
  • #livingroom field 1704, FIG. 7
  • Such natural language descriptors can be used independently of, or in conjunction with, other forms of location descriptors (e.g. geohashes, as described below).
  • the example GUI 1700 also permits user customization of device name (field 1702, FIG. 7) and permits access to exposed services to be controlled via checkboxes 1706.
  • the GUI 1700 may also permit specification of user access permissions for each of the exposed services on a service-by - services basis (e.g. as described below in conjunction with operation 1672 of FIG. 6B).
  • a geohash is a geocoding system that encodes a geographic location into a string of letters and digits according to a hierarchical spatial data structure that subdivides space into "buckets" of grid shape.
  • string-comparison techniques can be used to compare two geohashes representing the locations of two different devices to determine, by a desired order of magnitude, how proximate the devices are to one another.
  • that approach can be used to determine whether a sender device and a host device are in sufficiently close proximity to permit medium-range or shorter wireless communication modalities to be used for wireless communication between the devices.
  • the receiver software 1608 then engages in processing for analyzing the host device to determine what services are available there. Upon starting this process (operation 1650, FIG. 6B), the receiver software 1608 detects the capabilities of the host device (operation 1652).
  • device capabilities may be detected using an operating system function such as the getSystemAvailableFeatures call provided by the AndroidTM O/S. This can be used to determine, e.g. if a device support single or multi -touch. In some cases, device capabilities can be inferred from the detected operating system.
  • Other example device capabilities include: display present; location detection; compass; video capture; camera; audio capture; Bluetooth; Bluetooth Low Energy; proximity; light sensor; NFC; fingerprint reader; gyroscope; Wi-FiTM Direct; USB host mode; and barometer.
  • the discovery server 1200 maps capabilities to services based on pre-defined mappings. For example, a service for displaying video may require the "display” and "audio” AndroidTM capabilities.
  • the capabilities of the host device are communicated to the discovery server 1200 (operation 1654, FIG. 6B), where they are stored (operation 1656).
  • the capabilities are represented by strings, which can be sent to the discovery server 1200 in the form of an object representing the device and its capabilities, serialized (e.g., using Json or Protobuf serialization) for transmission via TCP/IP sockets.
  • the discovery server 1200 obtains a list of allowed services of the account as well as a permission table for services (operations 1658 and 1660, FIG. 6B). Operation 1658 essentially determines which services have been deemed accessible/inaccessible by the host device owner, e.g. via checkboxes 1706 in graphical user interface 1700 of FIG. 7.
  • Operation 1660 allows user access permissions to be defined so that access to exposed services can be controlled based on guest device user credentials, including by user class. For example, access to a "Showlmage" service may be set to allow access by the owner of a guest device, a first class of user (e.g. family members), but not to any other users. Alternatively, user access permissions (also referred to as "user permissions”) may be delimited by time, e.g.
  • GUI 1700 accessible during particular time windows only.
  • User permissions may be confirmed/adjusted via GUI 1700 (e.g. at subsequent operation 1672), allowing the host device owner to define, on a per-service basis, user permission such as: no one, everyone, particular people, particular classes/groups of people, or black listing. Permissions can also be defined to be time limited. These sets of permissions are stored at the host device in a data structure referred to a permissions table.
  • This information is used at the discovery server 1200 to generate a device service tree, i.e. a data structure representing all of the services available at a given host device (in this case, TV 1010).
  • the service tree is sent to the receiver software 1608. Thereafter, the receiver software 1608 engages in the following operations shown in FIG. 6B.
  • the device service tree is parsed, i.e. the discovery object is deserialized (operation 1664). Services are assigned according to capabilities; for example, each service may be provided by a
  • the plugin for each service may be configured to use particular hardware resources at the hardware device, e.g., to reference particular hardware IDs for particular capabilities through the AndroidTM SDK (operation 1666).
  • Capabilities are enabled/disabled, e.g. turning on transceivers, GPS receivers, or analogous components (operation 1668); allowed plugin services are started (operation 1670); permissions on services are applied (operation 1672); and wireless communication modality-specific addressing information (e.g. encryption passwords) are cached on a per-service basis (operation 1674)
  • the updated device service tree is sent to the discovery server 1200 (operation 1676, FIG. 6B).
  • discovery server 1200 returned services are matched, and any service in the service tree to which the host device user has denied access is removed (operation 1678, FIG. 6B).
  • the operations 1600 for service registration for the smart TV 1010 of FIG. 1 are complete.
  • Operations 1600 are also performed at each of the laptop 1020 and smart thermostat 1030 of FIG. 1. When that has been done, each of the devices 1010, 1020 and 1030 of FIG. 1 are configured to act as host devices.
  • FIG. 8 schematically depicts a mobile device 1800 that will be configured to act as a "sender device” as described below.
  • the mobile device 1800 is an LG NexusTM 5X smartphone having a form factor as shown in FIG. 10 (described below).
  • Other types of mobile devices be they smartphones or otherwise, may be used in other embodiments.
  • the basic components of mobile device 1800 depicted FIG. 8 include a processor 1802, which in the case of the NexusTM 5X is a Hexa-core (4x1.4 GHz Cortex- A53 & 2x1.8 GHz Cortex- A57).
  • the processor 1802 is coupled to memory 1804, which in this embodiment includes 2 gigabytes of RAM and 32 gigabytes of secondary storage.
  • the processing capabilities at the example mobile device 1800 further include an AdrenoTM 418 graphics processing unit and a QualcommTM MSM8992 Qualcomm 808 chipset (not expressly depicted).
  • Mobile device 1800 also comprises conventional I/O interfaces 1806, including a speaker and an IPS LCD capacitive touchscreen (not expressly depicted). Additionally, the device includes various network interfaces 1808, including suitable antennas, transceivers and software to effect various medium-range or shorter wireless communication modalities. In the present embodiment, these interfaces provide various forms of wireless local area network (WLAN) connectivity, including Wi-FiTM 802.11 a/b/g/n/ac, dual-band, Wi-FiTM Direct, Digital Living Network Alliance (DLNA) and hotspot. BluetoothTM 4.2, A2DP capability is also provided. The transceivers accordingly typically include radio frequency (RF) transceivers.
  • WLAN wireless local area network
  • Wi-FiTM 802.11 a/b/g/n/ac dual-band, Wi-FiTM Direct, Digital Living Network Alliance (DLNA) and hotspot.
  • DLNA Digital Living Network Alliance
  • BluetoothTM 4.2, A2DP capability is also provided.
  • the transceivers accordingly typically include radio frequency (
  • the mobile device 1800 further includes position receivers 1810 for determining a current location of the device.
  • the receivers in this embodiment comprise hardware components compatible with the Assisted global positioning system (A-GPS) and the Global Navigation Satellite System (GLONASS).
  • A-GPS Assisted global positioning system
  • GLONASS Global Navigation Satellite System
  • All of these components depicted in FIG. 8 are communicatively coupled to the processor 1802.
  • Other components of device 1800 are omitted from FIG. 8 for brevity.
  • a user desirous of configuring the mobile device 1800 to act as a sender device may download and install EncountersTM sender software, e.g. using similar techniques as described above for host devices (i.e. downloading an APK from an application store).
  • the sender software may be pre-installed at the factory by the mobile device manufacturer.
  • FIG. 9 schematically depicts memory 1804 of mobile device 1800 in greater detail post-installation of the sender software. It will be appreciated that the depiction in FIG. 9 is simplified for the sake of brevity and clarity.
  • FIG. 9 adopts a convention in which a vertical position of the boxes representing software entities within the containing memory 1804 generally connotes the level of the corresponding software entity: a high position within the box 1804 connotes higher-level software entities, whereas a low position connotes the lower-level software entities.
  • the memory 1804 includes high-level applications ("apps") 1902, 1904 (collectively apps 1900).
  • apps 1900 are presumed to have been developed to benefit from the EncounterTM functionality described herein when the sender software is detected at the mobile device 1800, and to operate conventionally otherwise.
  • O/S software 1910 is operating system (O/S) software 1910.
  • O/S is Android 8.0 Oreo, however other embodiments may use other mobile operating systems (e.g. iOSTM).
  • Sender software 1920 may be considered to operate at a level below applications 1900 and above operating system 1910, e.g. at the level of an AndroidTM system service. A general objective of the sender software 1920 is to facilitate wireless access, from applications running at mobile device 1800, of exposed services at proximate host devices.
  • the sender software 1920 performs operations includes: periodically apprising the discovery server 1200 of a current location of the mobile device 1800; responsive to the updating, periodically receiving a discovery object 1930 (described below) from the discovery server 1200; using the current discovery object, automatically establishing wireless
  • the sender software 1920 provides an application programming interface (API) 1922 to simplify access to exposed services from apps 1900 at the mobile device.
  • API application programming interface
  • This approach can be used to advantageously shield the apps 1900 from complex, lower-level details that would otherwise be required to, e.g., ascertain whether any electronic devices are proximate, to identify the services (if any) exposed at those devices, and to establish any necessary wireless communication session(s) required for accessing those services wirelessly.
  • the discovery object 1930 is depicted using dashed lines in FIG. 9 to connote the fact that it does not yet reside within memory 1804, since the sender software 1920 has not yet been executed.
  • the sender software 1920 Once installation of the sender software 1920 at mobile device 1800 is complete, that device is considered to have been configured as a sender device. Initial execution of the sender software 1920 at mobile device 1800 may trigger presentation of a graphical user interface 1980 as depicted in FIG. 10.
  • GUI 1980 presents fields 1982 for entering user credentials, permitting an existing EncountersTM user to log in (via button 1984) or to sign up for the first time (via button 1986).
  • a new user record 1204 (FIG. 2) would be generated in discovery database 1202.
  • the sender software 1920 in this embodiment operates in the background at mobile device 1800, i.e. transparently from the perspective of the user. Future execution of the sender software 1920 upon mobile device startup may be automatic and may avoid the need to re-enter user credentials (e.g. using cookies or analogous mechanisms).
  • the discovery server 1200 authenticates the user of the mobile device 1800, it establishes and maintains a TCP socket session (distinct from the wireless communication sessions referenced elsewhere in this disclosure) with the mobile device 1800. In the present embodiment, this involves generation of a session key that is provided to the sender software 1920 at the mobile device 1800.
  • the session key which is not exposed outside of sender software 1920 and the server, can be made to have an expiration period after which the user needs to re-authenticate.
  • the sender software 1920 When the sender software 1920 is connected to the discovery server 1920, it maintains the session by maintaining a TCP/IP socket in open state. This socket is used by the discovery server 1200 to push data (e.g. discovery objects 1930) to the sender software 1920.
  • the session may be made secure using the secure sockets layer/transport layer security (SSL/TLS) protocol. Session keys can be exchanged in accordance with SSL/TLS.
  • SSL/TLS secure sockets layer/transport layer security
  • FIG. 11 schematically depicts, as a flowchart, operations 2000 for discovering devices and services for expedited wireless access to exposed services at proximate devices.
  • the operations 2000 occur partly at the mobile device 1800 and partly at the discovery server 1200 (FIG. 2), as will be described.
  • FIG. 11 The operations 2000 of FIG. 11 are described for an example scenario depicted in FIG. 12.
  • a user 2100 carrying his mobile device 1800 enters location 1000 for the first time.
  • the user 2100 might visiting location 1000 to give a presentation to prospective clients.
  • Operations 2000 may be triggered automatically and transparently from the perspective of the user 2100.
  • the sender software 1920 of FIG. 9 is executing (e.g. in the background) at mobile device 1800 and that the receiver software 1608 (FIG. 6A) is executing (e.g. in the background) at each host device 1010, 1020, and 1030, when the user 2100 arrives at location 1000.
  • the sender software 1920 uses position receiver 1810 (FIG. 8) to detect the location of mobile device 1800. The detection may for example be triggered by the sensing of device motion (e.g. using an accelerometer at the device) or may occur periodically.
  • the sender software 1920 In response to the detection, the sender software 1920 generates a location descriptor 2104 (FIG. 12) for location 1000.
  • the location descriptor is a geohash created by converting GPS coordinates of location 1000 from position receiver 1810 (FIG. 8) and into a geohash (a string).
  • the location descriptor 2104 is subsequently reported to discovery server 1200, e.g. by way of a cellular data connection maintained with the server 1200 whenever the sender software 1920 is operational at mobile device 1800.
  • the mechanism for maintaining such a connection may be similar to the mechanisms used, e.g., to maintain connectivity between other mobile apps (e.g. FacebookTM) and their corresponding servers.
  • Receipt of the location descriptor 2104 at the discovery server 1200 triggers operations at the server for identifying a set of proximate electronic devices at the location indicated by the received location descriptor (operation 2002, FIG. 11).
  • the discovery server 1200 generates a SQL query comprising the location descriptor of the mobile device and a specified degree of co-location precision. The latter parameter governs the granularity
  • the specified degree of co-location precision is a number of "most significant" bytes of two geohashes that must match for their corresponding devices to be considered proximate.
  • seven matching most significant bytes may represent co- location precision of +/- seventy-six meters, which is within one hundred meters.
  • the host device records 1206 are searched to identify any host device whose location descriptor (as configured during setup at operation 1626, 1628 of FIG. 6A) matches the location descriptor 2104 of the mobile device 1800 within the specified degree of co-location precision.
  • the query result returns records for each of host devices 1010, 1020 and 1030 at location 1000.
  • the query result encompasses not only device information for each of the proximate host devices 1010, 1020, and 1030, but also information regarding: what services are exposed at each device; what medium-range or shorter wireless communication modalities are available at each device; and addressing information (including security credentials, if any) for establishing a wireless communication session with each host device using any of the modalities.
  • the query result identifies: a set of exposed services provided at the host device; a set of medium-range or shorter wireless communication modalities of the host device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities, addressing information for establishing a wireless communication session with the host device (operation 2004, FIG. 11).
  • the discovery server 1200 uses the query result to generate a discovery object 1930, also referred to as a "service tree” or "device service tree".
  • the discovery object 1930 in this example is schematically depicted in FIG. 13 in the form of a UML object diagram. It will be appreciated that the representation in FIG. 13 is simplified and that some portions have been omitted for brevity.
  • the discovery object 1930 contains a set of device objects, each representing a host device proximate to the mobile device 1800.
  • each device object is an instance of the devicePublic class of FIG. 3.
  • the host device object 2200 contains device information of smart TV 1010, notably including screen size, wireless protocols supported, touch screen supported and environmental sensors connected. Device objects representing the laptop 1020 and the smart thermostat 1030 are not expressly depicted in FIG. 13.
  • Each host device object contains one or more service objects, each representing an exposed service at the relevant host device.
  • each object in the list is an instance of the servicePublic class of FIG. 4.
  • the service objects 2202, 2204 and 2006 depicted in FIG. 13 represent the "Play Video,” “Play Audio,” and “ShowText" services of smart TV 1010 (see FIG. 7); additional objects representing other exposed services of TV 1010 not expressly depicted.
  • service objects 2202 and 2204 contain a route object 2208 and 2210 respectively representing Wi-FiTM at smart TV 1010.
  • service object 2206 contains a route object 2212 representing a different wireless communication modality, i.e. BluetoothTM.
  • each service object 2208, 2210 and 2212 contains addressing information required for establishing a wireless communication session with the relevant host device (TV 1010) using the relevant modality.
  • the addressing information includes security credentials (SSID + encryption key for Wi-FiTM, BluetoothTM address of TV operating in non- discoverable mode for BluetoothTM).
  • the discovery object 1930 is sent from the discovery server 1200 at mobile device 1800, where it is stored in memory 1804 (FIG. 9) for future access as necessary by the sender software 1920.
  • the discovery object 1930 is stored so as to deter tampering with the security credentials forming part of the addressing information for any modality, e.g. within an AndroidTM application sandbox (a mechanism whereby an O/S kernel enforces security between applications at the process level).
  • the storage of discovery object 1930 may be considered as a pre-emptive storing, at mobile device 1800, of addressing information for each of the available wireless communication modalities of each of the proximate host devices as soon as the mobile device becomes proximate to those host devices.
  • pre-emptive storing means "storing before the mobile device has established, and regardless of whether the mobile device shall ever establish, a wireless communication session with any of the proximate electronic devices using any of the associated wireless communication modalities.”
  • the pre-emptive storing can be thought of as configuring the mobile device 1800 to provide three "virtual data cables" 2310, 2320 and 2330 between the mobile device 1800 and each of the respective host devices 1010, 1020 and 1030.
  • Each virtual cable illustrated using dotted lines, represents a prospective wireless communication session (using a medium-range or shorter modality) that can be quickly and automatically established by the sender device, i.e. without requiring any manual action for that purpose on the part of the mobile device user.
  • the slide presentation app 1902 transparently from the perspective of the user, invokes a function of API 1922 (FIG. 9) of the sender software 1920, passing as a parameter the slides to be presented (or, more generally, the data payload for the service).
  • the sender software 1920 examines the discovery object 1930 to identify a suitable candidate device for presenting the slides.
  • the smart TV 1010 (as represented by device object 2200 of FIG. 13) is deemed a suitable candidate for presenting the slide deck based on its exposed "Play Video" service (as represented by service object 2202 of FIG. 13).
  • Wi-FiTM (as represented by route object 2208) is determined to be a suitable modality for invoking that service.
  • the sender software 1920 invokes Play Video exposed service at the mobile device 1800.
  • the sender software 1920 automatically establishes a wireless communication session with smart TV 1010 using the pre-emptively stored Wi-FiTM addressing information (SSSID001, passwordOOl - see object 2208, FIG. 13) to (operation 2008, FIG. 11).
  • This may be considered as an "activation" of virtual data cable 2310 for carrying data, which is depicted graphically in FIG. 15 by a heavier dotted line. In this way, the mobile device 1800 conserves power that would otherwise have been consumed in establishing a wireless
  • the sender software 1920 can now communicate with smart TV 1010 via the operative modality (Wi-FiTM) based on the service information encoded in service object 2202 (FIG. 13).
  • the receiver software 1608 responds to the mobile device's invocation of the exposed service by performing the service at the host device. This may for example involve extracting the data payload (the slides) received from the mobile device 1800 and in turn executing an appropriate app at the TV 1010 for displaying the slides.
  • the slides are displayed at smart TV 1010 without requiring user 2100 to: connect any physical cable to the TV; ascertain any device information of the TV or any other device at location 1000; ascertain what wireless communication modalities are available the TV or any other device at location 1000; or to manually set up any wireless communication session or enter any security credentials. From the user's perspective, the displaying of the slides at the nearby host device "just works” even if the user knows nothing about the host device or how to connect to it.
  • wireless communication session setup is automatic and transparent to the user, fewer cycles are expended at the mobile device for presenting whatever user prompts and graphical user interface screens might otherwise be required. Battery life may thereby be conserved.
  • the above-described mechanism can be used to facilitate wireless access to exposed services at each host devices known to be within the same enclosed space.
  • such devices can be identified by a common location descriptors indicative of the enclosed space (e.g. #livingroom555MainStreet).
  • a common location descriptors indicative of the enclosed space e.g. #livingroom555MainStreet.
  • the sender software 1920 may refresh the existing discovery object in memory 1804 either by replacing it with the new discovery object or by supplementing the existing discovery object with any new device, service, or route information in the new discovery object.
  • the sender software 1920 can invoke the Play Video service at a different host device at the new location, providing a continuity of experience for the user 2100 as he moves about.
  • the configuration of an electronic device with one of receiver software 1608 and sender software 1920 may automatically also configure the device with the other (complementary) software.
  • the sender and receiver software may be packaged as a single APK and be downloaded/installed at the same time. This allows a single configuration step to be used to configure a device to act as either a receiver device, as a sender device, or both. It also permits a unique ID to be assigned to each participating device regardless of whether it is to be used as a sender device or as a receiver device.
  • the discovery server 1200 may store, for each exposed service of each host device in host device records 1206, user permissions indicative of which specific users, or classes of users, shall have access to the exposed service. This information may be encoded in an object similar to that defined by the UML class diagram 1400 of FIG. 4.
  • the sender software 1920 may be modified to provide to the discovery server 1200 (as shown in FIG. 12) the user credentials of mobile device user 2100, e.g. as specified by the user via fields 2002 (FIG. 10) upon account creation.
  • the discovery server 1200 may compare the user credentials with the stored user permissions for each exposed service at each proximate host device at the mobile device's current location, to confirm that the user of mobile device 1800 has access to the exposed service.
  • the discovery object 1930 may thereby be made to contain information only for exposed services to which the user 2100 is known to have access permission.
  • user permissions may be applied by the sender software 1920 in some embodiments.
  • the sender software 1920 may control access to the exposed service by comparing the user credentials with the user permissions forming part the discovery object 1930 in association with each exposed service.
  • the user credentials may be supplied to the host device with each invocation of an exposed service, for user permissions verification at the host device.
  • a mobile device user may be able to access certain exposed services even before supplying any user credentials at a sender device. For example, before logging in via a GUI 1980 as shown in FIG. 10, the user of a sender device may still have access to certain exposed services whose user permissions permit anyone, including anonymous users, to access the service. Once the user logs into to a sender device, more services may become available according to user permissions.
  • the discovery server may perform a co-location verification to confirm sender device co-location with a host device, before any information about the host device, or its services/routes, is included in the discovery object 1930.
  • the co-location verification operation may be intended to reduce a risk of "spoofing" of a mobile device location for a nefarious purpose, e.g. gaining access to host devices at a location to which the mobile device user is not permitted entry.
  • Various co-location approaches may be used.
  • the mobile device may detect signatures carried by RF signals at its current location.
  • the detected signatures may for example be carried by BLE advertisements, WiFi and/or NFC broadcasts from proximate electronic devices. All of the detected signatures at the location may be periodically reported to the discovery server, e.g. along with the periodic location descriptor updates.
  • database queries may be submitted to identify any host device for which the signatures are known to be used.
  • a query result indicating a match can be used to verify that mobile device is indeed at the location of the host device whose signature was detected.
  • the same approach can be used in the opposite direction, with host devices detecting unique signatures of any guest mobile devices broadcast via RF signals.
  • the signatures that are used for co-location verification may be time-variable.
  • a signature carried by a BLE advertisement from a host device may change daily or hourly.
  • Signatures and/or descriptors that can also be used for co-location verification can include:
  • Wi-FiTM Access points visible SSID + MAC Address of Access Point
  • Wi-FiTM Access points connected SSID + MAC Address of Access Point
  • mobile devices in other embodiments may be other types of devices, such as tablets, portable gaming devices, or laptops, to name but several examples.
  • the location may be something other than a room, such as an outdoor space enclosed by a fence; multiple adjacent rooms between which people may freely pass; a house; an office building; or an area within a building (e.g. a floor, conference area, or similar).
  • a location need not necessarily be enclosed and may be a sub-location of another location or may further be logically and/or physically subdivided into other locations.
  • a host device's location may be initially unknown (e.g., if a GPS receiver is not available). In such cases the host device's location may be assigned by the discovery server as follows.
  • the received RF signatures of the host device and a location of the guest device may be sent to the discovery server by the guest device as part of requesting a service tree.
  • the location of the guest device is used as a guess/proxy for the location of the host device.
  • the guessed location of the guest device may be refined over time as new guest devices encounter the host device, e.g., as a population average.
  • Devices need not have fixed locations to act as host devices. In that case, the techniques described in the preceding paragraphs can be used to keep the location of a host device current in the discovery database.
  • receiver software also includes a route monitoring component that monitors the availability of routes. For example, routes may come and go as Wi-FiTM access points are disabled or enabled, or if a BluetoothTM antenna is manually disabled/enabled by the user. This may also be particularly relevant if the host device is in motion and comes within range of new access points. Changes in available routes are reported to the discovery server, which modifies the corresponding device's record accordingly.
  • another route that can be made available to route data between sender and receiver devices is by virtue of an intermediary such as the discovery server.
  • an intermediary such as the discovery server.
  • This may be useful in some situations, e.g. : (1) when the receiver device only has 4G connectivity; (2) when it is undesirable for the sender and receiver to establish direct connections due to security considerations (e.g., do not wish to provide Wi-FiTM access point password to any senders); or (3) unable to establish direct connections due to firewalls.
  • the intermediary e.g. discovery server
  • the intermediary can be configured to only route messages for devices that are proximate.
  • FIG. 16 schematically illustrates another embodiment comprising a plurality of devices 10-1, 10-2, 10-3, 10-4, 10-5 (individually and collectively devices 10) in communication with a network 14 at a location 100. Further, a guest carrying a device 12 is illustrated.
  • each device 10 has some computing capability, and may intercommunicate and be interoperable with some other devices, and preferably network 14.
  • devices 10 may each be televisions, monitors, network enabled loud speakers, monitors, thermostats, or any other portable electronic device with processing and
  • devices as referred to herein can also include, without limitation, peripheral devices such as displays, printers, touchscreens, projectors, digital watches, cameras, digital scanners and other types of auxiliary devices that may communicate with another computing device.
  • Devices 10 may be permanently, or semi- permanently located at location 100, or may be transient to the location.
  • Network 14 may be a packet switched network and may include several local area, including for example a conventional local area network at location 100, and wide area networks, and may include the public internet.
  • Network 14 may accordingly include suitable base stations (e.g. cellular base stations), routers, access points, network switches, and the like.
  • Devices 10 and 12 may communicate with network 14 by way of a network interface which may take the form of a Wi-Fi or cellular network interface, for example, compliant with one or more wireless networking standards including the IEEE802.11 family of standards; GSM; GPRS; 3G; 4G; 5G; LTE; or similar standards.
  • Location 100 may be a suitable host environment, and may for example be a house, office building, room, or area within a building (e.g. a floor, conference area, etc.). Practically, devices at location 100 are geographically proximate - for example within several (e.g. 1-500) meters of each other. A location 100 may be a sub-location of another location 100, or may further be logically and/or physically subdivided into other locations.
  • a guest may bring device 12 (which may be referred to as a guest device) into a host environment (e.g. to location 100) in which devices 10 provide computing or similar services (which may be referred to as host devices 10) are located.
  • a host environment e.g. to location 100
  • devices 10 provide computing or similar services (which may be referred to as host devices 10) are located.
  • Devices 10 may be accessed by guest device 12.
  • the present disclosure discloses how the guest device 12 may discover and gain access to the services of devices 10-1, 10-2 ... 10-n in host environment 100.
  • relevant services available at devices 10 may be determined by matching descriptors of guest device 12 with descriptors of host devices 10 to a discovery server 20, also depicted in FIG. 16. These descriptors may be provided to discovery server 20 by discovery applications executing at each of devices 10/12.
  • FIG. 17 schematically depicts guest device 12.
  • Example device 12 may be a cellular phone, cellular smart-phone, wireless organizer, pager, personal digital assistant, computer, laptop, handheld wireless communication device, wirelessly enabled notebook computer, portable gaming device, or tablet computers.
  • Example device 12 may accordingly be based on a Qualcomm or MediaTek Labs reference design.
  • device 12 includes a processor 21, processor readable memory 27, and input/output (I/O) interface 23; a network interface 25; and a position receiver 29.
  • Device 10 may further include touch display 50; one or more audio transducers 32.
  • Processor 21 may be a suitable computer processing subsystem and may include a numerical processor having multiple cores, and a graphics processor.
  • processor 21 may be a RISC processor having an ARM based architecture, and may for example, be a suitable mobile processor manufactured by Qualcomm, MediaTek, Apple or the like.
  • processor 21 may be based on the x86 architecture.
  • processor 21 may be a custom processor.
  • Device 12 may further include a position receiver 29.
  • the position receiver 29 may be a receiver capable of receiving a satellite position signal, for example, from a global positioning (GPS) satellite 16 or other satellites such as one or more GNSS satellites.
  • GPS global positioning
  • receiver 29 may receive an indoor positioning signal, from a suitable indoor positioning system (IPS).
  • IPS systems are, for example, disclosed at https://en.wikipedia.org/wiki/Indoor_positioning_system.
  • Positioning receiver 29 may further be capable of receiving a position signal and optionally a beacon signal from a known location.
  • position receiver 29 may be a relatively high accuracy location receiver - capable, for example, of determining the position of device 10 within several metres and preferably within the centimetre range.
  • position receiver 29 may be a combination of hardware and software capable of determining the location of device 10, using location services.
  • Touch display 30 may, for example, be capacitive display screens that include a touch sensing surface. Such a display may be integrated as a single component. Alternatively, touch display 30 may include suitably arranged separate display and touch components. Touch display 30 may be adapted for sensing a single touch, or alternatively, multiple touches simultaneously. Touch display 30 may sense touch by, for example, fingers, a stylus, or the like. Touch display 30 may return the coordinates of any touch or touches for use by a process or device 10.
  • touch display 30 may be used to display pixelated graphics - in the form of computer rendered graphics, video and the like.
  • Network interface 25 may include one or more radios for data (and optional voice) communication with a complementary wireless network, using, for example, one or more wireless networking standards including the IEEE802.11 family of standards; GSM; GPRS; 3G; 4G; 5G; LTE; or similar standards.
  • Network 25 may further include radios to allow for short range communication using, for example, Bluetooth or NFC protocols.
  • FIG. 18 schematically illustrates the organization of memory 27 at device 12 (or device 10).
  • memory 27 stores an operating system 34, which may for example, be a Unix based operating system (e.g. Android), an Apple iOS operating system, or other operating system; a discovery application 36, exemplary of embodiments; other applications 38; and data 39.
  • operating system 34 may for example, be a Unix based operating system (e.g. Android), an Apple iOS operating system, or other operating system
  • a discovery application 36 exemplary of embodiments
  • other applications 38 and data 39.
  • Devices 10 similarly include a processor, processor readable memory, and a network interface (not specifically illustrated), to allow intercommunication with network 14 and/or proximate devices 10 or 12, using shorter range communication protocols.
  • devices 10 may include suitable hardware (also not specifically illustrated) and host suitable software to provide one or more computing resources or services to other devices like device 12.
  • Each device 10, 12 may be associated with one or more descriptors that provide contextual information about each device 10, 12.
  • Contextual information may include the capabilities of each device; services offered by each device; services required by each device; the location of each device; proximate devices; information about the operating environment of each device; the devices available applications, interfaces, resources and the like.
  • descriptors may be auto-generated based on observed states or attributes of each device 10, 12 or may be generated from user inputs. Descriptors may be stored locally within computer readable memory at device 10, 12 or remotely, for example at a network accessible server.
  • a software application or service (referred to herein as a "discovery application 36") may be executing at each device 10, 12 to gather contextual information and generate corresponding descriptors.
  • descriptors are or included natural language descriptors that may be easily understood by a human. Conveniently, use of natural language descriptor simplifies programming, and may allow know natural language processing and comparison techniques to be used in processing and/or comparing descriptors, as detailed herein.
  • devices 10 may be located throughout location 100, and may be of various types, e.g., mobile phones, laptop computers, desktop computers, tablet computers, smart appliances, IoT devices, VR devices, etc. Each device 10 may be uniquely identified by a GUID (globally-unique identifier).
  • GUID global-unique identifier
  • Each device 10 executes software to expose one or more services that may be accessed by device 12 to invoke certain functionality at device 10, under control of device 12.
  • a service may invoke various types of functionality. For example, functionality may be associated with a particular input interfaces at device 10, e.g., a sensor such as microphones, camera, etc.); a particular output interface at device 10, e.g., a display screen, a speaker, etc.; a particular software functionality (e.g., decoding/encoding a message, performing a calculation, installing a software application, etc.), a particular resource (e.g., storing data in memory of device 10); a particular software application (e.g., launching a browser to display a particular website, launching an application to display a text message or image); or a combination of the above (e.g., where the service invokes the functionality of a VR device comprising a
  • Example services may, for example, allow the casting of audio of video from device 12.
  • a service may be associated with an application programming interface (API), network protocol, or other interface allowing device 12 to access an identified service.
  • API application programming interface
  • Example descriptors at each of devices 10, 12 may describe:
  • unique identifier e.g. GUID, IMEI or similar
  • the current location of device 10, 12 e.g., GPS coordinates; room location; etc.
  • sensors of device 12 e.g., through audio sensors, proximity to certain devices or networks or other RF signals based on signal RF strength detected through RF antennas;
  • a device e.g. as gleaned from user interaction with device 12 such as applications executed at device 12
  • data sensed from sensors of device 12 e.g., accelerometer, microphones, etc.
  • external computing resources that could be used by applications running at device 12 (e.g. #display, and/or #audio, generated if an audio video application is executing at device 12); and/or
  • each descriptor may take the form of a pre-defined text string, e.g., #johndoe, #walking, #youtube, #cooking, #sensedaudio, and may include information in natural language.
  • the text string may encode certain data such as numerical data (e.g., GPS coordinates).
  • the descriptors should be standardized so that discovery software application 36 at device 12 (and devices 10), as well as server 20 can discern which services are available at which device 10, and allow discovery and use of these services by device 12.
  • the descriptors may be entered free-form, entered at device 10, 12. In other embodiments, these descriptors may be constrained by a pre-defined dictionary.
  • Some descriptors are generated automatically (e.g., based on sensor data gathered at device 10/12) at device 10/12, and other descriptors may be defined by the user, e.g.,
  • an administrator or other user at location 100 may provide/input the physical room location of each device 10 within location 100.
  • relative signal strength of radio signals emanating from network 14, and other devices 10 may be determined at each device.
  • audio or motion may be sensed at devices 10.
  • Corresponding descriptors may be created and stored, either at the device 10/12 or remotely.
  • the execution of software applications at device 12 may give rise to the generation of descriptors of resources that could be used by an executing application.
  • an application that generates audio or video could cause discovery application 36 to generate descriptors of device 12 advertising that the application at device 12 can present output at external devices having such functionality (e.g., #screen, #speakers).
  • one or more host devices 10 may have the same descriptors (e.g., #screen, #speakers) generated by their respective discovery applications 36 to advertise functionality (i.e., services) for receiving such output.
  • These matching descriptors may be used by server 20 to match device 10 to guest device 12 in manners described herein.
  • further descriptors identifying the data format of such output, and/or the identity of the application that can provide the output e.g. #youtube; #videoplayer; etc.
  • discovery software 36 may also echo descriptors received locally at device 12, from nearby devices 10. Such descriptors, may for example, be received by way of a local radio frequency signal (e.g. Bluetooth, NFC, infrared signal, etc.) that emanating at devices 10.
  • a local radio frequency signal e.g. Bluetooth, NFC, infrared signal, etc.
  • Guest device 12 compiles a list of descriptors, each describing an aspect of the user of guest device 12, or his/her circumstances or situation (graphically represented as descriptors #A, #B, #C, and #D in FIG. 16).
  • descriptors for a particular device e.g. device 12
  • user may be referred to as that user's or device's context 114.
  • descriptors for device 12 may change over time, e.g., as the user or his/her circumstances or situation change. Accordingly, the user's context (and the context of device 12) may also change dynamically.
  • a server 20 hosts a database 22 that allows location registration of each of devices 10 and 12 by way of network 14.
  • Server 20 may be remote from location 100, and may be a conventional database server, and may therefore include a processor, memory storing database 22, processor executable instructions to access database 22, and to perform methods detailed herein.
  • the database may be a relational database - such as an SQL database, or other database or datastore.
  • Database 22 stores one or more database structures (e.g. database tables) that store device contexts 114, as further detailed below for each device 10 (and optionally device 12).
  • a context 114-1, 114-2, ... 114-n for each device 10-1, 10-2 ... 10-n may be stored.
  • Context 114-0 is associated with guest device 12. Individually and collectively contexts 114- 0,114-1, 114-2 ... 114-n are referred to as context(s) 114, herein.
  • database 22 may be updated periodically (i.e. at defined intervals) and will allow querying of device contexts 114; and other searching and manipulation of data stored at database 22, using a suitable program instructions at server 20.
  • database 22 may be updated periodically (i.e. at defined intervals) and will allow querying of device contexts 114; and other searching and manipulation of data stored at database 22, using a suitable program instructions at server 20.
  • the use of standardized descriptors in a defined format allows querying and comparing of contexts 114 to identify desired services at server 20.
  • device 12 and/or devices 10 may periodically broadcast its context, or portions thereof (e.g. select descriptors) locally, to allow proximate devices 12/10 to ascertain such descriptors.
  • Such broadcast may, for example, be performed by a radio interface using protocol for the transmission of local signals (e.g. NFC, Bluetooth, etc.)
  • a host device 10 may periodically broadcast a descriptor descriptive of its location (e.g., #bedroom, #livingroom, etc.). This location descriptor may be received by a proximate guest device 12 and then echoed at device 12, i.e., included within device 12's own descriptors.
  • device 12 indicates that it is also at the described location, using a descriptor that was not pre-defined or stored at device 12 prior to arriving at the described location.
  • the matching location descriptors may be used by server 20 to match device 10 to guest device 12 in manners described herein.
  • FIG. 19 and 20 depicts a user (e.g. a guest at location 100) operating a personal portable electronic device 12.
  • Device 12 is typically a user/guest's cellphone, but could also be another type of portable device such as a wearable device, a tablet device, or another portable computing device (e.g., a laptop).
  • Device 12 is typically authenticated on network 14 with the user's credentials and typically travels with the user. Accordingly, device 12 may, in some respects, be viewed as a proxy for the user.
  • the location of device 12 may be used as a stand-in for the location of the user; sensors at device 12 may be used to estimate the current activities engaged in by the user (e.g., the microphone can be used to determine whether the user is engaged in conversation, the gyroscope and/or accelerometer can be used to determine whether the user is walking, jogging, etc., changes in the GPS location of the device can be used to determine whether the user is driving); applications at device 12 may be used to determine activities intended by the user (e.g., launching a video player application may indicate that the user intends to watch a video).
  • sensors at device 12 may be used to estimate the current activities engaged in by the user (e.g., the microphone can be used to determine whether the user is engaged in conversation, the gyroscope and/or accelerometer can be used to determine whether the user is walking, jogging, etc., changes in the GPS location of the device can be used to determine whether the user is driving); applications at device 12 may be used to determine activities intended by the user (
  • Device 12 compiles a list of descriptors, each descriptor describing an aspect of the user or his/her circumstances or situation (graphically represented as descriptors #A, #B, #C, and #D forming context 114-0 in FIG. 19).
  • Device 10-1 similarly compiles descriptors #A, #B; device 10-3 compiles descriptor #F; device 10-2 descriptors #B, #E. These, in turn, define contexts 114-1, 114-2, and 114-3, respectively.
  • descriptors for a particular device 10/12 may be referred to as that device's context 114, which may be stored at database 22.
  • the descriptors may change over time, e.g., as the user or his/her circumstances or situation change. Accordingly, for example, context 114-0 of device 12 changes dynamically.
  • FIG. 19 also depicts remote server 20 (which may also be referred to as a "discovery server") processes information regarding (i) the context 114-0 of a particular user and his/her device 12, and (ii) the respective contexts 114 of other devices 10, that execute exemplary discovery software 36 (FIG 18).
  • remote server 20 which may also be referred to as a "discovery server” processes information regarding (i) the context 114-0 of a particular user and his/her device 12, and (ii) the respective contexts 114 of other devices 10, that execute exemplary discovery software 36 (FIG 18).
  • the context for device 12 will change, reflecting a change in the user's environment.
  • its context may reflect the presence of other devices 10 (e.g. device 10-1, 10-2 and 10-3 in FIG. 4).
  • device 12 may sense RF signals associated with Wi-Fi or similar access points at location 100.
  • Device 12 may also sense other local RF signals - including Bluetooth or NFC signals emitted by devices 10.
  • Each of these pieces of contextual information may be converted into a descriptor that forms part of the context 114-0 for device 12 at location 100.
  • server 20 maintains database 22 containing records of various devices 10, 12 and for each device 10, 12 its unique ID, and its context 114, and its services, as well as information for addressing/accessing those devices and services (e.g., IP addresses, protocol information, security access tokens, etc.).
  • Server 20 may occasionally receive updates from devices 10, 12 reflecting changes to the context 114 associated with each device 10, 12. This may occur as device 12 enters location 100.
  • Device 12 and server 20 may collaborate to perform discovery of devices 10 and services provided at those devices 10 that are relevant to a particular user at device 12.
  • Server 20 may then provide device 12 with a list of relevant devices 10 and services provided at those devices, as well as information for addressing/accessing those devices and services.
  • guest device 12 under control of discovery software 36, transmits context 114-0 of guest device 12 to server 20 over network 14.
  • Device 12 may also transmit data to server 20 that allows for verification of credentials of user 10 and/or device 12.
  • Server 20 may then match context 114-0 to stored device contexts 114 of devices 10 to find those of devices 10 relevant to the user at device 12.
  • a device 10 may be matched to a user at device 12 if their respective contexts shares at least one descriptor in common.
  • a device 10 may matched to guest device 12 if their respective contexts share at least a defined number of descriptors in common.
  • a device may be matched to a user if their respective contexts have the same descriptors.
  • a match may be found if the text is the same.
  • the numerical values can be extracted and then checked to determine whether the values are within a certain range. For example, two descriptors encoding GPS coordinates may be considered the same if the coordinates are within a pre-defined range (e.g., 20 feet, 100 feet, etc.).
  • server 20 may create a discovery object 250 and transmits it to device 12.
  • Discovery object 250 includes data allowing device 12 to address/access devices 114 and its services (e.g., IP addresses, protocol information, security access tokens, etc.).
  • discovery object 250 may contain a list of devices 10 which were found to match the context 114-0 of guest device 12, as well as a list of the services at those devices.
  • discovery object 250 may contain API information and API parameters for invoking particular services at one or more of devices 10.
  • guest device 12 was matched to devices 10-1 and device 10-2, but not device 10-3, as context 114-0 shares common descriptors #A and #B with context 114-1; context 114-0 shares common descriptors #B and #E with context 114-2.
  • Discovery object 250 accordingly identifies devices 10-1 and 10-2 and associated services, and sufficient information to allow device 12 to access these.
  • a user at guest device 12 can then, through device 12, invoke the functionality provided by services at device 10-1 and 10-2, e.g., by wireless communication to those devices, either directly, or by way of a portion of network 14 (e.g. by way of a local area network at location 100).
  • a context 114 is provided for each particular device 10/12.
  • a context i.e., a set of descriptors
  • server 20 may match a context 114 of a guest device 12 to contexts of particular services.
  • Intrinsic device descriptors which are automatically sensed and defined and describe intrinsic characteristics of the device such as, e.g., the type of device (tablet, phone, TV, etc.), any of its specifications (screen size, screen resolution), applications
  • Extrinsic device descriptors which are automatically sensed and defined and relate to extrinsic characteristics of the device such as its location and characteristics of its environment, e.g., GPS coordinates, strength of measured wireless signals, ID of wireless broadcasters in the environment.
  • IDs may, for example, include:
  • one or more extrinsic device descriptors may optionally be used as a signature for confirming whether a particular device 12 (which may be a guest device) is in a particular environment (which may be a host environment), e.g., to confirm that device 12 and that devices 10 providing accessible services are co-located in the same environment.
  • Access to services may be restricted to those devices that can present a device context 114 that includes a pre-defined expected signature.
  • a device 12 that presents a context 114 lacking the expected signature will fail to discover certain services; namely, server will not include those services in the discovery object 250 returned to the device.
  • the presented signature may be allowed to deviate from the expected signature by a pre-defined margin (e.g., only a subset of the descriptors must match). Whether or not a service is access-restricted in this manner may be toggled per device, or per service.
  • Descriptors forming the signature may be kept hidden from the user to prevent them from being used on devices other than the particular device that sensed the descriptors.
  • these descriptors may be referred to as "private” or “secret” descriptors.
  • a beacon may be placed in an environment that emits a time- varying signal (e.g., a signal encoding a code that changes from time to time).
  • the signal may for example be a Bluetooth transmission such as a Bluetooth low energy (BLE) beacon.
  • BLE Bluetooth low energy
  • the strength of this signal may be controllable, and its range defines the extent of a particular environment (e.g., a room or a building) in which access to particular services is granted.
  • the expected signature includes a descriptor that is the code encoded in the beacon signal (or derived from the code). Accordingly, only devices within the range of the beacon signal will be able to present the expected signature.
  • the expected signature and the corresponding beacon signal change from time to time (e.g., every few minutes, every hour, etc.) to prevent later use or re-use of a received code.
  • a device e.g. device 12
  • the advertisement may be made by way of a Bluetooth Low Energy (BLE) advertisement using the iBeacon protocol.
  • BLE Bluetooth Low Energy
  • the unique device ID advertised by device 12 will be received by one or more of the devices 10 which periodically listen for advertisements (e.g., every 5-10 seconds).
  • the ID of device 12 will become part of the private context of that device 10-1, which in return is reported to discovery server 20.
  • Server 20 may then uses presence of device 12 by way of its ID in device 10-1 's private context to verify that the two devices are co- located.
  • server 20 may requires verification of co-location in this manner before allowing device 12 to discover device 10 or any of its services.
  • verification of co-location using the private context reported by one device 10 may be used by server 20 to control discovery of several other devices 10 (and their services) by device 12. For example, all devices 10 in location 100 (room, building, etc.) may be discoverable by device 12 if any one device 10 in that environment reports to server 20 a private context containing the unique ID of device 12.
  • each device 10 is configured to periodically advertise its unique device ID, which may be received by a device 12 and included in its context 114.
  • server 20 may restrict discovery to when the unique device ID of device 12 is present in the context 114 of a device 10 and reciprocally the unique ID of the device 10 is presented in the private context of device 12 (e.g., when the devices "see" one another).
  • wireless advertisement may be used in addition to or instead of BLE advertisements.
  • Wi-FiTM and/or NFC broadcasts may be used.
  • Clause 1 A method of locating interoperable devices at a location, comprising:
  • each host device at the location receives from each host device at the location a list of descriptors about each host device, and storing the lists at a discovery server; receiving from a guest device a list of descriptors of the guest device, over a network to the discovery server; receiving from the guest device a query, over the network, to the discovery server; in response to the query, comparing the list of descriptors of the guest device to the lists of descriptors of the host devices to identify a set proximate interoperable devices at the location; and providing identifiers of services of the set of proximate devices to the guest device.
  • Clause 2 The method of clause 1, wherein the list of descriptors received from the guest device includes an identifier of services to be used by at least one application executing at the guest device.
  • Clause 3 The method of clause 1, wherein the list of descriptors received from the guest device includes descriptors of at least one of the host devices, received locally at the guest device.
  • Clause 4 The method of clause 3, wherein descriptors of at least one of the host devices, received locally at the guest device by way of a radio signal from the at least one host device.
  • Clause 5 The method of clause 1, wherein the list of descriptors about each host device includes an identification of services at each host device.
  • Clause 6 The method of clause 2, wherein proximate interoperable devices provide the list of descriptors about each host device include an identification of services at each host device accessible by said guest device.
  • Clause 7 The method of clause 1, wherein each of said descriptors of said host devices includes natural language describing contextual information about an associated one of said host devices.
  • Clause 8 The method of clause 1, wherein said comparing the descriptors of the guest device to the lists of descriptors of the host devices comprises locating at least one identical descriptor in a list of descriptors of one of the host devices, and in the descriptors of the guest device.
  • Clause 9 The method of clause 1, further comprising receiving an updated list of descriptors from the guest device, as the guest device moves at the location.
  • Clause 10 The method of clause 1, wherein said list of descriptors of the guest device includes at least one of the coordinates of the guest device; identity of the guest device; IDs of visible radio beacons; an identification of NFC tags scanned; identifiers of WiFi access points visible; and an identifier of a connected wireless network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

A method to expedite wireless access, from a mobile device, to exposed services at proximate electronic devices comprises: based on a location descriptor indicative of a current location of a mobile device, identifying a set of proximate electronic devices at the location; for each of the proximate electronic devices in the set, further identifying: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device; and for each of the modalities, addressing information for establishing a wireless communication session with the proximate electronic device; storing, at the mobile device, the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; and upon subsequent invocation, at the mobile device, using the pre-emptively stored addressing information to automatically establish a wireless communication session, in the associated wireless communication modality, with the proximate electronic device providing the exposed service.

Description

INTEROPERABLE DEVICE AND SERVICE DISCOVERY FOR EXPEDITED WIRELESS ACCESS TO EXPOSED SERVICES AT PROXIMATE DEVICES
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application relates to US Provisional Application No. 62/485,587 filed April 14, 2017, US Provisional Application No. 62/523,622 filed June 22, 2017, US Provisional
Application No. 62/525,705 filed June 27, 2017, and US Provisional Application No.
62/556,779 filed September 11, 2017, the contents of each of which are hereby incorporated by reference.
TECHNICAL FIELD [0002] This disclosure relates to mobile devices, and more particularly to discovering electronic devices in proximity to a mobile device.
BACKGROUND
[0003] Modern electronic devices are often interoperable with other devices. Often interoperability is wireless. For example, a mobile device may be able to cast audio or video wirelessly to a proximate set of speakers or a display using a medium-range wireless communications modality, such as Wi-Fi™, or a short-range wireless communication modality, such as Bluetooth™. In this context, the term "wireless communication modality" refers to any technology for wireless communication according to an established standard for transmitter behavior, receiver behavior, and/or communication protocol. [0004] Discovery and wireless connection of a mobile device with a proximate electronic device, however, can be idiosyncratic or difficult, particularly when the devices have not previously communicated with one another using the chosen wireless communication modality. Various handshaking steps may be required to establish a wireless communication session between the devices and to access services of one device from the other. The handshaking steps may vary between wireless communication modalities.
[0005] For example, if Bluetooth™ is chosen as the operative wireless communication modality, handshaking between a first device and a second device that have not previously used that wireless communication modality may entail the following steps: [0006] - the first device enters an inquiry state in which it broadcasts packets containing an inquiry access code on multiple hop frequencies, effectively inviting any proximate Bluetooth™ devices to respond
[0007] - the second device detects the packet from the first device on the hop frequency to which it is listening and, after a random backoff delay, responds with its own device address and clock synchronization information
[0008] - the first device, having learned the device address of the second device from the response, enters a "paging" state in which it broadcasts ID packets containing the second device's address on multiple hop frequencies to invite the second device to connect [0009] - the second device, while in a "page scanning" state, receives from the first device the ID packet containing its own device address and sends an acknowledgement, at which time it assumes the role of a "slave" relative to the "master" role assumed by the first device
[0010] In contrast, the steps involved in establishing a wireless connection between a mobile device and a proximate electronic device using a Wi-Fi™ protocol, e.g. IEEE 802.1 lb/g/n/ac, are different from those used for Bluetooth™, and may include:
[0011] - if the Wi-Fi™ connection is to be made via an access point (AP), identifying the service set identifier (SSID) of the access point; this step may be complicated by the fact that some access points may not broadcast their SSIDs
[0012] - if the access point employs encryption, providing the correct password to facilitate connection (this may require manual queries on the part of the user)
[0013] - once a wireless communication session has been established with the AP, somehow determining the internet protocol (IP) address of the proximate electronic device within the Wi- Fi™ local area network (LAN) to facilitate intercommunication with that device via the AP
[0014] To complicate matters, some wireless communication modalities, e.g. Bluetooth™, provide for "non-discoverable" modes of operation in which an electronic device is effectively invisible or silent from the perspective of a proximate mobile device. Discovery and connection with a proximate electronic device operating in that mode may be difficult if not impossible.
[0015] Even after a medium-range or shorter wireless communication session has been established, additional steps may be required to ascertain what services are available at the other device. For example, in the case of Bluetooth™, a Service Discovery Protocol (SDP) may be used by one device to discover what services another device may offer. This may involve setting up a Logical Link Control and Adaptation Protocol (L2CAP) link and exchanging of request/response protocol data units (PDU) over that link. Further steps may be required to actually access the services. These steps may require manual intervention on the part of a user. In the case of Wi-Fi™, no comparable service discovery protocol exists, therefore proprietary methods may be required to ascertain what services may be available.
[0016] Aside from the foregoing, when a wireless connection is made to a proximate electronic device, it may be difficult to ascertain the suitability of that device for particular purposes. For example, it may be difficult to ascertain whether proximate electronic devices are suitable for playing video, displaying images, playing audio, or other purposes.
[0017] Accordingly, there remains a need for facilitating the discovery and connection of a mobile device with suitable proximate electronic devices and the discovery and use of services at those electronic devices.
SUMMARY
[0018] According to an aspect, there is provided a method of expediting wireless access, from a mobile device, to exposed services at proximate electronic devices via a medium-range or shorter wireless communication modality not previously used between the mobile device and the proximate electronic devices, the method comprising: based on a location descriptor indicative of a current location of a mobile device, identifying a set of proximate electronic devices at the location; for each of the proximate electronic devices in the set, further identifying: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless
communication session with the proximate electronic device; pre-emptively storing, at the mobile device, the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; and upon subsequent invocation, at the mobile device, of one of the exposed services, using the pre-emptively stored addressing information to automatically establish a wireless communication session, in the associated wireless communication modality, with the proximate electronic device providing the exposed service. [0019] Other aspects include but are not limited to a system and mobile device for providing expedited wireless access to exposed services at proximate electronic devices via medium-range or shorter wireless communication modalities not previously used by the mobile device to wirelessly communicate with the proximate electronic devices. [0020] Other features will become apparent from the drawings in conjunction with the following description.
BRIEF DESCRIPTION OF THE DRAWINGS
[0021] In the figures which illustrate example embodiments,
[0022] FIG. 1 is a schematic depiction of electronic devices at a location; [0023] FIG. 2 schematically illustrate a discovery server for facilitating discovery of services at the electronic devices of FIG. 1 ;
[0024] FIGS. 3, 4 and 5 schematically depict the structure of various database records of the discovery server of FIG. 2;
[0025] FIGS. 6A and 6B schematically depict operations for configuring the electronic devices of FIG. 1;
[0026] FIG. 7 depicts a graphical user interface displayed at one of the electronic devices of FIG. 1 during its configuration as shown in FIGS. 6A and 6B;
[0027] FIG. 8 is a schematic depiction of a mobile device;
[0028] FIG. 9 is a schematic depiction of memory of the mobile device of FIG. 8; [0029] FIG. 10 illustrates a graphical user interface displayed at the mobile device of FIG. 8;
[0030] FIG. 11 schematically depicts, as a flowchart, operations for discovering proximate electronic devices and exposed services thereof for expedited wireless access to the services;
[0031] FIG. 12 is a schematic depiction of an example scenario in which a guest mobile device becomes proximate to the electronic devices at the location of FIG. 1;
[0032] FIG. 13 schematically depicts an example discovery object generated by the discovery server of FIG. 2 for the scenario of FIG. 12; [0033] FIGS. 14 and 15 schematically depict an outcome of the device and service discovery operations of FIG. 11 for the example scenario depicted in FIG. 12;
[0034] FIG. 16 depicts multiple electronic devices, in communication with a network and server, exemplary of embodiments; [0035] FIG. 17 is a block diagram of an example device;
[0036] FIG. 18 is a block diagram of memory at the device of FIG. 17; and
[0037] FIGS. 19 and 20 schematically illustrate the discovery of interoperable proximate devices at a location.
DETAILED DESCRIPTION [0038] FIG. 1 schematically depicts a room 1000 inside a residential or commercial building. The example room 1000 is an enclosed space to which access may be controlled, e.g. via a mechanical deadbolt lock opened by a physical key. It will be appreciated that the room 1000 is a form of location and may alternatively be referred to as such.
[0039] The room 1000 of FIG. 1 contains three electronic devices: a smart television (TV) 1010, a laptop computer 1020 and a smart thermostat 1030. The electronic devices 1010, 1020, and 1030 are, in certain respects, conventional. For example, each device includes dedicated hardware specific to the type of device~e.g. in the case of the TV 1010, a digital tuner, demultiplexer, MPEG decoder, image processor, LED display, speakers and other components. Practically, the electronic devices at location 1000 are geographically proximate to one another - for example within one hundred meters of each other.
[0040] As is conventional, each of the devices 1010, 1020 and 1030 comprises at least one microprocessor communicatively coupled to a storage medium (memory) storing executable software. The software at each device includes operating system software for basic device functions and higher-level application software. For example, application software at smart TV 100 may include applications ("apps") for accessing different types of media or content, e.g., Netflix™, Spotify™, YouTube™ or Amazon™ Prime Video. The apps may be preloaded at the devices 110, 1020 and 1030 at the factory or may be subsequently downloaded by the device user, via an "app store" or other post-market digital distribution mechanism.
[0041] To facilitate such app downloads and for other reasons (e.g. to facilitate software updates), each of the electronic devices 1010, 1020 and 1030 is equipped for internet connectivity. In the case of smart TV 1010, the device may incorporate "set-top box" hardware for accessing the Internet 1050 directly via a broadband internet (e.g. coaxial cable) connection. In the case of the laptop 1020 and the smart thermostat 1030, the device may be equipped to access the Internet 1050 via wireless LAN, e.g. Wi-Fi™ via an internet-connected access point 1040. Devices 1020 and 1030 accordingly include suitable antennas, transceivers and software for Wi-Fi™ wireless communication, confirming to associated standard(s) such as IEEE 802.11 a/b/g/n/ac for example. The smart TV 1010 may also be factory-equipped with Wi-Fi™ capabilities. It will be appreciated that Wi-Fi™ is an example of a medium-range wireless communication modality having a typical range of about one hundred meters.
[0042] Each of the electronic devices 1010, 1020 and 1030 is also equipped for wireless communication via a short-range wireless communication modality, specifically Bluetooth™. For example, the TV 1010 and laptop 1020 may use Bluetooth™ to facilitate use of peripheral devices such as wireless keyboards or pointing devices (e.g. mice), whereas the smart thermostat 1030 may use Bluetooth™ to facilitate wireless communication with nearby temperature sensors. The devices 1010, 1020 and 1030 therefore include suitable antennas, transceivers and software for Bluetooth™ wireless communication, e.g. according to standard IEEE 802.15.1.
[0043] For clarity, in this disclosure the term "medium-range or shorter" is used to refer to wireless communication modalities operable over distances of about one hundred meters or less. Examples of medium-range or shorter wireless communication modalities include but are not limited to: Wi-Fi™; Bluetooth™; Zigbee™; TransferJet™; NFC (the latter two possibly being considered an ultra-short range wireless communication modality); Z-Wave™ and DECT (used by enterprise and hospital wireless phone systems). Thus, based on the foregoing description, it may be considered that electronic devices 1010, 1020 and 1030 of FIG. 1 are equipped with two medium-range or shorter wireless communication modalities (Wi-Fi™ and Bluetooth™). For clarity, broadband cellular network technology, e.g. 3G, 4G/LTE, is not considered as a medium-range or shorter wireless communication modality because its range can extend for greater distances, e.g. up to about five kilometers.
[0044] In the example depicted in FIG. 1, it is presumed that each of the devices at location 1000 requires some form of modality-specific and device-specific security credentials in order to establish medium-range or shorter wireless communication sessions with that device using that modality. Examples of security credentials include but are not limited to a Wi-Fi™ network SSID whose broadcast has been disabled or "hidden," a network password (encryption key, e. WEP key or WPA/WPA2 passphrase), an otherwise undisclosed Bluetooth™ identifier, or a Bluetooth™ pairing code. The security credentials for the devices of FIG. 1 are summarized ii Table 1 below:
Figure imgf000009_0001
Table 1: Security Credentials of Electronic Devices at Location 1000
[0045] It will be appreciated that, despite being identified using distinct identifiers in Table 1, the SSIDs and passwords for the three devices 1010, 1020 and 1030 may actually be the same, e.g. if the devices all use the same access point 1040 for Wi-Fi™ connectivity. This is not necessarily always the case for electronic devices at the same location. It will further be appreciated that, in Table 1, the Bluetooth™ addresses BTADDR0001, BTADDR0002, BTADDR0003 are distinct. For clarity, the identifiers in Table 1 are symbolic. For example, actual Bluetooth™ addresses must have 12 hexadecimal characters.
[0046] Each of the electronic devices 1010, 1020 and 1030 provides a variety of services. In this disclosure, a "service" is an operation that invokes or effects functionality at, or using the resources of, a device. The functionality may for example be associated with a particular input interface (e.g., a sensor such as a microphone or CCD device of a camera); a particular output interface, e.g., a display screen, a speaker; a particular software functionality (e.g.,
decoding/encoding a message, performing a calculation, installing a software application, etc.), a particular resource (e.g., storing data in memory); a particular software application (e.g., launching a browser to display a particular website, launching an application to display a text message or image); or a combination of the above (e.g., where the service invokes the functionality of a virtual reality (VR) device comprising a combination of various interfaces, resources, and software). [0047] In the case of TV 1010, services include an image display service for displaying (still) images in common formats (e.g. jpg or .gif), a video playing service for playing video in common video formats (e.g. .mpg or .mp4), and an audio playing service for playing audio in common formats (e.g. .mp3 or Dolby™ Digital). The laptop computer 1020 provides similar services to the TV 1010, among others. The smart thermostat 1030 provides a temperature sensing service. The services may be implemented using operating system-specific API calls and/or proprietary formats.
[0048] Notably, in order to facilitate wireless access to these services from proximate electronic devices, each of the devices 1010, 1020 and 1030 is configured with "receiver" software. The receiver software facilitates automatic wireless connectivity with suitably configured, complementary mobile devices that become proximate to the devices 1010, 1020 and 1030 and may wish to invoke an exposed service at one of the devices. This functionality may be referred to using the trademark Encounters™.
[0049] For clarity, in this disclosure, electronic devices that have been customized with the receiver software are referred to either as "receiver devices" or "host devices." The
configuration of a device to act as a receiver device is described below in conjunction with FIGS. 6A and 6B. Conversely, mobile devices that have been configured to be complementary to receiver devices are referred to herein either as "sender devices" or "guest devices." The latter term connotes the fact that the devices may not normally be attendant at that location, and for this reason, may not have previously established wireless communication with resident receiver devices using a medium-range or shorter modality. The configuration of a device to act as a sender device is described below.
[0050] To facilitate the functionality described above, a discovery server is deployed, e.g. at a central or remote location. An example discovery server 1200 is schematically depicted in FIG. 2.
[0051] Referring first to FIG. 2, server 1200 includes at least one processor coupled to memory storing a discovery database 1202. In this example, the database 1202 is a SQL database, which is a form of relational database. Database 1202 may also be implemented as a NoSQL database. The discovery server 1200 may be implemented as a cloud service, e.g. using Microsoft® Azure™ or Amazon™ Web Services, and may be distributed across multiple physical devices. In this case, database 1202 may be implemented as a distributed database such as, e.g., a Couchcase™ or Firebase™ database.
[0052] At a high level, the discovery server 1200 may be considered to perform a "matchmaking" role. In that role, the server 1200 periodically and pre-emptively apprises or updates participating mobile "sender" devices (as described below) with information about receiver devices known to be at the same location as, and therefore proximate to, the mobile device. The updates may occur periodically, e.g. responsive to location updates from
participating mobile devices. Each update sent to a mobile device not only identifies what receiver devices are proximate, but also what services are exposed (i.e. available for invocation by proximate sender devices) at each those devices. The updates also provide addressing information— including any necessary security credentials (e.g. as shown in Table 1 above)— to the mobile device. This is done to facilitate the automatic establishment of wireless
communication sessions with target receiver devices for wireless access to their exposed services.
[0053] In a sense, the "matchmaking" performed at discovery server 1200 may be considered to match participating mobile sender devices with a dynamically changing set of proximate receiver devices using co-location as the matchmaking criterion. As will be appreciated, the pre- emptive nature of the updates— i.e. the fact that the updates are made automatically and dynamically, even before the mobile device has expressed any intention of invoking a service to be performed at one of the receiver devices at its current location— greatly simplifies and expedites wireless access to services at proximate electronic devices should they become needed. [0054] In this embodiment, discovery database 1202 primarily stores two types of records in respective separate database tables: user records 1204 and host device records 1206.
[0055] User records 1204 typically consist of user information of the same type that is typically collected by contemporary web-based services such as Facebook™ or Gmail™. This user information typically includes a username (possibly taking the form of a unique email address or phone number), password, and name (first name and surname).
[0056] Host device records 1206 are more substantial. Fundamentally, each device record corresponds to a participating host device, including information such as unique host device ID and the location of the device. In turn, each host device contains one or more service records. Each service record represents an exposed service at that host device and provides information required for invoking the service. Moreover, each service record itself contains one or more "route" records. A route record represents a wireless communication modality available at the containing host device for accessing the containing service. It is within this record that the above-mentioned address and security access information specific to that wireless
communication modality and to the host device (e.g. as set forth in Table 1 above) is stored.
[0057] The latter aspect of the database table structure, i.e. storing records representing addressing information for distinct wireless communication modalities (including security credentials like passwords and encryption keys) on a per-service basis, may be considered counterintuitive. The reason is that such addressing information is generally specific to the device rather than to an exposed service at that device. Nevertheless, the latter structure is adopted in this embodiment in order to more easily and efficiently identify, at run time, wireless communication modalities suitable for an exposed service of interest. [0058] For example, if a host device providing a "play Video" video playback service is equipped with both Wi-Fi™ and Bluetooth™, the corresponding service record representing that service may contain a single "route" record representing only the Wi-Fi™ modality and no "route" record representing the Bluetooth™ modality, with the rationale that Bluetooth™ is poorly suited for meeting the data transmission demands of casting video whereas Wi-Fi™ is well-suited for that purpose. On the other hand, if the same host device provides a
"controlCursor" control mouse cursor input service, the corresponding service record representing that service may contain a single "route" record representing only the Bluetooth™ modality, with that the rationale that Bluetooth™ is particularly suited for meeting the low communication latency demands of controlling mouse cursor input whereas Wi-Fi™ is less well-suited. In another example, the route for a particular service may be limited to one or more ultra-short range wireless modalities (e.g., NFC) if the service is particularly sensitive and it is undesirable for the service to be accessed at a distance (e.g., a service to transfer funds between the devices). When multiple routes are suitable, a service record may store an order of preference. [0059] FIG. 3 schematically depicts an example UML class diagram 1300 that can be used to represent a host device. In this example class diagram 1300, the class attributes include: bluetoothMacAddress - a Bluetooth™ address (empty for non-Bluetooth™ devices) brand - an identifier of the host device manufacturer (e.g., Samsung™, HTC™, etc.) CREATOR - constructor of object from serialized message
devicelD - a unique host device identifier
modelNumber - an identifier of the manufacturer-assigned model number of the host device
name - a name assigned by the owner use of the host device
osldentifier - an operating system identifier
pluginServices - a list of exposed services (see FIG. 4)
screenSize - an indicator of a size of screen (if any) at the host device
type - an indicator of a type of device of the host device
userDefinedContext - a list of strings comprising user-defined context identifiers, e.g. describing an intended use of the device, properties (like "wall mounted display")
[0060] The operations of example host device class diagram 1300 of FIG. 3 include:
DescribeContents() - describe if there are any special data types, like file descriptors stored in the object
DevicePublic() - constructor
writeToParcel (Parcel, int) - method for serializing the DevicePublic object, e.g. to facilitate passing of the data from the discovery server 1200 to mobile devices
[0061] FIG. 4 schematically depicts an example UML class diagram 1400 that can be used to represent an exposed service at a particular host device. In this example class diagram 1400, the class attributes include:
CREATOR - constructor of object from serialized message
name - service name
passcode - access code set for service (optional)
privateAccess - Boolean value; if set to true, access to service is restricted to the owner of the device
routes - a list of wireless communication modalities by which this service can be accessed at the containing host device (see FIG. 5)
running - Boolean value marking if the service is running or stopped
serviceVersionNumber - version number used for checking sender-receiver compatibility
[0062] The operations of example service class diagram 1400 of FIG. 4 include:
DescribeContents() - describe if there are any special data types, like file descriptors stored in the object
isRunningO - returns "true" if service is running
ServicePublicO - constructor of service public object
writeToParcel (Parcel, int) - method for writing the object to Android Parcel data type. Allows the serialization of data object and passing it between applications
[0063] FIG. 5 schematically depicts an example UML class diagram 1500 that can be used to represent a "route" or wireless communication modality by which the containing service may be accessed. In this example class diagram 1500, the class attributes include: address - Service address. Address can be a URI, BLE address, TCP network address type - string that describes the transport protocol type, possibly encoding multiple attributes e.g. Bluetooth™/BLE/Zigbee™ connections used, link-local connection or server based TCP/UDP communication [0064] FIGS. 6A and 6B schematically depict, in the form of a UML sequence diagram, operations 1600 for customizing (configuring) the smart TV 1010 of FIG. 1 with receiver software so that it may act as a host device. The operations 1600 may for example be performed by an owner 1602 of the TV 1010 subsequent to its purchase, or at the factory. A user may for example interact with the TV 1010 using a wireless keyboard or remote control to effect operations 1600. The same methodology can be used to configure other electronic devices, such as laptop 1020 and thermostat 1030, as host devices.
[0065] Initially, the user 1602 may open a provided web link (operation 1604, FIG. 6A) to trigger download 1606 of the Encounters™ receiver software 1608 from an Application Store 1610. In this embodiment, the receiver software 1608 is downloaded in the form of an
Android™ application package (APK), a package file format used by the Android™ operating system for distribution and installation of software. Upon completion of downloading, the user 1602 starts 1612 (i.e. executes) the receiver software 1608 for the first time.
[0066] Firstly, the user 1602 either registers for Encounters™, e.g. by specifying new user credentials comprising a username, password, name, email address, and mobile telephone number (e.g. as for known social media platforms such as Facebook™), or logs in using existing login credentials (operations 1614 and 1616, FIG. 6A). In the former case, a new user record 1204 (FIG. 2) is defined based on the supplied user credentials. [0067] Subsequently, by virtue of its execution for the first time at device 1010, the receiver software 1608 automatically generates a new Encounters™ device identifier (operation 1618, FIG. 6A) and, in operation 1620, sends the identifier to the discovery server 1200. Operation 1622 checks whether a number of allowed host devices has been exceeded and, if so, permits the user to purchase additional devices before registration continues.
[0068] In operation 1624 (FIG. 6A), an SMS verification code is sent to the user for entry to verify that the device 1010 is indeed owned by the user 1602.
[0069] In operation 1626, a private context is automatically generated. In this disclosure, the term "context" refers to contextual information about a device. Broadly speaking, contextual information can include information regarding a device's surroundings, its operating
environment, its characteristics, its configuration, or resources available at the device. For the present embodiment, an important aspect of a device's context is its location. The location may for example be determined using a position receiver (e.g. GPS receiver) at the device or, for devices lacking such a receiver, by appropriate use of geolocation tools, which may be web- based. The contexts are considered "private" or "secret" in that they are isolated from the user and are not user-editable or even viewable by the owner or other users (to prevent bad actors from falsifying characteristics). Private contexts may be intended solely for matching services (and optionally for location verification). This can be distinguished from "public" contexts such as #livingroom, which are user defined and can be exposed to other users, and which may be used by those other users for targeting devices.
[0070] Once the host device location is known, a corresponding location descriptor is generated. Generally, a location descriptor of a device describes a current location of the device. Various formats and degrees of precision may be used. One format of location descriptor is a natural language format, using ASCII characters capable of being read and understood by a human user e.g. #boardrooml23mainstreetNY10001. A possible advantage of using a natural language format is that human users may be able to define location descriptors that are meaningful to them.
[0071] An example of a natural language location descriptor is shown in FIG. 7, which depicts an example graphical user interface (GUI) 1700 displayed at smart TV 1010 during the course of its configuration as a host device. If the location 1000 were a living room, the owner might choose to specify a natural language location descriptor #livingroom (field 1704, FIG. 7). Such natural language descriptors can be used independently of, or in conjunction with, other forms of location descriptors (e.g. geohashes, as described below). The example GUI 1700 also permits user customization of device name (field 1702, FIG. 7) and permits access to exposed services to be controlled via checkboxes 1706. Although not depicted in FIG. 7, the GUI 1700 may also permit specification of user access permissions for each of the exposed services on a service-by - services basis (e.g. as described below in conjunction with operation 1672 of FIG. 6B).
[0072] Another format of location descriptor, used in this embodiment, is a geohash. As is known in the art, a geohash is a geocoding system that encodes a geographic location into a string of letters and digits according to a hierarchical spatial data structure that subdivides space into "buckets" of grid shape. Conveniently, string-comparison techniques can be used to compare two geohashes representing the locations of two different devices to determine, by a desired order of magnitude, how proximate the devices are to one another. As will be appreciated, that approach can be used to determine whether a sender device and a host device are in sufficiently close proximity to permit medium-range or shorter wireless communication modalities to be used for wireless communication between the devices. [0073] Turning to FIG. 6B, the receiver software 1608 then engages in processing for analyzing the host device to determine what services are available there. Upon starting this process (operation 1650, FIG. 6B), the receiver software 1608 detects the capabilities of the host device (operation 1652).
[0074] In one example, device capabilities may be detected using an operating system function such as the getSystemAvailableFeatures call provided by the Android™ O/S. This can be used to determine, e.g. if a device support single or multi -touch. In some cases, device capabilities can be inferred from the detected operating system. Other example device capabilities include: display present; location detection; compass; video capture; camera; audio capture; Bluetooth; Bluetooth Low Energy; proximity; light sensor; NFC; fingerprint reader; gyroscope; Wi-Fi™ Direct; USB host mode; and barometer.
[0075] These "capabilities" should be distinguished from "services." The discovery server 1200 maps capabilities to services based on pre-defined mappings. For example, a service for displaying video may require the "display" and "audio" Android™ capabilities.
[0076] Other information collected about the registered device at this stage may include (if applicable):
• Android™ device ID • International Mobile Equipment Identity (IMEI)
• network interface address
• OS version number
• Screen size
· Connectivity interfaces available (Wi-Fi™, Bluetooth™, NFC, TJ, 4G, etc.)
• Model number of device
• Brand of device
• Network operator (if available)
[0077] Once the capabilities of the host device have been detected, they are communicated to the discovery server 1200 (operation 1654, FIG. 6B), where they are stored (operation 1656). In some embodiments, the capabilities are represented by strings, which can be sent to the discovery server 1200 in the form of an object representing the device and its capabilities, serialized (e.g., using Json or Protobuf serialization) for transmission via TCP/IP sockets.
[0078] Thereafter, the discovery server 1200 obtains a list of allowed services of the account as well as a permission table for services (operations 1658 and 1660, FIG. 6B). Operation 1658 essentially determines which services have been deemed accessible/inaccessible by the host device owner, e.g. via checkboxes 1706 in graphical user interface 1700 of FIG. 7.
[0079] Operation 1660 allows user access permissions to be defined so that access to exposed services can be controlled based on guest device user credentials, including by user class. For example, access to a "Showlmage" service may be set to allow access by the owner of a guest device, a first class of user (e.g. family members), but not to any other users. Alternatively, user access permissions (also referred to as "user permissions") may be delimited by time, e.g.
accessible during particular time windows only. User permissions may be confirmed/adjusted via GUI 1700 (e.g. at subsequent operation 1672), allowing the host device owner to define, on a per-service basis, user permission such as: no one, everyone, particular people, particular classes/groups of people, or black listing. Permissions can also be defined to be time limited. These sets of permissions are stored at the host device in a data structure referred to a permissions table.
[0080] This information is used at the discovery server 1200 to generate a device service tree, i.e. a data structure representing all of the services available at a given host device (in this case, TV 1010).
[0081] At operation 1662, the service tree is sent to the receiver software 1608. Thereafter, the receiver software 1608 engages in the following operations shown in FIG. 6B. The device service tree is parsed, i.e. the discovery object is deserialized (operation 1664). Services are assigned according to capabilities; for example, each service may be provided by a
corresponding plugin as part of an exposed service, and the plugin for each service may be configured to use particular hardware resources at the hardware device, e.g., to reference particular hardware IDs for particular capabilities through the Android™ SDK (operation 1666). Capabilities are enabled/disabled, e.g. turning on transceivers, GPS receivers, or analogous components (operation 1668); allowed plugin services are started (operation 1670); permissions on services are applied (operation 1672); and wireless communication modality-specific addressing information (e.g. encryption passwords) are cached on a per-service basis (operation 1674)
[0082] Subsequently, by way of confirmation, the updated device service tree is sent to the discovery server 1200 (operation 1676, FIG. 6B). At discovery server 1200, returned services are matched, and any service in the service tree to which the host device user has denied access is removed (operation 1678, FIG. 6B). At this stage, the operations 1600 for service registration for the smart TV 1010 of FIG. 1 are complete.
[0083] Operations 1600 are also performed at each of the laptop 1020 and smart thermostat 1030 of FIG. 1. When that has been done, each of the devices 1010, 1020 and 1030 of FIG. 1 are configured to act as host devices.
[0084] FIG. 8 schematically depicts a mobile device 1800 that will be configured to act as a "sender device" as described below. In present embodiment, the mobile device 1800 is an LG Nexus™ 5X smartphone having a form factor as shown in FIG. 10 (described below). Other types of mobile devices, be they smartphones or otherwise, may be used in other embodiments.
[0085] The basic components of mobile device 1800 depicted FIG. 8 include a processor 1802, which in the case of the Nexus™ 5X is a Hexa-core (4x1.4 GHz Cortex- A53 & 2x1.8 GHz Cortex- A57). The processor 1802 is coupled to memory 1804, which in this embodiment includes 2 gigabytes of RAM and 32 gigabytes of secondary storage. The processing capabilities at the example mobile device 1800 further include an Adreno™ 418 graphics processing unit and a Qualcomm™ MSM8992 Snapdragon 808 chipset (not expressly depicted).
[0086] Mobile device 1800 also comprises conventional I/O interfaces 1806, including a speaker and an IPS LCD capacitive touchscreen (not expressly depicted). Additionally, the device includes various network interfaces 1808, including suitable antennas, transceivers and software to effect various medium-range or shorter wireless communication modalities. In the present embodiment, these interfaces provide various forms of wireless local area network (WLAN) connectivity, including Wi-Fi™ 802.11 a/b/g/n/ac, dual-band, Wi-Fi™ Direct, Digital Living Network Alliance (DLNA) and hotspot. Bluetooth™ 4.2, A2DP capability is also provided. The transceivers accordingly typically include radio frequency (RF) transceivers.
[0087] The mobile device 1800 further includes position receivers 1810 for determining a current location of the device. The receivers in this embodiment comprise hardware components compatible with the Assisted global positioning system (A-GPS) and the Global Navigation Satellite System (GLONASS). [0088] All of these components depicted in FIG. 8 are communicatively coupled to the processor 1802. Other components of device 1800 are omitted from FIG. 8 for brevity.
[0089] A user desirous of configuring the mobile device 1800 to act as a sender device may download and install Encounters™ sender software, e.g. using similar techniques as described above for host devices (i.e. downloading an APK from an application store). Alternatively, the sender software may be pre-installed at the factory by the mobile device manufacturer.
[0090] FIG. 9 schematically depicts memory 1804 of mobile device 1800 in greater detail post-installation of the sender software. It will be appreciated that the depiction in FIG. 9 is simplified for the sake of brevity and clarity.
[0091] FIG. 9 adopts a convention in which a vertical position of the boxes representing software entities within the containing memory 1804 generally connotes the level of the corresponding software entity: a high position within the box 1804 connotes higher-level software entities, whereas a low position connotes the lower-level software entities. As such, it can be appreciated that the memory 1804 includes high-level applications ("apps") 1902, 1904 (collectively apps 1900). In this example, the app 1902 is a slide generation/presentation app, and the app 1904 is a social media app. The apps 1900 are presumed to have been developed to benefit from the Encounter™ functionality described herein when the sender software is detected at the mobile device 1800, and to operate conventionally otherwise.
[0092] Also depicted in memory 1804 is operating system (O/S) software 1910. In the present example, the O/S is Android 8.0 Oreo, however other embodiments may use other mobile operating systems (e.g. iOS™). [0093] Sender software 1920 may be considered to operate at a level below applications 1900 and above operating system 1910, e.g. at the level of an Android™ system service. A general objective of the sender software 1920 is to facilitate wireless access, from applications running at mobile device 1800, of exposed services at proximate host devices. In furtherance of this objective, the sender software 1920 performs operations includes: periodically apprising the discovery server 1200 of a current location of the mobile device 1800; responsive to the updating, periodically receiving a discovery object 1930 (described below) from the discovery server 1200; using the current discovery object, automatically establishing wireless
communication sessions with proximate host devices whose exposed services are to be invoked; and providing access to the exposed services using the wireless communication sessions.
[0094] The sender software 1920 provides an application programming interface (API) 1922 to simplify access to exposed services from apps 1900 at the mobile device. This approach can be used to advantageously shield the apps 1900 from complex, lower-level details that would otherwise be required to, e.g., ascertain whether any electronic devices are proximate, to identify the services (if any) exposed at those devices, and to establish any necessary wireless communication session(s) required for accessing those services wirelessly.
[0095] For clarity, the discovery object 1930 is depicted using dashed lines in FIG. 9 to connote the fact that it does not yet reside within memory 1804, since the sender software 1920 has not yet been executed. [0096] Once installation of the sender software 1920 at mobile device 1800 is complete, that device is considered to have been configured as a sender device. Initial execution of the sender software 1920 at mobile device 1800 may trigger presentation of a graphical user interface 1980 as depicted in FIG. 10.
[0097] Referring to that figure, it can be seen that the GUI 1980 presents fields 1982 for entering user credentials, permitting an existing Encounters™ user to log in (via button 1984) or to sign up for the first time (via button 1986). In the latter case, a new user record 1204 (FIG. 2) would be generated in discovery database 1202.
[0098] Afterwards, the sender software 1920 in this embodiment operates in the background at mobile device 1800, i.e. transparently from the perspective of the user. Future execution of the sender software 1920 upon mobile device startup may be automatic and may avoid the need to re-enter user credentials (e.g. using cookies or analogous mechanisms). [0099] When the discovery server 1200 authenticates the user of the mobile device 1800, it establishes and maintains a TCP socket session (distinct from the wireless communication sessions referenced elsewhere in this disclosure) with the mobile device 1800. In the present embodiment, this involves generation of a session key that is provided to the sender software 1920 at the mobile device 1800. The session key, which is not exposed outside of sender software 1920 and the server, can be made to have an expiration period after which the user needs to re-authenticate. When the sender software 1920 is connected to the discovery server 1920, it maintains the session by maintaining a TCP/IP socket in open state. This socket is used by the discovery server 1200 to push data (e.g. discovery objects 1930) to the sender software 1920. The session may be made secure using the secure sockets layer/transport layer security (SSL/TLS) protocol. Session keys can be exchanged in accordance with SSL/TLS.
[00100] FIG. 11 schematically depicts, as a flowchart, operations 2000 for discovering devices and services for expedited wireless access to exposed services at proximate devices. The operations 2000 occur partly at the mobile device 1800 and partly at the discovery server 1200 (FIG. 2), as will be described.
[00101] The operations 2000 of FIG. 11 are described for an example scenario depicted in FIG. 12. In that scenario, a user 2100 carrying his mobile device 1800 enters location 1000 for the first time. For instance, the user 2100 might visiting location 1000 to give a presentation to prospective clients. [00102] Operations 2000 may be triggered automatically and transparently from the perspective of the user 2100. It is presumed that the sender software 1920 of FIG. 9 is executing (e.g. in the background) at mobile device 1800 and that the receiver software 1608 (FIG. 6A) is executing (e.g. in the background) at each host device 1010, 1020, and 1030, when the user 2100 arrives at location 1000. [00103] Initially, the sender software 1920 uses position receiver 1810 (FIG. 8) to detect the location of mobile device 1800. The detection may for example be triggered by the sensing of device motion (e.g. using an accelerometer at the device) or may occur periodically.
[00104] In response to the detection, the sender software 1920 generates a location descriptor 2104 (FIG. 12) for location 1000. In this embodiment, the location descriptor is a geohash created by converting GPS coordinates of location 1000 from position receiver 1810 (FIG. 8) and into a geohash (a string). [00105] The location descriptor 2104 is subsequently reported to discovery server 1200, e.g. by way of a cellular data connection maintained with the server 1200 whenever the sender software 1920 is operational at mobile device 1800. The mechanism for maintaining such a connection may be similar to the mechanisms used, e.g., to maintain connectivity between other mobile apps (e.g. Facebook™) and their corresponding servers.
[00106] Receipt of the location descriptor 2104 at the discovery server 1200 triggers operations at the server for identifying a set of proximate electronic devices at the location indicated by the received location descriptor (operation 2002, FIG. 11). In the present embodiment, the discovery server 1200 generates a SQL query comprising the location descriptor of the mobile device and a specified degree of co-location precision. The latter parameter governs the granularity
(magnitude) of the geographic area within which a host device must be located in order to be considered "co-located with" (proximate to) the mobile device 1800. This effectively allows for the size of search area for proximate devices to be controlled.
[00107] In the present embodiment, the specified degree of co-location precision is a number of "most significant" bytes of two geohashes that must match for their corresponding devices to be considered proximate. For example, seven matching most significant bytes may represent co- location precision of +/- seventy-six meters, which is within one hundred meters.
[00108] When the SQL query is submitted to the discovery server 1200, the host device records 1206 are searched to identify any host device whose location descriptor (as configured during setup at operation 1626, 1628 of FIG. 6A) matches the location descriptor 2104 of the mobile device 1800 within the specified degree of co-location precision. In the present example, the query result returns records for each of host devices 1010, 1020 and 1030 at location 1000.
[00109] In view of the hierarchical "device-service-modality" structure of the host device records (as described above in conjunction with FIGS. 3-5), the query result encompasses not only device information for each of the proximate host devices 1010, 1020, and 1030, but also information regarding: what services are exposed at each device; what medium-range or shorter wireless communication modalities are available at each device; and addressing information (including security credentials, if any) for establishing a wireless communication session with each host device using any of the modalities. In other words, for each proximate host device at the location 1000, the query result identifies: a set of exposed services provided at the host device; a set of medium-range or shorter wireless communication modalities of the host device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities, addressing information for establishing a wireless communication session with the host device (operation 2004, FIG. 11).
[00110] The discovery server 1200 uses the query result to generate a discovery object 1930, also referred to as a "service tree" or "device service tree". The discovery object 1930 in this example is schematically depicted in FIG. 13 in the form of a UML object diagram. It will be appreciated that the representation in FIG. 13 is simplified and that some portions have been omitted for brevity.
[00111] As illustrated, the discovery object 1930 contains a set of device objects, each representing a host device proximate to the mobile device 1800. In the present embodiment, each device object is an instance of the devicePublic class of FIG. 3. The host device object 2200 contains device information of smart TV 1010, notably including screen size, wireless protocols supported, touch screen supported and environmental sensors connected. Device objects representing the laptop 1020 and the smart thermostat 1030 are not expressly depicted in FIG. 13. [00112] Each host device object contains one or more service objects, each representing an exposed service at the relevant host device. In the present embodiment, each object in the list is an instance of the servicePublic class of FIG. 4. The service objects 2202, 2204 and 2006 depicted in FIG. 13 represent the "Play Video," "Play Audio," and "ShowText" services of smart TV 1010 (see FIG. 7); additional objects representing other exposed services of TV 1010 not expressly depicted.
[00113] Finally, service objects 2202 and 2204 contain a route object 2208 and 2210 respectively representing Wi-Fi™ at smart TV 1010. In contrast, service object 2206 contains a route object 2212 representing a different wireless communication modality, i.e. Bluetooth™.
[00114] Notably, each service object 2208, 2210 and 2212 contains addressing information required for establishing a wireless communication session with the relevant host device (TV 1010) using the relevant modality. In this example, the addressing information includes security credentials (SSID + encryption key for Wi-Fi™, Bluetooth™ address of TV operating in non- discoverable mode for Bluetooth™).
[00115] Once the discovery object 1930 has been created, it is sent from the discovery server 1200 at mobile device 1800, where it is stored in memory 1804 (FIG. 9) for future access as necessary by the sender software 1920. For security and privacy reasons, the discovery object 1930 is stored so as to deter tampering with the security credentials forming part of the addressing information for any modality, e.g. within an Android™ application sandbox (a mechanism whereby an O/S kernel enforces security between applications at the process level).
[00116] The storage of discovery object 1930 may be considered as a pre-emptive storing, at mobile device 1800, of addressing information for each of the available wireless communication modalities of each of the proximate host devices as soon as the mobile device becomes proximate to those host devices. In this context, "pre-emptive storing" means "storing before the mobile device has established, and regardless of whether the mobile device shall ever establish, a wireless communication session with any of the proximate electronic devices using any of the associated wireless communication modalities."
[00117] To facilitate comprehension of the beneficial effect of the above-described pre-emptive storing of addressing information, a visual analogy is provided in the schematic diagram of FIG. 14. Referring to that diagram, the pre-emptive storing can be thought of as configuring the mobile device 1800 to provide three "virtual data cables" 2310, 2320 and 2330 between the mobile device 1800 and each of the respective host devices 1010, 1020 and 1030. Each virtual cable, illustrated using dotted lines, represents a prospective wireless communication session (using a medium-range or shorter modality) that can be quickly and automatically established by the sender device, i.e. without requiring any manual action for that purpose on the part of the mobile device user. [00118] When user 2100 decides to present slides stored at mobile device 1800 to an audience at location 1000, he launches slide presentation app 1902 (FIG. 9) and loads the desired slides. Disadvantageously, the display of the mobile device 1800 is too small for effective display of the slides at location 1000.
[00119] Conveniently, the slide presentation app 1902, transparently from the perspective of the user, invokes a function of API 1922 (FIG. 9) of the sender software 1920, passing as a parameter the slides to be presented (or, more generally, the data payload for the service). In turn, the sender software 1920 examines the discovery object 1930 to identify a suitable candidate device for presenting the slides. Ultimately, the smart TV 1010 (as represented by device object 2200 of FIG. 13) is deemed a suitable candidate for presenting the slide deck based on its exposed "Play Video" service (as represented by service object 2202 of FIG. 13).
Moreover, Wi-Fi™ (as represented by route object 2208) is determined to be a suitable modality for invoking that service. [00120] Thereafter, the sender software 1920 invokes Play Video exposed service at the mobile device 1800. Upon doing so, the sender software 1920 automatically establishes a wireless communication session with smart TV 1010 using the pre-emptively stored Wi-Fi™ addressing information (SSSID001, passwordOOl - see object 2208, FIG. 13) to (operation 2008, FIG. 11). This may be considered as an "activation" of virtual data cable 2310 for carrying data, which is depicted graphically in FIG. 15 by a heavier dotted line. In this way, the mobile device 1800 conserves power that would otherwise have been consumed in establishing a wireless
communication session earlier, thereby extending battery life.
[00121] With a wireless communication session having now been established, the sender software 1920 can now communicate with smart TV 1010 via the operative modality (Wi-Fi™) based on the service information encoded in service object 2202 (FIG. 13). At the host device, the receiver software 1608 responds to the mobile device's invocation of the exposed service by performing the service at the host device. This may for example involve extracting the data payload (the slides) received from the mobile device 1800 and in turn executing an appropriate app at the TV 1010 for displaying the slides.
[00122] Advantageously, the slides are displayed at smart TV 1010 without requiring user 2100 to: connect any physical cable to the TV; ascertain any device information of the TV or any other device at location 1000; ascertain what wireless communication modalities are available the TV or any other device at location 1000; or to manually set up any wireless communication session or enter any security credentials. From the user's perspective, the displaying of the slides at the nearby host device "just works" even if the user knows nothing about the host device or how to connect to it.
[00123] Advantageously, because wireless communication session setup is automatic and transparent to the user, fewer cycles are expended at the mobile device for presenting whatever user prompts and graphical user interface screens might otherwise be required. Battery life may thereby be conserved.
[00124] When the location 1000 is an enclosed space to which access is controlled e.g. by mechanical lock, the above-described mechanism can be used to facilitate wireless access to exposed services at each host devices known to be within the same enclosed space. For example, such devices can be identified by a common location descriptors indicative of the enclosed space (e.g. #livingroom555MainStreet). [00125] If the mobile device 1800 moves to a new location, operations 2000 of FIG. 11 are repeated, again transparently from the perspective of the user 2100. When newly generated discovery object 1930 for the new location is sent to the mobile device 1800, the sender software 1920 may refresh the existing discovery object in memory 1804 either by replacing it with the new discovery object or by supplementing the existing discovery object with any new device, service, or route information in the new discovery object. The sender software 1920 can invoke the Play Video service at a different host device at the new location, providing a continuity of experience for the user 2100 as he moves about.
[00126] Various alternative embodiments are possible. [00127] In some embodiments, the configuration of an electronic device with one of receiver software 1608 and sender software 1920 may automatically also configure the device with the other (complementary) software. For convenience, the sender and receiver software may be packaged as a single APK and be downloaded/installed at the same time. This allows a single configuration step to be used to configure a device to act as either a receiver device, as a sender device, or both. It also permits a unique ID to be assigned to each participating device regardless of whether it is to be used as a sender device or as a receiver device.
[00128] In some embodiments, the discovery server 1200 may store, for each exposed service of each host device in host device records 1206, user permissions indicative of which specific users, or classes of users, shall have access to the exposed service. This information may be encoded in an object similar to that defined by the UML class diagram 1400 of FIG. 4.
[00129] In conjunction, the sender software 1920 may be modified to provide to the discovery server 1200 (as shown in FIG. 12) the user credentials of mobile device user 2100, e.g. as specified by the user via fields 2002 (FIG. 10) upon account creation. In turn, when generating the discovery object 1930, the discovery server 1200 may compare the user credentials with the stored user permissions for each exposed service at each proximate host device at the mobile device's current location, to confirm that the user of mobile device 1800 has access to the exposed service. The discovery object 1930 may thereby be made to contain information only for exposed services to which the user 2100 is known to have access permission.
[00130] Alternatively, user permissions may be applied by the sender software 1920 in some embodiments. In particular, the sender software 1920 may control access to the exposed service by comparing the user credentials with the user permissions forming part the discovery object 1930 in association with each exposed service. Alternatively, or in conjunction, the user credentials may be supplied to the host device with each invocation of an exposed service, for user permissions verification at the host device.
[00131] Where access to exposed services is governed by user permission, a mobile device user may be able to access certain exposed services even before supplying any user credentials at a sender device. For example, before logging in via a GUI 1980 as shown in FIG. 10, the user of a sender device may still have access to certain exposed services whose user permissions permit anyone, including anonymous users, to access the service. Once the user logs into to a sender device, more services may become available according to user permissions. [00132] In some embodiments, the discovery server may perform a co-location verification to confirm sender device co-location with a host device, before any information about the host device, or its services/routes, is included in the discovery object 1930. The co-location verification operation may be intended to reduce a risk of "spoofing" of a mobile device location for a nefarious purpose, e.g. gaining access to host devices at a location to which the mobile device user is not permitted entry. Various co-location approaches may be used.
[00133] In one approach, the mobile device may detect signatures carried by RF signals at its current location. The detected signatures may for example be carried by BLE advertisements, WiFi and/or NFC broadcasts from proximate electronic devices. All of the detected signatures at the location may be periodically reported to the discovery server, e.g. along with the periodic location descriptor updates.
[00134] At the discovery server 1200, database queries may be submitted to identify any host device for which the signatures are known to be used. A query result indicating a match can be used to verify that mobile device is indeed at the location of the host device whose signature was detected. The same approach can be used in the opposite direction, with host devices detecting unique signatures of any guest mobile devices broadcast via RF signals.
[00135] In some embodiments, the signatures that are used for co-location verification may be time-variable. For example, a signature carried by a BLE advertisement from a host device may change daily or hourly.
[00136] Signatures and/or descriptors that can also be used for co-location verification can include:
• ID of visible Bluetooth™ beacons or Bluetooth™ addresses (BD ADDR) • NFC tags scanned
• Wi-Fi™ Access points visible (SSID + MAC Address of Access Point)
• Wi-Fi™ Access points connected (SSID + MAC Address of Access Point)
[00137] It will be appreciated that, while the mobile device 1800 of the above-described embodiment is smartphone, mobile devices in other embodiments may be other types of devices, such as tablets, portable gaming devices, or laptops, to name but several examples.
[00138] In other embodiments, the location may be something other than a room, such as an outdoor space enclosed by a fence; multiple adjacent rooms between which people may freely pass; a house; an office building; or an area within a building (e.g. a floor, conference area, or similar). A location need not necessarily be enclosed and may be a sub-location of another location or may further be logically and/or physically subdivided into other locations.
[00139] In the above-described embodiment, configuration of a host device with receiver software was described, in conjunction with operation 1626 of FIG. 6A, to involve determining a location of the host device and generating a location descriptor indicative thereof. In some embodiments, a host device's location may be initially unknown (e.g., if a GPS receiver is not available). In such cases the host device's location may be assigned by the discovery server as follows.
[00140] When the host device is encountered by a guest device, the received RF signatures of the host device and a location of the guest device (which usually has a GPS receiver) may be sent to the discovery server by the guest device as part of requesting a service tree. The location of the guest device is used as a guess/proxy for the location of the host device. The guessed location of the guest device may be refined over time as new guest devices encounter the host device, e.g., as a population average.
[00141] Devices need not have fixed locations to act as host devices. In that case, the techniques described in the preceding paragraphs can be used to keep the location of a host device current in the discovery database.
[00142] In some embodiments, receiver software also includes a route monitoring component that monitors the availability of routes. For example, routes may come and go as Wi-Fi™ access points are disabled or enabled, or if a Bluetooth™ antenna is manually disabled/enabled by the user. This may also be particularly relevant if the host device is in motion and comes within range of new access points. Changes in available routes are reported to the discovery server, which modifies the corresponding device's record accordingly.
[00143] In some embodiments, another route that can be made available to route data between sender and receiver devices is by virtue of an intermediary such as the discovery server. This may be useful in some situations, e.g. : (1) when the receiver device only has 4G connectivity; (2) when it is undesirable for the sender and receiver to establish direct connections due to security considerations (e.g., do not wish to provide Wi-Fi™ access point password to any senders); or (3) unable to establish direct connections due to firewalls. The intermediary (e.g. discovery server) can be configured to only route messages for devices that are proximate.
[00144] FIG. 16 schematically illustrates another embodiment comprising a plurality of devices 10-1, 10-2, 10-3, 10-4, 10-5 (individually and collectively devices 10) in communication with a network 14 at a location 100. Further, a guest carrying a device 12 is illustrated.
[00145] As will become apparent, each device 10 has some computing capability, and may intercommunicate and be interoperable with some other devices, and preferably network 14. In embodiments, devices 10 may each be televisions, monitors, network enabled loud speakers, monitors, thermostats, or any other portable electronic device with processing and
communication capabilities. In at least some embodiments, devices as referred to herein can also include, without limitation, peripheral devices such as displays, printers, touchscreens, projectors, digital watches, cameras, digital scanners and other types of auxiliary devices that may communicate with another computing device. Devices 10 may be permanently, or semi- permanently located at location 100, or may be transient to the location.
[00146] Network 14 may be a packet switched network and may include several local area, including for example a conventional local area network at location 100, and wide area networks, and may include the public internet. Network 14 may accordingly include suitable base stations (e.g. cellular base stations), routers, access points, network switches, and the like. Devices 10 and 12 may communicate with network 14 by way of a network interface which may take the form of a Wi-Fi or cellular network interface, for example, compliant with one or more wireless networking standards including the IEEE802.11 family of standards; GSM; GPRS; 3G; 4G; 5G; LTE; or similar standards.
[00147] Location 100 may be a suitable host environment, and may for example be a house, office building, room, or area within a building (e.g. a floor, conference area, etc.). Practically, devices at location 100 are geographically proximate - for example within several (e.g. 1-500) meters of each other. A location 100 may be a sub-location of another location 100, or may further be logically and/or physically subdivided into other locations.
[00148] In one example application, a guest may bring device 12 (which may be referred to as a guest device) into a host environment (e.g. to location 100) in which devices 10 provide computing or similar services (which may be referred to as host devices 10) are located.
Devices 10 may be accessed by guest device 12. The present disclosure discloses how the guest device 12 may discover and gain access to the services of devices 10-1, 10-2 ... 10-n in host environment 100.
[00149] In particular, as detailed below, relevant services available at devices 10 may be determined by matching descriptors of guest device 12 with descriptors of host devices 10 to a discovery server 20, also depicted in FIG. 16. These descriptors may be provided to discovery server 20 by discovery applications executing at each of devices 10/12.
[00150] FIG. 17 schematically depicts guest device 12. Example device 12 may be a cellular phone, cellular smart-phone, wireless organizer, pager, personal digital assistant, computer, laptop, handheld wireless communication device, wirelessly enabled notebook computer, portable gaming device, or tablet computers. Example device 12 may accordingly be based on a Qualcomm or MediaTek Labs reference design.
[00151] As illustrated, device 12 includes a processor 21, processor readable memory 27, and input/output (I/O) interface 23; a network interface 25; and a position receiver 29. Device 10 may further include touch display 50; one or more audio transducers 32.
[00152] Processor 21 may be a suitable computer processing subsystem and may include a numerical processor having multiple cores, and a graphics processor. In embodiments, processor 21 may be a RISC processor having an ARM based architecture, and may for example, be a suitable mobile processor manufactured by Qualcomm, MediaTek, Apple or the like. In other embodiments, processor 21 may be based on the x86 architecture. In yet other embodiments, processor 21 may be a custom processor.
[00153] Device 12 may further include a position receiver 29. In the depicted embodiment the position receiver 29 may be a receiver capable of receiving a satellite position signal, for example, from a global positioning (GPS) satellite 16 or other satellites such as one or more GNSS satellites. Alternatively, or additionally receiver 29 may receive an indoor positioning signal, from a suitable indoor positioning system (IPS). IPS systems are, for example, disclosed at https://en.wikipedia.org/wiki/Indoor_positioning_system. Positioning receiver 29 may further be capable of receiving a position signal and optionally a beacon signal from a known location. In the depicted embodiment position receiver 29 may be a relatively high accuracy location receiver - capable, for example, of determining the position of device 10 within several metres and preferably within the centimetre range. In alternate embodiments, position receiver 29 may be a combination of hardware and software capable of determining the location of device 10, using location services.
[00154] Touch display 30 may, for example, be capacitive display screens that include a touch sensing surface. Such a display may be integrated as a single component. Alternatively, touch display 30 may include suitably arranged separate display and touch components. Touch display 30 may be adapted for sensing a single touch, or alternatively, multiple touches simultaneously. Touch display 30 may sense touch by, for example, fingers, a stylus, or the like. Touch display 30 may return the coordinates of any touch or touches for use by a process or device 10.
Likewise, touch display 30 may be used to display pixelated graphics - in the form of computer rendered graphics, video and the like.
[00155] Network interface 25 may include one or more radios for data (and optional voice) communication with a complementary wireless network, using, for example, one or more wireless networking standards including the IEEE802.11 family of standards; GSM; GPRS; 3G; 4G; 5G; LTE; or similar standards. Network 25 may further include radios to allow for short range communication using, for example, Bluetooth or NFC protocols.
[00156] FIG. 18 schematically illustrates the organization of memory 27 at device 12 (or device 10). Broadly, memory 27 stores an operating system 34, which may for example, be a Unix based operating system (e.g. Android), an Apple iOS operating system, or other operating system; a discovery application 36, exemplary of embodiments; other applications 38; and data 39.
[00157] Devices 10 similarly include a processor, processor readable memory, and a network interface (not specifically illustrated), to allow intercommunication with network 14 and/or proximate devices 10 or 12, using shorter range communication protocols. As well, devices 10 may include suitable hardware (also not specifically illustrated) and host suitable software to provide one or more computing resources or services to other devices like device 12.
[00158] Each device 10, 12 may be associated with one or more descriptors that provide contextual information about each device 10, 12. Contextual information may include the capabilities of each device; services offered by each device; services required by each device; the location of each device; proximate devices; information about the operating environment of each device; the devices available applications, interfaces, resources and the like. [00159] As will become apparent, descriptors may be auto-generated based on observed states or attributes of each device 10, 12 or may be generated from user inputs. Descriptors may be stored locally within computer readable memory at device 10, 12 or remotely, for example at a network accessible server. To that end, a software application or service (referred to herein as a "discovery application 36") may be executing at each device 10, 12 to gather contextual information and generate corresponding descriptors.
[00160] As will become apparent, in embodiments descriptors are or included natural language descriptors that may be easily understood by a human. Conveniently, use of natural language descriptor simplifies programming, and may allow know natural language processing and comparison techniques to be used in processing and/or comparing descriptors, as detailed herein. [00161] For example, as noted, devices 10 may be located throughout location 100, and may be of various types, e.g., mobile phones, laptop computers, desktop computers, tablet computers, smart appliances, IoT devices, VR devices, etc. Each device 10 may be uniquely identified by a GUID (globally-unique identifier).
[00162] Each device 10 executes software to expose one or more services that may be accessed by device 12 to invoke certain functionality at device 10, under control of device 12.
[00163] A service may invoke various types of functionality. For example, functionality may be associated with a particular input interfaces at device 10, e.g., a sensor such as microphones, camera, etc.); a particular output interface at device 10, e.g., a display screen, a speaker, etc.; a particular software functionality (e.g., decoding/encoding a message, performing a calculation, installing a software application, etc.), a particular resource (e.g., storing data in memory of device 10); a particular software application (e.g., launching a browser to display a particular website, launching an application to display a text message or image); or a combination of the above (e.g., where the service invokes the functionality of a VR device comprising a
combination of various interfaces, resources, and software). Example services may, for example, allow the casting of audio of video from device 12.
[00164] A service may be associated with an application programming interface (API), network protocol, or other interface allowing device 12 to access an identified service.
[00165] Example descriptors at each of devices 10, 12 may describe:
the identity of device 10, 12 by unique identifier (e.g. GUID, IMEI or similar);
the identity and attributes of a user associated with the device 10, 12, which may be predefined and associated with the user's credentials (e.g., name, gender, age, email address etc.);
the current location of device 10, 12 (e.g., GPS coordinates; room location; etc.);
the device's surrounding, which may be sensed from sensors of device 12 (e.g., through audio sensors, proximity to certain devices or networks or other RF signals based on signal RF strength detected through RF antennas);
the current or intended activities of a user at a device (e.g. as gleaned from user interaction with device 12 such as applications executed at device 12) by the user or gleaned from data sensed from sensors of device 12, e.g., accelerometer, microphones, etc.;
external computing resources that could be used by applications running at device 12 (e.g. #display, and/or #audio, generated if an audio video application is executing at device 12); and/or
functionality desired by the user at device 12 (e.g. print services; display services; etc.) which may be requested by applications executing at device 12, etc.
[00166] In the depicted embodiment, each descriptor may take the form of a pre-defined text string, e.g., #johndoe, #walking, #youtube, #cooking, #sensedaudio, and may include information in natural language. The text string may encode certain data such as numerical data (e.g., GPS coordinates). The descriptors should be standardized so that discovery software application 36 at device 12 (and devices 10), as well as server 20 can discern which services are available at which device 10, and allow discovery and use of these services by device 12.
[00167] In some embodiments, the descriptors may be entered free-form, entered at device 10, 12. In other embodiments, these descriptors may be constrained by a pre-defined dictionary.
[00168] Some descriptors are generated automatically (e.g., based on sensor data gathered at device 10/12) at device 10/12, and other descriptors may be defined by the user, e.g.,
#livingroom to indicate that he/she is in the living room, #hungry to indicate that he/she is feeling hungry. [00169] In the depicted embodiment, for example, an administrator or other user at location 100 may provide/input the physical room location of each device 10 within location 100. As well, relative signal strength of radio signals emanating from network 14, and other devices 10 may be determined at each device. Also, audio or motion may be sensed at devices 10.
Corresponding descriptors may be created and stored, either at the device 10/12 or remotely.
[00170] Additionally, the execution of software applications at device 12, may give rise to the generation of descriptors of resources that could be used by an executing application. For example, an application that generates audio or video, could cause discovery application 36 to generate descriptors of device 12 advertising that the application at device 12 can present output at external devices having such functionality (e.g., #screen, #speakers). At the same time, one or more host devices 10 may have the same descriptors (e.g., #screen, #speakers) generated by their respective discovery applications 36 to advertise functionality (i.e., services) for receiving such output. These matching descriptors may be used by server 20 to match device 10 to guest device 12 in manners described herein. To facilitate processing of such output, further descriptors identifying the data format of such output, and/or the identity of the application that can provide the output (e.g. #youtube; #videoplayer; etc.)
[00171] Additionally, discovery software 36 may also echo descriptors received locally at device 12, from nearby devices 10. Such descriptors, may for example, be received by way of a local radio frequency signal (e.g. Bluetooth, NFC, infrared signal, etc.) that emanating at devices 10.
[00172] Guest device 12 compiles a list of descriptors, each describing an aspect of the user of guest device 12, or his/her circumstances or situation (graphically represented as descriptors #A, #B, #C, and #D in FIG. 16).
[00173] Collectively, the list of descriptors for a particular device (e.g. device 12) or user may be referred to as that user's or device's context 114. As will be appreciated, descriptors for device 12 may change over time, e.g., as the user or his/her circumstances or situation change. Accordingly, the user's context (and the context of device 12) may also change dynamically.
[00174] To that end, a server 20 hosts a database 22 that allows location registration of each of devices 10 and 12 by way of network 14. Server 20 may be remote from location 100, and may be a conventional database server, and may therefore include a processor, memory storing database 22, processor executable instructions to access database 22, and to perform methods detailed herein. The database may be a relational database - such as an SQL database, or other database or datastore. Database 22 stores one or more database structures (e.g. database tables) that store device contexts 114, as further detailed below for each device 10 (and optionally device 12). A context 114-1, 114-2, ... 114-n for each device 10-1, 10-2 ... 10-n may be stored. Context 114-0 is associated with guest device 12. Individually and collectively contexts 114- 0,114-1, 114-2 ... 114-n are referred to as context(s) 114, herein.
[00175] As will be appreciated, database 22 may be updated periodically (i.e. at defined intervals) and will allow querying of device contexts 114; and other searching and manipulation of data stored at database 22, using a suitable program instructions at server 20. [00176] Conveniently, the use of standardized descriptors in a defined format, allows querying and comparing of contexts 114 to identify desired services at server 20.
[00177] Additionally, device 12 and/or devices 10 may periodically broadcast its context, or portions thereof (e.g. select descriptors) locally, to allow proximate devices 12/10 to ascertain such descriptors. Such broadcast may, for example, be performed by a radio interface using protocol for the transmission of local signals (e.g. NFC, Bluetooth, etc.) For example, in one specific example, a host device 10 may periodically broadcast a descriptor descriptive of its location (e.g., #bedroom, #livingroom, etc.). This location descriptor may be received by a proximate guest device 12 and then echoed at device 12, i.e., included within device 12's own descriptors. In this way, device 12 indicates that it is also at the described location, using a descriptor that was not pre-defined or stored at device 12 prior to arriving at the described location. The matching location descriptors may be used by server 20 to match device 10 to guest device 12 in manners described herein.
[00178] FIG. 19 and 20 depicts a user (e.g. a guest at location 100) operating a personal portable electronic device 12. Device 12 is typically a user/guest's cellphone, but could also be another type of portable device such as a wearable device, a tablet device, or another portable computing device (e.g., a laptop). Device 12 is typically authenticated on network 14 with the user's credentials and typically travels with the user. Accordingly, device 12 may, in some respects, be viewed as a proxy for the user. For example, the location of device 12 may be used as a stand-in for the location of the user; sensors at device 12 may be used to estimate the current activities engaged in by the user (e.g., the microphone can be used to determine whether the user is engaged in conversation, the gyroscope and/or accelerometer can be used to determine whether the user is walking, jogging, etc., changes in the GPS location of the device can be used to determine whether the user is driving); applications at device 12 may be used to determine activities intended by the user (e.g., launching a video player application may indicate that the user intends to watch a video).
[00179] Device 12 compiles a list of descriptors, each descriptor describing an aspect of the user or his/her circumstances or situation (graphically represented as descriptors #A, #B, #C, and #D forming context 114-0 in FIG. 19).
[00180] Device 10-1 similarly compiles descriptors #A, #B; device 10-3 compiles descriptor #F; device 10-2 descriptors #B, #E. These, in turn, define contexts 114-1, 114-2, and 114-3, respectively. [00181] As noted, descriptors for a particular device 10/12 may be referred to as that device's context 114, which may be stored at database 22. As will be appreciated, the descriptors may change over time, e.g., as the user or his/her circumstances or situation change. Accordingly, for example, context 114-0 of device 12 changes dynamically.
[00182] Again, select descriptors may also be broadcasted locally at device 10/12. [00183] FIG. 19 also depicts remote server 20 (which may also be referred to as a "discovery server") processes information regarding (i) the context 114-0 of a particular user and his/her device 12, and (ii) the respective contexts 114 of other devices 10, that execute exemplary discovery software 36 (FIG 18).
[00184] As the location of device 12 changes, the context for device 12 will change, reflecting a change in the user's environment. As device 12 enters location 100, its context may reflect the presence of other devices 10 (e.g. device 10-1, 10-2 and 10-3 in FIG. 4). For example, as device 12 enters location 100, its GPS coordinates may reflect this. Similarly, device 12 may sense RF signals associated with Wi-Fi or similar access points at location 100. Device 12 may also sense other local RF signals - including Bluetooth or NFC signals emitted by devices 10. Each of these pieces of contextual information may be converted into a descriptor that forms part of the context 114-0 for device 12 at location 100.
[00185] As noted, server 20 maintains database 22 containing records of various devices 10, 12 and for each device 10, 12 its unique ID, and its context 114, and its services, as well as information for addressing/accessing those devices and services (e.g., IP addresses, protocol information, security access tokens, etc.). Server 20 may occasionally receive updates from devices 10, 12 reflecting changes to the context 114 associated with each device 10, 12. This may occur as device 12 enters location 100.
[00186] Device 12 and server 20 may collaborate to perform discovery of devices 10 and services provided at those devices 10 that are relevant to a particular user at device 12. [00187] Server 20 may then provide device 12 with a list of relevant devices 10 and services provided at those devices, as well as information for addressing/accessing those devices and services.
[00188] As shown in FIG. 19 to initiate the discovery process at location 100, guest device 12 under control of discovery software 36, transmits context 114-0 of guest device 12 to server 20 over network 14. Device 12 may also transmit data to server 20 that allows for verification of credentials of user 10 and/or device 12.
[00189] Server 20 may then match context 114-0 to stored device contexts 114 of devices 10 to find those of devices 10 relevant to the user at device 12. Various ways of performing this match are possible. For example, a device 10 may be matched to a user at device 12 if their respective contexts shares at least one descriptor in common. Or a device 10 may matched to guest device 12 if their respective contexts share at least a defined number of descriptors in common. Or a device may be matched to a user if their respective contexts have the same descriptors.
[00190] In the case of purely textual descriptors, a match may be found if the text is the same. In the case of descriptors that encode numerical values, the numerical values can be extracted and then checked to determine whether the values are within a certain range. For example, two descriptors encoding GPS coordinates may be considered the same if the coordinates are within a pre-defined range (e.g., 20 feet, 100 feet, etc.).
[00191] Upon determining matching devices 114, server 20 may create a discovery object 250 and transmits it to device 12. Discovery object 250 includes data allowing device 12 to address/access devices 114 and its services (e.g., IP addresses, protocol information, security access tokens, etc.).
[00192] For example, as shown in FIG. 19, discovery object 250 may contain a list of devices 10 which were found to match the context 114-0 of guest device 12, as well as a list of the services at those devices. For example, discovery object 250 may contain API information and API parameters for invoking particular services at one or more of devices 10. [00193] As shown in FIG. 20, guest device 12 was matched to devices 10-1 and device 10-2, but not device 10-3, as context 114-0 shares common descriptors #A and #B with context 114-1; context 114-0 shares common descriptors #B and #E with context 114-2.
[00194] Discovery object 250 accordingly identifies devices 10-1 and 10-2 and associated services, and sufficient information to allow device 12 to access these. A user at guest device 12 can then, through device 12, invoke the functionality provided by services at device 10-1 and 10-2, e.g., by wireless communication to those devices, either directly, or by way of a portion of network 14 (e.g. by way of a local area network at location 100).
[00195] In the embodiments described above, a context 114 is provided for each particular device 10/12. In some embodiments, a context (i.e., a set of descriptors) may be provided for each service at device 10. In such embodiments, server 20 may match a context 114 of a guest device 12 to contexts of particular services.
[00196] Descriptors described above may be organized into three categories:
(1) User-defined descriptors, which are manually defined by a user of the device, the user typically being the device's owner or administrator.
(2) Intrinsic device descriptors, which are automatically sensed and defined and describe intrinsic characteristics of the device such as, e.g., the type of device (tablet, phone, TV, etc.), any of its specifications (screen size, screen resolution), applications
installed/executing on the device. (3) Extrinsic device descriptors, which are automatically sensed and defined and relate to extrinsic characteristics of the device such as its location and characteristics of its environment, e.g., GPS coordinates, strength of measured wireless signals, ID of wireless broadcasters in the environment. Such IDs may, for example, include:
ID of visible Bluetooth beacons;
NFC tags scanned;
Wi-Fi™ Access Points visible; and
Wireless network connected.
[00197] In an embodiment, one or more extrinsic device descriptors may optionally be used as a signature for confirming whether a particular device 12 (which may be a guest device) is in a particular environment (which may be a host environment), e.g., to confirm that device 12 and that devices 10 providing accessible services are co-located in the same environment.
[00198] Access to services may be restricted to those devices that can present a device context 114 that includes a pre-defined expected signature. For example, a device 12 that presents a context 114 lacking the expected signature will fail to discover certain services; namely, server will not include those services in the discovery object 250 returned to the device. In some embodiments, the presented signature may be allowed to deviate from the expected signature by a pre-defined margin (e.g., only a subset of the descriptors must match). Whether or not a service is access-restricted in this manner may be toggled per device, or per service.
[00199] Descriptors forming the signature may be kept hidden from the user to prevent them from being used on devices other than the particular device that sensed the descriptors.
Accordingly, these descriptors may be referred to as "private" or "secret" descriptors.
[00200] In some embodiments, a beacon may be placed in an environment that emits a time- varying signal (e.g., a signal encoding a code that changes from time to time). The signal may for example be a Bluetooth transmission such as a Bluetooth low energy (BLE) beacon. In an embodiment, the strength of this signal may be controllable, and its range defines the extent of a particular environment (e.g., a room or a building) in which access to particular services is granted.
[00201] In these embodiments, the expected signature includes a descriptor that is the code encoded in the beacon signal (or derived from the code). Accordingly, only devices within the range of the beacon signal will be able to present the expected signature. The expected signature and the corresponding beacon signal change from time to time (e.g., every few minutes, every hour, etc.) to prevent later use or re-use of a received code.
[00202] In a further embodiment, a device (e.g. device 12) may be configured to periodically (e.g., every second) advertise its unique device ID for receipt by devices within an environment (e.g., devices 10). For example, the advertisement may be made by way of a Bluetooth Low Energy (BLE) advertisement using the iBeacon protocol.
[00203] As a user at device 12 enters and moves around the location 100, the unique device ID advertised by device 12 will be received by one or more of the devices 10 which periodically listen for advertisements (e.g., every 5-10 seconds). [00204] For example, the ID of device 12 will become part of the private context of that device 10-1, which in return is reported to discovery server 20. Server 20 may then uses presence of device 12 by way of its ID in device 10-1 's private context to verify that the two devices are co- located.
[00205] In an embodiment, server 20 may requires verification of co-location in this manner before allowing device 12 to discover device 10 or any of its services. In an embodiment, verification of co-location using the private context reported by one device 10 may be used by server 20 to control discovery of several other devices 10 (and their services) by device 12. For example, all devices 10 in location 100 (room, building, etc.) may be discoverable by device 12 if any one device 10 in that environment reports to server 20 a private context containing the unique ID of device 12.
[00206] In a further embodiment, each device 10 is configured to periodically advertise its unique device ID, which may be received by a device 12 and included in its context 114. In this embodiment, server 20 may restrict discovery to when the unique device ID of device 12 is present in the context 114 of a device 10 and reciprocally the unique ID of the device 10 is presented in the private context of device 12 (e.g., when the devices "see" one another).
[00207] In some embodiments, other forms of wireless advertisement may be used in addition to or instead of BLE advertisements. For example, Wi-Fi™ and/or NFC broadcasts may be used.
[00208] The following clauses provided a further description of example embodiments.
[00209] Clause 1 : A method of locating interoperable devices at a location, comprising:
receiving from each host device at the location a list of descriptors about each host device, and storing the lists at a discovery server; receiving from a guest device a list of descriptors of the guest device, over a network to the discovery server; receiving from the guest device a query, over the network, to the discovery server; in response to the query, comparing the list of descriptors of the guest device to the lists of descriptors of the host devices to identify a set proximate interoperable devices at the location; and providing identifiers of services of the set of proximate devices to the guest device.
[00210] Clause 2: The method of clause 1, wherein the list of descriptors received from the guest device includes an identifier of services to be used by at least one application executing at the guest device. [00211] Clause 3: The method of clause 1, wherein the list of descriptors received from the guest device includes descriptors of at least one of the host devices, received locally at the guest device.
[00212] Clause 4: The method of clause 3, wherein descriptors of at least one of the host devices, received locally at the guest device by way of a radio signal from the at least one host device.
[00213] Clause 5: The method of clause 1, wherein the list of descriptors about each host device includes an identification of services at each host device.
[00214] Clause 6: The method of clause 2, wherein proximate interoperable devices provide the list of descriptors about each host device include an identification of services at each host device accessible by said guest device.
[00215] Clause 7: The method of clause 1, wherein each of said descriptors of said host devices includes natural language describing contextual information about an associated one of said host devices.
[00216] Clause 8: The method of clause 1, wherein said comparing the descriptors of the guest device to the lists of descriptors of the host devices comprises locating at least one identical descriptor in a list of descriptors of one of the host devices, and in the descriptors of the guest device.
[00217] Clause 9: The method of clause 1, further comprising receiving an updated list of descriptors from the guest device, as the guest device moves at the location. [00218] Clause 10: The method of clause 1, wherein said list of descriptors of the guest device includes at least one of the coordinates of the guest device; identity of the guest device; IDs of visible radio beacons; an identification of NFC tags scanned; identifiers of WiFi access points visible; and an identifier of a connected wireless network.
[00219] Of course, the above described embodiments are intended to be illustrative only and in no way limiting. The described embodiments are susceptible to many modifications of form, arrangement of parts, details and order of operation. The invention is intended to encompass all such modification within its scope, as defined by the claims.

Claims

WHAT IS CLAIMED IS:
1. A method of expediting wireless access, from a mobile device, to exposed services at proximate electronic devices via a medium-range or shorter wireless communication modality not previously used between the mobile device and the proximate electronic devices, the method comprising: based on a location descriptor indicative of a current location of a mobile device, identifying a set of proximate electronic devices at the location; for each of the proximate electronic devices in the set, further identifying: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless communication session with the proximate electronic device; pre-emptively storing, at the mobile device, the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; and upon subsequent invocation, at the mobile device, of one of the exposed services, using the preemptively stored addressing information to automatically establish a wireless communication session, in the associated wireless communication modality, with the proximate electronic device providing the exposed service.
2. The method of claim 1 wherein the further identifying of the set of exposed services comprises: receiving user credentials of a user of the mobile device; retrieving user access permissions associated with the exposed service; and verifying that the user credentials satisfy the user access permissions of the exposed service.
3. The method of claim 1 wherein the pre-emptively stored addressing information that is used to automatically establish the wireless communication session comprises security credentials that are device-specific and wireless communication modality-specific.
4. The method of claim 1 further comprising: receiving a new location descriptor indicative of a new location of the mobile device; based on the new location descriptor, identifying a new set of proximate electronic devices at the new location; for each of the proximate electronic devices in the new set, further identifying: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless communication session with the proximate electronic device; and replacing or supplementing the pre-emptively stored addressing information at the mobile device with the addressing information for each of the wireless communication modalities of each of the proximate electronic devices in the new set.
5. The method of claim 1 wherein the identifying of the set of proximate electronic devices at the location comprises: generating a query comprising: the location descriptor of the mobile device; and a specified degree of co-location precision; submitting the query to a database, the database containing device information for a plurality of electronic devices, the device information of each electronic device including at least one location descriptor describing a location of the corresponding electronic device; and receiving a query result uniquely identifying each electronic device in the database whose location descriptor matches, to the specified degree of precision, the location descriptor of the mobile device.
6. The method of claim 5 wherein the specified degree of co-location precision is less than one hundred meters.
7. The method of claim 1 further comprising performing a co-location verification operation comprising, for each proximate electronic device in the set: detecting, at either the mobile device or at the proximate electronic device, a signature carried by a radio frequency (RF) signal; submitting a query including the detected signature to a database, the database containing device information of a plurality of electronic devices including the mobile device and each of the proximate electronic devices, the device information including, for each of the electronic devices, a unique signature associated with the electronic device; and based on a query result indicating a match between the detected signature and a unique signature in the database not associated with the detecting device, verifying that the mobile device and the proximate electronic device are co-located.
8. The method of claim 1 wherein the detected signature is a time-variable signature.
9. The method of claim 1 wherein the wireless communication modality of the wireless communication session is Bluetooth™, wherein the proximate electronic device with which the wireless communication session is established operates in a non-discoverable Bluetooth™ mode, and wherein the device-specific and wireless communication modality-specific security credentials comprise a Bluetooth address of the proximate electronic device operating in the non-discoverable Bluetooth™ mode.
10. The method of claim 1 wherein the device-specific and wireless communication modality-specific security credentials comprise a service set identifier for a wireless local area network (WLAN) and an encryption key.
11. A mobile device for providing expedited wireless access to exposed services at proximate electronic devices via medium-range or shorter wireless communication modalities not previously used by the mobile device to wirelessly communicate with the proximate electronic devices, comprising: at least one transceiver, each transceiver for wireless communication via a corresponding medium-range or shorter wireless communication modality; a processor; and memory storing software that, upon execution by the processor, causes the mobile device to: detect a location of the mobile device; provide a location descriptor indicative of the location of the mobile device to a server; in response to the providing of the location descriptor, receive device information of a set of proximate electronic devices at the location, the device information including, for each of the proximate electronic devices in the set: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless communication session with the proximate electronic device; pre-emptively store the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; and upon subsequent invocation, at the mobile device, of one of the exposed services, operate a suitable one of the at least one transceiver using the pre-emptively stored addressing information to automatically establish a wireless communication session, in the associated wireless communication modality, with the proximate electronic device providing the exposed service.
12. The mobile device of claim 11 further comprising a position receiver component, wherein the detecting of the location comprises using the position receiver component to receive an indicator of the location, and wherein the software, upon execution by the processor, further causes the mobile device to generate the location descriptor by converting the indication of the detected location to a geo-hash.
13. The mobile device of claim 11 wherein the device information comprises user access permissions for each exposed service at each proximate electronic device and wherein the invocation of the exposed service at the proximate electronic device comprises initially verifying that user credentials of a user of the mobile device satisfy the user access permissions for the exposed service.
14. The mobile device of claim 11 wherein the at least one transceiver comprises a radio frequency (RF) transceiver and wherein the software, upon execution by the processor, further causes the mobile device to: detect signatures carried by respective RF signals received, via the RF transceiver, from proximate electronic devices at the location; and provide the detected signatures to the server, wherein the received device information is of only the set proximate electronic devices at the location whose signatures are among the detected signatures.
15. A system for providing expedited wireless access, from a mobile device, to exposed services at proximate electronic devices via a medium-range or shorter wireless communication modality not previously used between the mobile device and the proximate electronic devices, the system comprising: a mobile device having a processor and memory storing sender software that, upon execution, causes the mobile device to: detect a location of the mobile device; and provide a location descriptor indicative of the location of the mobile device to a server; the server having a processor and memory storing server software that, upon execution, causes the server to: based on the location descriptor from the mobile device, identify a set of proximate electronic devices at the location; for each of the proximate electronic devices in the set, further identify: a set of exposed services provided at the proximate electronic device; a set of medium-range or shorter wireless communication modalities of the proximate electronic device for wirelessly accessing the set of exposed services; and for each of each of the wireless communication modalities of the proximate electronic device, addressing information for establishing a wireless communication session with the proximate electronic device; and provide to the mobile device the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; the mobile device further operable, upon execution of the sender software, to: pre-emptively store the addressing information for each of the wireless communication modalities of each of the proximate electronic devices; and upon subsequent invocation, at the mobile device, of one of the exposed services, use the pre-emptively stored addressing information to automatically establish a wireless communication session, in the associated wireless communication modality, with the proximate electronic device providing the exposed service.
PCT/CA2018/050455 2017-04-14 2018-04-16 Interoperable device and service discovery for expedited wireless access to exposed services at proximate devices WO2018187878A1 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201762485587P 2017-04-14 2017-04-14
US62/485,587 2017-04-14
US201762523622P 2017-06-22 2017-06-22
US62/523,622 2017-06-22
US201762525705P 2017-06-27 2017-06-27
US62/525,705 2017-06-27
US201762556779P 2017-09-11 2017-09-11
US62/556,779 2017-09-11

Publications (1)

Publication Number Publication Date
WO2018187878A1 true WO2018187878A1 (en) 2018-10-18

Family

ID=63793067

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2018/050455 WO2018187878A1 (en) 2017-04-14 2018-04-16 Interoperable device and service discovery for expedited wireless access to exposed services at proximate devices

Country Status (1)

Country Link
WO (1) WO2018187878A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8116223B2 (en) * 2006-11-09 2012-02-14 Ivt Technology Inc. System and method for supporting automatic establishing and disconnecting several wireless connections
US20130185368A1 (en) * 2012-01-18 2013-07-18 Kinectus LLC Systems and methods for establishing communications between mobile device users

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8116223B2 (en) * 2006-11-09 2012-02-14 Ivt Technology Inc. System and method for supporting automatic establishing and disconnecting several wireless connections
US20130185368A1 (en) * 2012-01-18 2013-07-18 Kinectus LLC Systems and methods for establishing communications between mobile device users

Similar Documents

Publication Publication Date Title
CN110636496B (en) Method, device and computer readable medium for privacy enhancement of wireless devices
US11470058B2 (en) Network connection method, mobile terminal, electronic device, and graphical user interface
KR102390046B1 (en) Wireless router, internet of things device and system for supporting a connection to wireless router of internet of things device
KR102254849B1 (en) processing Method and apparatus for provisioning profile
KR102646526B1 (en) Automated service enrollment in a machine-to-machine communications network
US9503893B2 (en) Communication management system, relay device, communication control system, communication system, communication method, and recording medium storing communication control program
US10075896B2 (en) Service providing method using a beacon and electronic apparatus thereof
WO2019206201A1 (en) Method for transmitting configuration file, related device and storage medium
CN105684520B (en) Method for establishing wireless local area network communication connection and electronic equipment thereof
US10271359B2 (en) Wireless communication system
UA112438C2 (en) Method and apparatus for sharing connectivety settings via social networks
US9852274B2 (en) Media client device setup utilizing zero-touch installation
KR20140045829A (en) Method for providing authentication for iot, device and apparatus therefor
KR102143441B1 (en) Electronic device and method for updating authentication information in electronic device
KR102302638B1 (en) Priority access to a priority access channel
JP2011203825A (en) Information processing system, information processing apparatus, and management server
US20240031223A1 (en) Configuring accessory network connections
KR20170066117A (en) ELECTRONIC DEVICE AND METHOD OF PROVIDING INFORMATION ABOUT THE AP((access point)
US11323880B2 (en) Method for wireless connection and electronic device therefor
KR20140113253A (en) Method of application connection for devices in a network
KR20190110393A (en) Method for setting communication network of appliance and server for processing the method
KR102480627B1 (en) Electronic device for managing embedded subscriber identity module and method for the same
CN116762324A (en) IOT device and method for loading IOT device to server
US20180255446A1 (en) Remote access to an accessory device
WO2019144213A1 (en) Facilitating invocation of a service hosted at a proximate electronic device from a mobile software application

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18785167

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18785167

Country of ref document: EP

Kind code of ref document: A1