0x8061 · extendedAdjustableReportRate
High-frequency polling control — query supported rates up to 8000 Hz per connection type (wired or gaming wireless), then read or set the active rate.
High-frequency polling control. The feature extends the basic 0x8060 by supporting rates from
125 Hz up to 8000 Hz and by letting the caller query capabilities per connection type — wired
USB vs. Logitech gaming wireless — independently. get_device_capabilities returns the
ExtendedReportRateList bitmask for a given ConnectionType; get_actual_report_rate_list
narrows that to the rates available on the device's current connection. get_report_rate reads
the active ExtendedReportRate for a connection type; set_report_rate applies a new rate to the
current host-side connection.
ConnectionType—Wired(USB) orGamingWireless.ExtendedReportRateList— bitflags for each supported step:HZ_125(8 ms) ·HZ_250(4 ms) ·HZ_500(2 ms) ·HZ_1000(1 ms) ·HZ_2000(500 µs) ·HZ_4000(250 µs) ·HZ_8000(125 µs).ExtendedReportRate— a concrete rate enum covering the same seven steps, used as the argument toset_report_rateand the return value ofget_report_rate.
Spec: Logitech HID++ 2.0 — extendedAdjustableReportRate. Used by: Typed wrapper in
openlogi-hidpp.
Function reference
The ExtendedReportRateFeature wrapper (0x8061) exposes:
Methods
| Function | HID++ fn | Signature | Returns |
|---|---|---|---|
get_device_capabilities | 0 | (connection_type: ConnectionType) | ExtendedReportRateList |
get_actual_report_rate_list | 1 | () | ExtendedReportRateList |
get_report_rate | 2 | (connection_type: ConnectionType) | ExtendedReportRate |
set_report_rate | 3 | (report_rate: ExtendedReportRate) | () |
All methods are async and return Result<…, Hidpp20Error>.
Types
ExtendedReportRateList
Report-rate values supported by a 0x8061 device, as a bitflags bitmask returned by get_device_capabilities and get_actual_report_rate_list.
| Flag | Bit/Value | Description |
|---|---|---|
HZ_125 | 1 << 0 | 125 Hz, equivalent to an 8 ms report interval. |
HZ_250 | 1 << 1 | 250 Hz, equivalent to a 4 ms report interval. |
HZ_500 | 1 << 2 | 500 Hz, equivalent to a 2 ms report interval. |
HZ_1000 | 1 << 3 | 1000 Hz, equivalent to a 1 ms report interval. |
HZ_2000 | 1 << 4 | 2000 Hz, equivalent to a 500 µs report interval. |
HZ_4000 | 1 << 5 | 4000 Hz, equivalent to a 250 µs report interval. |
HZ_8000 | 1 << 6 | 8000 Hz, equivalent to a 125 µs report interval. |
ConnectionType
A connection type used when querying capabilities or the active report rate.
| Variant | Value | Description |
|---|---|---|
Wired | 0 | Wired USB connection. |
GamingWireless | 1 | Logitech gaming wireless connection. |
ExtendedReportRate
A concrete report-rate setting used as the argument to set_report_rate and the return value of get_report_rate.
| Variant | Value | Description |
|---|---|---|
Hz125 | 0 | 125 Hz, equivalent to an 8 ms report interval. |
Hz250 | 1 | 250 Hz, equivalent to a 4 ms report interval. |
Hz500 | 2 | 500 Hz, equivalent to a 2 ms report interval. |
Hz1000 | 3 | 1000 Hz, equivalent to a 1 ms report interval. |
Hz2000 | 4 | 2000 Hz, equivalent to a 500 µs report interval. |
Hz4000 | 5 | 4000 Hz, equivalent to a 250 µs report interval. |
Hz8000 | 6 | 8000 Hz, equivalent to a 125 µs report interval. |
Wire format
All four functions use a 3-byte short request payload. Capability and rate-list responses are read from the first two bytes of the 16-byte long response payload (big-endian u16 bitmask); the active rate response is read from byte 0 only.
get_device_capabilities (fn 0)
Request: [connection_type as u8, 0x00, 0x00]
Response (byte → field):
| Byte | Field | Notes |
|---|---|---|
| 0 | ExtendedReportRateList high byte | Combined with byte 1 as big-endian u16 |
| 1 | ExtendedReportRateList low byte | Bit n set ↔ rate 1 << n is supported |
get_actual_report_rate_list (fn 1)
Request: [0x00, 0x00, 0x00]
Response (byte → field):
| Byte | Field | Notes |
|---|---|---|
| 0 | ExtendedReportRateList high byte | Same big-endian u16 bitmask as fn 0 |
| 1 | ExtendedReportRateList low byte | Reflects rates available on the current connection |
get_report_rate (fn 2)
Request: [connection_type as u8, 0x00, 0x00]
Response (byte → field):
| Byte | Field | Notes |
|---|---|---|
| 0 | ExtendedReportRate discriminant | 0=Hz125 … 6=Hz8000; other values → Hidpp20Error::UnsupportedResponse |
set_report_rate (fn 3)
Request: [report_rate as u8, 0x00, 0x00]
Response: acknowledged (no fields read).
Usage (Rust)
use hidpp::{
device::Device,
feature::extended_report_rate::{
ConnectionType, ExtendedReportRate, ExtendedReportRateFeature,
},
};
// mut device: Device, already created via Device::new(channel, index)
device.enumerate_features().await?;
if let Some(feat) = device.get_feature::<ExtendedReportRateFeature>() {
// Query which rates the wired connection supports.
let caps = feat.get_device_capabilities(ConnectionType::Wired).await?;
println!("Wired capabilities: {:?}", caps);
// Read the rate currently active on whichever connection is live.
let current = feat.get_report_rate(ConnectionType::Wired).await?;
println!("Current rate: {:?}", current);
// Switch to 1000 Hz on the current host-side connection.
feat.set_report_rate(ExtendedReportRate::Hz1000).await?;
}