DEVICE, PREFERABLY USB DEVICE, CORRESPONDING COMPUTER DEVICE AND METHOD
20230409513 · 2023-12-21
Inventors
Cpc classification
G06F13/385
PHYSICS
International classification
Abstract
A device, preferably USB device, including at least one memory unit which is configured to store a firmware program including instructions and at least one interface unit which is configured to forward data to a main processing device according to the USB specification. At least one processor which is configured to perform the instructions of the firmware program, wherein the processor is configured to be externally triggered by trigger events to send at least one data packet including the data to be forwarded via the interface unit.
Claims
1. A device comprising: a memory unit which is configured to store a firmware program comprising instructions; an interface unit which is configured to forward data to a main processing device according to a USB specification or to another standard, a processor which is configured to perform the instructions of the firmware program; wherein the processor is configured to be externally triggered by trigger events to send a data packet comprising the data to be forwarded via the interface unit.
2. The device according to claim 1, wherein the processor is configured to send the data packet according to a device class definition which is specified by a USB Implementers Forum or according to the other standard; wherein the processor is configured to generate the data to be forwarded according to a pre-given time interval which is shorter than the time between two successive trigger events or to generate time data which indicates the time at which the data to be forwarded has been generated or which allows to calculate this time; and wherein the usage of the pre-given time interval or the usage of the time data is defined according to a custom and/or user defined extension of the device class definition.
3. The device according to claim 2, wherein the processor is configured to detect the data to be forwarded at at least two time points between two successive trigger events; wherein the processor is configured to generate a sequence of the data to be forwarded within the data packet; wherein the place of the data to be forwarded within the sequence corresponds to a respective one of the at least two time points; and wherein a fixed time interval is used in order to specify the at least two time points.
4. The device according to claim 2, wherein the processor is configured to determine a corresponding time data for the data to be forwarded; and wherein the processor is configured to transmit the time data via the interface unit.
5. The device according to claim 1, wherein the device is a mouse device or a keyboard and wherein the device comprises an input element which is configured to detect haptic user input and to generate the data to be forwarded or to deliver data which is used to generate the data to be forwarded.
6. The device according to claim 5, wherein the device is a device which fulfills an HID class specification of the USB specification, wherein the data to be forwarded includes user input data; and wherein an extension of the HID class specification is used to define the time data in more detail.
7. The device according to claim 5, wherein the device comprises a computer mouse; wherein the device comprises a motion sensor which generates the data to be forwarded depending on a position or a movement of the computer mouse; wherein the device is configured to poll the motion sensor more than two times between a first trigger events and an immediately successive trigger event; and/or wherein the data which is polled between the first trigger event and the second trigger event is sent in a report for a time interval which is defined by the first trigger event and the second trigger event.
8. The device according to claim 5, wherein the input element is an analog input element; and wherein the device comprises a transforming unit which transforms an analog output signal of the input device to a digital value.
9. The device according to claim 2, wherein the device is an optical output device; wherein the optical output device comprises a connection port for an electrical and/or mechanical connection to an LED string and/or wherein the optical output device comprises the LED string; and wherein the optical output device comprises a control unit which controls the operation of LEDs of the LED string dependent on data received from a main processing device via the interface or via a further interface.
10. The device according to claim 2, wherein the device fulfills a CDC class specification; wherein an extension of the CDC class specification is used to define usage of the time data in more detail; or wherein alternatively the device fulfills an MSC class specification of the USB specification; and wherein an extension of the MSC class specification is used to define usage of the time data in more detail.
11. according to claim 2, wherein the processor is configured to generate for data to be forwarded within the same data package at least two time data which indicate the time interval between time points relevant for a respective pair of two successive time data to be forwarded or which indicate the time interval between a reference time point and one of the time points relevant for the respective one of the at least two time data; and wherein the processor is configured to transmit the at least two time data via the interface unit.
12. The device according to claim 2, wherein the processor is configured to generate time interval data which is included within a header of the data package which comprises several of the data to be forwarded; and wherein a time interval specified within the time interval data allows the calculation of a time stamp for the data to be forwarded.
13. A computer device, comprising: a USB host processor; a main processor; and a memory; and wherein the memory is configured to include at least one program which enables usage of a graphical user interface; and a) wherein the memory is configured to store a device driver for a device comprising: a memory unit which is configured to store a firmware program comprising instructions; an interface unit which is configured to forward data to a main processing device according to a USB specification or to another standard, a processor which is configured to perform the instructions of the firmware program; wherein the processor is configured to be externally triggered by trigger events to send a data packet comprising the data to be forwarded via the interface unit; wherein the processor is configured to send the data packet according to a device class definition which is specified by a USB Implementers Forum or according to the other standard; wherein the processor is configured to generate the data to be forwarded according to a pre-given time interval which is shorter than the time between two successive trigger events or to generate time data which indicates the time at which the data to be forwarded has been generated or which allows to calculate this time; and wherein the usage of the pre-given time interval or the usage of the time data is defined according to a custom and/or user defined extension of the device class definition; and wherein the memory comprises at least one application program which receives the data to be forwarded and which considers the pre-given interval or the time data for processing of the data to be forwarded; wherein for variant a) the graphical user interface enables a graphical visualization of the data to be forwarded according to the pre-given time interval or according to the time data using a time axis; or b) wherein the memory is configured to store a device driver for one of the following devices: a computer mouse device, wherein data to be forwarded describes a position or a movement of the computer mouse device or pressing of a button of the computer mouse device; and/or a keyboard, wherein the data to be forwarded describes pressing of a key of the keyboard; and/or an optical output device wherein the data to be forwarded describes at least one voltage signal or current signal within the optical output device; wherein for variant b) the graphical user interface enables a graphical visualization of the data to be forwarded using a time axis and using a time interval between trigger events as specified in a USB standard.
14. The computer according to claim 13, wherein the computer device is configured to generate the trigger events according to the USB specification using a time interval of at least 1 millisecond according to USB specification 2.0 or according to a future USB specification which is higher than 3.0 or to another USB specification which defines a time interval less than 125 microseconds.
15. The computer device according to claim 13, comprising a threshold setting unit which allows to set at least one threshold value of the device which forwards the data to be forwarded, wherein the graphical user interface is configured to visualize and/or to set the threshold value.
16. The computer device according to claim 13, wherein the graphical user interface is configured to display at least one of the following performance data: a USB or other standard microframe rate, a momentary USB or other standard microframe rate, a maximum USB or other standard microframe rate a momentary sensor poll rate, a button or an image sensor, an amount of momentary delivered valid data of sensor, USB or other standard valid data sent, and an amount of polls which are left empty.
17. (canceled)
18. A method of operating a computer device, wherein the computer device comprises: a USB host processor; a main processor; and a memory; and wherein the memory is configured to include at least one program which enables usage of a graphical user interface; and a) wherein the memory is configured to store a device driver for a device comprising: a memory unit which is configured to store a firmware program comprising instructions; an interface unit which is configured to forward data to a main processing device according to a USB specification or to another standard, a processor which is configured to perform the instructions of the firmware program; wherein the processor is configured to be externally triggered by trigger events to send a data packet comprising the data to be forwarded via the interface unit; wherein the processor is configured to send the data packet according to a device class definition which is specified by a USB Implementers Forum or according to the other standard; wherein the processor is configured to generate the data to be forwarded according to a pre-given time interval which is shorter than the time between two successive trigger events or to generate time data which indicates the time at which the data to be forwarded has been generated or which allows to calculate this time; and wherein the usage of the pre-given time interval or the usage of the time data is defined according to a custom and/or user defined extension of the device class definition; and wherein the memory comprises at least one application program which receives the data to be forwarded and which considers the pre-given interval or the time data for processing of the data to be forwarded; wherein for variant a) the graphical user interface enables a graphical visualization of the data to be forwarded according to the pre-given time interval or according to the time data using a time axis; or b) wherein the memory is configured to store a device driver for one of the following devices: a computer mouse device, wherein data to be forwarded describes a position or a movement of the computer mouse device or pressing of a button of the computer mouse device; and/or a keyboard, wherein the data to be forwarded describes pressing of a key of the keyboard; and/or an optical output device, wherein the data to be forwarded describes at least one voltage signal or current signal within the optical output device; wherein for variant b) the graphical user interface enables a graphical visualization of the data to be forwarded using a time axis and using a time interval-between trigger events as specified in a USB standard; the method comprising: using a visualization function of the graphical user interface in order to detect an error of the device which forwards the data to be forwarded; and/or using the visualization function of the graphical user interface in order to set at least one threshold value for operation of the device which forwards the data.
19. The method according to claim 18, wherein the visualization function is an auxiliary function of the device which forwards the data to be forwarded and wherein a main function of the device which forwards the data to be forwarded is an input function of haptic data from a user or an optical output function.
Description
[0085] For a more complete understanding of the presently disclosed concepts and the advantages thereof, reference is now made to the following description in conjunction with the accompanying drawings. The drawings are not drawn to scale. In the drawings the following is illustrated in:
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0099] Input device I may be: [0100] a computer mouse, comprising for instance an electronic and/or electromechanical movement detection unit, at least two switches (e.g. micro switch, momentary contact push button switch) but usually less than 20 switches or less than 10 switches and/or a mouse wheel or mouse ball within a casing that is adapted to the hand of a user U, [0101] a trackball device, comprising for instance a rotatable ball and several electrical input switches. [0102] an electronic pen, comprising for instance a sending and/or receiving unit, an optional power unit and/or a pressure sensor, etc., or [0103] a keyboard KB, comprising for instance more than 100 switches, for instance alphanumerical switches.
[0104] There may be a bus 120 between processor P and memory M. Further units of computer device 110 are not shown but are known to the person skilled in the art, for instance a power supply unit, an optional internet connection, etc. Alternatively, a server solution may be used that uses calculation power and/or memory space available on the internet supplied by other service providers or on an intranet of a company.
[0105]
[0106] Computer device 110 may comprise: [0107] A processor 224, for instance a CPU (Control Processing Unit) configured to execute instructions, especially for performing the disclosed method steps. [0108] A memory 226, M1 that is configured to store the instructions and to store data that used or generated during the execution of the instructions. Memory 226 may include non-volatile memory and/or volatile memory. [0109] At least one computer program product stored in memory 226: [0110] OS (Operating System), for instance Windows (may be a trademark) or IOS (may be a trademark) or LINUX (may be a trademark), and/or [0111] BIOS (Basic Input Output System) may be part of the OS, and/or [0112] At least one or several application programs AP, and/or [0113] at least one or several device drivers 130, and/or [0114] an optional parser program 232 for implementing parts of the USB specification, [0115] A USB host function 228, which may be integrated in the CPU, 224 or an MCU or which may be implemented on a separate MCU (Micro Controller Unit) or on an external USB PHY (USB Physical IC controlled by CPU or by an MCU), [0116] A USB interface unit IF1 which works according to the USB specification, for instance according to USB 1.0, 2.0 or 3.0, [0117] An optional threshold setting unit THU which allows to set the threshold value mentioned in the first part of the document. Threshold setting unit THU can be implemented either in Hardware and/or in Software, for instance in device driver 230 and/or in the application program AP. Alternatively, threshold setting unit THU may be implemented in the Firmware on the side of the peripheral device and/or in
[0118] Hardware of the peripheral device, for instance input device I.
[0119]
[0125] All input elements may comprise the same elements, for instance a push button plate in addition to push button 317. A key code may be defined and used for each push button. Push button 317 may belong to a left mouse button of input device I or of mouse device I.
[0126] Memory M2 or 318 may comprise a firmware 322, FW that includes operation instructions for the processor or controller 316. The methods mentioned in the following may be executed if the instructions of firmware 322, FW are processed by the processor or controller 316. Alternatively, a circuit without a processor and a controller 316 may be used, for instance an FPGA (Field Programmable Gate Array), PLA (Programmable Logical Array), ASIC (Application Specific Integrated Circuit), etc. A finite state machine may be realized using a processor or a device without a processor.
[0127] In more generally words, device I may be a USB device, comprising: [0128] At least one memory unit M2 which is configured to store a firmware program FW comprising instructions, [0129] At least one interface unit IF2 which is configured to forward data to a main processing device 110 according to the USB specification, [0130] At least one processor MCU which is configured to perform the instructions of the firmware program FW, wherein the processor MCU is configured to be externally triggered by trigger events Tr1, TR2 to send at least one data packet DP1 comprising the data DS1 to DSn to be forwarded via the interface unit IF2.
[0131] A first embodiment relates to an implicit operation mode of considering time aspects, see description of
[0135] Device I may be a device which fulfills the HID and/or HID/CDC and/or the MSC class specification of the USB specification. The data DS1 to DSn to be forwarded may include user input data. An extension of the HID and/or HID/CDC and/or the MSC class specification may be used to define the structure of data DS1 to DSn and/or the structure of time data TD1, TD2 in more detail, see
[0136] Device I may comprise or may be a computer mouse device I. The data DS1 to DSn to be forwarded may describe a position or a movement of the computer mouse I or the pressing of a button of the computer mouse I.
[0137] Analog switches/push buttons may be used in keyboard KB. A transformation unit TrU, may be used to convert the analog values to digital values. Transformation unit TrU may comprise an ADC (Analog Digital Converter). The bit-width of the ADC may be as specified in the first part of the description, e.g. 10 bit.
[0138]
[0139] In more general words the following is valid for the first embodiment: [0140] The processor MCU is configured to detect the data DS1 to DSn to be forwarded at at least two time points t1 to tn between two successive trigger events Tr1, Tr2, [0141] The processor MCU is configured to generate a sequence of the data DS1 to DSn to be forwarded within the data packet DP1, see
[0144] The time interval In may be specified by the value of time interval data TIN which may be transmitted once for each data packet DP1 or only when the length or duration of the time interval In has to be changed. Time interval In is less than the interval IB between two trigger events Tr1 and Tr2. Interval IB is 1 ms (millisecond) or 125 us (microseconds) according to the USB specification. Time interval In may be half or less than half, a third or less than a third, etc. a tenth or less than a tenth compared to the interval IB which is used at the moment for the transmission of input data which belongs to time points t1 to tn. It goes without saying that different kinds of data reduction may be used. It is for instance possible to transmit only values which are different from zero. Furthermore, it is possible to indicate the position within the sequence by additional position data.
[0145] It is possible to use at least one counter in order to determine the duration of time interval In for each sampling event. The counter may be incremented or decremented using a constant clock rate. The counter may be set to zero or to a start value again and again. Alternatively, other modes of counter setting may be used.
[0146] Exemplary, the input data may be data of a mouse wheel and/or of position (x, y (z)) or of position-change (x, y (z)) of the mouse device I or a key code of a key pressed on the mouse device I. It is for instance possible to sample the x-position or the change of the x-position as is apparent from
[0147] Thus,
[0148]
[0149] In the second embodiment, the processor MCU is configured to determine a corresponding time data TD1, TD2 for the data DS1 to DSn to be forwarded.
[0150] Furthermore, the processor MCU is configured to transmit time data TD1, TD2 via the interface unit IF2. The description of
[0151] An interval IB between two further successive trigger events Tr3 and Tr4 is 1 ms (millisecond) or 125 us (microseconds) according to the USB specification. Thus, all time intervals for events between trigger events Tr1 and Tr2 may be less than IB. There are the following possibilities for generating time data TD1, TD2: [0152] To specify the time with regard to a reference value, for instance with regard to trigger event Tr3, see interval In1 for t10 (TD1) and interval In2 for t12 (TD2), [0153] To specify the interval between successive time points t10, t12, e.g. interval In3 (TD2), [0154] Other possibilities.
[0155] It is possible to use at least one electrical counter in order to determine the values for the duration of the time intervals. The counter may be incremented or decremented using a constant clock rate.
[0156] Exemplary, the input data may be data of a mouse wheel and/or of position (x, y (z)) or position (x, y (z)) change of the mouse device or a key code of a key pressed on the mouse. It is for instance possible that the user clicks the left mouse button at time t10.
[0157]
TABLE-US-00001 typedef struct { union { unsigned char u8Data[8]; struct { u8 buttons1; (e.g. value for left mouse button) u8 buttons0; (e.g. value for right mouse button) s16 horizontal; (e.g. value for horizontal position of mouse) s16 vertical; (e.g. value for vertical position of mouse) u8 zWheel; (e.g. value giving rotation position of mouse wheel) u8 ACPan; (e.g. horizontal scan position) }; }; } MOUSE_REPORT;
[0158] The form of the definition is for instance known from the computer language C, C#, Swift, etc. There is the following meaning of the terms: [0159] u8: unsigned 8 bit value, [0160] s16: signed 16 bit value, and [0161] DATA[n]: data field comprising n values.
TABLE-US-00002 typedef struct { union { unsigned char u8Data[8]; unsigned short u16Data[4]; unsigned short u32Data[2]; }; } DATA_STRUCT;
[0162] The data structure DATA_STRUCT may be used for the transmission of physical parameters, for instance of temperature values or other values.
TABLE-US-00003 typedef struct { unsigned char mymodkey; (e.g. keycode of modifier key, e.g. Shift) unsigned char reserved; (e.g. for future use) unsigned char mykey[6]; (e.g. up to six keycodes of normal keys) } KEYBOARD_REPORT;
[0163] Other appropriate definitions are of course possible as well.
[0164] Data, especially input data or measurement data (for instance from an optical output device 800 as illustrated in
[0165] There may be the following possibilities to transmit time related data In, TD1, TD2 within a data package DP1 which includes also the data DS1 to DSn to be transmitted, e.g. input data: [0166] Only within header H1, especially value of interval In in time interval data TIN, [0167] Within each data DS1 to DSn, for instance time data TD1 in data DS1 and time data TD2 in data DS2 and so on, (definition of data structure should be adapted in this case) [0168] Between data DS1 to DSn, for instance time data TD1 between data DS1 and data DS2, time data TD2 between data DS2 and data DS3, and so on, [0169] After or before data structs DS1 to DSn within the same data package.
[0170] Furthermore, it is possible to transmit the time related data TD1 to TD2 or TIN in a separate data package which does not include the data DS1 to DSn to be forwarded, i.e. the input data. However, the same order may be used in the two sequences to map input data to time related data.
[0171] A further possibility is to consider the time implicitly and to not to transmit time related data at all, see for instance
[0172] Time related data may be transmitted in header H1, see for instance time interval data TIN. The header may be valid for all data included within one data packet DP1.
[0173] Thus, there is a first possibility (see also
[0176] A second possibility (see also
[0179] A third possibility is the implicit consideration of further time aspects as mentioned above.
[0180]
[0181] The following is valid for the graphical user interface 700 if used in the first embodiment (
[0189] A third embodiment relates to the usage of the graphical user interface 700 without extending the USB specification and/or an USB device class specification, e.g. HID, CDC, MSC, with regard to the consideration of additional time aspects. The following may be valid for the third embodiment.
[0190] Computer device 110 may comprise: [0191] USB host function 228, [0192] Main processor 224, [0193] Memory 226, [0194] Memory 226 is configured to include at least one program which enables the usage of graphical user interface 700, [0195] Memory 226 is configured to store device driver 230 for one of the following devices: [0196] A computer mouse device I, see
[0200] In more detail the following may be valid for all three embodiments of the graphical user interface 700. Graphical user interface 700 may comprise: [0201] A coordinate system comprising a horizontal x-axis 702 (time) and a vertical y-axis 704 (data value), [0202] several buttons: [0203] button B1 (start of graphical representation/visualization), and/or [0204] button B (end of measurement, close window or App), and/or [0205] button B3 (apply new configuration to incoming values). [0206] A submenu 720 allowing to adjust further settings, for instance to set a threshold value for the device I, KB or 800 and to change the kind of representation of the data, for instance in addition to or alternatively to the graph 710 a table of values of input and/or measurement data including values of time data.
[0207]
[0208] Furthermore and optionally, the graphical user interface 700 may be configured to display performance data of the device. The following data may be displayed for a computer mouse device (I) or for other devices. At least one, at least two, at least three, at least four or all of the following performance data may be displayed for instance: [0209] the USB or other standard microframe rate, [0210] the momentary USB or other standard microframe rate, [0211] the maximum USB or other standard microframe rate [0212] momentary sensor poll rate, preferably a button or an image sensor, [0213] amount of momentary delivered valid data of sensor, [0214] USB or other standard valid data sent, [0215] amount of polls which are left empty.
[0216] This may enable advanced maintenance and/or advanced setting of at least one threshold value. The following is an example for a table which may be displayed in GUI 700:
TABLE-US-00004 Event Current/momentary value USB Polls 1000/8K Sensor Polls 10000 Sensor Valid Data Read 4000 USB Valid Data Send 4000 USB Empty Data Send 0/1000
[0217] The sensor may be a motion sensor which delivers values for the x-motion and/or for the y-motion of the mouse. The sensor may be able to output a sum of values of motion data. However, is polling is fast enough summing up of values may not be necessary any more. A polling rate of 10000 per second is only an example. Other polling rates may be possible as well, for instance within the range of 5000 to 30000 times per second.
[0218]
[0219] Optical output device 800 may comprise a control unit CPU8 which controls the operation of LEDs LED1a to LED2n (n is a natural number, for instance within the range of 1 to 10000 or within the range of 1 to 1000 or within the range of 1 to 100) of the at least one LED string Str1, Str2 dependent on data received from a main processing device, for instance computer device 110, via an interface IF3.
[0220] LED strings Str1, Str2, Str-n (n is a natural number, for instance 6 or more, or more than 24) may use WS281x, for instance WS2812 or other programmable LEDs that have integrated own capabilities in the strip. This is also known as addressable RGB (Red Green Blue) Strips.
[0221] LED strings Str1, Str2 including a serial connection of LEDs may be used for instance in order to lighten the keys of a keyboard KB, see for instance WO 2014/131699 A1, especially second aspect. Further examples of LED strings Str1, Str2 are known from WO 2020/147930 A1. Both documents are included by reference herewith for all purposes, especially for all legal purposes.
[0222] It is possible to use graphical user interface (GUI) 700 in order to display the signal at the beginning of the strip, for instance a current signal, a voltage signal, a resistance signal etc. The measurement data may be transmitted using time aspects mentioned above for the first embodiment (
[0223] The optical device 800 may fulfill the HID and/or HID/CDC and/or MSC specification or another USB device class specification which may be extended or not, especially with regard to the transmission of the measurement data. An extension of the HID and/or HID/CDC and/or MSC class specification may be used to define the structure of data DS1 to DSn and/or the structure of time data TD1, TD2 in more detail.
[0224]
[0225] Thus, the data to be forwarded describes the pressing of a key K1 to Ky of keyboard KB. Keyboard KB, especially an alpha numeric keyboard, may have at least 50 key switches, usually not more than 200 key switches or not more than 2000 key switches/push buttons. Keyboard KB may be a device separate from computer device 110 or it may be an integral part of computer device 110. Alternatively, keyboard KB may have less switches/push buttons. A keypad may have between 10 and 20 key switches, especially a keypad used for entrance control.
[0226] For instance, keyboard KB may comprise of at least one, two, three, four, five or all of: [0227] at least 25 keys for the input of letters a, b, c etc., [0228] at least 10 keys for the input of digits 0, 1, 2, etc., preferably combined with further input characters, for instance !, , $ etc. [0229] at least 10 keys for functions, i.e. function F1, function F2, etc., [0230] at least 10 keys of a keypad for entering numbers, i.e. digits 0, 1, 2, etc., especially a further group of these numbers, [0231] no further input characters are used for the keys of the further group, [0232] modifier keys as for instance defined in the HID (Human Interface Device) specification, i.e. left CTRL, left SHIFT, left ALT, left GUI (Graphic User Interface), i.e. for instance Microsoft left Win key, Macintosh Left Apple key, Sun left Meta key etc., right CTRL, right SHIFT, right ALT, right GUI, -auxiliary keys: Caps Lock, Tab, Spacebar, Page Down, Page Up, Right Arrow, Left Arrow, Up Arrow, Down Arrow.
[0233] Alternatively, a keypad, a game console, a game pad or a computer mouse that has a lot of buttons, for instance more than 10 buttons may be used in the same way as keyboard KB.
[0234] Data transfer of input data from keyboard KB to main computer device 110 may be realized according to the first embodiment (
[0235] The third embodiment may be valid for keyboard KB as well, i.e. using graphical user interface 700 with timing aspects only as defined in the USB specification, i.e. using the basis interval IB of the USB specification without an extension.
[0236] Analog switches/push buttons may be used in keyboard KB. Transformation unit TrU, see
[0237] In other words, USB full speed FS micro frame (polling) is defined to be once every 1 millisecond for 12 Mbit/s (Megabit per second) bandwidth. USB high speed HS micro frame (polling) is defined to be once every 125 microseconds for a bandwidth of 480 Mbit/s or 60 MB/s (Megabyte per second)
[0238] Thus, full speed FS has a limitation to 1 kHz (Kilohertz). The invention is based for instance on the following idea: If the delay of 1 ms (millisecond) is accepted and if more data is transferred within the basic interval IB considering further time aspects then it is possible to break the limitation, i.e. there may be a higher time resolution within the data packet DP1 or within a series of data packets DP1 which are transferred each millisecond. If for example the time interval of 1 ms is separated or divided into 10 segments or sub-intervals then it is possible to have a time period of 100 microseconds between two subsequent data values corresponding to 10 kHz. Factor 100 gives 100 kHz and factor 1000 for dividing gives 1 MHz and so on. This may enable a very high time-resolution of input values.
[0239] The same idea holds for high speed HS USB where chips are more expensive compared to chips for full speed FS USB. High speed HS has a specified limitation to 8 kHz (Kilohertz). If the delay of 125 microseconds is accepted and if more data is transferred within the basic interval IB considering further time aspects then it is possible to break the limitation, i.e. there may be a higher time-resolution within the packet DP1 or within the packets DP1 of a series of data packets which are transferred each millisecond. If for example the time interval of 1 microsecond is separated or divided into 10 segments or sub-intervals then it is possible to have a time period of 12.5 microseconds between two subsequent data values corresponding to 80 kHz. Factor 100 gives 800 kHz and factor 1000 for dividing gives 8 MHz and so on. This may enable extremely high time-resolution of input values.
[0240] This idea is for instance especially interesting for computer mouse devices I. Especially for high end devices which are used for instance by gamers or users of other E-sports (electronic sports). Furthermore, this may be relevant for keyboard KB, touchscreens, electronic pen devices, etc.
[0241] It is possible to mitigate the delay of 1 ms or of 125 microseconds if for instance analog technique is used for detection of movements of an input device I, KB, for detection whether a button 317, K1 is pressed, etc. Analog technique may allow shorter times for the detection of input events compared to mainly digital approaches. It is for instance possible to detect a signal in analog technique within 200 microseconds compared to a detection based on digital technique in 10 ms to 20 ms. Analog switches may be used for instance which have an analog output signal which indicates how deep the switch is pressed. The analog output signal may comprise more than two values, for instance at least three values, at least four values at least eight values and so on, especially if the analog signal is converted to a digital signal for further processing using for instance an analog digital converter ADC or another device.
[0242] The transmitted data DS1 to DSn which has a high time resolution may be used for at least one of the following purposes or for multi-purposes, for instance: [0243] processing the data in order to detect events with a fine resolution in time, for instance the time point at which a button of a mouse or a keyboard was pressed by a gamer, an/or [0244] for detecting the exact movement of an input device used by user, especially also detecting micro movements, and/or [0245] displaying the data to a user or to a service person who may use the data in order to analyze where an error comes from and/or for adjusting control parameters and/or threshold values of the input device.
[0246] A special protocol may be used to represent single data values, for instance a serial protocol. Bit values may be encoded using for instance ASCII (American Standard Code for Information Interchange) code or other codes, e.g. Huffman Code etc. The protocol may be a proprietary protocol of a company or may be a standard protocol which was agreed to by at least two companies.
[0247] Timing information may be encoded implicitly by a fixed timing to save transmission capacity and memory space for storing the data. Alternatively, timing data may be transmitted in data pairs or separately for data value blocks within one data package DP1.
[0248] Movement data of a mouse input device I may be transmitted for instance. It may be a non-preferred approach to transmit the x-movement values and the y-movement value for two subsequent micro frames A and B. For micro frame A two old values may be transmitted and for micro frame B two sum values may be transmitted for the x-movement and the y-movement which has took place in the meantime, i.e. between the transmission for micro frame A and for micro frame B. However, this can result in a comparably coarse detection precision. If it is assumed that the mouse is moved 10 pixels in x-direction and 15 pixels opposite to the x-direction the result of summing up the pixels is 5 pixels. Contrary, using the new approach each movement, especially a movement by each pixel may be detected and the corresponding event may be stored and/or transmitted exactly, i.e. first pixel in x-direction, second pixel in x-direction etc. until tenth pixel in x-direction, first pixel opposite the x-direction, second pixel opposite to the x-direction and so on until the 15th pixel opposite to the x-direction.
[0249] The transmitted values are received for the corresponding time frames and a program may calculate the correct time stamps if an implicit timing scheme is used. If timing data is transmitted explicitly, the program may use the exact timing data for further processing of the data values which are also transmitted.
[0250] The idea may be used together with the well-known USB (Universal Serial Bus) protocol, i.e. USB 1.0, 2.0 (Apr. 27, 2000, Revision 2.0), 3.0 or higher developed by the companies Compaq, Hewlett-Packard, Intel, Lucent, Microsoft, NEC and Philips. This USB protocol is widely used in the computer industry, in the smartphone industry and in other industries.
[0251] Furthermore, the idea may be used together with USB Device Class Definition(s), for instance: [0252] with Device Class Definition for Human Interface Devices (HID), Firmware specification May 27, 2001, Version 1.1, USB Implementer's Forum, [0253] with Universal Serial Bus Class Definitions for Communication Devices (CDC) 1.2, for instance Revision 1.2 (Errata 1), Nov. 3, 2010, USB Implementer's Forum, and/or [0254] with Universal Serial Bus Mass Storage Class (MSC) Specification overview, Revision 1.3, Sep. 5, 2008, USB Implementer's Forum and the corresponding documents:
[0255] USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport,
[0256] USB Mass Storage Class Bulk-Only (BBB) Transport,
[0257] USB Mass Storage Class UFI Command Specification,
[0258] USB Mass Storage Class Bootability Specification,
[0259] USB Mass Storage Class Compliance Test Specification,
[0260] USB Lockable Storage Devices Feature Specification (LSD FS).
[0261] However, HID may not only be relevant for USB but also for other protocols, for instance for the Bluetooth protocol of the Bluetooth Special Interest Group (SIG). Appropriate and/or corresponding changes similar to the changes mentioned above may also be made for Bluetooth or other protocols,
[0262] The invention may be use in all cases in which a time slot is defined in a standard and in which exact timing should also be used for data which is transmitted within a basic time slot. Examples for such standards are: [0263] RS-485 (EIA-485, Electronic Industries Alliance), [0264] CAN (Controller Area Network) which is widely used in automotive applications, [0265] etc.
[0266] CAN is specified in ISO (International Standardization Organization) 11898-1 to ISO 11898-6 and in SAE (Society of Automotive Engineers) J2284- J2284-5.
[0267] Although embodiments of the present disclosure and their advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made therein without departing from the spirit and scope of the disclosure as defined by the appended claims. For example, it will be readily understood by those skilled in the art that many of the features, functions, processes and methods described herein may be varied while remaining within the scope of the present disclosure. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the system, process, manufacture, method or steps described in the present disclosure. As one of ordinary skill in the art will readily appreciate from the disclosure of the present disclosure, systems, processes, manufacture, methods or steps presently existing or to be developed later that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present disclosure. Accordingly, the appended claims are intended to include within their scope such systems, processes, methods or steps. The embodiments mentioned in the first part of the description may be combined with each other. The embodiments of the description of Figures may also be combined with each other. Further, it is possible to combine embodiments mentioned in the first part of the description with examples of the second part of the description which relates to