class EchoFeature(hid_gadget.HidFeature): REPORT_DESC = hid_descriptors.ReportDescriptor( hid_descriptors.UsagePage(0xFF00), # Vendor Defined hid_descriptors.Usage(0), hid_descriptors.Collection( hid_constants.CollectionType.APPLICATION, hid_descriptors.LogicalMinimum(0, force_length=1), hid_descriptors.LogicalMaximum(255, force_length=2), hid_descriptors.ReportSize(8), hid_descriptors.ReportCount(8), hid_descriptors.Usage(0), hid_descriptors.Input(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute), hid_descriptors.Usage(0), hid_descriptors.Output(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute), hid_descriptors.Usage(0), hid_descriptors.Feature(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute) ) ) def __init__(self): super(EchoFeature, self).__init__() self._input_output_report = 0 self._feature_report = 0 def SetInputReport(self, data): self._input_output_report, = struct.unpack('<Q', data) self.SendReport(struct.pack('<Q', self._input_output_report)) return True def SetOutputReport(self, data): self._input_output_report, = struct.unpack('<Q', data) self.SendReport(struct.pack('<Q', self._input_output_report)) return True def SetFeatureReport(self, data): self._feature_report, = struct.unpack('<Q', data) return True def GetInputReport(self): return struct.pack('<Q', self._input_output_report) def GetOutputReport(self): return struct.pack('<Q', self._input_output_report) def GetFeatureReport(self): return struct.pack('<Q', self._feature_report)
report_desc = hid_descriptors.ReportDescriptor( hid_descriptors.UsagePage(0xFF00), # Vendor Defined hid_descriptors.Usage(0x00), hid_descriptors.Collection( hid_constants.CollectionType.APPLICATION, hid_descriptors.LogicalMinimum(0, force_length=1), hid_descriptors.LogicalMaximum(255, force_length=2), hid_descriptors.ReportSize(8), hid_descriptors.ReportCount(8), hid_descriptors.Input(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute, hid_descriptors.BufferedBytes), hid_descriptors.Output(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute, hid_descriptors.BufferedBytes), hid_descriptors.Feature(hid_descriptors.Data, hid_descriptors.Variable, hid_descriptors.Absolute, hid_descriptors.BufferedBytes))) combo_report_desc = hid_descriptors.ReportDescriptor( hid_descriptors.ReportID(1), report_desc, hid_descriptors.ReportID(2), report_desc) class HidGadgetTest(unittest.TestCase): def test_bad_intervals(self): with self.assertRaisesRegexp(ValueError, 'Full speed'): hid_gadget.HidGadget(report_desc, features={}, interval_ms=50000, vendor_id=0, product_id=0)