Ver Fonte

Added usb respond

Dmitry há 9 anos atrás
pai
commit
c951d98401
5 ficheiros alterados com 13 adições e 26 exclusões
  1. 2 2
      inc/usbd_core.h
  2. 1 1
      src/usb_32l0A.S
  3. 1 1
      src/usb_32v0.c
  4. 7 20
      src/usbd_core.c
  5. 2 2
      usb.h

+ 2 - 2
inc/usbd_core.h

@@ -146,7 +146,7 @@ typedef void (*usbd_ctl_complete)(usbd_device *dev, usbd_ctlreq *req);
  * \param[in] dev points to USB device
  * \param[in] req points to usb control request
  * \param[out] *callback \ref usbd_ctl_complete "pointer to USB control transfer completed callback", default is NULL (no callback)
- * \return TRUE if control request processed successfully, false otherwise.
+ * \return usbd_respond status.
  */
 typedef usbd_respond (*usbd_ctl_callback)(usbd_device *dev, usbd_ctlreq *req, usbd_ctl_complete *callback);
 
@@ -163,7 +163,7 @@ typedef bool (*usbd_dsc_callback)(usbd_ctlreq *req, void **address, uint16_t *ds
  * \details called when SET_CONFIGURATION request issued
  * \param[in] dev pointer to USB device
  * \param[in] cfg configuration number.
- * \note if config is 0 all device endpoints EP0 will be de-configured by core before entering this callback
+ * \note if config is 0 device endpoints should be de-configured
  * \return TRUE if success
  */
 typedef bool (*usbd_cfg_callback)(usbd_device *dev, uint8_t cfg);

+ 1 - 1
src/usb_32l0A.S

@@ -17,7 +17,7 @@
     #define __ASSEMBLER__
 #endif
 
-#include "..\usb.h"
+#include "../usb.h"
 #if defined(USE_STMV0A_DRIVER)
 
 #define USB_EPBASE  0x40005C00

+ 1 - 1
src/usb_32v0.c

@@ -1,7 +1,7 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include "stm32.h"
-#include "usb.h"
+#include "../usb.h"
 
 #if defined(USE_STMV0_DRIVER)
 

+ 7 - 20
src/usbd_core.c

@@ -16,7 +16,7 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include <string.h>
-#include "usb.h"
+#include "../usb.h"
 
 #define _MIN(a, b) ((a) < (b)) ? (a) : (b)
 
@@ -57,27 +57,14 @@ static void usbd_process_callback (usbd_device *dev) {
 }
 
 static usbd_respond usbd_configure(usbd_device *dev, uint8_t config) {
-    if (0 == config) {
-        /* de-configuring endpoints except EP0 */
-        for (int i = 1; i < 8; i++) {
-            dev->driver->ep_deconfig(i);
-        }
-        if (dev->config_callback) {
-            dev->config_callback(dev, config);
-        }
-        dev->status.device_cfg = 0;
+    usbd_respond resp = usbd_fail;
+    if (dev->config_callback) {
+        resp = dev->config_callback(dev, config);
+    }
+    if (config == 0 && resp == usbd_ack) {
         dev->status.device_state = usbd_state_addressed;
-        return usbd_ack;
-    } else {
-        if (dev->config_callback) {
-            if (dev->config_callback(dev, config)) {
-                dev->status.device_cfg = config;
-                dev->status.device_state = usbd_state_configured;
-                return usbd_ack;
-            }
-        }
     }
-    return usbd_fail;
+    return resp;
 }
 
 

+ 2 - 2
usb.h

@@ -37,9 +37,9 @@
 #endif
 
 
-#include "inc\usbd_core.h"
+#include "inc/usbd_core.h"
 #if !defined(__ASSEMBLER__)
-    #include "inc\usb_std.h"
+    #include "inc/usb_std.h"
     #if defined(USE_STMV0A_DRIVER)
         extern const struct usbd_driver usb_stmv0a;
         #define usbd_hw usb_stmv0a