System service sharing between endpoint devices for endpoint devices with increased capabilities

Endpoint devices can share system services across devices with different operating systems, addressing the limitations of restricted ecosystems by enhancing flexibility and management through protocol-based service access.

JP7864161B2Active Publication Date: 2026-05-22GOOGLE LLC
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
GOOGLE LLC
Filing Date
2024-08-02
Publication Date
2026-05-22

AI Technical Summary

Technical Problem

Existing device ecosystems face limitations in adding new capabilities due to restricted operating systems and communication protocols, leading to cumbersome management and restricted device additions, especially when user data is involved.

Method used

A method for endpoint devices to discover, request, and access system services from other endpoint devices using a variety of communication protocols, enabling operating system-independent service sharing and enhancing device ecosystem flexibility.

Benefits of technology

Facilitates flexible and efficient addition of capabilities by allowing endpoint devices to share and utilize system services across devices with different operating systems, improving management and functionality without requiring device additions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007864161000001
    Figure 0007864161000001
  • Figure 0007864161000002
    Figure 0007864161000002
  • Figure 0007864161000003
    Figure 0007864161000003
Patent Text Reader

Abstract

To provide an endpoint device system that provides a method and a system for sharing one or more system services between one or more endpoint devices.SOLUTION: A system includes a first endpoint device configured to detect one or more other endpoint devices communicatively coupled to the first endpoint device. From at least one of the detected endpoint devices, the first endpoint device requests a respective list of available system services. After determining one or more applicable system services based on the application being run, the first endpoint device requests available resolutions for the applicable system services from the detected endpoint devices. The first endpoint device then implements the functionality of the application using one or more of the applicable system services based on the available resolutions.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Reference to Related Applications This application claims the benefit of U.S. Provisional Patent Application Serial No. 63 / 066,602, filed August 17, 2020, entitled "SYSTEM FOR GAINING CAPABILITIES AT AN ENDPOINT", which is hereby incorporated by reference in its entirety.

[0002] Background In a device ecosystem, multiple devices each having their own capabilities are networked together to provide their capabilities to one or more users. Conventionally, to add new capabilities to a device ecosystem, new devices are added to the network and the new capabilities are executed upon request by the network. However, adding new devices to a device ecosystem can be cumbersome and restrictive. This is because the operating systems and communication protocols supported by the device ecosystem, such as in a closed device ecosystem, are limited. In addition, frequently adding devices to a device ecosystem makes the management of the capabilities of each device within the device ecosystem more complex.

[0003] Often, the devices added to a device ecosystem are associated with user data that restricts which devices can be added to which device ecosystem. Further, many device ecosystems are configured to communicate using a small number of communication protocols, which also restricts which devices can be added to a particular device ecosystem.

Summary of the Invention

[0004] According to one exemplary embodiment, the method includes the step of having a first endpoint device receive from a second endpoint device a list of available system services associated with the second endpoint device. The method may further include the step of receiving an available solution for at least one available system service from the list of available system services. The method may further include the step of having the first endpoint device run one or more applications associated with a function. The step of running one or more applications may include sending data from the first endpoint device to the second endpoint device that enables the function using at least one available system from the list of available system services based on the available solution.

[0005] The method may also include the step of the first endpoint device receiving a plurality of available solutions from the second endpoint device based on at least one available system service from the list of available system services. The available solution may be one of the plurality of available solutions. In addition, the method may include the step of the first endpoint device receiving data from the second endpoint device representing an interaction with the one or more applications, and the step of the first endpoint device modifying the execution of the one or more applications based on the data representing the interaction with the one or more applications.

[0006] The method may further include the first endpoint device receiving a second list of available system services associated with a third endpoint device that is communicably coupled to the second endpoint device from the second endpoint device. The method may also include the first endpoint device requesting the second endpoint device to provide a second available solution for system services from the second list of available system services. The step of executing one or more applications may also include the first endpoint device sending data to the third endpoint device that enables the functionality using the system services from the second list of available system services based on the second available solution.

[0007] In addition, the method may include the steps of the first endpoint device discovering the second endpoint device, and the first endpoint device receiving resolution service data associated with the second endpoint device from the second endpoint device. The method may further include the first endpoint device requesting the second endpoint device, based on the resolution service data, to provide the second endpoint device with a list of available system services associated with the second endpoint device via a communication protocol among a plurality of communication protocols.

[0008] In another exemplary embodiment, the method includes the steps of: a first endpoint device discovering a second endpoint device which includes one or more system services; and the first endpoint device receiving available solutions associated with one or more system services of the second endpoint device. The method may also include the steps of: on the first endpoint device, executing one or more applications using the one or more system services of the second endpoint device based on the available solutions associated with the one or more system services.

[0009] The method may further include the steps of receiving resolution service data from the second endpoint device and requesting a list containing the one or more system services via a communication protocol based on the resolution service data by the first endpoint device. Furthermore, the method may include the steps of the first endpoint device receiving data from the second endpoint device representing an interaction with the one or more applications and executing the one or more applications based on the data representing the interaction with the one or more applications. The available resolution may be one of several available resolutions received from the second endpoint device. The second endpoint device may be discovered by the first communication protocol, and the available resolution may be received by the second communication protocol.

[0010] In addition, the method may include the step of having the first endpoint device request access to the discovery service engine of the second endpoint device in response to the discovery of the second endpoint device. Furthermore, the method may include the step of the first endpoint device receiving resolution service data associated with the discovery service engine of the second endpoint device, and accessing the discovery service engine of the second endpoint device based on the resolution service data. The method may also access the second endpoint device via a communication protocol among a plurality of communication protocols based on the resolution service data. This may include the step of accessing the discovery service engine of the input device.

[0011] In general, with respect to the methods described herein, one or more applications may be configured to render one or more notifications. Furthermore, the steps of executing such one or more applications may include rendering one or more notifications on a display electronically coupled to the second endpoint device. In addition, generally, the first endpoint device may have a first operating system, and the second endpoint device may have a second operating system separate from the first operating system. The second operating system may have at least one interface, language, memory management technology, communication protocol, encryption, or network stack different from the first operating system. Generally, the second endpoint device may be located in close proximity to the first endpoint device. In addition, the second endpoint device may contain device ID data for a third endpoint device.

[0012] According to some exemplary embodiments, the system may include a first endpoint device comprising one or more processors. The first endpoint device stores executable instructions configured to operate the one or more processors to perform the methods disclosed herein.

[0013] According to additional exemplary embodiments, the system may include an endpoint device framework comprising one or more endpoint devices communicatively coupled to one or more other endpoint devices, and the system may be configured to perform the method disclosed herein.

[0014] Brief explanation of the drawing This disclosure can be better understood by referring to the accompanying drawings, and many of its features and advantages will be apparent to those skilled in the art. Where the same reference numerals are used in different drawings, they indicate similar or identical elements. [Brief explanation of the drawing]

[0015] [Figure 1] This block diagram shows an endpoint device framework for shared system services according to several embodiments. [Figure 2] This block diagram shows an endpoint device configured to import and export one or more system services within the endpoint device framework of Figure 1, according to several embodiments. [Figure 3] This flowchart illustrates exemplary bootstrapping behavior of an endpoint device according to several embodiments. [Figure 4] This block diagram shows a communicatively coupled endpoint device configured to share one or more system services within the endpoint device framework of Figure 1, according to several embodiments. [Figure 5]This is a signal flow diagram illustrating exemplary discovery service access request behavior for an endpoint device, according to several embodiments. [Figure 6] This is a signal flow diagram illustrating exemplary available system service requests according to several embodiments. [Figure 7] This flowchart illustrates the process for running an application using shared system services, according to several embodiments. [Modes for carrying out the invention]

[0016] Detailed explanation The technologies and systems described herein address providing flexibility in a device ecosystem of multiple endpoint devices by sharing system services across one or more endpoint devices. Specifically, such technologies and systems described herein enable an endpoint device to acquire the capability of system services shared from one or more other endpoint devices. To acquire these capabilities, a first endpoint device running an application discovers one or more other endpoint devices that are communicably coupled to the first endpoint device. For example, the first endpoint device discovers one or more other endpoint devices that are near or adjacent to the first endpoint device. The first endpoint device requests a list of each available system service from each of the discovered endpoint devices. After determining one or more applicable system services based on the application being run, the first endpoint device requests the data necessary to access the applicable system services from each endpoint device. The endpoint device then uses one or more of the applicable system services to implement the functionality of the application. In this way, the first endpoint device acquires the capability of applicable system services shared from the other endpoint devices.

[0017] In addition, the technologies and systems described herein enable the sharing of operating system-independent system services among endpoint devices. That is, an endpoint device having a first operating system can share system services with one or more endpoint devices having one or more different operating systems. Such a framework allows for greater flexibility when adding endpoint devices to a device ecosystem.

[0018] Figure 1 shows an endpoint device framework 100 that enables shared system services according to several embodiments. The endpoint device framework 100 includes one or more endpoint devices 102, each of which is communicatively coupled to at least one other endpoint device, and is configured to enable the sharing of system services 106 among the communicatively coupled endpoint devices. As used herein, “communicatively coupled” includes, to give some examples, a state in which each of two or more devices is configured to enable the transmission, reception, or both of the above of data between them, for example, by wired communication, wireless communication, network communication, bridge communication, etc. As used herein, “endpoint device” includes hardware and software resources configured to run one or more applications 104, and further includes, for example, one or more desktop computers, servers, virtual servers, notebook computers, tablet computers, virtual reality systems, augmented reality systems, compute-enabled mobile phones (i.e., “smartphones”), compute-enabled wearable devices (i.e., “wearables”), communication hubs, vehicle-integrated displays, compute-enabled displays (i.e., “smart displays”), compute-enabled televisions (i.e., “smart televisions”), or any combination thereof.

[0019] In some embodiments, each application 104 is associated with one or more functions that are implemented by the endpoint device 102 when the application 104 is executed. For example, each application 104 includes logic for implementing one or more functions. Such functions include, to name a few, streaming video data, streaming audio data, controlling a data stream, controlling playback, generating notifications, displaying notifications, or any combination thereof. To illustrate this, each endpoint device 102 includes one or more system services 106 configured to implement at least some of the functions of application 104 when it is running. As used herein, “system service” includes the hardware and software of the endpoint device 102 configured to implement at least some of the functions of application 104. For example, system service 106 includes, to name a few, hardware and software configured to render audio data (e.g., one or more audio encoders, audio decoders, speakers), render video data (e.g., one or more video encoders, one or more video decoders, displays), receive data, transmit data, receive input, receive interaction (e.g., interactive touchscreen, mouse, keyboard, game controller), generate queries, or any combination thereof. As another example, system service 106 includes one or more application interfaces (APIs) configured to implement one or more functions of application 104 running on the endpoint device 102. In one embodiment, three system services 106-1, 106-2, and 106-3 are presented to implement functions associated with two applications 104-1 and 104-2, but in other embodiments, any number of system services may implement functions for any number of applications.

[0020] According to some embodiments, each endpoint device 102 is configured to export one or more system services 106 to one or more other endpoint devices, enabling access to and control (i.e., exposure) of the exported system services 106 to one or more other endpoint devices. Each system service 106 of the endpoint device 102 is one or more communication protocols, wired communication connections, and wireless communication connections, such as Bluetooth®, Bluetooth® Low Energy (BLE), Multicast Domain Name System (mDNS), QR Code®, ultra-wideband, ultrasound, general-purpose web service API, USB, radio frequency identification (RFID), near-field communication (NFC), short message service (SMS), W One or more system services 106 are configured to be exported to one or more other endpoint devices using Wi-Fi, the Internet, a local area network (LAN), Ethernet (registered trademark), or any combination thereof. In some embodiments, when a first endpoint device (e.g., endpoint device 102-1) exports system service 106 to a second endpoint device (e.g., endpoint device 102-2), the second endpoint device can access and control the system service 106 to implement at least a portion of one or more functions associated with an application 104 running on the second endpoint device. That is, the second endpoint device uses the system service 106 of the first endpoint device to implement the functions of application 104 running on the second endpoint device. For example, in the illustrated embodiment, system service 106-3 can be exported to endpoint devices 102-2, 102-3, or 102-4 and used to implement at least a portion of the functions of the respective applications running on endpoint devices 102-2, 102-3, or 102-4. By exporting one or more system services 106 to one or more other endpoint devices, the one or more other endpoint devices can effectively acquire new capabilities associated with the exported system service 106's hardware and software.

[0021] In some embodiments, each endpoint device 102 includes one or more proxy system services 108. These one or more proxy system services 108 include software and hardware configured to access and control one or more exported system services 106 from one or more other endpoint devices. According to some embodiments, the proxy system service 108 is configured to implement at least one or more functions of an application 104 (also referred to herein as the “supported application”) using one or more exposed system services from another endpoint device. In some embodiments, the proxy system service 108 implements the functions of the supported application by sending data to the exposed system services 106 that implement the functions associated with the supported application. For example, the proxy system service 108 sends data representing the logic of the application 104 and implements the functions associated with the application 104 using exported system services 106 from another endpoint device. In the illustrated embodiment, three proxy system services 108-1, 108-2, and 108-3 are demonstrated to implement the functionality of one supported application 104-3 using three endpoint devices 102-2, 102-3, and 102-4. In other embodiments, any number of proxy system services may be used to implement the functionality of any number of applications running on any number of endpoint devices. In this way, at least a portion of an application running on a first endpoint device may be implemented on a second endpoint device. For example, an application 104 running on the first endpoint device 102-1 may have functionality including notification generation and display. Here, at least a portion of the application 104 running on the first endpoint device 102-1, for example, notification display, may be implemented on the second endpoint device 102-2.

[0022] According to some embodiments, the proxy system service 108 is configured to receive input data from one or more exported system services 106 from other endpoint devices. As used herein, "input data" includes, for example, data representing interactions on input devices such as interactive touchscreens, mice, keyboards, or game controllers (e.g., gestures on a touchscreen, taps on a touchscreen, text input, mouse clicks, button presses). In some embodiments, each proxy system service 108 is configured to modify the execution of the supported application based on the input data. For example, the proxy system service 108 provides the input data as input to the supported application. As another example, the proxy system service 108 starts or stops the execution of the supported application based on the input data.

[0023] In some embodiments, each endpoint device 102 of the endpoint device framework 100 includes one or more operating systems, each having, for example, one or more interfaces, languages, memory management techniques, communication protocols, encryption, network stacks, or any combination thereof. According to some embodiments, the endpoint device framework 100 is configured to be operating system agnostic. As used herein, "operating system agnostic" includes an endpoint device framework 100 configured to support at least one endpoint device 102 having a first operating system and at least one other endpoint device having a second distinct operating system. That is, within the endpoint device framework 100, a first endpoint having the first operating system Device 102 can export or import one or more system services 106 from a first operating system to a second endpoint device having a second operating system that includes one or more different interfaces, memory management technologies, communication protocols, network stacks, or any combination thereof.

[0024] For example, a first endpoint device (e.g., endpoint device 102-1) includes a first operating system having a first interface and a first memory management system. Within the endpoint device framework 100, the first endpoint device can import one or more system services from a second endpoint device having a second separate operating system with a second separate interface and a second separate memory management system. As described below with reference to Figure 2, the first endpoint device can request access to one or more system services 106 on the second endpoint device. In response, the second endpoint device sends data indicating how to access the system services 106 according to the operating system running on the second endpoint device. In other words, the second endpoint device sends data indicating how to access its system services 106 according to one or more interfaces, memory management techniques, communication protocols, network stacks, or any combination thereof of the second operating system. The first endpoint device can then access the system services of the second endpoint device from this data.

[0025] Referring here to Figure 2, an exemplary endpoint device 202 configured to share system services is presented. In some embodiments, the endpoint device 202 implements an aspect of the endpoint device framework 100 as described in Figure 1. For example, the endpoint device 202 may be similar to or identical to the endpoint device 102 shown in Figure 1. The endpoint device 202 includes hardware and software for exporting and importing one or more system services to and from one or more other endpoint devices. According to some embodiments, the endpoint device 202 is part of an electronic device that supports the export and import of system services to and from one or more other endpoint devices, including, for example, a desktop computer, a notebook computer, a tablet computer, a virtual reality system, an augmented reality system, a smartphone, a communication hub, a smart display, or a smart TV. In some embodiments, the endpoint device 202 is part of an electronic device that supports the export and import of system services to and from one or more other endpoint devices, including, for example, a desktop computer, a notebook computer, a tablet computer, a virtual reality system, an augmented reality system, a smartphone, a communication hub, a smart display, or a smart TV. The device includes diodes (OLEDs), or any combination thereof, or is communicatively coupled to them. In the illustrated embodiment, the endpoint device 202 is communicatively coupled to three peripheral devices 212-1, 212-2, and 212-3, but in other embodiments, the endpoint device 202 may be communicatively coupled to any number of peripheral devices.

[0026] In some embodiments, the endpoint device 202 includes a processing element 230 communicatively coupled to the memory 210. The memory 210 includes electronic storage devices, such as solid-state drives, hard disk drives, random access memory (RAM), read-only memory (ROM), electronically erasable programmable ROM (EEPROM), optical storage devices, or any combination thereof. The memory 210 includes one or more Instructions and data related to the execution of the application and the export and import of system services from one or more endpoint devices, including, for example, device ID data 222, a list of system services 224, and resolution service data 226.

[0027] According to some embodiments, the processing element 230 includes one or more control processing units (CPUs), microprocessors, and field-programmable graphics cards. Field-programmable gate array (FPGA), graphics processing unit (graphics processing unit: GPU), application-specific integrated circuit An integrated circuit (ASIC), or any combination thereof, including 1 It is configured to perform import and export of one or more system services to or from one or more other endpoint devices. In some embodiments, the endpoint device 202 includes a list 224 of system services stored in memory 210. The list 224 of system services includes data indicating the system services 106 available to the endpoint device 202. The system services available to the endpoint device 202 include the system services 106 included in the endpoint device 202 and system services exported to the endpoint device 202 from one or more other endpoint devices (i.e., system services of other endpoint devices controlled by one or more proxy system services 108). According to some embodiments, the list 224 of system services may further include system services available to one or more other endpoint devices communicably coupled to the endpoint device 202.

[0028] According to some embodiments, memory 210 includes resolution service data 226, which includes available solutions associated with one or more components of the endpoint device 202 (e.g., bootstrap engine 214, identification engine 216, discovery service engine 220, peripherals 212), one or more system services in a list of system services 224, or both. As used herein, “available solutions” includes data indicating how one or more components of the endpoint device 202 or a system service 106 of the endpoint device 202 can be accessed using one or more communication protocols. For example, available solutions include one or more protocols (e.g., Internet Protocol, Port, Bluetooth®, etc.). The system available through the Generic Attribute Profile (GATT) The data includes one or more addressable locations for the system service 106. In some embodiments, the available solutions include multiple addressable locations available for two or more communication protocols. Thus, the resolution service data 226 includes data indicating how to access the system service 106 using multiple communication protocols. According to some embodiments, the resolution service data 226 includes available solutions for one or more of the system services 106 available to the endpoint device 202, including system services exported to the endpoint device 202 from one or more other endpoint devices. In some embodiments, the resolution service data 226 further includes available solutions for one or more system services available to one or more other endpoint devices communicably coupled to the endpoint device 202.

[0029] The processing element 230 includes a bootstrapping engine 214 configured to discover one or more other endpoint devices relative to the endpoint device 202 and perform a bootstrapping operation to initiate contact with the one or more other endpoint devices. According to some embodiments, the bootstrapping operation of the bootstrapping engine 214 involves discovering one or more end endpoint devices adjacent to the endpoint device 202. The bootstrapping operation of the bootstrapping engine 214 includes a discovery step configured to detect the presence of a point device. As used herein, an endpoint device is in proximity to the endpoint device 202 if it is discoverable by the bootstrapping engine 214 using one or more protocols, such as BLE, mDNS, or NFC. That is, a proximity endpoint device is located within a distance from the endpoint device 202 that allows it to be discovered by the bootstrapping engine 214. In some embodiments, the discovery step of the bootstrapping engine 214 is configured to detect the presence of one or more endpoint devices that are communicably coupled to or associated with the endpoint device 202 by, for example, one or more accounts (e.g., one or more endpoint devices sharing a user account with the endpoint device 202), a server (e.g., one or more endpoint devices registered with a server). According to some embodiments, the bootstrapping operation of the bootstrapping engine 214 further includes an initialization step configured to query and return device identification data (device ID data) from one or more discovered endpoint devices.

[0030] In some embodiments, memory 210 includes device ID data 222 containing a device ID of endpoint device 202 that indicates the identity, ownership, access, proof, or any combination thereof of the endpoint device 202. According to some embodiments, the device ID is based on the Internet Protocol (I P) Includes an addressable label for endpoint device 202 similar to the address. According to some embodiments, endpoint devices are configured to communicate with other endpoint devices (e.g., endpoint device 202) by providing each other with their device IDs and addressable labels. In some embodiments, the device ID includes the public half of an asymmetric key pair. According to some embodiments, an endpoint device (e.g., endpoint device 202) is configured to use the key pair for digital signatures. In this way, an endpoint device receiving a digital signature from a second endpoint device can verify the signature of the second endpoint device. In some embodiments, the device ID includes a proof token containing one or more proofs of the endpoint device. The proof includes data representing one or more capabilities, configurations, or integrity of the endpoint device. For example, the proof may include data indicating that the endpoint device's system software has not been modified since its manufacture. In one exemplary embodiment, the device ID is 32 bytes long, but in other embodiments, a different number of bytes may be used. According to some embodiments, the device ID further includes communication information, such as address information for one or more system services, engines, modules, or processors of the endpoint device, and one or more communication protocols supported by the endpoint device or one or more system services, engines, modules, or processors. For example, the device ID for endpoint device 202 may include communication information indicating how to access the resolution service engine 218 (e.g., one or more addressable locations of the resolution service engine 218) and the communication protocols supported by the resolution service engine 218.In some embodiments, the device ID data includes device IDs for one or more other endpoint devices, for example, device IDs for endpoint devices that endpoint device 202 is currently connected to, was previously connected to, or is currently connected to and was previously connected to.

[0031] According to some embodiments, the processing element 230 generates, stores, modifies, maintains, and authenticates a device ID, for example, a device ID stored in device ID data 222. The system includes an identification engine 216 configured to do the following. In some embodiments, the identification engine 216 is configured to authenticate device IDs received from one or more endpoint devices. For example, the identification engine 216 is configured to verify ownership of the device ID, verify the address of the device ID, verify the certification of the device ID by a certification service (e.g., that the endpoint device has not been tampered with), verify the identity of the device ID, determine a timestamp for the device ID, or any combination thereof. As an example, the identification engine 216 verifies the identity of a received device ID by comparing the identity indicated in the received device ID with an identity obtained from a certification service. As another example, the device ID may include the public half of an asymmetric key pair used in digital signatures, which enables the identification engine 216 to verify a signature received from the endpoint device associated with the device ID. The identification engine 216 is configured to store one or more received device IDs in device ID data 222. According to some embodiments, the identification engine 216 stores only authenticated device IDs in device ID data 222.

[0032] In some embodiments, the processing element 230 includes a resolution service engine 218, which includes software and hardware configured to process incoming discovery access resolution requests and resolution queries received from one or more other endpoint devices. As used herein, a “discovery access resolution request” is a request received from one or more other endpoint devices, which includes a request for endpoint device 202 to access the discovery service engine 220. Based on the discovery access resolution request, the resolution engine 218 is configured to send one or more available resolutions associated with the discovery service engine 220 to the endpoint device that sent the discovery access resolution request. That is, the resolution engine 218 is configured to send data to the requesting endpoint device indicating how to access the discovery service engine 220 using one or more communication protocols. As used herein, a “resolution query” includes a request for access to one or more identified system services included in the list of system services 224. Based on the received resolution query, the resolution engine 218 is configured to send one or more available resolutions associated with the identified system services to the endpoint device that sent the resolution query. In other words, the resolution engine 218 is configured to send data to the requesting endpoint device indicating how to access identified system services (e.g., one or more addressable locations) using one or more communication protocols.

[0033] According to some embodiments, the processing element 230 includes a discovery service engine 220, which includes hardware and software configured to process incoming system service queries received from one or more other endpoint devices. As used herein, a “system service query” includes a request for the identification or list of one or more system services available to the endpoint device 202. Based on the received system service query, the discovery service engine 220 accesses a list of system services 224 and determines which system services are available to the endpoint device 202. According to some embodiments, the discovery service engine 220 is configured to send data containing a list of available system services to the requesting endpoint device. In some embodiments, the discovery service engine 220 is further configured to send one or more additional lists of available system services to the requesting endpoint device. Each of the additional lists of available system services indicates which system services are available to each endpoint device communicatively coupled to the endpoint device 202. In this way, the endpoint device 202 is available to the requesting endpoint device and each endpoint device communicatively coupled to the endpoint device 202. It functions as an intermediary or bridge between the point device and the other devices.

[0034] Figure 3 shows an exemplary bootstrapping operation 300 performed by a bootstrapping engine similar to or the same as the bootstrapping engine 214 of an endpoint device similar to or the same as the endpoint device 202. In step 305, the bootstrap engine initiates a discovery phase. In some embodiments, the step of initiating the discovery phase involves the bootstrap engine detecting one or more communication protocols, for example, Bluetooth®, BLE, MultiC, etc. The steps include initiating (for example, activating) a domain-based mDNS, QR code (registered trademark), ultra-wideband, RFID, NFC, or any combination thereof. In step 310, the bootstrapping engine detects one or more nearby endpoint devices according to one or more of the initiated protocols. In some embodiments, one or more of the initiated protocols include a first device operating as a scanning device (e.g., a first endpoint device) and a second device operating as an advertising device (e.g., one or more other endpoint devices). As used herein, “advertising device” is configured to announce its presence based on one or more of the initiated protocols. For example, an advertising device is configured to transmit a signal or beacon indicating the presence of an advertising device according to one or more of the initiated protocols. As used herein, a “scanning device” is configured to detect the presence of one or more advertising devices, for example, by receiving a signal or beacon transmitted by an advertising device. According to some embodiments, a single device may operate simultaneously as both a scanning device and an advertising device.

[0035] In step 315, after the bootstrap engine detects the presence of one or more endpoint devices, the bootstrap engine initiates an initialization phase. In the initialization phase, the bootstrap engine is configured to initiate contact with one or more detected endpoint devices using one or more communication protocols. In some embodiments, the bootstrapping engine initiates contact with one or more detected endpoint devices using one or more of the initiated protocols. In step 320, once the bootstrap engine initiates contact with the detected endpoint devices, the bootstrap engine constructs a device ID query and sends the constructed device ID query to the detected endpoint devices. The device ID query includes a request for the device ID of the connected endpoint devices; that is, the bootstrap engine requests identification data for each detected endpoint device. According to some embodiments, the device ID query includes the device ID of the endpoint device that initiates the bootstrapping process. In step 325, the bootstrapping engine receives the respective device IDs from one or more detected endpoint devices. According to some embodiments, the bootstrapping engine further receives one or more device IDs from the detected endpoint devices that identify each of the one or more endpoint devices coupled to that detected endpoint device. In some embodiments, the bootstrapping engine may provide the received device ID to an identification engine similar to or identical to the identification engine 216. The identification engine is configured to authenticate the device ID by, for example, verifying ownership of the device ID, verifying the address of the device ID, verifying the proof of the device ID by a certification service, verifying the identity of the device ID, determining a timestamp for the device ID (for example, verifying that the device ID has not expired), or any combination thereof.According to some embodiments, each device ID received from a discovered endpoint device is associated with one or more available solutions (i.e., connected endpoints) associated with the respective discovery service engine of the connected endpoint device. This includes data showing how to access each discovery service engine of a pointpoint device.

[0036] Referring now to Figure 4, a block diagram of communicatively coupled endpoint devices configured to share system services is shown. In some embodiments, endpoint device 402-1 (including discovery service engine 420-1, resolution service engine 418-1, and system service 406-1) and endpoint device 402-2 (including discovery service engine 420-2, resolution service engine 418-2, and system service 406-2) realize a phase of the endpoint device framework 100 as described in Figure 1. For example, endpoint devices 402-1 and 402-2 may be similar to or identical to endpoint device 102 shown in Figure 1. In the illustrated embodiments, endpoint device 402-1 is communicatively coupled to one other endpoint device 402-2, but in other embodiments, endpoint device 402-1 may be communicatively coupled to any number of other endpoint devices. According to some embodiments, endpoint device 402-1 initiates contact with endpoint device 402-2 using one or more communication protocols, for example, by implementing the exemplary bootstrapping operation 300 described above with reference to Figure 3.

[0037] In some embodiments, each endpoint device 402 is configured to implement or run one or more applications 404-1 and 404-2, each associated with one or more functions. Each endpoint device is configured to implement these functions using system services 406 that are located within or specific to endpoint device 402, or using one or more exported system services 406 shared from another endpoint device 402. For example, in the illustrated embodiment, endpoint device 402-1 is configured to implement one or more functions of application 404-1 using system service 406-1, system service 406-2, or both, on endpoint device 402-2. In this way, the capabilities of endpoint device 402-1 are enhanced as more system services become available to implement the functions of the applications. According to some embodiments, in order to access system services 406 on another endpoint device, one or more applications 404 running on endpoint device 402 are configured to access a discovery service engine 420 similar to or the same as the discovery service engine 220 on one or more other endpoint devices. In the illustrated embodiment, one application 404-1 running on the first endpoint device 402-1 accesses one discovery service engine 420-2 of another endpoint device 402, but in other embodiments, any number of applications 404 running on the first endpoint device 402-1 may access any number of discovery service engines of any number of other endpoint devices. In some embodiments, an application 404 running on the first endpoint device 402-1 accesses a discovery service engine 420-2 running on the second endpoint device 402-2 based on a device ID received from the second endpoint device 402-2 during a bootstrapping operation similar to or the same as the bootstrapping operation 300.For example, during bootstrapping, endpoint device 402-1 receives a device ID from endpoint device 402-2 that includes one or more available solutions associated with the discovery service engine 420-2 running on endpoint device 402-2 (i.e., data indicating how to access the discovery service engine 420-2). Based on these available solutions, application 404-1 can access the discovery service engine 420-2 using one or more communication protocols. In one embodiment, endpoint device 402-1 receives from endpoint device 402-2 a device ID including one or more available resolutions associated with one or more discovery service engines of one or more other endpoint devices communicably coupled to endpoint device 402-2. In another embodiment, application 404-1 running on first endpoint device 402-1 first requests access to discovery service engine 420-2 by querying resolution service engine 418-2 running on endpoint device 402-2.

[0038] For example, referring here to Figure 5, an exemplary request operation 500 for access to a discovery service engine is shown. According to some embodiments, a first endpoint device 502-1 similar to or the same as endpoint device 102 is configured to request access to a discovery service engine similar to or the same as discovery service engine 220, which operates on a second endpoint device 502-2 that is communicably coupled to the first endpoint device 502-1. The second endpoint device 502-2 includes a resolution service engine 518 similar to or the same as resolution service engine 218 and an identification engine 516 similar to or the same as identification engine 216. The request operation 500 includes the step of the first endpoint device 502-1 sending an identification query 501 to the second endpoint device 502-2. In some embodiments, the identification query 501 includes data requesting the device ID of the second endpoint device 502-2. According to some embodiments, in response to receiving an identification query 501, the identification engine 516 of the second endpoint device 502-2 is configured to send device ID data 503 of the second endpoint device 502-2 to the first endpoint device 502-1. The device ID data 503 sent to the first endpoint device 502-1 includes data indicating how to access the resolution service engine 518 of the second endpoint device 502-2. For example, the device ID data 503 includes data indicating the communication protocol supported by the resolution service engine 518, the addressable location of the resolution service engine 518, or both.

[0039] The first endpoint device 502-1 generates a discovery access resolution request 505 based on the received device ID data 503 and sends the discovery access resolution request 505 to the resolution service engine 518 of the second endpoint device 502-2. The discovery access resolution request 505 includes data requesting access information about the discovery service engine running on the second endpoint device 502-2. For example, the discovery access resolution request 505 includes a query for available resolutions for the discovery service engine of the second endpoint device 502-2. In response to receiving the discovery access resolution request 505, the resolution service engine 518 is configured to send resolution data 507 to the first endpoint device. The resolution data 507 includes one or more available resolutions for the discovery service engine of the second endpoint device 502-2. That is, the resolution data 507 includes data indicating how to access the discovery service engine of the second endpoint device 502-2. For example, resolution data 507 includes one or more communication protocols supported by the discovery service engine and the addressable location of the discovery service engine. The first endpoint device 502-1 can access the discovery service engine of the second endpoint device 502-2 from the resolution data 507. For example, the resolution data 507 can access the discovery service engine of the second endpoint device (e.g., Bluetooth® LT The data may include a communication protocol supported by E) and one or more open ports available to the discovery service engine. Based on the identified communication protocol and open ports, the first endpoint device 502-1 can access the discovery service engine of the second endpoint device 502-2. In some embodiments, the resolved data 507 further includes one or more available solutions for discovery service engines of one or more endpoint devices that are communicably coupled to a second endpoint device 502-2.

[0040] Referring again to Figure 4, after accessing the discovery service engine 420-2 of the second endpoint device 402-2, application 404-1 running on the first endpoint device 402-1 queries for a list of available system services and receives such a list from the discovery service engine 420-2. The list of available system services includes each system service available to the second endpoint device 402-2, including those exported (i.e., shared) to the second endpoint device 402-2 by one or more other endpoint devices. According to some embodiments, the first endpoint device 402-1 queries for and receives from the discovery service engine 420-2 one or more additional lists of available system services, including those available to each of the one or more other endpoint devices communicably coupled to the second endpoint device 402-2. In this way, the discovery service engine 420-2 acts as a bridge or intermediary between the first endpoint device 402-1 and one or more other endpoint devices communicably coupled to the second endpoint device 402-2.

[0041] In some embodiments, application 404-1 determines one or more applicable system services from one or more available system services based on the functionality associated with one or more applications running on the first endpoint device 402. Here, applicable system services include system services that assist in or are required to implement one or more functionality associated with the applications running on the endpoint device. For example, application 404-1 determines one or more applicable system services from a list of system services that assist in or are required to implement one or more functionality associated with application 404-1. After determining the applicable system services, application 404-1 queries the resolution service engine 418-2 of the second endpoint device 402-2 regarding available solutions associated with the applicable system services. In other words, application 404-1 requests data from the resolution service engine 418-2 indicating how to access the applicable system services.

[0042] For example, referring here to Figure 6, an exemplary request operation 600 for available system services from an endpoint device is presented. In some embodiments, a first endpoint device 602-1, similar to or identical to endpoint device 102, generates a system service query 601 and sends it to the discovery service engine 620 on a second endpoint device 602-2. The system service query 601 includes data requesting the second endpoint device 602-2 to list available system services. In response to receiving the system service query 601, the discovery service engine 620 operating on the second endpoint device 602-2 sends a list of available system services 603 to the first endpoint device 602-1. The list of available system services 603 includes data identifying each system service available to the second endpoint device 602-2. Such system services include system services running on the second endpoint device 602-2 and system services exported to or shared with the second endpoint device 602-2 by one or more other endpoint devices. According to some embodiments, the second endpoint device 602-2 transmits one or more additional lists of available system services. Each of the additional lists of available system services contains data identifying the system services available to each other endpoint device that is communicably coupled to the second endpoint device 602-2. Based on the list of available system services 603 or the additional lists of available system services, the first endpoint device 602-1 determines one or more applicable system services based on one or more functions of an application running on the first endpoint device 602-1.

[0043] After the first endpoint device 602-1 determines one or more applicable applications, it generates a resolution query 605 and sends it to the resolution service engine 618 of the second endpoint device 602-2. The resolution query 605 contains data requesting how to access the determined applicable system services (i.e., requesting one or more available solutions for the applicable system services). In response to receiving the resolution query 605, the resolution service engine 618 of the second endpoint device 602-2 determines one or more available solutions 607 for the applicable system services. For example, the resolution service engine 618 parses the resolution service data to determine one or more available solutions 607 for application system services. Once the resolution service engine 618 has determined the available solutions 607 for the applicable system services, the available solutions 607 are sent to the first endpoint device 602-2.

[0044] Referring again to Figure 4, after an application 404-1 running on the first endpoint device 402-1 receives an available resolution for applicable system services, the application 404-1 accesses those applicable system services on the endpoint device 402-2 so that the application 404-1 can control those applicable system services. After the application 404-1 has accessed the applicable system services, the first endpoint device 402-1 runs one or more applications 404 by realizing the functions associated with those applications 404 using the applicable system services. For example, the endpoint device 402-1 realizes the functions associated with application 404-1 using the system services 406-2 of the second endpoint device 402-2. In some embodiments, realizing the functions of an application includes running at least a portion of the application using the applicable system services. In this way, the first endpoint device 402-1 gains the capability of the system services 406-2 of the second endpoint device 402-2.

[0045] For example, application 404-1 includes one or more notification functions, such as generating, displaying, and interacting with one or more notifications. Application 404-1 determines from a list of available system services from the second endpoint device 402-2 one or more applicable system services that will assist in displaying and interacting with one or more notifications, such as the display APIs, input APIs, and interfaces of the second endpoint device 402-2. When application 404-1 receives an available resolution for the display APIs, input APIs, and interfaces of the second endpoint device 402-2, application 404-1 enables the display of one or more notifications using, for example, the display APIs and interfaces of the second endpoint device 402-2, and enables interaction with one or more notifications using, for example, the input APIs and interfaces of the second endpoint device 402-2.

[0046] As another example, application 404-1 includes one or more functions, such as receiving and streaming telephone calls. Access from a second endpoint device 402-2. From a list of possible system services, application 404-1 determines one or more applicable system services that assist in receiving and streaming telephone calls, for example, the telecom API of a second endpoint device 402-2. Once application 404-1 receives an available resolution for the telecom API of the second endpoint device 402-2, application 404-1 uses the telecom API of the second endpoint device 402-2, for example, to receive and stream telephone calls.

[0047] Referring here to Figure 7, a flowchart of an exemplary process 700 for running an application using shared system services is shown. In step 705, a first endpoint device similar to or identical to endpoint device 102 initially accesses the discovery service engine of one or more other endpoint devices communicably coupled to the first endpoint device. In some embodiments, in order to access the discovery service engine, the first endpoint device is configured to initially discover one or more other endpoint devices according to one or more communication protocols. The first endpoint device then requests the device ID of each discovered endpoint device. According to some embodiments, the device ID of each discovered endpoint device includes data indicating how to access the respective discovery service engine for that endpoint device.

[0048] Furthermore, in step 705, when the first endpoint device accesses the discovery service engine of one or more other endpoint devices communicably coupled to the first endpoint device, the first endpoint device queries each of the other endpoint devices for available system services. That is, the first endpoint device queries each of the other endpoint devices for system services running on those other endpoint devices and system services exported (i.e., shared) from at least one other different endpoint device to the other endpoint devices. In step 710, the first endpoint device receives a list of available system services from each of the queried endpoint devices. From the list of available system services, the first endpoint device identifies one or more applicable system services. The applicable system services include one or more system services that help to implement or are required for the implementation of one or more functions associated with one or more applications running on the first endpoint device. In step 715, the first endpoint device queries one or more of the endpoint devices that enumerated the applicable system services for resolution data regarding the applicable system services. That is, the first endpoint device queries the endpoint devices that sent the list of available system services, including the applicable system services. In step 720, the first endpoint device receives one or more available solutions for each of the applicable system services from each endpoint device (i.e., the queried endpoint device). The available solutions include data indicating how to access and control the applicable system service, such as one or more communication protocols associated with the applicable system service and data indicating one or more addressable locations of the applicable system service.

[0049] In step 725, the first endpoint device runs one or more applications. The step of running one or more applications includes the step of implementing one or more functions associated with the applications using one or more of the applicable system services. In this way, the first endpoint device runs other applications. The application is executed using the system services of the endpoint device. In step 730, the first endpoint device receives data representing the interaction with each endpoint device, including applicable system services that enable the functionality of the application running on the first endpoint device. That is, the first endpoint device receives data representing the interaction with the application running on the first endpoint device from the second endpoint device, including applicable system services used to enable the functionality of the application running on the first endpoint device. In this way, the second endpoint device functions as a remote input device for the application running on the first endpoint device. In step 735, the first endpoint device is configured to modify the execution of one or more applications according to the data representing the interaction with each endpoint device. For example, the first endpoint device may, to name a few, provide the data representing the interaction with each endpoint device as input to one or more applications, start the execution of one or more applications based on the data, stop the execution of one or more applications based on the data, or perform any combination of these actions.

[0050] In some embodiments, some aspects of the technology described above may be implemented by one or more processors of a processing system that runs the software. The software includes one or more sets of executable instructions stored in or tangibly embodied on a non-temporary computer-readable storage medium. When executed by one or more processors, the software may include instructions and some data that operate those one or more processors to perform one or more aspects of the technology described above. The non-temporary computer-readable storage medium may include, for example, magnetic or optical disk storage devices, solid-state storage devices, such as flash memory, cache, random access memory (RAM), or other non-volatile memory devices. The executable instructions stored in the non-temporary computer-readable storage medium may be source code, assembly language code, object code, or other instruction formats that can be interpreted or executed by one or more processors.

[0051] Computer-readable storage media may include any storage medium or combination of storage media that is accessible by a computer system while being used to provide instructions and / or data to the computer system. Such storage media may include, but are not limited to, optical media (e.g., compact discs (CDs), digital versatile discs (DVDs), Blu-ray discs), magnetic media (e.g., floppy disks, magnetic tapes, or magnetic hard drives), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or flash memory), or microelectromechanical systems (MEMS) based storage media. Computer-readable storage media can be embedded in a computing system (e.g., system RAM or ROM), fixedly mounted to a computing system (e.g., a magnetic hard drive), detachably mounted to a computing system (e.g., an optical disk or Universal Serial Bus (USB) based flash memory), or connected to a computer system via a wired or wireless network (e.g., network-accessible storage (NAS)).

[0052] Not all of the actions or elements described above are required in the summary, and some actions or parts of certain devices may not be required. In addition to those mentioned above, one or more further actions may be performed or elements may be included. Furthermore, the order in which the operations are enumerated does not necessarily indicate the order in which they are performed. Moreover, concepts have been described with reference to specific embodiments. However, those skilled in the art will understand that various modifications and changes are possible, provided they do not deviate from the scope of this disclosure as described in the appended claims. Therefore, the specification and drawings should be interpreted as illustrative rather than restrictive, and all such modifications are intended to fall within the scope of this disclosure.

[0053] In the context of "at least one of A, B, or C," the word "or" is used herein to mean "non-exclusive or," that is, in the contexts described above and similarly, to mean "at least one or any combination thereof." For example, "at least one of A, B, and C" is used to mean "at least one of A, B, C, or any combination thereof."

[0054] Usefulness, other advantages, and means of solving problems are described above with respect to specific embodiments. However, these usefulness, advantages, means of solving problems, and any features that may result in or make more prominent any usefulness, advantage, or solution should not be construed as essential, necessary, or required features in any or all of the claims. Furthermore, the subject matter disclosed above can be modified and implemented in various, but equivalent, manners that would be obvious to a person skilled in the art who has a benefit of teaching in this specification; therefore, the specific embodiments disclosed above are merely illustrative. Details of the structure or design shown herein other than those described in the appended claims are not intended to be limiting. Accordingly, it is clear that the specific embodiments disclosed above may be changed or modified, and all such changes will be deemed to be within the scope of the disclosed subject matter. Accordingly, the protection required herein is as described in the appended claims.

Claims

1. It is a method, The first endpoint device receives from the second endpoint device a list of available system services associated with the second endpoint device and access information relating to at least one available system service from the list of available system services. The method further includes the step of running one or more applications associated with a function on the first endpoint device, wherein the step of running one or more applications includes sending data from the first endpoint device to the second endpoint device that implements the function using at least one available system service from the list of available system services based on the access information, and the method further includes The first endpoint device receives data from the second endpoint device representing an interaction on the input device of the second endpoint device associated with one or more applications, A method comprising the step of modifying the execution of one or more applications based on data representing the interaction with one or more applications by the first endpoint device.

2. The above method further, The first endpoint device includes the step of receiving a plurality of access pieces from the second endpoint device based on at least one available system service from the list of available system services, The method according to claim 1, wherein the step of executing one or more applications is based on one of the plurality of available access pieces of information.

3. The method according to claim 1 or 2, wherein the step of correcting the execution of one or more applications includes the step of stopping the execution.

4. The method according to any one of claims 1 to 3, further comprising the step of the first endpoint device receiving from the second endpoint device a second list of available system services associated with a third endpoint device communicably coupled to the second endpoint device, and the step of executing one or more applications further comprising the first endpoint device transmitting to the third endpoint device data that enables the functionality using the system services from the second list of available system services.

5. The first endpoint device detects the second endpoint device, The method according to any one of claims 1 to 4, further comprising the step of the first endpoint device receiving access information associated with the second endpoint device from the second endpoint device.

6. Steps include: in response to detecting the second endpoint device, requesting access to the discovery service engine of the second endpoint device, and receiving access information for the first endpoint device to access the discovery service engine of the second endpoint device; The method according to claim 5, further comprising the steps of accessing the discovery service engine of the second endpoint device and receiving, by the first endpoint device, from the discovery service engine of the second endpoint device a list of available system services associated with the second endpoint device.

7. The first endpoint device receives access information associated with the discovery service engine of the second endpoint device, The method according to claim 6, further comprising the step of accessing the discovery service engine of the second endpoint device based on the access information.

8. The method according to claim 6 or 7, further comprising the step of accessing the discovery service engine of the second endpoint device by a communication protocol among a plurality of communication protocols based on access information.

9. The method according to any one of claims 1 to 8, wherein the one or more applications are configured to render one or more notifications.

10. The method according to any one of claims 1 to 9, wherein the step of executing one or more applications includes the step of rendering one or more notifications on a display electronically coupled to the second endpoint device.

11. The method according to any one of claims 1 to 10, wherein the first endpoint device has a first operating system, and the second endpoint device has a second operating system separate from the first operating system.

12. The method according to claim 11, wherein the second operating system has at least one interface, language, memory management technology, communication protocol, encryption, or network stack that is different from the first operating system.

13. The method according to any one of claims 1 to 12, wherein the second endpoint device is in proximity to the first endpoint device.

14. The method according to claim 4, wherein the second endpoint device includes device ID data of the third endpoint device.

15. It is a system, A system comprising a first endpoint device including one or more processors, wherein the first endpoint device stores executable instructions configured to operate the one or more processors to perform the method according to any one of claims 1 to 14.

16. It is a system, A system comprising an endpoint device framework including one or more endpoint devices communicably coupled to one or more other endpoint devices, wherein the system is configured to perform the method according to any one of claims 1 to 14.

17. A program that causes one or more processors to execute the method described in any one of claims 1 to 14.