X-Git-Url: http://git.rot13.org//?p=goodfet;a=blobdiff_plain;f=client%2FUSBClass.py;fp=client%2FUSBClass.py;h=daac2366d68382a14d1e8143deaa396fbff7807b;hp=0000000000000000000000000000000000000000;hb=9efdb05e8177ee6925bda8ca39f0a113505bdf57;hpb=9a322fed4cbb324c54b582672d05f575f49a41cc diff --git a/client/USBClass.py b/client/USBClass.py new file mode 100644 index 0000000..daac236 --- /dev/null +++ b/client/USBClass.py @@ -0,0 +1,35 @@ +# USBClass.py +# +# Contains class definition for USBClass, intended as a base class (in the OO +# sense) for implementing device classes (in the USB sense), eg, HID devices, +# mass storage devices. + +class USBClass: + name = "generic USB device class" + + # maps bRequest to handler function + request_handlers = { } + + def __init__(self, verbose=0): + self.interface = None + self.verbose = verbose + + self.setup_request_handlers() + + def set_interface(self, interface): + self.interface = interface + + def setup_request_handlers(self): + """To be overridden for subclasses to modify self.class_request_handlers""" + pass + + def handle_class_request(self, req): + r = req.get_request() + + if r in self.class_request_handlers: + self.class_request_handlers[r](req) + else: + print(self.name, "unhandled class request:", req) + print(self.name, "stalling") + self.device.stall_ep0() +