cadf106658090442a6aee8898cf9362987967f5c
[goodfet] / client / USBConfiguration.py
1 # USBConfiguration.py
2 #
3 # Contains class definition for USBConfiguration.
4
5 class USBConfiguration:
6     def __init__(self, configuration_index, configuration_string, interfaces):
7         self.configuration_index        = configuration_index
8         self.configuration_string       = configuration_string
9         self.configuration_string_index = 0
10         self.interfaces                 = interfaces
11
12     def set_configuration_string_index(self, i):
13         self.configuration_string_index = i
14
15     def get_descriptor(self):
16         interface_descriptors = bytearray()
17         for i in self.interfaces:
18             interface_descriptors += i.get_descriptor()
19
20         total_len = len(interface_descriptors) + 7
21
22         d = bytes([
23                 7,          # length of descriptor in bytes
24                 2,          # descriptor type 2 == configuration
25                 total_len & 0xff,
26                 (total_len >> 8) & 0xff,
27                 len(self.interfaces),
28                 self.configuration_index,
29                 self.configuration_string_index
30         ])
31
32         return d + interface_descriptors
33