started working on adding isochronous support
diff --git a/gyro_board/src/libusb-driver/libusb_wrap.cc b/gyro_board/src/libusb-driver/libusb_wrap.cc
index a297a9b..83cf245 100644
--- a/gyro_board/src/libusb-driver/libusb_wrap.cc
+++ b/gyro_board/src/libusb-driver/libusb_wrap.cc
@@ -163,4 +163,29 @@
   callback_(this, user_data_);
 }
 
+IsochronousTransfer::IsochronousTransfer(size_t packet_length,
+                                         int num_packets,
+                                         void (*callback)(Transfer *, void *),
+                                         void *user_data)
+    : Transfer(packet_length * num_packets, callback, user_data),
+      num_packets_(num_packets) {
+}
+
+void IsochronousTransfer::FillIsochronous(LibUSBDeviceHandle *device,
+                               unsigned char endpoint,
+                               unsigned int timeout) {
+  (void)device;
+  (void)endpoint;
+  (void)timeout;
+  /*libusb_fill_iso_transfer(transfer_,
+                           device->dev_handle_,
+                           endpoint,
+                           data_,
+                           data_length_,
+                           num_packets_,
+                           StaticTransferCallback,
+                           this,
+                           timeout);*/
+}
+
 }  // namespace libusb
diff --git a/gyro_board/src/libusb-driver/libusb_wrap.h b/gyro_board/src/libusb-driver/libusb_wrap.h
index 9713534..261cded 100644
--- a/gyro_board/src/libusb-driver/libusb_wrap.h
+++ b/gyro_board/src/libusb-driver/libusb_wrap.h
@@ -8,6 +8,7 @@
 class LibUSBDeviceHandle;
 namespace libusb {
 class Transfer;
+class IsochronousTransfer;
 }
 
 class LibUSB {
@@ -41,6 +42,7 @@
  private:
   friend class LibUSB; // For constructor
   friend class libusb::Transfer;  // for access to dev_handle_
+  friend class libusb::IsochronousTransfer;  // for access to dev_handle_
   // Takes ownership of the device handle and frees it when destructed.
   explicit LibUSBDeviceHandle(libusb_device_handle *dev_handle);
   libusb_device_handle *dev_handle_;
@@ -74,10 +76,12 @@
 
   const uint8_t *data() { return data_; }
 
- private:
+ protected:
   static void StaticTransferCallback(libusb_transfer *self) {
     static_cast<Transfer *>(self->user_data)->TransferCallback();
   }
+
+ private:
   void TransferCallback();
 
   libusb_transfer *const transfer_;
@@ -91,6 +95,21 @@
   DISALLOW_COPY_AND_ASSIGN(Transfer);
 };
 
+class IsochronousTransfer : public Transfer {
+ public:
+  IsochronousTransfer(size_t packet_length,
+                      int num_packets,
+                      void (*callback)(Transfer *, void *),
+                      void *user_data);
+
+  void FillIsochronous(LibUSBDeviceHandle *device,
+                       unsigned char endpoint,
+                       unsigned int timeout);
+
+ private:
+  const int num_packets_;
+};
+
 }  // namespace libusb
 
 #endif  // LIBUSB_H_