Jelajahi Sumber

Some improovements
*len for descriptor callback now contains maximum buffer size by default
usbd_respond instead bool used in core functions

Dmitry 9 tahun lalu
induk
melakukan
452360a082
2 mengubah file dengan 6 tambahan dan 6 penghapusan
  1. 4 4
      inc/usbd_core.h
  2. 2 2
      src/usbd_core.c

+ 4 - 4
inc/usbd_core.h

@@ -142,10 +142,10 @@ typedef usbd_respond (*usbd_ctl_callback)(usbd_device *dev, usbd_ctlreq *req, us
  * \details Called when GET_DESCRIPTOR request issued
  * \param[in] req pointer to usb control request structure
  * \param[in,out] address pointer to the descriptor in memory. Points to req->data by default. You can use this buffer.
- * \param[in,out] dsize descriptor size. req->data buffer size by default.
- * \return TRUE if you passed the correct descriptor, FALSE otherwise.
+ * \param[in,out] dsize descriptor size. maximum buffer size by default.
+ * \return usbd_ack if you passed the correct descriptor, usbd_fail otherwise.
  */
-typedef bool (*usbd_dsc_callback)(usbd_ctlreq *req, void **address, uint16_t *dsize);
+typedef usbd_respond (*usbd_dsc_callback)(usbd_ctlreq *req, void **address, uint16_t *dsize);
 
 /** USB set configuration callback function
  * \details called when SET_CONFIGURATION request issued
@@ -154,7 +154,7 @@ typedef bool (*usbd_dsc_callback)(usbd_ctlreq *req, void **address, uint16_t *ds
  * \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);
+typedef usbd_respond (*usbd_cfg_callback)(usbd_device *dev, uint8_t cfg);
 
 /** @} */
 

+ 2 - 2
src/usbd_core.c

@@ -63,7 +63,7 @@ static void usbd_process_callback (usbd_device *dev) {
  */
 static usbd_respond usbd_configure(usbd_device *dev, uint8_t config) {
     if (dev->config_callback) {
-        if (dev->config_callback(dev, config)) {
+        if (dev->config_callback(dev, config) == usbd_ack) {
             dev->status.device_cfg = config;
             dev->status.device_state = (config) ? usbd_state_configured : usbd_state_addressed;
             return usbd_ack;
@@ -278,7 +278,7 @@ static void usbd_process_eprx(usbd_device *dev, uint8_t ep) {
     }
     /* usb request received. let's handle it */
     dev->status.data_ptr = req->data;
-    dev->status.data_count = req->wLength;/*dev->status.data_maxsize;*/
+    dev->status.data_count = /*req->wLength;*/dev->status.data_maxsize;
     switch (usbd_process_request(dev, req)) {
     case usbd_ack:
         if (req->bmRequestType & USB_REQ_DEVTOHOST) {