Aggregated RF reporting from displacement input devices
By aggregating displacement data in the displacement input device and optimizing packet transmission, the problem of large battery power and bandwidth consumption in the prior art is solved, and more efficient wireless communication is achieved.
Patent Information
- Application Number
- CN202411450783.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-11-08
- Filing Date
- 2024-10-17
- Publication Date
- 2025-05-09
AI Technical Summary
The existing wireless communication protocol consumes more battery power and bandwidth when transmitting packets of displacement input devices, especially when fast and precise position information is required.
By detecting a plurality of displacements in the displacement input device and aggregated into packets at a second frequency, it is transmitted to the receiver for buffering, and then transmitted to the host at a first frequency. At the same time, only transfer buttons or keys to activate when necessary, reducing group size.
Reduces the number of packets transmitted, saves battery power and bandwidth, improves battery life and system performance, and reduces the risk of conflict with other transmissions.
Smart Images

Figure CN119967470A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application is related to the co-pending and co-owned U.S. non-provisional application No. 18 / 191,826 (Agent File No. 086947-1364103-153800US), entitled “WIRELESS COMMUNICATION PROTOCOLFOR EFFICIENT PACKET MANAGEMENT FOR INPUTDEVICES,” filed on March 28, 2023, the entire contents of which are incorporated herein by reference for all purposes. Technical Field
[0003] The described embodiments generally relate to a displacement input device (eg, a computer mouse) that communicates with a host device via a wireless receiver (eg, a dongle). More specifically, the embodiments relate to reducing the number of packets transmitted. Background Art
[0004] A displacement input device such as a computer mouse or joystick sends a standard packet to the host, which is selected and initialized when connecting to the host, with fields for button presses, displacement moves, etc. The transmission of each packet consumes battery power and uses bandwidth. For a gaming mouse, faster and more accurate position information is required, and therefore more packets are required. It is desirable to limit battery consumption and bandwidth.
[0005] Unless otherwise indicated herein, the materials described in this section are not admitted to be prior art by inclusion in this section. Summary of the invention
[0006] This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of the disclosure, any or all drawings, and each claim.
[0007] In certain embodiments, a method for wireless communication between a displacement input device and a receiver includes detecting, by the displacement input device, a plurality of displacements within a time period at a first frequency. Aggregating the plurality of displacements in groups at a second frequency, wherein the second frequency is lower than the first frequency. Wirelessly transmitting the groups from the displacement input device to the receiver. The receiver wirelessly receives the plurality of displacements aggregated in groups and buffers the plurality of displacements in a memory coupled to the receiver. The receiver transmits the plurality of displacements to a host at the first frequency.
[0008] In an embodiment, there are between two and eight displacements in each grouping. In particular, in one implementation, there are two, four, or eight displacements in each grouping. The receiver may be a USB dongle attached to a USB port of a computer. The displacement input device may be a computer mouse, trackball, joystick, game controller, steering wheel, touchpad, head mounted display, or other displacement device. The displacements include at least one of: xy displacement data, z displacement data, scroll wheel rotation data, trackball rotation data, joystick or mini joystick data, directional pad (D-pad) data, accelerometer data, or tilt sensor data.
[0009] In an embodiment, the method further comprises detecting, by the displacement input device, a button or key activation within a time period of a second frequency. Wirelessly transmitting the button or key activations in groups from the displacement input device to the receiver at the same second frequency. The receiver transmits the button or key activations to the host at the same time as (or immediately before or after) a first displacement in the aggregated displacements. If a second button or key activation is detected within the same time period of the second frequency as the first mentioned button or key activation, the second button or key activation is saved for subsequent groups transmitted to the receiver such that only a single button or key activation is included in each group, thereby limiting the group size.
[0010] In some implementations, when only displacement data is detected in a first time period, a non-acknowledgement packet with the displacement data is generated. The non-acknowledgement packet is wirelessly transmitted to the host. When only displacement data is detected, the accumulated displacement data is transmitted in subsequent time periods, so that the nth time period non-acknowledgement packet includes the first displacement data from the first time period and all displacement data up to the nth time period. After a threshold number of time periods with only displacement data, an acknowledgment request is transmitted (this period can vary from several microseconds to several seconds depending on the acceptable performance and system of the product).
[0011] In some embodiments, a reduced size packet is generated without fields not required during the time period. The reduced size packet is wirelessly transmitted to the host. In other embodiments, when only displacement data is detected during the time period, a reduced size packet with displacement data is generated while eliminating packet fields corresponding to other input data. When other input data is detected during the time period, a data packet about the other input data is generated with a packet field for the other input data, and the data packet is wirelessly transmitted to the host. The displacement data includes at least one of the following: xy displacement data, scroll wheel rotation data, and cursor button data. In other embodiments, the displacement data includes a keyboard cursor, a joystick or mini-joystick, a directional key, or an accelerometer, or a tilt sensor output, or a steering wheel angle. In an embodiment, "other input data" includes button or key activation.
[0012] In some implementations, a transceiver in communication with a host receives the reduced size packet and converts the reduced size packet to a standard packet including a field for other input data. The standard packet is then transmitted to the host. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The features of the above-described various embodiments of the present disclosure 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:
[0014] Figure 1 A system including a host computing device that can be coupled to a plurality of peripheral computer devices via a wireless transceiver is shown in accordance with certain embodiments.
[0015] Figure 2A A packet format according to some embodiments is shown. Figure 2B A table 200 showing a packet format for a HID (Human Interface Device) input device is shown in accordance with certain embodiments.
[0016] Figure 3 is a diagram illustrating aggregation of two displacement reports in one grouping according to certain embodiments.
[0017] FIG. 4A to FIG. 4B is a diagram showing 4 shifts in a grouping according to certain embodiments.
[0018] FIG. 5A to FIG. 5B is a diagram showing 2 displacements in a grouping according to certain embodiments.
[0019] FIG. 6A to FIG. 6E is a diagram illustrating reduced size packets according to certain embodiments.
[0020] Figure 7is a diagram showing aggregation and decomposition of displacements in groups, with two displacements per group, according to certain embodiments.
[0021] Figure 8 is a diagram showing aggregation and decomposition of displacements in groups, where each group has two displacements plus redundancy, according to certain embodiments.
[0022] Fig. 9 is a flow chart illustrating a method of aggregating and decomposing displacements in groups according to certain embodiments.
[0023] Fig.10 A simplified block diagram of an example HID peripheral device is shown in accordance with certain implementations.
[0024] Fig.11 A simplified block diagram of an example host is shown in accordance with certain implementations. DETAILED DESCRIPTION
[0025] According to certain implementations, aspects of the present disclosure relate generally to displacement input devices, and more particularly to systems and methods for wireless communication protocols having methods for reducing the number of transmitted packets.
[0026] In the following description, various examples of communication protocols with methods for determining the use of data aggregation are described. For illustrative purposes, specific configurations and details are set forth to provide a thorough understanding of the embodiments. However, it is apparent to those skilled in the art that certain embodiments may be practiced or implemented without every detail disclosed. In addition, well-known features may be omitted or simplified to prevent any ambiguity in the novel features described herein.
[0027] The following high-level 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. Various aspects of the present invention are directed to various novel communication protocols having methods for determining the use of data aggregation for displacement data, which communication protocols may be well suited for modern computing systems running software with demanding operating requirements, such as competitive gaming systems. Over the past few decades, similar and The advent of wireless communication protocols has stimulated innovation in connectivity between host computing devices and computer peripheral devices, such that most peripheral devices have migrated from hard-wired connections to the host to wireless connections to the host. In many systems, the wireless communication protocols associated with wireless connections can be implemented through a universal serial bus (USB) connected network, which can include multiple peripheral devices, all of which communicate with the host computer device through a wireless USB hub (e.g., a dongle), as will be appreciated by those of ordinary skill in the art with the benefit of this disclosure (e.g., as described in detail in the accompanying drawings). Figure 1 shown) will be understood.
[0028] While wireless connectivity provides improved flexibility and convenience to users, some video gaming applications require relatively fast player response times, and conventional wireless communication protocols (e.g., BLE) generally fail to provide acceptable performance metrics (e.g., computer mouse reporting latency and reporting rate, keystroke reporting latency and reporting rate) for more discerning gamers in higher echelons of competitive esports.
[0029] For example, the delay "latency" from the time a user interacts with a mouse to the time the host notices the interaction is often used as a performance benchmark. A related common performance benchmark is the rate at which the device reports to the host (i.e., the "report rate"), which is often expected to be 1000 reports per second or more. In some embodiments, a wireless human input device (HID) peripheral device transceiver can be configured to wirelessly transmit displacement data between the HID input device and the host transceiver using an aggregation or accumulation method.
[0030] When a peripheral input device transmits a data packet, the peripheral input device may request an acknowledgment from the transceiver before transmitting the next data packet. This may cause a delay in the transmission of information. Therefore, data structures and associated methods that enable a user or system to speed up communication between a peripheral device and a transceiver and save air bandwidth are disclosed in the present disclosure. Having free RF bandwidth allows the option of sending data from the host to the mouse within an ACK packet.
[0031] More specifically, in some embodiments, the peripheral device may transmit a data packet without waiting to receive an acknowledgement from the transceiver depending on the input data type. Figure 7As shown, ACK 710 is sent only after every 4th packet, rather than for each packet. Implementations of the present disclosure can remove the delay associated with waiting for confirmation from the communication protocol, that is, data packets can be transmitted from a peripheral device to a transceiver without waiting for confirmation. For example, when a data packet only contains mouse displacement data (X / Y information) or roller data, data packets can be transmitted without requesting confirmation from a transceiver. In this way, the waiting period for receiving confirmation can be eliminated. This can save air time, speed up data transmission rate, and can also have the additional benefit of extending battery life. When a data packet contains click data or key data, a data packet can be sent in a manner that requests ACK after each packet.
[0032] Typically, displacement data can account for more than 99% of all transactions, while mouse click and scroll wheel events (click and vertical scroll) can account for less than 1%. Therefore, the vast majority of transactions can be simple displacements.
[0033] In gaming applications, button or key data is expected to have low latency, while displacement data is less sensitive. Additionally, high frequency reporting rates may be faster than the human eye can distinguish. Therefore, when only displacement data is present, an embodiment aggregates the changes in displacement and sends the aggregated packets less frequently. On the receiving end, the aggregated displacement is broken down and sent to the host for display at the original sampling rate of the peripheral device. The use of this original sampling rate ensures smoother, more fluid movement on the display. By aggregating, fewer transmissions are required, thereby reducing the associated headers and other overhead with each packet. This not only extends battery life by consuming less power, but also reduces the risk of conflicts with other transmissions.
[0034] Additionally, since packets are sent less frequently, fewer return acknowledgment messages are required, reducing the need to process their receipt and thus reducing latency and the likelihood of collisions with acknowledgment messages.
[0035] In another embodiment, when there is only displacement data, the packet size can also be reduced by making the packet size variable. Packets between the HID and the transceiver dongle for displacement data contain only the packet type field and a small displacement field. The button field and other fields are eliminated. This reduces the battery power required for 99% of transmissions in the game and reduces the chance of collision with another wireless transmission on the same channel.
[0036] Wireless input device and host system
[0037] Figure 1A system 100 is shown that includes a host computing device 110 according to certain embodiments, which can be coupled to multiple peripheral computer devices 130 (e.g., a computer mouse) via a wireless transceiver 120. The host computer 110 can include any suitable computing device, such as a desktop computer, a laptop computer, a tablet computer, a wearable computing device (e.g., a head-mounted display, a smart watch, etc.), an entertainment / infotainment system, a vehicle computing system, or other suitable computing device. Although one host computing device is shown, it will be understood by those skilled in the art 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.
[0038] 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 be used or other wireless protocols to couple wirelessly to the host computer 110. In some embodiments, the mouse 130 may be required to undergo an initial "pairing" process with the 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. The devices may also share a common secret key, which enables the devices to "connect" in the future at any time they are within communication range. When a peripheral device is connected to the transceiver, two-way communication between the devices may be performed using data constructs described in more detail below.
[0039] In some embodiments, 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 1, a piconet 135 is shown as a wireless communication path 135 between the transceiver 120 and the mouse 130. A piconet may 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 communications throughout the piconet. The master device may send data to any of its slave devices and may also request data from the slave devices. Slaves are allowed to send to and receive from their master devices.
[0040] Mouse 130 may alternatively be any suitable computer peripheral device that provides displacement data, however the examples shown here are typically found in conventional gaming systems. For example, the peripheral device may be a computer mouse, a game controller, a steering wheel, a trackball, a digital pen, etc. Each peripheral device may 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 of ordinary skill in the art will appreciate many modifications, variations, and alternative embodiments of the present disclosure with the benefit of this disclosure. The input device may be a computer peripheral device, and may also be referred to herein as a "peripheral input device," "peripheral device," etc. Most of the embodiments described herein generally relate to a computer mouse 130, however, it should be understood that the computer peripheral device may be any suitable input / output (I / O) device (e.g., a user interface device, a control device, an input unit, etc.), which may be suitable for utilizing the novel embodiments described and contemplated herein.
[0041] Packet Format
[0042] Figure 2A The packet format according to some embodiments is shown. Field 1 is a start of frame (SOF) indicator. Field 2 may identify the address. This address may be used to identify a piconet in the case where multiple users are in the same room. During the pairing sequence, the device will exchange addresses with the dongle. Field 3 may be control information with Figure 2B , including whether confirmation is required. Then comes the payload (field 4) with displacement and button data. Field 5 contains the message integrity check to verify that the message has not been altered and is correctly encrypted. Field 6 is a cyclic redundancy check (CRC) for the packet.
[0043] Figure 2B A table 200 showing details of a packet format for a HID input device according to certain embodiments is shown. More specifically, table 200 shows an example of a packet format used in an optional embodiment that includes a bit for ACK / No ACK in a control byte or control field. The ACK / No ACK bit indicates whether an ACK is required. This packet format may be used if multiple aggregate packets with only displacement data are sent before an ACK is required.
[0044] polymerization
[0045] Figure 3Aggregation of two displacement reports in one group is shown according to certain embodiments. A two-dimensional displacement sensor provides a series of displacement reports X0 to X7. Typically, each of these displacement reports is transmitted wirelessly over the air to a receiver, which then forwards the displacement reports to a host. In an embodiment, the groups are aggregated instead. Displacements 302 and 304 (X0 X1) are aggregated into a single group 310. Similarly, displacements 306 and 308 (X2 X3) are aggregated into a single group 314.
[0046] Instead of sending an acknowledgement after each shift X0 to X7, only a single acknowledgement 316 (ACK) is sent. This further reduces the need for battery power in the peripheral device to process received ACKs, and also reduces the number of packets sent over the air, thereby reducing the likelihood of collisions with other transmissions.
[0047] Due to the aggregation of displacements and the reduction in the number of acknowledgments, the amount of available bandwidth increases. Therefore, in an optional embodiment, each aggregated packet can be sent twice to increase redundancy and thus reduce the number of lost packets in the absence of ACKs and thus eliminate the need to resend lost packets. As shown, packets 312 and 315 are examples of such redundant packets for (X0 X1) and (X2 X3), respectively.
[0048] Once the aggregate packets 310, 314, etc. are received by a receiver, such as a USB dongle, they are broken down back into individual displacements 318, 320, 322, 324, etc. (X0 to X3) and transmitted to the host. It can be seen that the aggregation causes a delay 326. Some of this delay will exist in any case due to the time required to pack the displacements into packets, transmit, receive, and send from the receiver to the host. The elimination of the ACK after each packet reduces the increase in delay. The increased delay is best limited by limiting the amount of aggregation so that the delay is not noticeable to the human eye and in particular to the eyes of video game players. Therefore, in an embodiment, the amount of aggregation is limited to 2 to 10 displacements in the packet, in particular 2, 4 or 8 displacements. For ordinary people, reporting at 1KHz is sufficient, while for gamers, 2KHz is used as a minimum for safety reasons.
[0049] FIG. 4A to FIG. 4B 406. FIG. 4 is a diagram showing four displacements in a group according to some embodiments. A displacement input device 402 transmits four aggregate displacements in a group to a receiver 406 via a wireless channel 404. The receiver 406 decomposes (redistributes or expands) the displacements and transmits the displacements at the original sampling rate to a host computer 410 via a USB bus 408 for display.
[0050] Device 402 (e.g., an optical wireless computer mouse) has a displacement sensor 412 (e.g., an optical sensor) that samples displacement at 8KHz and sends it to a processor 416 (e.g., a system on a chip) via an internal serial peripheral interface (SPI) 414. Processor 416 aggregates the four displacements into a single packet for transmission over wireless channel 404, as described herein. In addition, any button or key activations are transmitted.
[0051] The receiver 406 (e.g., a dongle that plugs into a host USB port) has a transceiver / processor 418 (e.g., a system on a chip) that receives packets at 2KHz and forwards the packets at 2KHz to a processor 422 via SPI 420. The processor 422 breaks down the individual displacements and sends the displacements to the host 410 via the USB bus 408 at the original sampling rate of 8KHz.
[0052] Figure 4B It is for Figure 4A FIG. 2 is a graph of displacement (X) versus time (T) for an embodiment of the present invention. The triangles represent a 2KHz transmission of 4 aggregate displacements represented by circles. If a 2KHz signal were sent to the display, there would be large straight line movements between the triangles. By breaking it up, there are more movements, each of which is smaller, and with 4 segments instead of one to more closely follow the curve of an actual displacement device. Thus, by breaking up the aggregate displacements, a smoother movement is provided to the display, albeit with a slight delay that is not noticeable to the human eye.
[0053] FIG. 5A to FIG. 5B is a diagram showing 2 displacements in a grouping according to certain embodiments. Figure 5A The same physical system is used, but only two displacements are aggregated per group, instead of Figure 4A 4 displacements in the embodiment of . Therefore, the 8KHz sampling rate is converted to a 4KHz transmission rate. The receiver 406 receives the packets at 4KHz and forwards the packets to the processor 422 at 4KHz. The processor 422 breaks down the individual displacements and sends the displacements to the host 410 via the USB bus 408 at the original sampling rate of 8KHz.
[0054] Since the mouse sampling rate does not change, and the rate provided to the host after decomposition does not change, the protocol described in this article is backward compatible with legacy systems.
[0055] Figure 5B It is for Figure 5AFIG. 4 is a graph of displacement (X) versus time (T) for an embodiment of the present invention. The triangles represent a 4KHz transmission of 2 aggregate displacements represented by the circles. If a 4KHz signal were sent to the display, there would be larger straight line movements between the triangles. By breaking it up, there are more movements, each of which is smaller, and has two segments instead of one to more closely follow the curve of an actual displacement device. Thus, by breaking up the aggregate displacements, a smoother movement is provided to the display, albeit with a slight delay that is not noticeable to the human eye.
[0056] Variable size packets
[0057] In addition to aggregating displacements, variable size packets can also be used. For example, if four displacements are aggregated in an embodiment, and only one displacement is detected in four periods, the packet size can be reduced to have only a single displacement field. If all 4 displacements are detected, four displacement fields are used. Alternatively, a displacement field with zeros is sent, but zeros are small bit fields.
[0058] FIG. 6A to FIG. 6E The fields of various packet types are shown for an aggregated computer mouse packet with two displacements (X1, Y1 and X2, Y2) combined. The type field is an identifier of the packet (indicating an aggregated packet). The mask field is a bit field indicating which parameters of the mouse report are present or absent, and for X / Y displacements, the mask field indicates which format is used. The mask field indicates how to arrange the internal aggregated reports (e.g., skip empty reports that do not contain information). The mask field will also indicate whether there is a displacement of the vertical roller or horizontal roller, and whether there is a button. For example, 0 can indicate that 4 bits are used for the displacement, 1 can indicate that 8 bits are used, 2 can indicate that 12 bits are used, and 3 can indicate that 16 bits are used. Since most displacements within each sampling period are small, only 4 bits are usually required for each of the X and Y directions. Since multiple displacements are aggregated, only 4 bits are usually required for both displacements. However, sometimes one displacement will be larger and more bits are required. The mask field will indicate the number of bits used for each displacement. Since the number of bits may vary, the size of the packet will also vary, thereby avoiding waste of battery power and bandwidth in the case of empty fields.
[0059] Fig. 6A A packet is shown having a type field 602, a mask field 604, and two payload fields 606 and 608. Field 606 has 8 bits for the first aggregate shift, 4 bits for the X shift, and 4 bits for the Y shift. Similarly, field 608 has 8 bits for the second shift. The remaining fields are empty and therefore eliminated, with the last payload field 608 being followed by the MIC and CRC fields, as shown in FIG. FIG. 2A to FIG. 2B shown.
[0060] Figure 6B A grouping with 8 bits for the first shift, but 32 bits for the second shift is shown. The X2 shift has the most significant byte (MSB) followed by the least significant byte (LSB). Similarly, Y2 has MSB and LSB fields.
[0061] Figure 6C Shown with Figure 6B The grouping of is basically the opposite of the grouping. There are only 8 bits for the second displacement (X2, Y2), but there are 32 bits for the first displacement (X1, Y1). The X1 displacement has the most significant byte (MSB) followed by the least significant byte (LSB). Similarly, Y1 has MSB and LSB fields.
[0062] Fig.6D A grouping with 32 bits is shown for both the first shift (X1, Y1) and the second shift (X2, Y2).
[0063] Fig. 6E As shown in Fig.6D , but with the addition of two button fields 610 and 612, as well as a field 614 for vertical roller movement and a field 616 for horizontal roller movement. Alternatively, a grouping with a single button field or a single roller field can be used. With such a structure, in the rare case that a second button or key activation is detected in the same time period, a double button field grouping can be used, or the second button can be saved for subsequent groups transmitted to the receiver so that only a single button or key activation is included in each grouping, thereby limiting the grouping size. In one embodiment, the button field is 8 bits, which identifies which button is activated. When only two buttons are present, a smaller number of bits can be used.
[0064] In fact, Fig. 6A The fields are all that are needed for the vast majority of groups, typically more than 95% of the groups. FIG. 6A to FIG. 6E The variable length packets shown in FIG. 1 are combined with the aggregation of displacements so that fewer packets are sent, achieving significant savings in power and bandwidth. This results in fewer packets and smaller packets.
[0065] redundancy
[0066] Figures 7 and 8 An implementation is shown that adds redundancy to packets, allowing fewer acknowledgments (ACKs) to be sent, thus further limiting the bandwidth and battery power used.
[0067] Figure 7702 is a diagram showing the aggregation and decomposition of displacements in groups, where each group has two displacements, according to some embodiments. The sensor in the mouse sends a displacement X0, followed by a displacement X1. The mouse aggregates X0 / X1 into a group 702 and transmits it to the receiver, which then decomposes the displacements and sends them sequentially X0 then X1, as detected by the sensor.
[0068] In this embodiment, the second packet 704 not only includes the subsequent displacements X2 and X3, it also resends X0 and X1. Similarly, packets 706 and 708 send a new set of two displacements plus the previous displacement. After 8 displacements have been sent, an ACK is returned to the mouse. Therefore, instead of an ACK after each packet, an ACK is only sent after every four packets. The process is repeated using packets 712, 714, 716, etc. In the example shown, packet 712 is not received by the receiver, and the mouse does not expect an ACK, and therefore does not resend the packet. However, since the X0 / X1 displacement is repeated in subsequent packets 714, 716, the receiver will not lose the X0, X1 data. If no ACK is received after the 4th packet, the mouse will expect an ACK, and will resend the 4th packet, which has all the displacement data since the last ACK.
[0069] Figure 8 is a diagram showing the aggregation and decomposition of displacements in groups, where each group has two displacements plus redundancy, according to some embodiments. Figure 8 In the embodiment of Figure 7 802 is repeated as in , and each packet is also repeated twice, thereby providing additional redundancy. Packet 802 with X0 / X1 is repeated as packet 804. Similarly, packet 806 is repeated as packet 808, and packet 810 is repeated as packet 812. Packet 814 is not repeated. Packet 814 requests confirmation from the dongle, so if ACK is received, there is no need to copy the packet. If ACK is not received, the packet will be repeated. Since it is expected to receive ACK, the second packet will not be sent to avoid the risk of conflict with ACK. All other packets from 802 to 812 are sent without requesting ACK. As broadcast packets, these packets will be repeated to improve link robustness. Confirmation 816 is sent after every 7 packets. As shown, if packet 818 is not received, the displacement data is redundantly provided in the copy packet 820 and the subsequent packet 822, etc.
[0070] Alternatively, duplicate packets with only two shifts may be sent during the period, rather than duplicate packets with cumulative shifts.The amount of redundancy used may vary based on the amount of interference (eg, other peripheral devices) detected in the area.
[0071] flow chart
[0072] Fig. 9 is a flow chart illustrating a method of aggregating and decomposing displacements in groups according to certain embodiments. Step 902 is detecting a plurality of displacements by a displacement input device over a time period at a first frequency. Step 904 is wirelessly transmitting the plurality of displacements aggregated in groups from the displacement input device to a receiver at a second frequency, wherein the second frequency is lower than the first frequency. Step 906 is wirelessly receiving the plurality of displacements aggregated in groups at the receiver. Step 908 is buffering the plurality of displacements aggregated in groups in a memory coupled to the receiver. Step 910 is transmitting the plurality of displacements by the receiver to a host at the first frequency.
[0073] Peripheral devices
[0074] Fig.10 A simplified block diagram of an example HID peripheral device 1000 is shown in accordance with certain embodiments. The peripheral device 1000 may implement any or all of the functions, behaviors, and capabilities of the peripheral devices described herein, as well as other functions, behaviors, and capabilities not explicitly described. The 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. The 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.
[0075] Peripheral device 1000 represents 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, a pointing device, a digital pen, etc. Various accessories may include those not described in Fig.10 Components explicitly shown in the video camera include, but are not limited to: a storage device (disk, flash memory, etc.) with fixed or removable storage media; a video screen, speakers, or ports for connecting to external audio / video devices; camera components such as lenses, image sensors, and controls therefor (e.g., aperture, zoom, exposure time, frame rate, etc.); a microphone for recording audio (alone or in combination with video recording), etc.
[0076] The storage device 1028 may be implemented, for example, using a disk, flash memory, or any other non-transitory storage medium or combination of media, and may include volatile media and / or non-volatile media. In some embodiments, the storage device 1028 may store one or more programs (e.g., firmware) to be executed by the processing subsystem 1030, including programs for implementing various operations such as those performed by the peripheral device described above and operations related to specific peripheral device behaviors. The 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. The storage device 1028 may also store peripheral device status information and any other data that may be used during operation of the peripheral device 1000. The storage device 1028 may also store executable programs to, for example, communicate with the host device as described above. Figure 1 The transceiver 120 is shown communicating program code.
[0077] The processing subsystem 1030 may include, for example, one or more single-core microprocessors 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 of the processes) 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, the processing subsystem 1030 may be used. Figure 1 A transceiver 120 is shown for sending and / or receiving messages.
[0078] The user interface 1032 may include: user-operable input devices, such as a touch pad, a touch screen, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, a microphone, etc.; and output devices, such as a video screen, an indicator light, a speaker, a headphone jack, etc.; and supporting electronic devices (e.g., a digital-to-analog converter or an analog-to-digital converter, a signal processor, etc.). Depending on the implementation of the specific peripheral device 1000, the user can operate the input device of the user interface 1032 to invoke the functions of the peripheral device 1000, and can view and / or hear the output from the peripheral device 1000 via the output device of the user interface 1032. Some accessories may provide minimal or no user interface. In the case where the peripheral device does not have a user interface, the user can still interact with the peripheral device using a host (e.g., host 1100).
[0079] The peripheral-specific hardware 1034 may include any other components that may be present in the peripheral 1000 to implement the functionality of the peripheral 1000. For example, in various embodiments, the peripheral-specific hardware 1034 may include: one or more storage devices using fixed storage media or removable storage media; a GPS receiver; a power supply and / or power management circuit system; a camera; a microphone; one or more actuators; a control switch; an environmental sensor (e.g., a temperature sensor, a pressure sensor, an accelerometer, a chemical sensor, etc.), etc. It should be understood that by providing appropriate peripheral-specific hardware 1034, any type of peripheral functionality can be supported, and the peripheral-specific hardware can include mechanical components as well as electrical or electronic components.
[0080] The communication interface 1036 can provide voice communication capabilities and / or data communication capabilities for the peripheral device 1000. In some embodiments, the communication interface 1036 may include: a radio frequency (RF) transceiver component for accessing a wireless voice network and / or a data network (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); a component 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, the communication interface 1036 may provide a wired network connection (e.g., Ethernet). The communication interface 1036 may be implemented using a combination of hardware components (e.g., driver circuits, antennas, modulators / demodulators, encoders / decoders, and other analog signal processing circuits and / or digital signal processing circuits) and software components. In some embodiments, the communication interface 1036 may support multiple communication channels simultaneously or at different times using the same transmission or different transmissions. Thus, for example, peripheral device 1000 may communicate with the host via a local channel at certain times, and communicate with the host via a relay service at other times.
[0081] The secure storage module 1038 may be an integrated circuit or the like that may securely store encryption information for the peripheral device 1000. Examples of information that may be stored in the secure storage module 1038 include: a long-term public key and a long-term secret key (LTPKA, LTSKA) of the peripheral device; a local pairing list (e.g., a lookup table for a host that has completed a local pairing setup or pairing addition process with the peripheral device 1000, for example, as described above, which maps a local host identifier to a host long-term public key (LTPKC)); and a relay pairing list (e.g., a host Ra and an associated access token for a host that has established a relay pairing with the peripheral device 1000, for example, as described above). In some embodiments, the pairing information may be stored such that, in the case where both a local pairing and a relay pairing have been established with the host, the local pairing is mapped to the corresponding relay pairing. In some embodiments, the secure storage module 1038 may be omitted; the keys and the paired host list may be stored in the storage device 1028.
[0082] In some embodiments, cryptographic operations may be implemented in a cryptographic logic module 1040 that communicates with the secure storage module 1038. Physically, the cryptographic logic module 1040 may be implemented in the same integrated circuit as the secure storage module 1038 or in a different integrated circuit (e.g., a processor in the processing subsystem 1030) as desired. The cryptographic logic module 1040 may include various logic circuits (fixed or programmable as desired) that implement or support cryptographic operations of the peripheral device 1000, including any or all of the cryptographic operations described above. The secure storage module 1038 and / or the cryptographic 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 a message in encrypted form that the communication interface 1036 cannot decrypt and may simply pass the message to the processing subsystem 1030. The processing subsystem 1030 may also not be able to decrypt the message, but it may recognize the message as encrypted and pass it to the cryptographic logic module 1040. The cryptographic logic module 1040 may decrypt the message (e.g., using information extracted from the secure storage module 1038) and determine which information to return to the processing subsystem 1030. Thus, certain information may only be available within the secure storage module 1038 and the cryptographic logic module 1040. If the secure storage module 1038 and the cryptographic logic module 1040 are implemented on a single integrated circuit that executes code only from an internal secure repository, this may make extraction of the information extremely difficult, which may provide a high degree of security. Other implementations are also possible.
[0083] Peripheral device 1000 can be any electronic device that interacts with host 1100. In some embodiments, host 1100 can provide remote control for the operation of peripheral device 1000, as described below. For example, host 1100 can provide a remote user interface for peripheral device 1000, which can include both input controls 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 the status information). Host 1100 in various embodiments can control any function of peripheral device 1000, and can also control the operation of peripheral device 1000 via, for example, Figure 1 The transceiver 120 is shown receiving data from the peripheral device 1000 .
[0084] Host
[0085] Fig.11 A simplified block diagram of an example host 1100 according to some embodiments is shown. In some embodiments, the host 1100 can implement any or all of the functions, behaviors and capabilities described herein as performed by the host, as well as other functions, behaviors and capabilities that are not explicitly described. The 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. The host 1100 may also include other components (not explicitly shown) that can be operated to provide various enhanced capabilities, such as batteries, power controllers and other components. In various embodiments, the host 1100 can be implemented in desktop computers, laptop computers, tablet computers, smart phones, other mobile phones, wearable computing devices or other systems with any desired form factor. In addition, as described above, the host 1100 can be implemented partially in a base station and partially 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.
[0086] The storage device 1112 may be implemented, for example, using a disk, flash memory, or any other non-transitory storage medium or combination of media, and may include volatile media and / or non-volatile media. In some embodiments, the storage device 1112 may store one or more applications and / or operating system programs to be executed by the processing subsystem 1110, including programs for implementing the various operations as performed by the host described above. For example, the 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 the peripheral device based on the information in the peripheral device description record. The storage device 1112 may also store executable programs such as those described above and as described above. Figure 1 The transceiver 120 is shown communicating program code. Fig.10 The transceiver 120 is shown as a subsystem of the host 1100, but it should be understood that the transceiver 120 can be a dongle that is inserted into and electrically coupled to the host 1100. The transceiver 120 can contain its own processor for processing received packets as described above, or it can be controlled by the host processing system 1110, which will perform these functions. In some embodiments, some (or all) of the host functions described herein can be implemented in an operating system program rather than an application. In some embodiments, the storage device 1112 can also store applications designed for specific accessories or specific categories of accessories (e.g., an IP camera application for managing IP camera peripherals or a security application for interacting with a door lock accessory).
[0087] The user interface 1114 may include: input devices, such as a touch pad, a touch screen, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, a microphone 1119, etc.; and output devices, such as a video screen, an indicator light, a speaker, a headphone jack, etc.; and supporting electronic devices (e.g., a digital-to-analog converter or an analog-to-digital converter, a signal processor, etc.). The user can operate the input devices of the user interface 1114 to invoke functions of the host 1100, and can view and / or hear output from the host 1100 via the output devices of the user interface 1114.
[0088] The processing subsystem 1110 may be implemented as one or more integrated circuits, for example, one or more single-core microprocessors or multi-core microprocessors or microcontrollers, examples of which are known in the art. In operation, the processing system 1110 may control the operation of the host 1100. In various embodiments, the processing subsystem 1110 may execute various programs in response to program code and may maintain multiple concurrently executed programs or processes. At any given time, some or all of the program code to be executed may reside in the processing subsystem 1110 and / or a storage medium such as a storage device 1112.
[0089] Through 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 of the processes) 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 application programs that can be stored in the storage device 1112. In some embodiments, these applications can interact with peripheral devices, for example, by generating messages to be sent to the peripheral devices and / or receiving responses from the peripheral devices. Such interaction can be facilitated, for example, by a peripheral device management daemon and / or other operating system processes as described above, and such interaction can include communicating with the peripheral device via, for example, a peripheral device management daemon and / or other operating system processes as described above. Figure 1 The transceiver 120 is shown communicating with peripheral devices.
[0090] The communication interface 1116 can provide voice communication capabilities and / or data communication capabilities for the host 1100. In some embodiments, the communication interface 1116 may include: a radio frequency (RF) transceiver component for accessing a wireless voice network and / or a data network (e.g., using cellular phone technology, data network technology such as 3G, 4G / LTE, Wi-Fi, other IEEE 802.11 series standards, or other mobile communication technologies or any combination thereof); a component 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, the communication interface 1116 can provide a wired network connection (e.g., Ethernet). The communication interface 1116 can be implemented using a combination of hardware components (e.g., driver circuits, antennas, modulators / demodulators, encoders / decoders, and other analog signal processing circuits and / or digital signal processing circuits) and software components. In some embodiments, the communication interface 1116 can support multiple communication channels simultaneously or at different times using the same transmission or different transmissions. Thus, for example, host 1100 can communicate with an accessory via a local channel at some times and communicate with the accessory via a relay service at other times.
[0091] The secure storage module 1118 may be an integrated circuit or the like that may securely store encryption 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 an accessory that has completed a local pairing setup or pairing addition process with the host 1100, for example, as described above, which maps a local peripheral device identifier to a peripheral device long-term public key (LTPKA)); and a relay pairing 1126 list (e.g., a peripheral device Ra and an associated access token for an accessory that has established a relay pairing with the host 1100, for example, as described above). In some embodiments, the pairing information may be stored such that, in the case where both a local pairing and a relay pairing have been established with the peripheral device, the local pairing 1124 is mapped to the corresponding relay pairing 1126.
[0092] In some embodiments, cryptographic operations may be implemented in a cryptographic logic module 1120 that communicates with the secure storage module 1118. Physically, the cryptographic logic module 1120 may be implemented in the same integrated circuit as the secure storage module 1118 or in a different integrated circuit (e.g., a processor in the processing subsystem 1110) as desired. The cryptographic logic module 1120 may include various logic circuits (fixed or programmable as desired) that implement or support cryptographic operations of the host 1100, including any or all of the above-described cryptographic operations. The secure storage module 1118 and / or the cryptographic logic module 1120 may appear as a "black box" to the rest of the host 1100. Thus, for example, the communication interface 1116 may receive a message in encrypted form that the communication interface 1116 cannot decrypt and may simply pass the message to the processing subsystem 1110. The processing subsystem 1110 may also not be able to decrypt the message, but it may recognize the message as encrypted and pass it to the cryptographic logic module 1120. The cryptographic logic module 1120 may decrypt the message (e.g., using information extracted from the secure storage module 1118) and determine what information to return to the processing subsystem 1110. Thus, certain information may only be available within the secure storage module 1118 and the cryptographic logic module 1120. If the secure storage module 1118 and the cryptographic logic module 1120 are implemented on a single integrated circuit that executes code only from an internal secure repository, this may make extraction of the information extremely difficult, which may provide a high degree of security. Other implementations are also possible.
[0093] In addition, although the host is described herein with reference to specific boxes, it should be understood that these boxes are defined for convenience of description and are not intended to imply a specific physical arrangement of component parts. In addition, boxes do not need to correspond to physically different components. Boxes can be configured to perform various operations, such as by programming a processor or providing appropriate control circuit systems, and various boxes may or may not be reconfigurable depending on the manner in which the initial configuration is obtained. Implementations of the present disclosure can be implemented in various devices including electronic devices implemented using any combination of circuit systems and software.
[0094] The hosts and accessories described herein may be implemented in electronic devices that may generally have a conventional design. Such devices may be adapted to communicate using a unified peripheral device protocol that supports command and control operations by which the host (first electronic device) may 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 may combine features or aspects of the host and peripheral devices.
[0095] 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 an implementation of the host 1100 may perform all operations as performed by the media access device described above, and an implementation of the peripheral device 1000 may perform any or all operations as performed by the peripheral device described above. A proxy server, a bridge, a channel, or a coordinator may combine components of the host 1100 and the peripheral device 1000 using the same hardware or different hardware as needed. The media access device and / or the peripheral device may have other capabilities not specifically described herein (e.g., a mobile phone, a global positioning system (GPS), broadband data communications, an Internet connection, etc.). Depending on the implementation, the devices may interoperate to provide any functionality supported by any (or both) devices, or to provide functionality partially implemented in each device. In some embodiments, a specific peripheral device may have some functions that cannot be accessed or called via a specific media access device but can be accessed via another host or by interacting directly with the peripheral device.
[0096] Furthermore, although media access devices and peripheral devices are described herein with reference to particular boxes, it should be understood that these boxes are defined for convenience of description and are not intended to imply a particular physical arrangement of component parts. Furthermore, boxes need not correspond to physically distinct components. Boxes may be configured to perform various operations, for example by programming a processor or providing appropriate control circuitry, and various boxes may or may not be reconfigurable depending on the manner in which the initial configuration is obtained. Embodiments of the present disclosure may be implemented in a variety of devices including electronic devices implemented using any combination of circuitry and software.
[0097] Embodiments of the present invention reduce the number of packets during wireless transmission and eliminate the overhead of empty fields. In addition, variable fields of reduced size can be used to provide displacement data. A USB transceiver (e.g., Figure 1 The transceiver 120 of the present invention can convert the received packet back to the standard format by adding back the eliminated fields. The fields with reduced size can be restored to their standard length. Therefore, the system is backward compatible with software and firmware that expects standard packets while reducing the size of wireless transmissions.
[0098] These implementations require more processing to convert from the reduced size packets back to standard packets. However, this processing is primarily done in the transceiver connected to the computer power supply and does not require battery power from the input device. The processing done in the input device processor consumes less power than the transceiver transmission. Therefore, a trade-off is made to achieve less battery consumption and reduced wireless bandwidth requirements.
[0099] These embodiments provide a number of advantages. Battery life is improved because less data is transmitted, thereby 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. Because the packets are shorter, they are more robust to interference and therefore have less risk of colliding with interfering transmissions.
[0100] Alternative Implementations
[0101] The various features described herein, such as methods, apparatus, computer-readable media, etc., may be implemented using any combination of dedicated components and / or programmable processors and / or other programmable devices. The various processes described herein may be implemented on the same processor or on different processors in any combination. Where a component is described as being configured to perform certain operations, such configuration may be accomplished, for example, by designing an electronic circuit to perform the operation; by programming a programmable electronic circuit (e.g., a microprocessor) to perform the operation; or any combination thereof. In addition, although the above embodiments may refer to specific hardware components and software components, those skilled in the art will appreciate that different combinations of hardware components and / or software components may also be used, and that specific operations described as being implemented in hardware may also be implemented in software, or specific operations described as being implemented in software may also be implemented in hardware.
[0102] Computer programs incorporating the various features described herein may be encoded and stored on a variety of computer-readable storage media; suitable media include disks or tapes, optical storage media such as compact disks (CDs) or DVDs (digital versatile disks), flash memory, and other non-transitory media. A computer-readable medium encoded with program code may be packaged with a compatible electronic device, or the program code may be provided separately from the electronic device (e.g., via Internet download or as a separately packaged computer-readable storage medium).
[0103] Many specific details are set forth herein to provide a thorough understanding of the claimed subject matter. However, those skilled in the art will appreciate that the claimed subject matter can be practiced without these specific details. In other instances, methods, devices, or systems known to those of ordinary skill in the art are not described in detail in order to avoid blurring the claimed subject matter. The various embodiments shown and described are provided only 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. In addition, the claims are not intended to be limited to any one example embodiment.
[0104] Although the subject matter has been described in detail with respect to specific embodiments of the invention, it will be understood that those skilled in the art can easily generate changes, modifications and equivalents to such embodiments after obtaining an understanding of the foregoing. Therefore, it should be understood that it will be readily apparent to those of ordinary skill in the art that the present disclosure is presented for purposes of illustration and not limitation, and does not exclude the inclusion of such modifications, modifications and / or additions to the subject matter. In fact, the methods and systems described herein may be embodied in various other forms; in addition, various omissions, substitutions and changes may be made to the form of the methods and systems described herein without departing from the spirit of the present disclosure. The attached claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the present disclosure.
[0105] Although the present disclosure provides certain example embodiments and applications, other embodiments that are obvious to those of ordinary skill in the art, including embodiments that do not provide all of the features and advantages set forth herein, are also within the scope of the present disclosure. Therefore, the scope of the present disclosure is intended to be limited solely by reference to the appended claims.
[0106] Unless expressly stated otherwise, it should be understood that throughout the specification, discussions utilizing terms such as "processing," "computing," "calculating," "determining," and "identifying" refer to the actions or processes of a computing device, such as one or more computers or similar electronic computing devices, that manipulate or transform data represented as physical electronic or magnetic quantities within a memory, register, or other information storage, transmission, or display device of a computing platform.
[0107] The one or more systems discussed herein are not limited to any particular hardware architecture or configuration. The computing device may include any suitable arrangement of components that provide a result conditioned on one or more inputs. Suitable computing devices include a multi-purpose microprocessor-based computer system that accesses stored software that programs or configures the computing system from a general-purpose computing device to a dedicated computing device that implements one or more embodiments of the present subject matter. Any suitable programming, scripting, or other type of language or combination of languages may be used to implement the teachings contained herein in software for programming or configuring a computing device.
[0108] Implementations of the methods disclosed herein may be performed in the operation of such a computing device. The order of the blocks presented in the above examples may be changed—for example, the blocks may be reordered, combined, and / or divided into sub-blocks. Certain blocks or processes may be performed in parallel.
[0109] Unless otherwise specifically stated, conditional language used herein, such as, inter alia, "can," "capable," "possibly," "may," "for example," etc., or otherwise understood in context as used, is generally intended to convey that certain examples include certain features, elements, and / or steps while other examples do not. Thus, such conditional language is generally not intended to imply that one or more examples in any way require features, elements, and / or steps, or that one or more examples must include logic for determining, with or without author input or prompting, whether such features, elements, and / or steps are included in any particular example or are to be performed in any particular example.
[0110] The terms "comprise", "include", "have", etc. are synonymous and are used inclusively in an open manner, and do not exclude additional elements, features, actions, operations, etc. In addition, the term "or" is used in its inclusive sense (rather than in its exclusive sense), so 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 means open and inclusive language, which does not exclude devices that are suitable for or configured to perform additional tasks or steps. Additionally, the use of "based on" means open and inclusive, because the processing, steps, calculations or other actions "based on" one or more of the conditions or values can actually be based on additional conditions or values other than those described. Similarly, the use of "based at least in part" means open and inclusive, because the processing, steps, calculations or other actions "based at least in part" on one or more of the conditions or values can actually be based on additional conditions or values other than those described. The titles, lists and numbers included herein are only for ease of explanation and are not meant to be limited.
[0111] The various features and processes described above can be used independently of each other, or can be combined in various ways. All possible combinations and sub-combinations are intended to fall within the scope of the present disclosure. In addition, in some embodiments, certain methods or processing frames can be omitted. The methods and processes described herein are also not limited to any particular order, and the frames or states associated therewith can be performed in other appropriate orders. For example, the described frames or states can be performed in an order other than the specifically disclosed order, or multiple frames or states can be combined in a single frame or state. Example frames or states can be performed serially, in parallel, or in some other manner. Frames or states can be added to the disclosed examples or removed from the disclosed examples. Similarly, the example systems and components described herein can be configured in a manner different from that described. For example, compared with the disclosed examples, elements can be added, removed, or rearranged.
Claims
1. A method for wireless communication between a displacement input device and a receiver, the method comprising: The displacement input device detects a plurality of displacements within a time period of a first frequency; wirelessly transmitting the plurality of displacements aggregated in groups from the displacement input device to the receiver at a second frequency, wherein the second frequency is lower than the first frequency; wirelessly receiving at the receiver the plurality of displacements aggregated in groups; buffering the plurality of displacements aggregated in groups in a memory coupled to the receiver; The plurality of displacements are transmitted by the receiver to a host at the first frequency.
2. The method according to claim 1, wherein: There are between two and eight displacements in each grouping.
3. The method according to claim 2, wherein: In each grouping there are two, four or eight displacements.
4. The method according to claim 1, further comprising: detecting, by the displacement input device, button or key activation during a time period of the second frequency; wirelessly transmitting the button or key activations in packets from the displacement input device to the receiver at the second frequency; wirelessly receiving the button or key activation at the receiver; as well as The button or key activation is transmitted by the receiver to the host at the same time as a first displacement in the aggregated displacements.
5. The method according to claim 4, further comprising: detecting, by the displacement input device, a second button or key activation during a time period of the second frequency that is the same as the first-mentioned button or key activation; as well as The second button or key activation is saved for subsequent packets transmitted to the receiver such that only a single button or key activation is included in each packet.
6. The method according to claim 1, further comprising: When only displacement data is detected within the time period, generating a reduced-size packet having the displacement data while eliminating packet fields corresponding to other input data; wirelessly transmitting the reduced-size packets from the displacement input device to the receiver; When a button or key or other input data is detected within the time period, generating another input data packet having a packet field for the button or key or other input data; as well as The other input data packets are wirelessly transmitted from the displacement input device to the receiver.
7. The method according to claim 1, further comprising: when only displacement data is detected within the first time period, generating a non-acknowledgement packet having the displacement data and an indication that no acknowledgment should be sent; wirelessly transmitting the non-acknowledgement packet from the displacement input device to the receiver; When only displacement data is detected, transmitting the accumulated displacement data in a subsequent time period so that the n-th time period no acknowledgement packet includes the first displacement data from the first time period and all displacement data up to the n-th time period; as well as After a threshold number of time periods having only displacement data, a confirmation request is transmitted.
8. The method according to claim 1, wherein: The displacement input device is one of the following: a computer mouse, a trackball, a joystick, a game controller, a steering wheel or a touch pad.
9. The method according to claim 1, wherein: The displacement includes at least one of: xy displacement data, z displacement data, scroll wheel rotation data, trackball rotation data, joystick or mini-joystick data, directional pad data, accelerometer data, or tilt sensor data.
10. The method according to claim 1, further comprising: A copy of the packet is transmitted at the second frequency to provide redundancy in the event of a collision.
11. A method for wireless communication between a displacement input device and a receiver, the method comprising: The displacement input device detects a plurality of displacements within a time period of a first frequency; wirelessly transmitting the plurality of displacements aggregated in groups from the displacement input device to the receiver at a second frequency, wherein the second frequency is lower than the first frequency; wirelessly receiving at the receiver the plurality of displacements aggregated in groups; buffering the plurality of displacements aggregated in groups in a memory coupled to the receiver; transmitting, by the receiver to a host, the plurality of displacements at the first frequency; detecting, by the displacement input device, button or key activation during a time period of the second frequency; wirelessly transmitting the button or key activations in packets from the displacement input device to the receiver at the second frequency; wirelessly receiving the button or key activation at the receiver; transmitting, by the receiver, the button or key activation to the host at the same time as a first displacement in the aggregated displacements; detecting, by the displacement input device, a second button or key activation during a period of time of the second frequency that is the same as the first mentioned button or key activation; and saving the second button or key activation for subsequent packets transmitted to the receiver such that only a single button or key activation is included in each packet; When only displacement data is detected within the time period, generating a reduced-size packet having the displacement data while eliminating packet fields corresponding to other input data; wirelessly transmitting the reduced-size packets from the displacement input device to the receiver; When a button or key or other input data is detected within the time period, generating another input data packet having a packet field for the button or key or other input data; wirelessly transmitting the other input data packets from the displacement input device to the receiver; when only displacement data is detected within the first time period, generating a non-acknowledgement packet having the displacement data and an indication that no acknowledgment should be sent; wirelessly transmitting the non-acknowledgement packet from the displacement input device to the receiver; When only displacement data is detected, transmitting accumulated displacement data in subsequent time periods so that the n-th time period no acknowledgement packet includes the first displacement data from the first time period and all displacement data up to the n-th time period; and After a threshold number of time periods having only displacement data, a confirmation request is transmitted.
12. A system for wireless communication between a displacement input device and a receiver, the system comprising: Displacement input device; a displacement input device transceiver installed in the displacement input device; a displacement input device processor installed in the displacement input device; a displacement data input mechanism installed in the displacement input device; Other data input mechanisms installed in the displacement input device; A displacement input device memory coupled to the displacement input device processor, the displacement input device memory comprising a non-transitory computer readable medium having software instructions stored thereon, the software instructions, when executed by the displacement input device processor, causing the displacement input device processor to perform steps comprising: The displacement input device detects a plurality of displacements within a time period of a first frequency; as well as The plurality of displacements aggregated in groups are wirelessly transmitted from the displacement input device to the receiver at a second frequency, wherein the second frequency is lower than the first frequency.
13. The system of claim 12, further comprising: a host transceiver for communicating with a host; Host transceiver processor; a host transceiver memory coupled to the host transceiver processor, the host transceiver memory comprising a non-transitory computer-readable medium having software instructions stored thereon, the software instructions, when executed by the host transceiver processor, causing the host transceiver processor to perform steps comprising: wirelessly receiving at the receiver the plurality of displacements aggregated in groups; buffering the plurality of displacements aggregated in groups in a memory coupled to the receiver; as well as The plurality of displacements are transmitted by the receiver to a host at the first frequency.
14. The system according to claim 12, wherein: The displacement data includes at least one of the following: xy displacement data, horizontal scroll wheel rotation data or vertical scroll wheel rotation data, and cursor button data.
15. The system of claim 12, wherein: The displacement data includes at least one of: joystick or mini-joystick data, direction key data, accelerometer data, tilt sensor data, and steering wheel angle data.
16. The system of claim 13, wherein: The non-transitory computer readable medium of the displacement input device memory also has software instructions stored thereon, which when executed by the displacement input device processor cause the displacement input device processor to perform steps including: detecting, by the displacement input device, button or key activation during a time period of the second frequency; wirelessly transmitting the button or key activations in packets from the displacement input device to the receiver at the second frequency; The non-transitory computer-readable medium of the host transceiver memory further has software instructions stored thereon, which, when executed by the host transceiver processor, cause the host transceiver processor to perform steps including: wirelessly receiving the button or key activation at the receiver; and The button or key activation is transmitted by the receiver to the host at the same time as a first displacement in the aggregated displacements.
17. The system of claim 12, wherein: The non-transitory computer readable medium of the displacement input device memory also has software instructions stored thereon, which when executed by the displacement input device processor cause the displacement input device processor to perform steps including: detecting, by the displacement input device, a second button or key activation during a time period of the second frequency that is the same as the first-mentioned button or key activation; as well as The second button or key activation is saved for subsequent packets transmitted to the receiver such that only a single button or key activation is included in each packet.
18. The system of claim 12, wherein: The non-transitory computer readable medium of the displacement input device memory also has software instructions stored thereon, which when executed by the displacement input device processor cause the displacement input device processor to perform steps including: When only displacement data is detected within the time period, generating a reduced-size packet having the displacement data while eliminating packet fields corresponding to other input data; wirelessly transmitting the reduced-size packets from the displacement input device to the receiver; When a button or key or other input data is detected within the time period, generating another input data packet having a packet field for the button or key or other input data; as well as The other input data packets are wirelessly transmitted from the displacement input device to the receiver.
19. The system of claim 12, wherein: The non-transitory computer readable medium of the displacement input device memory also has software instructions stored thereon, which when executed by the displacement input device processor cause the displacement input device processor to perform steps including: when only displacement data is detected within the first time period, generating a non-acknowledgement packet having the displacement data and an indication that no acknowledgment should be sent; wirelessly transmitting the non-acknowledgement packet from the displacement input device to the receiver; When only displacement data is detected, transmitting the accumulated displacement data in a subsequent time period so that the n-th time period no acknowledgement packet includes the first displacement data from the first time period and all displacement data up to the n-th time period; as well as After a threshold number of time periods having only displacement data, a confirmation request is transmitted.
20. The system of claim 12, wherein: There are between two and eight displacements in each grouping.
Citation Information
Patent Citations
Wireless communication protocol for efficient packet management for input devices
US20240334246A1