Add support for varying HID descriptors

Change-Id: I8ee01045d2b4bcc98bedb615f0af1b26ebbd66f7
diff --git a/motors/usb/usb.h b/motors/usb/usb.h
index 8fd2fb3..299df59 100644
--- a/motors/usb/usb.h
+++ b/motors/usb/usb.h
@@ -214,10 +214,22 @@
     memcpy(&data_[start_index], data, length);
   }
 
+  void AddPremadeDescriptor(const UsbDescriptorList &other_list) {
+    other_list.CheckFinished();
+    AddPremadeDescriptor(
+        reinterpret_cast<const uint8_t *>(other_list.data_.data()),
+        other_list.data_.size());
+  }
+
   void CheckFinished() const { assert(open_descriptors_ == 0); }
 
   int CurrentSize() const { return data_.size(); }
 
+  const char *GetData() const {
+    CheckFinished();
+    return data_.data();
+  }
+
  private:
   ::std::unique_ptr<Descriptor> CreateDescriptor(uint8_t length,
                                                  uint8_t descriptor_type) {
@@ -504,6 +516,9 @@
   void AddPremadeDescriptor(const uint8_t *data, int length) {
     device_->config_descriptor_list_.AddPremadeDescriptor(data, length);
   }
+  void AddPremadeDescriptor(const UsbDescriptorList &other_list) {
+    device_->config_descriptor_list_.AddPremadeDescriptor(other_list);
+  }
 
   UsbDevice *device() const { return device_; }