A method for communication between a human interface device (HID) and a host

CN120567737BActive Publication Date: 2026-11-03LOGITECH EUROPE SA
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202510216028.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2024-02-27
Filing Date
2025-02-26
Publication Date
2026-11-03
Estimated Expiration
2045-02-26

AI Technical Summary

Technical Problem

In the prior art, human-machine interface devices (HIDs) have a latency problem when responding to host polling, especially when multiple HID devices are communicating simultaneously, which leads to data transmission delay and reduced accuracy.

Method used

A communication protocol using multiple virtual endpoints is employed to optimize data transmission and reduce latency by increasing the polling rate and using dummy data.

Benefits of technology

It improves the data transmission frequency and accuracy of human-machine interface devices, reduces the latency of button pressing and displacement movement, and enhances the user experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120567737B_ABST
    Figure CN120567737B_ABST
Patent Text Reader

Abstract

The present invention relates to increased polling rates in communication protocols, and to methods and systems for communication between a human interface device (HID) and a host. The host receives multiple virtual endpoints for a single HID, and transmits multiple polling tokens to the virtual endpoints within each cycle. The HID responds with sensor data or with dummy data if there is no new sensor data. The dummy data keeps the polling going, leaving time for more sensor data to occur within the same cycle.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The described implementations generally relate to human-machine interface devices (HIDs – such as computer mice or keyboards) that communicate with a host device via a communication interface (e.g., a USB receiver via a wireless receiver such as a dongle). More specifically, this implementation relates to reducing the latency of HID reports sent in response to host HID polling. Background Technology

[0002] An input device, such as a computer mouse or joystick, sends standard packets to the host. These packets are selected and initialized when connected to the host according to a communication protocol and have fields for button presses, motion movements, etc. In a communication protocol such as USB HID, each device is required to describe how it will communicate with the host device. During enumeration, the device describes how it will construct its report so that the host device can be appropriately prepared to receive the information. During operation, the host periodically polls the interrupt IN endpoint of the HID device using polling tokens. When a device has data to send, it forms a report and sends it as a reply to the polling token. When a device has data after replying to the polling token (e.g., a button press or mouse movement), it must wait until the next polling token, introducing a delay. This delay may be noticeable to some users.

[0003] Unless otherwise indicated herein, the material described in this section shall not be considered prior art by virtue of its inclusion in this section. Summary of the Invention

[0004] This invention is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to define the scope of the claimed subject matter. The subject matter should be understood by referring to the appropriate portions of the entire specification, any or all of the accompanying drawings, and each claim.

[0005] In some embodiments, a method for wired or wireless communication between a human-machine interface device (HID) and a host is described. The method includes polling a device having multiple virtual endpoints by the host. The host receives the multiple virtual endpoints. The host then transmits a first polling token for a first virtual endpoint to the HID via a communication link at a first frequency. In each cycle of the first frequency, the host receives a first response from the HID for each first polling token, the first response including any data from the HID sensors since a previous polling token from the host. Upon receiving each first response, the host transmits at least one additional polling token to at least one additional virtual endpoint, wherein each additional polling token is transmitted after receiving a response from the HID for an earlier polling token. The host then receives at least a second response from the HID for at least one additional polling token, the second response including any data from the HID sensors since the first polling token from the host.

[0006] In one implementation, a method for responding to a host by an HID having multiple virtual endpoints is described. The HID transmits multiple virtual endpoints to the host. The HID receives a first polling token from the host for a first virtual endpoint via a communication link at a first frequency. Within each cycle of the first frequency, the HID transmits a first response to each first polling token to the host, the first response including any data from the HID sensors since a previous polling token from the host. After transmitting each first response, at least one additional polling token addressed to at least one additional virtual endpoint is received from the host, wherein each additional polling token is transmitted after receiving a response from the HID to an earlier polling token. The HID then transmits at least a second response to at least one additional polling token to the host, the second response including any data from the HID sensors since the first polling token from the host.

[0007] This invention is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to define the scope of the claimed subject matter. The subject matter should be understood by referring to the appropriate portions of the entire specification, any or all of the accompanying drawings, and each claim.

[0008] The foregoing, as well as other features and examples, will be described in more detail in the following description, claims and drawings. Attached Figure Description

[0009] The features of the various embodiments of this disclosure described above, as well as other features and advantages of certain embodiments, will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, in which:

[0010] Figure 1A system including a host computing device according to certain embodiments is shown, which can be coupled to a plurality of peripheral computer devices via a wireless transceiver.

[0011] Figure 2A and Figure 2B A host-peripheral system based on existing technology is shown.

[0012] Figure 2C A host 212 is shown that communicates with mouse 214 at an increased polling rate according to an embodiment.

[0013] Figure 3 This is a graph of existing technology polling and responses for a single endpoint during a 125 uS polling cycle.

[0014] Figure 4 This is a diagram illustrating the polling and response of multiple endpoints in a single device during a 125 uS polling cycle, according to an implementation method.

[0015] Figure 5 It is a diagram of polling and response for multiple endpoints in a single device with a large sample size during a 125 uS polling cycle, according to an implementation method.

[0016] Figure 6 This is a diagram illustrating the increased displacement accuracy due to multiple virtual endpoints according to an embodiment.

[0017] Figure 7 This is a diagram illustrating the data flow from the device to the host to the application according to an embodiment.

[0018] Figure 8 This is a flowchart illustrating a method of polling an apparatus having multiple virtual endpoints by a host, according to certain embodiments.

[0019] Figure 9 This is a flowchart illustrating a method for responding to a host using an HID with multiple virtual endpoints, according to certain implementations.

[0020] Figure 10 A simplified block diagram of an example HID peripheral device according to certain implementations is shown.

[0021] Figure 11 A simplified block diagram of an example host according to some implementations is shown. Detailed Implementation

[0022] According to certain embodiments, aspects of this disclosure generally relate to displacement input devices, and more specifically to systems and methods for communication protocols having methods for reducing the number of packets transmitted.

[0023] The following description illustrates various examples of increasing the polling rate within a fixed period. Specific configurations and details are set forth for illustrative purposes to provide a thorough understanding of the implementation. However, it will be apparent to those skilled in the art that certain implementations can be practiced or implemented without every detail disclosed. Furthermore, well-known features may be omitted or simplified to avoid any obscuring of the novel features described herein.

[0024] All USB mice and keyboards use the HID class protocol to report sensor and button values ​​to the USB host. USB mice / keyboards can be USB full-speed or high-speed. In both full-speed and high-speed modes, the HID class uses an interrupt endpoint to transmit HID reports. The HID report rate is configurable on the USB device in the interrupt endpoint. Full-speed devices can specify a desired period from 1 ms to 255 ms, while high-speed devices can specify a desired speed in multiples of 125 µs (called microframes). According to USB Specification 2.0 / 3.0, the current maximum allowed report rate for high-speed is 125 µs, or 8 kHz. The bandwidth of the high-speed interrupt endpoint is 3072 bytes per microframe.

[0025] The USB host polls the interrupt endpoint based on the polling interval (minimum 125 µs) specified in the interrupt endpoint descriptor. The host polls to receive data by sending a Start of Frame (SOF) and an IN token for the corresponding endpoint every 125 µs (microframes). The IN token informs the USB device that the host wishes to read information.

[0026] The following brief overview is intended to provide a basic understanding of some of the novel innovations depicted in the accompanying drawings and presented in the corresponding description provided below. Aspects of the invention relate to various novel communication protocols having methods for increasing the polling rate within a fixed period.

[0027] A method and apparatus for communication between a human-machine interface device (HID) and a host are described. The host receives multiple virtual endpoints from a single HID and sends multiple polling tokens to the virtual endpoints in each cycle. The HID responds using sensor data or, if no new sensor data is available, using dummy data. The dummy data keeps polling ongoing, allowing time for more sensor data to appear within the same cycle.

[0028] Wireless input devices and host systems

[0029] Figure 1A system 100 including a host computing device 110 according to some embodiments is illustrated. The host computing device 110 can be coupled to multiple peripheral computing devices 130 (e.g., computer mice) via a wireless transceiver 120. The host computer 110 can include any suitable computing device, such as a desktop computer, laptop computer, tablet computer, wearable computing device (e.g., head-mounted display, smartwatch, etc.), entertainment / infotainment system, vehicle computing system, or other suitable computing device. Although a single host computing device is shown, those skilled in the art will understand that multiple computing devices can be used in the following embodiments. For example, each peripheral device can be coupled to multiple host computing devices (e.g., but one at a time). The transceiver 120 can be coupled to the host computer via a wired or hardwired connection.

[0030] In one embodiment, transceiver 120 may be a USB transceiver (also referred to herein as a "dongle") that is plugged into and coupled to host computer 110. In some embodiments, transceiver 120 may wirelessly couple to host computer 110 using Bluetooth®, BLE®, or other wireless protocols. In some embodiments, mouse 130 may be prompted to perform an initial "pairing" process with transceiver 120, in which the mouse and transceiver exchange data, which may include sharing their addresses, names, and profiles that may be stored in memory. These devices may also share a public secret key, enabling the devices to "connect" at any time in the future when they are within communication range. When peripheral devices are connected to the transceiver, bidirectional communication between the devices can be performed using data constructs described in more detail below.

[0031] In some implementations, transceiver 120 and mouse 130 (and other peripheral devices, not shown) communicate with each other via a piconet 135, which may also be referred to as a wireless communication path. Figure 1 In the diagram, piconet 135 is shown as a wireless communication path 135 between transceiver 120 and mouse 130. A piconet can be a packet-based protocol, as described in more detail below. A piconet may include a master device (transceiver 120) and one or more slave devices (e.g., mouse 130). The master device coordinates communication throughout the piconet. The master device can send data to any of its slave devices and can also request data from said slave device. Slave devices are allowed to transmit to and receive from their master device.

[0032] The mouse 130 can alternatively be any suitable computer peripheral device. For example, a peripheral device can be a computer mouse, game controller, steering wheel, trackball, digital pen, etc. Each peripheral device can be wirelessly coupled to the host computer 110 using a communication protocol that manages the report rate of the peripheral device, as described in more detail below. Those skilled in the art will appreciate many modifications, variations, and alternative implementations of this disclosure. The input device can be a computer peripheral device and may also be referred to herein as a "peripheral input device," "peripheral device," etc. Most of the implementations described herein generally relate to the computer mouse 130; however, it should be understood that a computer peripheral device can be any suitable input / output (I / O) device (e.g., user interface device, control device, input unit, etc.) that can be adapted to utilize the novel implementations described and contemplated herein.

[0033] polling

[0034] Figure 2A and Figure 2B A host-peripheral system based on existing technology is shown. Figure 2A A host 100 communicating with mouse 204 is shown. During configuration, mouse 204 provides its endpoint to host 202, and host 202 issues a polling token to that endpoint each cycle of the polling frequency of the communication channel. In one example, the communication channel is a USB channel, and the polling frequency is 8 kHz, with a cycle of 125 µs.

[0035] Figure 2B A prior art host 206 is shown communicating with two different mice 208 and 210. During configuration, each mouse provides its endpoint to host 206, and host 206 issues polling tokens to these endpoints in each cycle of the polling frequency of the communication channel. Host 206 issues a first polling token to the endpoint of mouse 208, and after receiving a response, issues a second polling token to the endpoint of mouse 210. This is repeated in each cycle at the communication channel frequency.

[0036] Figure 2CA host 212 is shown communicating with mouse 214 at an increased polling rate according to an embodiment. The polling rate is increased by providing two virtual endpoints for the same mouse 214. Therefore, without knowing that the host is polling a single mouse instead of two mice, the host 212 will poll both endpoints as in the prior art. Thus, since mouse 214 can send two responses in the same cycle, the frequency at which mouse 214 can send data will increase. After mouse 214 responds to the first polling token, host 212 will send a second polling token. Then, any data received by the mouse sensor since the first response (button press or displacement) can be sent in response to the second polling token.

[0037] The mouse 214 can be configured with more than two endpoints, for example, four endpoints. This allows the mouse to send two HID reports on the first and last endpoints, and the second / third endpoint to send dummy packets or all-zero packets, causing the host to send a final polling token after a specific time frame. By sending two responses within a single 125 µs cycle on the 8 kHz USB communication channel, it effectively doubles the rate to 16 kHz without the cost of a faster channel. This reduces latency for button presses and mouse cursor movements.

[0038] Figure 3 This is a diagram of prior art polling and response for a single endpoint during a 125 uS polling cycle. At Start of Frame (SOF) 301, the host sends a polling token 301 to the endpoint received during configuration. In response, if the USB device (e.g., a mouse) already has a sample 308 from a sensor (button, scroll wheel, displacement), the USB device will send a response 306 with that sample. Any samples received by the device's sensors during the subsequent polling cycle must wait until the next SOF 310. The host will issue a new polling packet 312, and the device will at this time send a response 314 with a sample 316, which was received after the previous data 306 was sent.

[0039] Figure 4This is a diagram illustrating the polling and response for multiple endpoints in a single device during a 125 µs polling cycle, according to an implementation. The device has already submitted three virtual endpoints during configuration. Therefore, the host will issue three polling tokens during the cycle. After Start of Frame (SOF) 402, the host issues a polling token 404 for the first virtual endpoint. In response, the device sends data 406 containing a sensor or button sample 408. After receiving data 406, the host sends a second polling token 410 to the second virtual endpoint. The device will return dummy data (e.g., all zeros). This keeps polling going in case real data appears later in the cycle. The dummy data uses a large or maximum packet size to allow more time for real data to appear on the device. In one implementation, the method plans to send dummy data for EP2 and real data for EP1 and EP3, even if available earlier. The maximum packet sizes for EP1 and EP2 are set to 1024 and 2048 bytes, respectively, to delay processing of the host immediately sending the EP3 IN token. This allows the device to sample button and sensor events every 62 µs and report them on EP1 or EP3. Furthermore, the group size of responses with actual data for EP1 can be large or maximum to provide further latency.

[0040] In response to the dummy data, the host issues a third polling token 416 pointing to the second virtual endpoint. In response, dummy data 418 is provided by the device. A final polling token 422 is generated in response to the dummy data 418. At this point, the additional real sample 420 has arrived, and its data is provided to the host in response 424. Without the additional virtual endpoint and the additional token, sample 420 would need to wait for the polling token 428 at the next SOF 426 to be sent as data 430 in the response. Therefore, the latency of sample 420 is reduced.

[0041] In the alternative implementation, EP1, EP2, and EP3 all use 1024-byte packets, while EP4 uses 64 bytes. The 64 bytes for EP4 are sufficient for both mouse and keyboard data, and no further delay is needed since all polling tokens have already been sent for each frame. Therefore, it is desirable to use a smaller packet size to reduce the bandwidth used.

[0042] In another alternative implementation, all of EP1 through EP4 may contain real data to quadruple the sampling rate instead of doubling it. If sensor data or button data is unavailable for any endpoint, dummy packets are sent instead.

[0043] Figure 5This is a diagram illustrating the polling and response of multiple endpoints in a single device with large-size samples during a 125 µs polling cycle, according to an embodiment. At SOF 502, polling token 504 is sent to the first virtual endpoint. The device sends a response with data 506, which includes sample 508 that arrived before SOF 502 and is stored as data copy 510. A second polling token 512 is issued after receiving response data 506. The device has an incomplete sample 532 and therefore provides dummy data 516 in response data 514. This operation is repeated with a third polling token 520 by sending dummy data 524 in response 522. Finally, by the fourth polling token 526, sample 532 has been completed and recorded as data copy 530, which is provided in response 528. Subsequent samples 534 are stored and await the issuance of the next SOF 536 and polling token 538. Then the data from sample 534 is sent as data response 540.

[0044] Without this invention, for displacement data, sample 532 would be overwritten in the device and replaced with sample 534. Therefore, sample 532 would be lost, resulting in inaccurate movement of the cursor with large displacements. For button presses, the sample is not overwritten but backed up, adding further delay.

[0045] Figure 6 This is a diagram illustrating the increased displacement accuracy due to multiple virtual endpoints according to an embodiment. Sensor 602 in the device (e.g., a mouse) uses a 60-microsecond sampling rate and reports samples to a USB reporting module 604. Endpoint 606 is polled every 125 microseconds, providing pixels each time. Display 608 shows the pixel density when the device is used to draw a circle.

[0046] In an embodiment of the invention, sensor 610 in the device also uses a 60-microsecond sampling rate and reports samples to USB reporting module 612. Endpoint 614 is polled every 125 microseconds, providing pixels each time. Subsequently, a second endpoint 616 is also polled every 125 microseconds. The resulting display 618 shows pixels twice as close together, thus providing a smoother image.

[0047] Figure 7This diagram illustrates the data flow from device to host to application according to an embodiment. User level 702 contains the application, kernel 704 contains the driver, and hardware level 706 contains a USB device 708 and a host controller 710. Device 708 has three virtual endpoints 712. As described above, host controller 710 sends three polling tokens 714. In response, device 706 returns data and dummy data 716. The host controller provides the received data to USB host controller driver 718, which in turn provides it to USB core driver 720, which in turn provides it to USB class driver 722, which in turn provides it to the user application. In response to a number of N reports, the application uses the data to first generate a fixed cursor position 724, and subsequently generates a change to the cursor position 726.

[0048] Alternative implementation methods

[0049] In other embodiments, multiple variations can be applied. For example, both the mouse and keyboard can use the same USB bus. Each can have multiple virtual endpoints to increase its sampling frequency. Similarly, two mice or multiple HIDs of any type can each use multiple endpoints according to embodiments of the invention as described above.

[0050] In one implementation, to reduce the use of the USB bus that interferes with other devices, the device application may have controls for reducing the report rate from 16 kHz to 8 kHz, or further reducing it under idle and other conditions. For example, if there is no data for a period of time, the report rate can be reduced, and then increased again when new data appears, indicating that the user is using HID again. The reduction can occur in several ways. The packet size can be reduced to a minimum, causing multiple polling tokens to be sent quickly and sequentially, leaving the remainder of the cycle open. Dummy data and the last endpoint data can be skipped to dynamically reduce the bandwidth from 16 kHz to 8 kHz.

[0051] flow chart

[0052] Figure 8This is a flowchart illustrating a method of polling an apparatus having multiple virtual endpoints by a host according to some embodiments. Step 802 is receiving multiple virtual endpoints at the host. Step 804 is transmitting a first polling token for a first virtual endpoint to the HID via a communication link at a first frequency by the host. Step 806 is receiving a first response from the HID for each first polling token in each cycle at the first frequency by the host, the first response including any data from the HID sensor since a previous polling token from the host. Step 808 is, upon receiving each first response, transmitting at least one additional polling token by the host to at least one additional virtual endpoint, wherein each additional polling token is transmitted after a response from the HID to an earlier polling token has been received. Step 810 is receiving at least a second response from the HID for at least one additional polling token at the host, the second response including any data from the HID sensor since the first polling token from the host.

[0053] Figure 9 This is a flowchart illustrating a method of responding to a host by an HID having multiple virtual endpoints according to some embodiments. Step 902 is transmitting the multiple virtual endpoints of the HID from the HID to the host. Step 904 is receiving a first polling token for a first virtual endpoint from the host via a communication link at a first frequency at the HID. Step 906 is transmitting a first response to each first polling token from the HID to the host in each cycle of the first frequency, the first response including any data from the HID sensor since a previous polling token from the host. Step 908 is receiving at least one additional polling token addressed to at least one additional virtual endpoint from the host after transmitting each first response, wherein each additional polling token is transmitted after receiving a response from the HID to an earlier polling token. Step 910 is transmitting at least a second response from the HID to the host to at least one additional polling token, the second response including any data from the HID sensor since the first polling token from the host.

[0054] Peripheral devices

[0055] Figure 10A simplified block diagram of an example HID peripheral device 1000 according to some embodiments is shown. Peripheral device 1000 may implement any or all of the functions, behaviors, and capabilities of peripheral devices described herein, as well as other functions, behaviors, and capabilities not explicitly described. Peripheral device 1000 may include a storage device 1028, a processing subsystem 1030, a user interface 1032, peripheral device-specific hardware 1034, a communication interface 1036, a secure storage module 1038, and an encryption logic module 1040. Peripheral device 1000 may also include other components (not explicitly shown) operable to provide various enhanced capabilities, such as batteries, power media access devices, and other components.

[0056] Peripheral device 1000 refers to a wide range of devices that can be used in conjunction with a host device and include displacement data, such as, but not limited to, a mouse, a keyboard with a scroll wheel and / or cursor buttons, a trackball, a game controller, a steering wheel, a remote control, pointing devices, a digital pen, etc. Various accessories may include those not listed in [the original text]. Figure 10 The components explicitly shown include, but are not limited to: storage devices (disks, flash memory, etc.) with fixed or removable storage media; video screens, speakers, or ports for connecting to external audio / video devices; camera components such as lenses, image sensors, and controls for them (e.g., aperture, zoom, exposure time, frame rate, etc.); microphones for recording audio (alone or in conjunction with video recording), etc.

[0057] Storage device 1028 may be implemented using, for example, a hard disk, flash memory, or any other non-transitory storage medium or combination of media, and may include volatile and / or non-volatile media. In some embodiments, storage device 1028 may store one or more programs (e.g., firmware) to be executed by processing subsystem 1030, including programs for implementing the various operations described above as performed by peripheral devices and operations related to specific peripheral device behavior. Storage device 1028 may also store peripheral device objects or peripheral device definition records that may be provided to the host device, for example, during device discovery. Storage device 1028 may also store peripheral device status information and any other data that may be used during the operation of peripheral device 1000. Storage device 1028 may also store executables, for example, as described above, such as... Figure 1 The program code for communication between transceiver 120 is shown.

[0058] The processing subsystem 1030 may include, for example, one or more single-core or multi-core microprocessors and / or microcontrollers that execute program code to perform various functions associated with the peripheral device 1000. For example, the processing subsystem 1030 may implement the various processes (or portions thereof) described above, as implemented by the peripheral device, for example, by executing program code stored in the storage device 1028. The processing subsystem 1030 may also execute other programs to control other functions of the peripheral device 1000. In some cases, the programs executed by the processing subsystem 1030 may interact with the host, for example, by generating messages to be sent to the host and / or receiving messages from the host. In some cases, as described above, such as… Figure 1 The transceiver 120 shown is used to send and / or receive messages.

[0059] User interface 1032 may include: user-operable input devices, such as touchpads, touchscreens, scroll wheels, click wheels, dials, buttons, switches, keypads, microphones, etc.; and output devices, such as video screens, indicator lights, speakers, headphone jacks, etc.; and supporting electronic devices (e.g., digital-to-analog converters or analog-to-digital converters, signal processors, etc.). Depending on the implementation of a particular peripheral device 1000, the user can operate the input devices of user interface 1032 to invoke the functions of peripheral device 1000, and can view and / or hear the output from peripheral device 1000 via the output devices of user interface 1032. Some accessories may provide a minimal user interface or no user interface at all. Even when a peripheral device does not have a user interface, the user can still interact with the peripheral device using a host (e.g., host 1100).

[0060] The peripheral-specific hardware 1034 may include any other components that can be present in the peripheral device 1000 to implement the functionality of the peripheral device 1000. For example, in various embodiments, the peripheral-specific hardware 1034 may include: one or more storage devices using fixed or removable storage media; a GPS receiver; a power supply and / or power management circuitry; a camera; a microphone; one or more actuators; control switches; environmental sensors (e.g., temperature sensors, pressure sensors, accelerometers, chemical sensors, etc.), etc. It should be understood that by providing appropriate peripheral-specific hardware 1034, any type of peripheral device functionality can be supported, and the peripheral-specific hardware may include mechanical components as well as electrical or electronic components.

[0061] Communication interface 1036 can provide peripheral device 1000 with voice communication capabilities and / or data communication capabilities. In some embodiments, communication interface 1036 may include: radio frequency (RF) transceiver components for accessing wireless voice networks and / or data networks (e.g., using cellular phone technology, data network technologies such as 3G, 4G / LTE, Wi-Fi, other IEEE 802.11 series standards, or other mobile communication technologies or any combination thereof); components for short-range wireless communication (e.g., using Bluetooth and / or Bluetooth LE standards, NFC, etc.); and / or other components. In some embodiments, in addition to or instead of a wireless interface, communication interface 1036 may provide a wired network connection (e.g., Ethernet). Communication interface 1036 may be implemented using a combination of hardware components (e.g., driver circuitry, antenna, modulator / demodulator, encoder / decoder, and other analog signal processing circuitry and / or digital signal processing circuitry) and software components. In some embodiments, communication interface 1036 may support multiple communication channels simultaneously or at different times using the same or different transmissions. Therefore, for example, peripheral device 1000 can communicate with the host via a local channel at one time and via a relay service at other times.

[0062] The secure storage module 1038 may be an integrated circuit or the like that securely stores encrypted information for the peripheral device 1000. Examples of information that may be stored in the secure storage module 1038 include: the peripheral device's long-term public key and long-term secret key (LTPKA, LTSKA); a local pairing list (e.g., a lookup table for hosts that have completed local pairing setup or pairing addition processing with the peripheral device 1000, as described above, which maps local host identifiers to host long-term public keys (LTPKC)); and a relay pairing list (e.g., for hosts that have established relay pairings with the peripheral device 1000, as described above, including host Ra and associated access tokens). In some embodiments, pairing information may be stored such that, in the case of both local pairing and relay pairing with a host, a local pairing is mapped to the corresponding relay pairing. In some embodiments, the secure storage module 1038 may be omitted; the keys and the list of paired hosts may be stored in the storage device 1028.

[0063] In some implementations, encryption operations can be implemented in an encryption logic module 1040 that communicates with the secure storage module 1038. Physically, the encryption logic module 1040 may be implemented as needed in the same integrated circuit as the secure storage module 1038 or a different integrated circuit (e.g., a processor in the processing subsystem 1030). The encryption logic module 1040 may include various logic circuits (fixed or programmable as needed) that implement or support encryption operations of the peripheral device 1000, including any or all of the encryption operations described above. The secure storage module 1038 and / or the encryption logic module 1040 may appear as a "black box" to the rest of the peripheral device 1000. Thus, for example, the communication interface 1036 may receive messages in encrypted form, which the communication interface 1036 cannot decrypt and can simply pass the message to the processing subsystem 1030. The processing subsystem 1030 may also not be able to decrypt the message, but it can recognize the message as encrypted and pass it to the encryption logic module 1040. Encryption logic module 1040 can decrypt the message (e.g., using information extracted from secure storage module 1038) and determine which information to return to processing subsystem 1030. Therefore, certain information can be available only within secure storage module 1038 and encryption logic module 1040. If secure storage module 1038 and encryption logic module 1040 are implemented on a single integrated circuit executing code from only an internal secure repository, this makes information extraction extremely difficult, providing a high level of security. Other implementations are also possible.

[0064] Peripheral device 1000 can be any electronic device that interacts with host device 1100. In some embodiments, host device 1100 can provide remote control of the operation of peripheral device 1000, as described below. For example, host device 1100 can provide a remote user interface for peripheral device 1000, which may include both input and output controls (e.g., a display screen for displaying current status information obtained from peripheral device 1000 and input controls such as a touch screen overlay for allowing changes to that status information). In various embodiments, host device 1100 can control any function of peripheral device 1000, and can also control it via, for example, Figure 1 The transceiver 120 shown receives data from the peripheral device 1000.

[0065] host

[0066] Figure 11A simplified block diagram of an example host 1100 according to some embodiments is shown. In some embodiments, host 1100 may implement any or all of the functions, behaviors, and capabilities described herein as being performed by a host, as well as other functions, behaviors, and capabilities not explicitly described. Host 1100 may include a processing subsystem 1110, a storage device 1112, a user interface 1114, a communication interface 1116, a secure storage module 1118, and an encryption logic module 1120. Host 1100 may also include other components (not explicitly shown) operable to provide various enhanced capabilities, such as batteries, power controllers, and other components. In various embodiments, host 1100 may be implemented in a desktop computer, laptop computer, tablet computer, smartphone, other mobile phone, wearable computing device, or other system having any desired form factor. Furthermore, as described above, host 1100 may be implemented partly in a base station and partly in a mobile unit that communicates with the base station and provides a user interface. Figure 1 The transceiver 120 is shown as part of the host 1100 and may be removable, for example, in a dongle connected to a USB port.

[0067] Storage device 1112 may be implemented using, for example, a hard disk, flash memory, or any other non-transitory storage medium or combination of media, and may include volatile and / or non-volatile media. In some embodiments, storage device 1112 may store one or more application and / or operating system programs to be executed by processing subsystem 1110, including programs for implementing the various operations described above, such as those performed by the host. For example, storage device 1112 may store a unified host application that can read a peripheral device description record and generate a graphical user interface for controlling peripheral devices based on information in the peripheral device description record. Storage device 1112 may also store executables, for example, as described above, such as those described above. Figure 1 The program code for communication between transceiver 120 is shown. Although... Figure 10 Transceiver 120 is shown as a subsystem of host 1100; however, it should be understood that transceiver 120 may be a dongle inserted into and electrically coupled to host 1100. Transceiver 120 may include its own processor for processing received packets as described above, or it may be controlled by host processing system 1110 that performs these functions. In some embodiments, some (or all) of the host functions described herein may be implemented in an operating system program rather than an application. In some embodiments, storage device 1112 may also store applications designed for a particular accessory or a particular class of accessories (e.g., an IP camera application for managing peripherals of an IP camera device or a security application for interacting with door lock accessories).

[0068] User interface 1114 may include: input devices, such as a touchpad, touchscreen, scroll wheel, click wheel, dial, button, switch, keypad, microphone 1119, etc.; and output devices, such as a video screen, indicator lights, speaker, headphone jack, etc.; and supporting electronic devices (e.g., digital-to-analog converter or analog-to-digital converter, signal processor, etc.). Users can operate the input devices of user interface 1114 to invoke functions of host 1100, and can view and / or hear the output from host 1100 via the output devices of user interface 1114.

[0069] Processing subsystem 1110 may be implemented as one or more integrated circuits, such as one or more single-core or multi-core microprocessors or microcontrollers, examples of which are known in the art. In operation, processing subsystem 1110 may control the operation of host 1100. In various embodiments, processing subsystem 1110 may execute various programs in response to program code and may maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed may reside in processing subsystem 1110 and / or storage medium such as storage device 1112.

[0070] With appropriate programming, the processing subsystem 1110 can provide various functions for the host 1100. For example, in some embodiments, the processing subsystem 1110 can implement the various processes (or portions thereof) described above as implemented by the host. The processing subsystem 1110 can also execute other programs for controlling other functions of the host 1100, including applications that can be stored in the storage device 1112. In some embodiments, these applications can interact with the peripheral device, for example, by generating messages to be sent to the peripheral device and / or receiving responses from the peripheral device. Such interaction can be facilitated, for example, through a peripheral device management daemon and / or other operating system processes as described above, and such interaction can include, as described above, via, such as Figure 1 The transceiver 120 shown communicates with peripheral devices.

[0071] Communication interface 1116 can provide host 1100 with voice communication capabilities and / or data communication capabilities. In some embodiments, communication interface 1116 may include: radio frequency (RF) transceiver components for accessing wireless voice networks and / or data networks (e.g., using cellular phone technology, data network technologies such as 3G, 4G / LTE, Wi-Fi, other IEEE 802.11 series standards, or other mobile communication technologies or any combination thereof); components for short-range wireless communication (e.g., using Bluetooth and / or Bluetooth LE standards, NFC, etc.); and / or other components. In some embodiments, in addition to or instead of a wireless interface, communication interface 1116 may provide a wired network connection (e.g., Ethernet). Communication interface 1116 may be implemented using a combination of hardware components (e.g., driver circuitry, antenna, modulator / demodulator, encoder / decoder, and other analog signal processing circuitry and / or digital signal processing circuitry) and software components. In some embodiments, communication interface 1116 may support multiple communication channels simultaneously or at different times using the same or different transmissions. Therefore, for example, host 1100 may communicate with the attachment via a local channel at one time and via a relay service at other times.

[0072] The secure storage module 1118 may be an integrated circuit or the like that capable of securely storing encrypted information for the host 1100. Examples of information that may be stored in the secure storage module 1118 include: the host's long-term public key and long-term secret key (LTPKC, LTSKC); a local pairing list (e.g., a lookup table for attachments that have completed local pairing setup or pairing addition processing with the host 1100, as described above, which maps local peripheral device identifiers to peripheral device long-term public keys (LTPKA)); and a relay pairing 1126 list (e.g., for peripheral devices Ra and associated access tokens of attachments that have established relay pairings with the host 1100, as described above). In some embodiments, pairing information may be stored such that, in the case of both local pairing and relay pairing with a peripheral device, a local pairing 1124 is mapped to the corresponding relay pairing 1126.

[0073] In some implementations, encryption operations can be implemented in encryption logic module 1120, which communicates with secure storage module 1118. Physically, encryption logic module 1120 may be implemented as needed in the same integrated circuit as secure storage module 1118 or a different integrated circuit (e.g., the processor in processing subsystem 1110). Encryption logic module 1120 may include various logic circuits (fixed or programmable as needed) that implement or support encryption operations of host 1100, including any or all of the encryption operations described above. Secure storage module 1118 and / or encryption logic module 1120 may appear as a "black box" to the rest of host 1100. Thus, for example, communication interface 1116 may receive messages in encrypted form, which communication interface 1116 cannot decrypt and can simply pass the message to processing subsystem 1110. Processing subsystem 1110 may also not be able to decrypt the message, but it can recognize the message as encrypted and pass it to encryption logic module 1120. Encryption logic module 1120 can decrypt the message (e.g., using information extracted from secure storage module 1118) and determine which information to return to processing subsystem 1110. Therefore, certain information can be available only within secure storage module 1118 and encryption logic module 1120. If secure storage module 1118 and encryption logic module 1120 are implemented on a single integrated circuit executing code from only an internal secure repository, this makes information extraction extremely difficult, providing a high level of security. Other implementations are also possible.

[0074] Furthermore, although the host is described herein with reference to specific boxes, it should be understood that these boxes are defined for ease of description and are not intended to imply a specific physical arrangement of component parts. Moreover, the boxes do not need to correspond to physically different components. Boxes can be configured to perform various operations, for example, by programming a processor or providing appropriate control circuitry, and depending on how the initial configuration is obtained, various boxes may or may not be reconfigurable. Embodiments of this disclosure can be implemented in a variety of devices, including electronic devices implemented using any combination of circuitry and software.

[0075] The host and accessories described herein can be implemented in electronic devices that can typically have a conventional design. Such devices can be adapted to communicate using a unified peripheral device protocol that supports command and control operations, through which the host (first electronic device) can control the operation of the peripheral device (second electronic device). In some cases, such as in the case of a proxy server as described above, the device can combine features or aspects of the host and peripheral devices.

[0076] It will be understood that the system configurations and components described herein are illustrative, and variations and modifications are possible. It should be understood that the implementation of host 1100 can perform all the operations described above as performed by the media access device, and the implementation of peripheral device 1000 can perform any or all of the operations described above as performed by the peripheral device. Proxy servers, bridges, channels, or coordinators may combine components of host 1100 and peripheral device 1000 using the same or different hardware as needed. Media access devices and / or peripheral devices may have other capabilities not specifically described herein (e.g., mobile phones, Global Positioning System (GPS), broadband data communications, Internet connections, etc.). Depending on the implementation, the devices may interoperate to provide any functionality supported by either (or both) the device, or to provide functionality partially implemented in each device. In some embodiments, a particular peripheral device may have functionality that cannot be accessed or invoked via a particular media access device but can be accessed via another host or through direct interaction with the peripheral device.

[0077] Furthermore, although media access devices and peripheral devices are described herein with reference to specific boxes, it should be understood that these boxes are defined for ease of description and are not intended to imply a specific physical arrangement of component parts. Moreover, boxes do not need to correspond to physically different components. Boxes can be configured to perform various operations, for example, by programming a processor or providing appropriate control circuitry, and depending on how the initial configuration is obtained, various boxes may or may not be reconfigurable. Embodiments of this disclosure can be implemented in a variety of devices, including electronic devices implemented using any combination of circuitry and software.

[0078] Embodiments of the present invention reduce the number of packets and eliminate the overhead of empty fields during wireless transmission. Furthermore, displacement data can be provided using variable fields of reduced size. A USB transceiver connected to a computer (e.g., Figure 1 The transceiver 120 can convert received packets back to the standard format by adding back the eliminated fields. The reduced-size fields can be restored to their standard length. Therefore, the system is backward compatible with software and firmware that expect standard packets, while reducing the size of wireless transmissions.

[0079] These implementations require more processing to convert the reduced-size packets back to standard packets. However, this processing is primarily done in the transceiver connected to the computer's power supply and does not require battery power from the input device. The processing performed in the input device's processor consumes less power compared to transceiver transmission. Therefore, a trade-off is made to achieve less battery consumption and reduced wireless bandwidth requirements.

[0080] These implementations offer several advantages. Battery life is improved because less data is transmitted, thus reducing the time the transceiver needs to transmit and draw power. Bandwidth is improved at the same mouse polling rate. Alternatively, higher mouse polling rates are possible. Stronger robustness to interference is achieved due to shorter packets, and therefore a lower risk of collisions with interfering transmissions.

[0081] Alternative implementation methods

[0082] The various features described herein, such as methods, apparatuses, computer-readable media, etc., can be implemented using any combination of dedicated components and / or programmable processors and / or other programmable devices. The various processes described herein can be implemented on different processors, either the same processor or any combination thereof. Where a component is described as being configured to perform certain operations, such configuration can be accomplished, for example, by designing electronic circuits to perform the operations; by programming programmable electronic circuits (e.g., microprocessors) to perform the operations; or any combination thereof. Furthermore, while the above embodiments may refer to specific hardware components and software components, those skilled in the art will understand that different combinations of hardware components and / or software components can also be used, and specific operations described as implemented in hardware can also be implemented in software, or vice versa.

[0083] Computer programs incorporating the various features described herein can be encoded and stored on a variety of computer-readable storage media; suitable media include magnetic disks or magnetic tapes, optical storage media such as optical discs (CDs) or DVDs (Digital Universal Discs), flash memory, and other non-transitory media. The computer-readable media containing the program code can be packaged together with a compatible electronic device, or the program code can be provided separately from the electronic device (e.g., via Internet download or as a separately packaged computer-readable storage medium).

[0084] This document sets forth numerous specific details to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will understand that the claimed subject matter can be practiced without these specific details. In other instances, methods, apparatus, or systems known to those of ordinary skill in the art have not been described in detail so as not to obscure the claimed subject matter. The various embodiments shown and described are provided merely as examples to illustrate the various features of the claims. However, the features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiments and can be used or combined with other embodiments shown and described. Furthermore, the claims are not intended to be limited to any one of the exemplary embodiments.

[0085] Although the subject matter has been described in detail with reference to specific embodiments of the invention, it will be understood that those skilled in the art, upon gaining an understanding of the foregoing, will readily generate changes, modifications, and equivalents to such embodiments. Therefore, it should be understood that, as will be readily apparent to those skilled in the art, this disclosure is presented for illustrative purposes rather than limiting, and does not exclude such modifications, variations, and / or additions to the subject matter. In fact, the methods and systems described herein can be embodied in various other forms; furthermore, various omissions, substitutions, and changes can be made to the form of the methods and systems described herein without departing from the spirit of this disclosure. The appended claims and their equivalents are intended to cover such forms or modifications that fall within the scope and spirit of this disclosure.

[0086] While this disclosure provides certain exemplary implementations and applications, other implementations that will be apparent to those skilled in the art—including implementations that do not provide all the features and advantages set forth herein—are also within the scope of this disclosure. Therefore, the scope of this disclosure is intended to be limited only by reference to the appended claims.

[0087] Unless otherwise expressly stated, it should be understood that throughout this specification, discussions using terms such as “processing,” “calculation,” “operation,” “determine,” and “identify” refer to the actions or processing of a computing device, such as one or more computers or similar electronic computing devices, which manipulate or convert data represented as physical electronic or magnetic quantities within the memory, registers, or other information storage, transmission, or display devices of a computing platform.

[0088] The one or more systems discussed herein are not limited to any particular hardware architecture or configuration. A computing device may include any suitable arrangement of components that provides a result conditioned on one or more inputs. Suitable computing devices include multi-purpose microprocessor-based computer systems that access stored software that programs or configures a computing system from a general-purpose computing device to a dedicated computing device that implements one or more embodiments of this subject matter. The teachings contained herein may be implemented in software used for programming or configuring the computing device using any suitable programming, scripting, or other type of language or combination of languages.

[0089] Implementations of the methods disclosed herein can be performed within the operation of such a computing device. The order of the boxes presented in the above examples can be varied—for example, the boxes can be reordered, grouped, and / or divided into sub-boxes. Some boxes or processes can be executed in parallel.

[0090] Unless otherwise specifically stated, the conditional language used herein, such as in particular “can,” “able to,” “may,” “for example,” etc., or otherwise understood in the context, is generally intended to express that some examples include certain features, elements, and / or steps while other examples do not. Therefore, such conditional language is not generally intended to imply that one or more examples require features, elements, and / or steps in any way, or that one or more examples must include logic for determining, with or without author input or prompts, whether such features, elements, and / or steps are included in any particular example or to be performed in any particular example.

[0091] The terms “comprising,” “including,” “having,” etc., are synonyms and are used inclusively in an open manner, without excluding additional elements, features, actions, operations, etc. Furthermore, the term “or” is used in its inclusive sense (rather than its exclusive sense), such that, for example, when used to connect a list of elements, the term “or” means one, some, or all of the elements in the list. The use of “suitable for” or “configured to” herein carries an open and inclusive tone, which does not exclude means suitable for or configured to perform additional tasks or steps. Additionally, the use of “based on” carries an open and inclusive tone, because processing, steps, operations, or other actions “based on” one or more of the stated conditions or values ​​may actually be based on additional conditions or values ​​beyond those stated. Similarly, the use of “at least partially based on” carries an open and inclusive tone, because processing, steps, operations, or other actions “at least partially based on” one or more of the stated conditions or values ​​may actually be based on additional conditions or values ​​beyond those stated. The headings, lists, and numbers included herein are for illustrative purposes only and are not intended to be limiting.

[0092] The various features and processes described above can be used independently of each other or combined in various ways. All possible combinations and sub-combinations are intended to fall within the scope of this disclosure. Furthermore, in some embodiments, certain method or process blocks may be omitted. The methods and processes described herein are not limited to any particular order, and the blocks or states associated with them may be executed in other suitable orders. For example, the described blocks or states may be executed in an order other than that specifically disclosed, or multiple blocks or states may be combined as a single block or state. Example blocks or states may be executed serially, in parallel, or in some other manner. Blocks or states may be added to or removed from the disclosed examples. Similarly, the example systems and components described herein may be configured differently than described. For example, elements may be added, removed, or rearranged compared to the disclosed examples.

Claims

1. A method for communication between a human-machine interface device (HID) and a host, the method comprising: The host receives a plurality of virtual endpoints, wherein the plurality of virtual endpoints are a plurality of virtual endpoints for the HID transmitted from the HID to the host; The host transmits a first polling token for the first virtual endpoint to the HID via a communication link at a first frequency. The host receives a first response to each first polling token from the HID in each cycle of the first frequency, the first response including any data from the HID sensor since the previous polling token from the host; Upon receiving each first response, the host transmits at least one additional polling token to at least one additional virtual endpoint, wherein each additional polling token is transmitted after receiving a response from the HID to an earlier polling token; and At the host, at least a second response is received from the HID in response to the at least one additional polling token, the second response including any data from the HID sensor since the first polling token from the host.

2. The method according to claim 1, wherein, The communication link is a USB link.

3. The method according to claim 1, wherein, The communication link is a wireless link.

4. The method according to claim 1, wherein, The at least one additional polling token includes three additional polling tokens.

5. The method according to claim 1, wherein, The reception of multiple virtual endpoints occurs during the configuration of the HID.

6. The method according to claim 1, further comprising: Receive dummy data from the HID when no additional data is available in response to one of the additional polling tokens, the dummy data having a maximum packet size.

7. A method for communication between a human-machine interface device (HID) and a host, the method comprising: Multiple virtual endpoints for the HID are transmitted from the HID to the host; At the HID, a first polling token for the first virtual endpoint is received from the host via a communication link at a first frequency. The HID transmits a first response to each first polling token to the host in each cycle of the first frequency, the first response including any data from the HID sensor since a previous polling token from the host; After each first response is transmitted, at the HID, at least one additional polling token addressed to at least one additional virtual endpoint is received from the host, wherein each additional polling token is transmitted from the host after the host receives a response from the HID to the earlier polling token. as well as The HID transmits at least a second response to the at least one additional polling token to the host, the second response including any data from the HID sensor since the first polling token from the host.

8. The method according to claim 7, wherein, The HID is one of a computer mouse, trackball, joystick, game controller, steering wheel, or touchpad.

9. The method according to claim 7, wherein, The data from the HID sensor includes at least one of the following: xy displacement data, z displacement data, roller rotation data, trackball rotation data, joystick or mini joystick data, directional key data, accelerometer data, or tilt sensor data.

10. The method of claim 7, further comprising: Receive dummy data from the HID when no additional data is available in response to one of the additional polling tokens.

11. The method according to claim 7, wherein, The communication link is a wireless USB link.

12. A system for communication between a human-machine interface device (HID) and a host, the system comprising: HID; Displacement sensors installed in the HID; The HID processor installed in the HID; A HID memory coupled to the HID processor, the HID memory including a non-transitory computer-readable medium storing software instructions thereon, the software instructions causing the HID processor to perform the following steps when executed by the HID processor: Multiple virtual endpoints for the HID are transmitted from the HID to the host; At the HID, a first polling token for the first virtual endpoint is received from the host via a communication link at a first frequency. The HID transmits a first response to each first polling token to the host in each cycle of the first frequency, the first response including any data from the HID sensor since a previous polling token from the host; After each first response is transmitted, at least one additional polling token addressed to at least one additional virtual endpoint is received from the host, wherein each additional polling token is transmitted from the host after a response to the earlier polling token is received from the HID. as well as The HID transmits at least a second response to the at least one additional polling token to the host, the second response including any data from the HID sensor since the first polling token from the host.

13. The system according to claim 12, further comprising: Host; Host processor; A host memory coupled to the host processor, the host memory including a non-transitory computer-readable medium thereon storing software instructions that, when executed by the host processor, cause the host processor to perform the following steps: The host receives a plurality of virtual endpoints, wherein the plurality of virtual endpoints are a plurality of virtual endpoints for the HID transmitted from the HID to the host; The host transmits a first polling token for the first virtual endpoint to the HID via a communication link at a first frequency. The host receives a first response to each first polling token from the HID in each cycle of the first frequency, the first response including any data from the HID sensor since the previous polling token from the host; Upon receiving each first response, the host transmits at least one additional polling token to at least one additional virtual endpoint, wherein each additional polling token is transmitted after receiving a response from the HID to an earlier polling token; and At the host, at least a second response is received from the HID in response to the at least one additional polling token, the second response including any data from the HID sensor since the first polling token from the host.

14. The system according to claim 12, wherein, The communication link is a USB link.

15. The system according to claim 12, wherein, The communication link is a wireless link.

16. The system according to claim 12, wherein, The at least one additional polling token includes three additional polling tokens.

17. The system according to claim 12, wherein, The transmission of the multiple virtual endpoints occurs during the configuration of the HID.

18. The system according to claim 12, wherein, The non-transitory computer-readable medium of the HID memory also stores the following software instructions, which, when executed by the HID processor, cause the HID processor to perform the following steps: Receive dummy data from the HID when no additional data is available in response to one of the additional polling tokens, the dummy data having a maximum packet size.

19. The system of claim 12, further comprising: Second HID; A second HID processor installed in the second HID; A second HID memory coupled to the second HID processor, the second HID memory including a non-transitory computer-readable medium storing thereon software instructions that, when executed by the second HID processor, cause the second HID processor to perform the following steps: Multiple virtual endpoints targeting the second HID are transmitted from the second HID to the host.

20. The system according to claim 12, wherein, The non-transitory computer-readable medium of the HID memory also stores the following software instructions, which, when executed by the HID processor, cause the HID processor to perform the following steps: Reduce the reporting rate when no HID sensor data is received for a specified amount of time.

Citation Information

Patent Citations

  • PS / 2 to USB keyboard adaptor supporting N-key rollover

    CN101957805A

  • Embedded system design, programming, and simulation architecture

    WO2012044262A1