OpenLogi
功能(Features)

0x1D4B · wirelessDeviceStatus

纯事件功能,当设备无线链路变化(如重连)时发出状态广播,并可请求主机软件重新加载配置。

一个纯事件功能:当设备的无线链路发生变化时(通常是在重连时),设备会发出状态广播,并可请求主机软件重新加载其配置。

OpenLogi 监听该事件,使 GUI 能在设备唤醒或重新配对时刷新,而无需手动重新扫描。

规格: Logitech HID++ 2.0 —— x1d4b wirelessDeviceStatus(v0)。

Function reference

WirelessDeviceStatusFeature (0x1D4B) is event-only — it has no request functions; the host subscribes and reacts to broadcasts.

Methods

FunctionHID++ fnSignatureReturns
listenevent()Receiver<WirelessDeviceStatusEvent>

listen is synchronous and returns an async_channel::Receiver<WirelessDeviceStatusEvent> directly (via the EmittingFeature trait).

Events

WirelessDeviceStatusEvent

VariantPayloadDescription
StatusBroadcastWirelessDeviceStatusBroadcastEmitted whenever a device (re)connects to the host. Always enabled.

WirelessDeviceStatusBroadcast

FieldTypeDescription
statusWirelessDeviceStatusThe status the device reports.
requestWirelessDeviceStatusRequestWhat the device asks of the host.
reasonWirelessDeviceStatusReasonWhy the broadcast was sent.

WirelessDeviceStatus

VariantValueDescription
Unknown0x00Unknown wireless device status.
Reconnection0x01Device is reconnecting.

WirelessDeviceStatusRequest

VariantValueDescription
NoRequest0x00No host action requested.
SoftwareReconfigurationNeeded0x01Host software must reconfigure the device.

WirelessDeviceStatusReason

VariantValueDescription
Unknown0x00Unknown broadcast reason.
PowerSwitchActivated0x01Broadcast was caused by the device power switch.

Wire format

This feature is event-only — the device sends unsolicited broadcasts; the host never sends a request payload. All broadcasts use sub-function index 0x00.

StatusBroadcast (event, sub-fn 0)

The device pushes a short HID++ message whose payload starts at the standard feature-event offset. The listener fires only when the sub-function nibble is 0.

Event payload (byte → field):

ByteFieldTypeValues
0statusWirelessDeviceStatus0x00 = Unknown, 0x01 = Reconnection
1requestWirelessDeviceStatusRequest0x00 = NoRequest, 0x01 = SoftwareReconfigurationNeeded
2reasonWirelessDeviceStatusReason0x00 = Unknown, 0x01 = PowerSwitchActivated

Bytes beyond index 2 are not read by the crate.

Usage (Rust)

use hidpp::{
    device::Device,
    feature::{EmittingFeature, wireless_device_status::{WirelessDeviceStatusEvent, WirelessDeviceStatusFeature}},
};

// let mut device = Device::new(Arc::clone(&channel), device_index).await?;
device.enumerate_features().await?;
if let Some(feat) = device.get_feature::<WirelessDeviceStatusFeature>() {
    let rx = feat.listen();
    while let Ok(event) = rx.recv().await {
        if let WirelessDeviceStatusEvent::StatusBroadcast(broadcast) = event {
            println!("status={:?} request={:?} reason={:?}",
                broadcast.status, broadcast.request, broadcast.reason);
        }
    }
}

本页目录