Add support for Named Arrays

#10 · open · 1 comments

View on GitHub ↗

NZSmartie

I didn't put enough thought into how to handle selector usages inside of a named array collection. For example, this is pulled from HID Usage Table Review Request 39b ``` c // ... HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE, // NAry HID_LOGICAL_MIN_8(0), HID_LOGICAL_MAX_8(5), HID_REPORT_SIZE(8), HID_REPORT_COUNT(1), HID_COLLECTION(Logical), HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS, HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS, HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS, HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS_WAKE, HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_ALL_EVENTS_WAKE, HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_THRESHOLD_EVENTS_WAKE, HID_FEATURE(Data_Arr_Abs), HID_END_COLLECTION, // ... ``` Which effectively translates to a enum that maps from the values 0 to 5. Something like: ``` python class ReportingState(Enum): NO_EVENTS = 0 ALL_EVENTS = 1 THRESHOLD_EVENTS = 2 NO_EVENTS_WAKE = 3 ALL_EVENTS_WAKE = 4 THRESHOLD_EVENTS_WAKE = 5 } ``` An idea is to generate a Enum subclass at runtime that maps from the logical min/max range to the usage names.

Comments

NZSmartie

The logical collection that is associated with the Named Array usage, should be accessed like a `Report` object. Example: ``` python state = ReportingState.ALL_EVENTS descriptor.reports[0].features.sensor.property_reporting_state.value = state ```