Usb HID电源设备规格示例不';t表示数值

Usb HID电源设备规格示例不';t表示数值,usb,hid,Usb,Hid,我正在尝试报告电池供电的HID设备的电池信息(插入时为USB,否则为BLE)。通过阅读的附录A中的示例中的报告描述符,我看到了两个向主机报告电池数据的集合: UsagePage(Power Device), Unit(none), Usage(PresentStatus), Collection(Logical), ; Present status collection Usage(Good), UsagePage(Battery System), Usage(BelowRema

我正在尝试报告电池供电的HID设备的电池信息(插入时为USB,否则为BLE)。通过阅读的附录A中的示例中的报告描述符,我看到了两个向主机报告电池数据的集合:

UsagePage(Power Device), Unit(none),
Usage(PresentStatus), Collection(Logical), ; Present status collection
    Usage(Good),
    UsagePage(Battery System), Usage(BelowRemainingCapacityLimit),
    Usage(Charging), Usage(Discharging),
    ReportSize(1), ReportCount(4), Logical Minimum (0), Logical Maximum (1), Unit(0),
    Feature(Constant, Variable, Absolute, Volatile),
End Collection(), ; End of Present Status collection
UsagePage(Power Device),
Usage(ChangedStatus), Collection(Logical), ; Changed Status collection
    Usage(Good),
    UsagePage(Battery System), Usage(BelowRemainingCapacityLimit),
    Usage(Charging), Usage(Discharging),
    ReportSize(2), ReportCount(4), Logical Minimum (0), Logical Maximum (1),
    Input(Data, Variable, Absolute, Volatile),
End Collection(), ; End of Changed Status collection
我只有一个LiPo电池和一个二极管给它充电,所以我计划去掉大部分剩余的电源设备,因为我想我可以从电池系统使用页面上得到我想要的一切。因此,我看到的东西更像(请随时告诉我,这是否从一开始就注定了):

查看规范中的报告,我有两个问题:

  • 为什么CapacityMode的大小仅为1?数值是0-3,不是2号吗

  • ChangedStatus集合中实际包含哪些内容?我看到报告大小是2而不是1-报告上的旧状态也是这样吗?我在规范的其他地方没有看到任何迹象。事实上,规范说ChangedStatus元素应该是布尔值,大小应该是1,不是吗

  • CapacityMode可以有0到3的值,但是如果您的设备只支持模式0(以毫安小时为单位测量的容量)或模式1(以毫瓦小时为单位测量的容量),那么我认为可以使用1位宽字段来记录这一点。您甚至可以定义一个仅存储值0或1的8位字段,即使它最多可以保存255个值

  • 我认为,这些示例的作者可能一直试图将字段对齐为8位,方法是将4个状态位中的每一个都设置为2位宽—因此,在报告中,0将存储为00,1将存储为01。或者它可能是一个打字错误——我在USB规范中看到了许多其他的例子,其中有错误


  • 啊,我不知道你可以设置比它们的值更宽的位域。。。那很方便。
    UsagePage(Battery System), Usage(BelowRemainingCapacityLimit),
    Usage(Charging), Usage(Discharging),
    ReportSize(1), ReportCount(3), Logical Minimum (0), Logical Maximum (1), Unit(0),
    Feature(Constant, Variable, Absolute, Volatile),