Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: tools/usb_gadget/hid_echo_gadget.py

Issue 423473008: [usb_gadget p13] Replace LUFA with UsbTestGadget in HidConnection tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/usb_gadget/__main__.py ('k') | tools/usb_gadget/usb_constants.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """A HID-class echo device.
6
7 This module provides a HID feature and HID device that can be used as an
8 echo test for HID drivers. The device exposes vendor-specific input, output
9 and feature usages that transmit 8 bytes of data. Data written sent as an
10 output report is echoed as an input report. The value of the feature report
11 can be written and read with control transfers.
12 """
13
14 import struct
15
16 import hid_constants
17 import hid_descriptors
18 import hid_gadget
19 import usb_constants
20
21
22 class EchoFeature(hid_gadget.HidFeature):
23
24 REPORT_DESC = hid_descriptors.ReportDescriptor(
25 hid_descriptors.UsagePage(0xFF00), # Vendor Defined
26 hid_descriptors.Usage(0),
27 hid_descriptors.Collection(
28 hid_constants.CollectionType.APPLICATION,
29 hid_descriptors.LogicalMinimum(0, force_length=1),
30 hid_descriptors.LogicalMaximum(255, force_length=2),
31 hid_descriptors.ReportSize(8),
32 hid_descriptors.ReportCount(8),
33 hid_descriptors.Usage(0),
34 hid_descriptors.Input(hid_descriptors.Data,
35 hid_descriptors.Variable,
36 hid_descriptors.Absolute),
37 hid_descriptors.Usage(0),
38 hid_descriptors.Output(hid_descriptors.Data,
39 hid_descriptors.Variable,
40 hid_descriptors.Absolute),
41 hid_descriptors.Usage(0),
42 hid_descriptors.Feature(hid_descriptors.Data,
43 hid_descriptors.Variable,
44 hid_descriptors.Absolute)
45 )
46 )
47
48 def __init__(self):
49 super(EchoFeature, self).__init__()
50 self._input_output_report = 0
51 self._feature_report = 0
52
53 def SetInputReport(self, data):
54 self._input_output_report, = struct.unpack('<Q', data)
55 self.SendReport(struct.pack('<Q', self._input_output_report))
56 return True
57
58 def SetOutputReport(self, data):
59 self._input_output_report, = struct.unpack('<Q', data)
60 self.SendReport(struct.pack('<Q', self._input_output_report))
61 return True
62
63 def SetFeatureReport(self, data):
64 self._feature_report, = struct.unpack('<Q', data)
65 return True
66
67 def GetInputReport(self):
68 return struct.pack('<Q', self._input_output_report)
69
70 def GetOutputReport(self):
71 return struct.pack('<Q', self._input_output_report)
72
73 def GetFeatureReport(self):
74 return struct.pack('<Q', self._feature_report)
75
76
77 class EchoGadget(hid_gadget.HidGadget):
78
79 def __init__(self):
80 self._feature = EchoFeature()
81 super(EchoGadget, self).__init__(
82 report_desc=EchoFeature.REPORT_DESC,
83 features={0: self._feature},
84 packet_size=8,
85 interval_ms=1,
86 out_endpoint=True,
87 vendor_id=usb_constants.VendorID.GOOGLE,
88 product_id=usb_constants.ProductID.GOOGLE_HID_ECHO_GADGET,
89 device_version=0x0100)
90 self.AddStringDescriptor(1, 'Google Inc.')
91 self.AddStringDescriptor(2, 'HID Echo Gadget')
92
93
94 def RegisterHandlers():
95 from tornado import web
96
97 class WebConfigureHandler(web.RequestHandler):
98
99 def post(self):
100 server.SwitchGadget(EchoGadget())
101
102 import server
103 server.app.add_handlers('.*$', [
104 (r'/hid_echo/configure', WebConfigureHandler),
105 ])
OLDNEW
« no previous file with comments | « tools/usb_gadget/__main__.py ('k') | tools/usb_gadget/usb_constants.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698