Просмотр исходного кода

don't init 360 endpoints for hid

Sanjay Govind 11 месяцев назад
Родитель
Сommit
69b01746f0
1 измененных файлов с 20 добавлено и 15 удалено
  1. 20 15
      helpers/pof_usb.c

+ 20 - 15
helpers/pof_usb.c

@@ -296,33 +296,38 @@ static void pof_usb_tx_ep_callback(usbd_device* dev, uint8_t event, uint8_t ep)
 }
 
 static usbd_respond pof_usb_ep_config(usbd_device* dev, uint8_t cfg) {
+    PoFUsb* pof_usb = pof_cur;
     switch(cfg) {
     case 0: // deconfig
         usbd_ep_deconfig(dev, POF_USB_EP_OUT);
         usbd_ep_deconfig(dev, POF_USB_EP_IN);
-        usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_IN1);
-        usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_IN2);
-        usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_OUT1);
-        usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_OUT2);
-        usbd_ep_deconfig(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN);
         usbd_reg_endpoint(dev, POF_USB_EP_OUT, NULL);
         usbd_reg_endpoint(dev, POF_USB_EP_IN, NULL);
-        usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_IN1, NULL);
-        usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_IN2, NULL);
-        usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_OUT1, NULL);
-        usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_OUT2, NULL);
-        usbd_reg_endpoint(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN, NULL);
+        if (pof_usb->virtual_portal->type == PoFXbox360) {
+            usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_IN1, NULL);
+            usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_IN2, NULL);
+            usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_OUT1, NULL);
+            usbd_reg_endpoint(dev, POF_USB_X360_AUDIO_EP_OUT2, NULL);
+            usbd_reg_endpoint(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN, NULL);
+            usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_IN1);
+            usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_IN2);
+            usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_OUT1);
+            usbd_ep_deconfig(dev, POF_USB_X360_AUDIO_EP_OUT2);
+            usbd_ep_deconfig(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN);
+        }
         return usbd_ack;
     case 1: // config
         usbd_ep_config(dev, POF_USB_EP_IN, USB_EPTYPE_INTERRUPT, POF_USB_EP_IN_SIZE);
         usbd_ep_config(dev, POF_USB_EP_OUT, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
-        usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_IN1, USB_EPTYPE_INTERRUPT, POF_USB_EP_IN_SIZE);
-        usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_IN2, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
-        usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_OUT1, USB_EPTYPE_INTERRUPT, POF_USB_EP_IN_SIZE);
-        usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_OUT2, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
-        usbd_ep_config(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
         usbd_reg_endpoint(dev, POF_USB_EP_IN, pof_usb_tx_ep_callback);
         usbd_reg_endpoint(dev, POF_USB_EP_OUT, pof_usb_rx_ep_callback);
+        if (pof_usb->virtual_portal->type == PoFXbox360) {
+            usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_IN1, USB_EPTYPE_INTERRUPT, POF_USB_EP_IN_SIZE);
+            usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_IN2, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
+            usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_OUT1, USB_EPTYPE_INTERRUPT, POF_USB_EP_IN_SIZE);
+            usbd_ep_config(dev, POF_USB_X360_AUDIO_EP_OUT2, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
+            usbd_ep_config(dev, POF_USB_X360_PLUGIN_MODULE_EP_IN, USB_EPTYPE_INTERRUPT, POF_USB_EP_OUT_SIZE);
+        }
         return usbd_ack;
     }
     return usbd_fail;