Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/flipperdevices/libusb_stm32.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry <dmitrystu@gmail.com>2016-10-22 04:05:59 +0300
committerDmitry <dmitrystu@gmail.com>2016-10-22 04:05:59 +0300
commitc951d98401ebac837d767af4a7aba2a075e5dae0 (patch)
tree9a0c314e8a195bdf9bf690b2a91d24ddb71844f0 /src/usbd_core.c
parent22b871da81d51c551d53d105ba9ffe7995571e1c (diff)
Added usb respond
Diffstat (limited to 'src/usbd_core.c')
-rw-r--r--src/usbd_core.c27
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;
}