Systems and methods for connecting computing devices
Techniques are disclosed relating to controlling hardware resources over an interface. In some embodiments, a first device performs tasks using one or more included hardware resources, including providing a local control stream that controls operation of the one or more hardware resources. In response to detecting a connection to a second device, the first device offloads the tasks to the second device including transitioning from providing the local control stream to routing, via the interface controller, a remote control stream received from the second device to the one or more hardware resources.
1 . A first device, comprising:
a first processor;
one or more hardware resources;
an interface controller configured to connect to a second device; and
memory having program instructions stored therein that are executable by the first processor to cause the first device to perform operations including:
in response to detecting a connection to the second device:
communicating, via the interface controller, a data stream between the one or more hardware resources and the second device;
presenting, to the second device via the interface controller, a vendor specific adapter (VSA) operable to receive a control stream that controls operation of the one or more hardware resources, wherein the interface controller includes a first native host interface (NHI) adapter configured to present the VSA to a second NHI adapter in another interface controller in the second device; and
receiving the control stream via the VSA, and wherein the first native host interface (NHI) adapter is configured to receive the control stream from the second NHI adapter.
2 . The first device of claim 1 ,
wherein the first and second NHI adapters are within the same domain.
3 . The first device of claim 1 , wherein the interface controller is configured to:
present the first device as a universal serial bus (USB) device on an interconnect established with the second device; and
receive, from the other interface controller, information identifying the second device as a host on the interconnect.
4 . The first device of claim 1 , wherein the interface controller is configured to:
receive the data stream and the control stream via a single universal serial bus (USB) channel.
5 . The first device of claim 4 , wherein the one or more hardware resources includes a display;
wherein the data stream includes DisplayPort (DP) packets that include scan line data for presenting scan lines on the display; and
wherein the control stream and the data stream are received such that packets of the control stream are interspersed between DP packets corresponding to separate scan lines.
6 . The first device of claim 1 , wherein the received control stream includes commands from a driver executing on the second device.
7 . The first device of claim 1 , wherein the one or more hardware resources includes a camera configured to provide a video data stream via the interface controller to the second device; and
wherein the control stream includes commands to control the camera.
8 . The first device of claim 1 , wherein the one or more hardware resources includes audio hardware configured to:
receive audio data included in the data stream; and
based on the audio data, drive a speaker to produce a corresponding sound; and
wherein the control stream includes commands to control the audio hardware.
9 . The first device of claim 1 , wherein the one or more hardware resources includes a microphone configured to provide an audio data stream via the interface controller to the second device; and
wherein the control stream includes commands to enable and disable the microphone.
10 . The first device of claim 1 , wherein the first device is a head mounted display (HMD);
wherein the one or more hardware resources includes one or more sensors mounted in the HMD; and
wherein the control stream includes commands to control operation of the one or more sensors.
11 . A non-transitory computer readable medium having program instructions stored therein that are executable by a first device to cause the first device to perform operations comprising:
in response to detecting a connection to a second device:
communicating, via an interface controller of the first device, a data stream between one or more hardware resources and the second device;
presenting, to the second device via the interface controller, a vendor specific adapter (VSA) operable to receive a control stream that controls operation of the one or more hardware resources, wherein the VSA is presented, via a first native host interface (NHI) adapter of the interface controller, to a second NHI adapter in another interface controller in the second device; and
receiving the control stream via the VSA and from the second NHI adapter.
12 . The computer readable medium of claim 11 ,
wherein the first and second NHI adapters are within the same domain.
13 . The computer readable medium of claim 11 , wherein the operations further comprise:
presenting, via the interface controller, the first device as a universal serial bus (USB) device on an interconnect established with the second device; and
receiving, from the other interface controller, information identifying the second device as a host on the interconnect.
14 . The computer readable medium of claim 11 , wherein the operations further comprise:
receiving, via the interface controller, the data stream and the control stream via a single universal serial bus (USB) channel;
wherein the data stream includes DisplayPort (DP) packets that include scan line data for presenting scan lines on a display; and
wherein the control stream and the data stream are received such that packets of the control stream are interspersed between DP packets corresponding to separate scan lines.
15 . The computer readable medium of claim 11 , wherein the received control stream includes commands from a driver executing on the second device.
16 . A method, comprising:
determining, by a second device, that a connection has been made to a first device;
in response to the determining:
communicating, by the second device via an interface controller of the first device, a data stream between the second device and one or more hardware resources of the first device;
detecting, by the second device, that the interface controller presents a vendor specific adapter (VSA) operable to receive a control stream that controls operation of the one or more hardware resources;
receiving, from a first native host interface (NHI) adapter in the interface controller, the VSA at a second NHI adapter in another interface controller in the second device; and
providing, by the second NHI adapter, the control stream via the VSA.
17 . The method of claim 16 ,
wherein the first and second NHI adapters are within the same domain.
18 . The method of claim 16 , further comprising:
providing, by the second device, the data stream and the control stream via a single universal serial bus (USB) channel.
19 . The method of claim 16 , wherein the provided control stream includes commands from a driver executing on the second device.
20 . The method of claim 16 , wherein the first device is a head mounted display (HMD);
wherein the one or more hardware resources includes one or more sensors mounted in the HMD; and
wherein the control stream includes commands to control operation of the one or more sensors.