diff options
author | Dmitry <dmitrystu@gmail.com> | 2016-10-22 04:05:59 +0300 |
---|---|---|
committer | Dmitry <dmitrystu@gmail.com> | 2016-10-22 04:05:59 +0300 |
commit | c951d98401ebac837d767af4a7aba2a075e5dae0 (patch) | |
tree | 9a0c314e8a195bdf9bf690b2a91d24ddb71844f0 /src/usbd_core.c | |
parent | 22b871da81d51c551d53d105ba9ffe7995571e1c (diff) |
Added usb respond
Diffstat (limited to 'src/usbd_core.c')
-rw-r--r-- | src/usbd_core.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/usbd_core.c b/src/usbd_core.c index 31484dd..80074a7 100644 --- a/src/usbd_core.c +++ b/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;
}
|