<p>tsaitgaist has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/15176">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">USB: place version string in interface<br><br>previously the version string was in the iConfiguration field of a<br>dedicated USB configuration.<br>this configuration had no interface, but the USB specification<br>requires at least one interface.<br>an interface has been added to this configuration.<br>the version string is now in the iInterface field, and the<br>iConfiguration field contains "firmware version".<br>the USB specification does not require an end-point, and none are<br>present.<br><br>Change-Id: I99361e313979711f4f45ad424a52faa3ddd7c558<br>---<br>M firmware/libcommon/source/usb.c<br>1 file changed, 39 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/76/15176/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libcommon/source/usb.c b/firmware/libcommon/source/usb.c</span><br><span>index 9d3072f..e75646e 100644</span><br><span>--- a/firmware/libcommon/source/usb.c</span><br><span>+++ b/firmware/libcommon/source/usb.c</span><br><span>@@ -62,6 +62,7 @@</span><br><span> CARDEM_USIM4_INTF_STR,</span><br><span> // runtime strings</span><br><span> SERIAL_STR,</span><br><span style="color: hsl(120, 100%, 40%);">+ VERSION_CONF_STR,</span><br><span> VERSION_STR,</span><br><span> // count</span><br><span> STRING_DESC_CNT</span><br><span>@@ -69,7 +70,7 @@</span><br><span> </span><br><span> /** array of static (from usb_strings) and runtime (serial, version) USB strings</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">-static const unsigned char *usb_strings_extended[ARRAY_SIZE(usb_strings) + 2];</span><br><span style="color: hsl(120, 100%, 40%);">+static const unsigned char *usb_strings_extended[ARRAY_SIZE(usb_strings) + 3];</span><br><span> </span><br><span> /* USB string for the serial (using 128-bit device ID) */</span><br><span> static unsigned char usb_string_serial[] = {</span><br><span>@@ -110,6 +111,26 @@</span><br><span> };</span><br><span> </span><br><span> /* USB string for the version */</span><br><span style="color: hsl(120, 100%, 40%);">+static const unsigned char usb_string_version_conf[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_LENGTH(16),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBGenericDescriptor_STRING,</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('f'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('i'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('r'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('m'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('w'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('a'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('r'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('e'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE(' '),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('v'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('e'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('r'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('s'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('i'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('o'),</span><br><span style="color: hsl(120, 100%, 40%);">+ USBStringDescriptor_UNICODE('n'),</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> static const char git_version[] = GIT_VERSION;</span><br><span> static unsigned char usb_string_version[2 + ARRAY_SIZE(git_version) * 2 - 2];</span><br><span> </span><br><span>@@ -582,21 +603,34 @@</span><br><span> typedef struct _SIMTraceDriverConfigurationDescriptorVersion {</span><br><span> /** Standard configuration descriptor. */</span><br><span> USBConfigurationDescriptor configuration;</span><br><span style="color: hsl(120, 100%, 40%);">+ USBInterfaceDescriptor version;</span><br><span> } __attribute__ ((packed)) SIMTraceDriverConfigurationDescriptorVersion;</span><br><span> </span><br><span> static const SIMTraceDriverConfigurationDescriptorVersion</span><br><span> configurationDescriptorVersion = {</span><br><span style="color: hsl(0, 100%, 40%);">- /* Standard configuration descriptor */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Standard configuration descriptor for the interface descriptor*/</span><br><span> .configuration = {</span><br><span> .bLength = sizeof(USBConfigurationDescriptor),</span><br><span> .bDescriptorType = USBGenericDescriptor_CONFIGURATION,</span><br><span> .wTotalLength = sizeof(SIMTraceDriverConfigurationDescriptorVersion),</span><br><span style="color: hsl(0, 100%, 40%);">- .bNumInterfaces = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bNumInterfaces = 1,</span><br><span> .bConfigurationValue = CFG_NUM_VERSION,</span><br><span style="color: hsl(0, 100%, 40%);">- .iConfiguration = VERSION_STR,</span><br><span style="color: hsl(120, 100%, 40%);">+ .iConfiguration = VERSION_CONF_STR,</span><br><span> .bmAttributes = USBD_BMATTRIBUTES,</span><br><span> .bMaxPower = USBConfigurationDescriptor_POWER(100),</span><br><span> },</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Interface standard descriptor just holding the version information */</span><br><span style="color: hsl(120, 100%, 40%);">+ .version = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .bLength = sizeof(USBInterfaceDescriptor),</span><br><span style="color: hsl(120, 100%, 40%);">+ .bDescriptorType = USBGenericDescriptor_INTERFACE,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bInterfaceNumber = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bAlternateSetting = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bNumEndpoints = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bInterfaceClass = USB_CLASS_PROPRIETARY,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bInterfaceSubClass = 0xff,</span><br><span style="color: hsl(120, 100%, 40%);">+ .bInterfaceProtocol = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+ .iInterface = VERSION_STR,</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span> };</span><br><span> </span><br><span> const USBConfigurationDescriptor *configurationDescriptorsArr[] = {</span><br><span>@@ -693,6 +727,7 @@</span><br><span> usb_strings_extended[i] = usb_strings[i];</span><br><span> }</span><br><span> usb_strings_extended[SERIAL_STR] = usb_string_serial;</span><br><span style="color: hsl(120, 100%, 40%);">+ usb_strings_extended[VERSION_CONF_STR] = usb_string_version_conf;</span><br><span> usb_strings_extended[VERSION_STR] = usb_string_version;</span><br><span> </span><br><span> // Initialize standard USB driver</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/15176">change 15176</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/simtrace2/+/15176"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I99361e313979711f4f45ad424a52faa3ddd7c558 </div>
<div style="display:none"> Gerrit-Change-Number: 15176 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: tsaitgaist <kredon@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>