Compute devices can be connected to any number of peripheral devices to increase their functionality. For example, a monitor or multiple monitors may be coupled to a compute device to provide a visual interface for the user. As another example, an input device such as a mouse, keyboard, touch pad, etc. may be coupled to the compute device. As yet another example, the peripheral device may add functionality to the compute device. Examples of functionality-adding peripheral devices include a storage device, a scanner, a printer, and/or a projector.
The accompanying drawings illustrate various examples of the principles described herein and are part of the specification. The illustrated examples are given merely for illustration, and do not limit the scope of the claims.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements. The figures are not necessarily to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples and/or implementations that coincide with the description; however, the description is not limited to the examples and/or implementations provided in the drawings.
Peripheral devices connect to a compute device to augment the performance of the compute device. Peripheral devices may be of a variety of types. For example, peripheral devices may be input devices such as a microphone, a keyboard, a mouse, and others. In some examples, a peripheral device may be an output device such as a monitor, a projector, or a virtual reality headset. In yet another example, the peripheral device may be an external memory device. While specific reference is made to a few example peripheral devices, there are a wide variety of peripheral devices that could be coupled to a compute device and the list of peripheral devices is sure to expand over time.
In some examples, rather than coupling each peripheral device to a compute device, a computing dock may be used. The computing dock may include peripheral ports to receive connectors from a variety of peripheral devices. The computing dock may also include a host port by which the host compute device may be connected to the dock and any connected peripheral device.
In some examples, a user may disconnect the compute device from the computing dock and, thereby, disconnect from peripheral devices connected to the dock. For example, a user may disconnect a laptop computer from a computing dock and transport the laptop computer to a meeting. In this example, upon return and reconnection of the laptop computer to the computing dock, each peripheral device may be re-enumerated and re-initialized. That is, the compute device may again determine which peripheral devices are connected and retrieve the operational data that allows the peripheral devices to communicate with and operate alongside the compute device. This may occur even when the combination of peripheral devices has not changed from when the compute device was initially disconnected.
Executing a full enumeration and full initialization operation for each peripheral device each time a compute device is reconnected may overburden the computing dock and/or the compute device, increase processing resource utilization, be an annoyance to the user, and may result in faulty detection of certain peripherals devices. For example, some peripheral devices may take more time to initialize than the compute device and device driver allow. For example, when a monitor plugged into a computing dock is not connected to a compute device, the monitor may enter a sleep mode. Once the host is connected to the computing dock, the monitor may wake up to an active mode. However, if the monitor resume time is at a particular value, the monitor may return to the sleep mode before the compute device can identify the monitor. This may be due to the detection signal routing first through the computing dock and then to the monitor. Initialization of a universal serial bus (USB) device is presented as another example. During the USB initialization process, a driver may reset the USB device. If the resume time of this USB device is of a certain value, then the USB device may also return to a sleep mode before the compute device can detect the USB device through the computing dock.
Accordingly, the present compute device, method, and machine-readable storage medium provide for a dock connection operation that bypasses a full enumeration and initialization operation when the arrangement of peripheral devices remains the same before and after the compute device was disconnected and re-connected.
Specifically, the present specification describes a shortened docking operation which does not include a full enumeration and initialization operation each time a host device is plugged into a computing dock. In a particular example, a dock controller detects the peripheral devices plugged into the dock and hashes the identification data of each peripheral together into a single hashed string. A database of the compute device stores the hashed identification data and the operational data for the peripheral devices. The host controller compares the received hashed identification data with hashed identification data stored in the database, which stored information indicates combinations of peripheral devices for which operational data has already been collected from the peripheral devices and is stored in the database. The host controller directs a device connection controller to run either a full enumeration and initialization operation or a shortened operation. If the received hashed identification data matches with the hashed identification data stored in the database, the device connection controller executes the shortened operation where operational data is retrieved from the database as opposed to from the peripheral devices themselves. Retrieval of the operational data from the peripheral devices may be a more time-consuming process such that retrieval of this information from the database results in a quicker docking and identification operation which also consumes less processing bandwidth.
In the shortened operation, the device connection controller identifies the peripheral devices that are plugged in, retrieves operational data from the database, and replies to device drivers directly. If the received identification data does not match the data stored in the database, the device connection controller performs the full enumeration and initialization operation, which is protocol-specific and includes a series of communications between the peripheral devices and the compute device. During the full enumeration and initialization operation, the host controller stores the received hashed identification data and operational data into the database such that it may be used in a subsequent shortened docking operation.
Specifically, the present specification describes a compute device. The compute device includes a host controller. The host controller receives identification data of peripheral devices coupled to a computing dock. The host controller also compares the identification data with values stored in a database. A stored value indicates a combination of peripheral devices previously coupled to the computing dock. The compute device also includes a device connection controller to, responsive to the identification data matching a stored value, retrieve operational data for the peripheral devices from the database. The device connection controller also is to connect with the peripheral devices based on operational data retrieved from the database.
The present specification also describes a method. According to the method, a host controller receives hashed identification data of peripheral devices coupled to a computing dock. The host controller also compares the hashed identification data with values stored in a database. As noted above, a stored value indicates a combination of peripheral devices previously coupled to the computing dock. Responsive to the hashed identification data matching a stored value, the device connection controller bypasses retrieval of operational data from the peripheral devices and instead retrieves the operational data for the peripheral devices from the database. The device connection controller then connects the compute device with the peripheral devices based on operational data retrieved from the database.
The present specification also describes a non-transitory machine-readable storage medium encoded with instructions executable by a processor. The machine-readable storage medium includes instructions to, when executed by the processor, cause the processor to receive hashed identification data of peripheral devices coupled to a computing dock and compare the hashed identification data with values stored in a database, wherein a stored value indicates a combination of peripheral devices previously coupled to the computing dock. Responsive to the hashed identification data matching a stored value, the instructions, when executed by the processor, cause the processor to 1) bypass retrieval of operational data from the peripheral devices, 2) retrieve operational data for the peripheral devices from the database, and 3) connect with the peripheral devices based on operational data retrieved from the database.
Responsive to the hashed identification data not matching a stored value, the instructions, when executed by the processor, cause the processor to 1) retrieve operational data for the peripheral devices from the peripheral devices, 2) connect with the peripheral devices based on operational data retrieved from the peripheral devices, 3) store, to the database, hashed identification data and operational data retrieved from the peripheral devices, and 4) purge the database of previously stored hashed identification data and operational data.
In summary, using such a compute device, method, and machine-readable storage medium may, for example, 1) expedite a docking operation when a configuration of peripheral devices connected to the computing dock do not change and 2) avoids a lack of detection of connected peripheral devices which may result due to the intermediary computing dock. However, it is contemplated that the devices disclosed herein may address other matters and deficiencies in a number of technical areas, for example.
As used in the present specification and in the appended claims, the term “identification data,” refers to at least one datum about a peripheral device that identifies the peripheral device. For example, identification data may include a peripheral device identifier, a vendor identifier, a device serial number, or a device name. Note that the identification data is separate from the operational data. In one example, identification data refers to at least one datum. In one example, identification data refers to multiple data.
Accordingly, as used in the present specification and in the appended claims, the term “operational data,” refers to data that allows a peripheral device to communicate and operate with a coupled compute device. Note that the operational data may be protocol specific. As a particular example, operational data fora monitor may include a protocol version (i.e., DISPLAYPORT™ 1.2 or DISPLAYPORT™ 1.4), extended display identification data (EDI D) data, bandwidth, etc. As another example, peripheral component interconnect express (PCIe) operational data may include a PCIe device address, resource allocations and device-specific settings the PCIe configuration space. As yet another example, universal serial bus (USB) operation data may include a USB type, supported protocols, a transmission speed, class/subclass code, and vendor identification. While particular reference is made to certain types of operational data, other forms of operational data may exist. Note that the operational data is separate from the identification data.
Further, as used in the present specification and in the appended claims, the term “enumeration” refers to the identification of peripheral devices coupled to the computing dock. A full enumeration operation may include retrieving a count of connected peripheral devices, retrieving device information, and freeing memory for use by the enumerated peripheral devices.
Even further, as used in the present specification and in the appended claims, the term “initialization” refers to a sequence of operations to allow the peripheral device to operate alongside the compute device. In such an operation, the compute device requests operational data from the peripheral device and has to wait for the peripheral device to comply with the request.
Further, as used in the present specification and in the appended claims, the term, “controller” includes a processor and memory. The processor includes the circuitry to retrieve executable code from the memory and execute the executable code. As specific examples, the controller as described herein may include machine-readable storage medium, machine-readable storage medium and a processor, an application-specific integrated circuit (ASIC), a semiconductor-based microprocessor, a central processing unit (CPU), and a field-programmable gate array (FPGA), and/or other hardware device.
As used in the present specification an in the appended claims, the term “memory” includes a non-transitory storage medium, which machine-readable storage medium may contain, or store machine-usable program code for use by or in connection with an instruction execution system, apparatus, or device. The memory may take many forms including volatile and non-volatile memory. For example, the memory may include Random-Access Memory (RAM), Read-Only Memory (ROM), optical memory disks, and magnetic disks, among others. The executable code may, when executed by the respective component, cause the component to implement at least the functionality described herein. The memory may include a single memory element or multiple memory elements.
As used in the present specification and in the appended claims, the term “a number of” or similar language is meant to be understood broadly as any positive number including 1 to infinity.
Further as used in the present specification and in the appended claims, the term compute device refers to a compute device which contains resources to execute an operating system. In an example, the compute device may be a host device.
Turning now to the figures,
Specifically, the compute device (100) includes a host controller (102). The host controller (102) receives identification data of peripheral devices that are coupled to a computing dock and compares the identification data with values stored in a database. In this example, a stored value indicates a combination of peripheral devices that were previously coupled to the computing dock and for which operational data has been collected. In some examples, reception of this data is responsive to the compute device (100) being coupled to a computing dock.
As described above, the identification data identifies the peripheral devices that are connected to the computing dock and may include such things as a peripheral device identifier, a vendor identifier, a device serial number, and a device name. In some examples, the identification data may un-encrypted. In another example, the identification data may be a hashed value. Such a hash may encrypt the identification data thus preventing a tampering of that information. In some examples, the hashed identification data may represent the identification data for each peripheral device combined into a single hashed string. For example, if connected peripheral devices include a monitor, a mouse, speakers, a keyboard, and a printer, a single hashed string may be generated that identifies each of these peripheral devices. In another example, the hashed identification data may include the identification data for each peripheral device as a distinct hashed string. Continuing the example above, the monitor may have a hashed identification string, the mouse may have a separate hashed identification string, the speakers may have a separate hashed identification string, the keyboard may have a separate hashed identification string, and the printer may have a separate hashed identification string.
In either case, the identification data, be it hashed or not, is compared against stored identification data in a database. In some examples, the database is located on the compute device (100). In some examples, the database may be located remotely, but accessible to the compute device (100) via a network connection. The database may include identification data for combinations of peripheral devices that have previously been connected to the computing dock. For example, the single hashed string may indicate the monitor, mouse, speakers, keyboard, and printer that have simultaneously been coupled to the computing dock. A match between received identification data and stored information indicates that the combination of peripheral devices currently connected to the computing dock matches a combination of peripheral devices that was previously connected to the computing dock. In this example, the shortened docking operation may be trigger.
A mismatch between the received identification data and a stored value indicates there is a difference between the peripheral devices that are currently connected to the computing dock and a combination of peripheral devices that was previously connected to the computing dock. For example, suppose a user has a first monitor, mouse, and keyboard connected to a computing dock. In this example, identification data may identify the first monitor, mouse, and keyboard. After disconnecting a laptop from the computing dock, the user may replace a first monitor with a second monitor. In this example, upon reconnection of the laptop to the computing device, the host controller (102) may receive identification data for the second monitor, mouse, and keyboard. As the peripheral device combination has changed, the identification data would not match the stored value. As the identification data has changed, (e.g. one peripheral device was switched), then the shortened connection operation is not triggered and a full enumeration and initialization operation is executed.
The compute device (100) includes a device connection controller (104) to, responsive to the identification data matching a stored value, retrieve operational data for the peripheral devices from the database. That is, during a full enumeration and initialization operation, the compute device (100) may retrieve the enumeration and operational data from the peripheral device itself, which may include the calling of functions to communicate with the peripheral device. This process may be lengthy and if performed for each peripheral device each time the compute device (100) is disconnected and reconnected, may be unduly burdensome on the processing resources of the compute device (100). However, when the received identification data, which may be hashed, matches a stored value the operational data may be retrieved from the database, which may be a quicker operation and may not involve the calling of functions to request data from the peripheral devices. In other words, retrieving the operational data from the database bypasses retrieving the operational data from the peripheral devices. Moreover, in some examples, an expedited, or partial enumeration is performed where less than all the full enumeration operations are performed. For example, a partial enumeration may not perform any device information retrieval.
Specifically, the device connection controller (104) includes an interface which can communicate with the peripheral device drivers to facilitate communication between the device drivers and the respective peripheral devices. In this example, the device connection controller (104) notifies the different device drivers that a respective peripheral device is connected. The device connection controller (104) also retrieves the operational data from the database and replies to the device drivers directly instead of performing a full enumeration and initialization where such information would be collected through a laborious process with each peripheral device.
The device connection controller (104) also connects the compute device (100) with the peripheral devices based on operational data retrieved from the database.
In summary, the compute device (100) may include driver(s) to enumerate the peripheral devices. In some examples, these driver(s) perform some initialization operations and provide bus level protocol for communication. The driver(s) also include device driver(s) to manage the peripheral devices. A device driver can communicate with the peripheral devices directly or through a bus driver to read from/write to the peripheral device. The device drivers also provide another protocol for other drivers to communicate with the peripheral device. The driver(s) may differ peripheral device and/or communication protocol. For example, a USB peripheral device may be detected by a USB hub driver and may be enumerated by a USB bus driver.
In the present specification, the device connection controller (104) may be viewed as a helper driver for the bus and device drivers of the compute device (100). That is, the device connection controller (104) may include an interface which can communicate with all drivers, whether those drivers be bus drivers, device drivers, or other drivers involved in enumeration and initialization processes.
The host controller (
Responsive to the hashed identification data matching a stored value, the compute device (
That is, in the shortened operation, the device connection controller (
Thus, the present method (200) presents a time savings and also reduces the processing load as less information is transmitted across the communication lines between the compute device (
Through such ports, a variety of peripheral devices may be coupled to the compute device (100). In this example, the computing dock (308) includes a dock controller (312) to detect the peripheral devices coupled to the computing dock (308) and provide identification data, which may be hashed identification data, for each peripheral device coupled to the computing dock (308). This identification data, whether hashed or not, is transmitted to the host controller (102) which receives the hashed data and compares it to previously received identification information stored in the database (310). Whether or not there is a match, each peripheral device is connected to a respective driver package. Note that in
If there is a match, the device connection controller (104) retrieves the operational data stored in the database (310) and provides it to the driver(s) such that the compute device (
If the hashed identification data does not match a stored value (block 404, determination NO), the device connection controller (
In an example, responsive to there not being a match between a collected hashed identification data and a stored value in the database (
By comparison, responsive to a match being found between the identification data and the stored values in the database (310), the device connection controller (104) may retrieve the operational data directly from the database (310) which may be a quicker process than obtaining it from the peripheral devices (514) themselves.
As described above, in some examples, responsive to a lack of a match between received identification data and stored identification data (620) previously collected, the stored identification data (620) and operational data (622) may be purged from the database (310). In another example, the previously collected identification data (620) and operational data (622) may be stored as a first profile (618) in the database (310). In this example, the newly received identification data and operational data may also be stored as a profile (618) in the database (310). That is, the database (310) may include a number of profiles (618), each profile (618) including identification data (620) for a different combination of peripheral devices (
The machine-readable storage medium (724) causes the processor to execute the designated function of the instructions (726, 728, 730, 732, 734, 736, 738). The machine-readable storage medium (724) can store data, programs, instructions, or any other machine-readable data that can be utilized to operate the compute device (
Referring to
Bypass instructions (730), when executed by the processor, cause the processor to, responsive to the hashed identification data matching a stored value, bypass retrieval of operational data from the peripheral device (
Connect instructions (734), when executed by the processor, cause the processor to, responsive to the hashed identification data matching a stored value, connect with the peripheral devices (
Store instructions (736), when executed by the processor, cause the processor to, store hashed identification data (
In summary, using such a compute device, method, and machine-readable storage medium may, for example, 1) expedite a docking operation when a configuration of peripheral devices connected to the computing dock do not change and 2) avoids a lack of detection of connected peripheral devices which may result due to the intermediary computing dock. However, it is contemplated that the devices disclosed herein may address other matters and deficiencies in a number of technical areas, for example.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2020/053435 | 9/30/2020 | WO |