diff options
| author | Damien George <damien.p.george@gmail.com> | 2017-09-06 23:03:01 +1000 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2017-09-21 21:50:56 +1000 |
| commit | b3b922f177ee7553b2d06edf7bf3df6c2076b03a (patch) | |
| tree | 8254151e0a44df2df767fe60b0ca57c4cc7e8dcf /ports/stm32/usbdev | |
| parent | e04b4780501f14c7452bc10e948e4c06f17af992 (diff) | |
stm32/usbdev: Simplify HID tx/rx buffer passing.
Diffstat (limited to 'ports/stm32/usbdev')
| -rw-r--r-- | ports/stm32/usbdev/class/inc/usbd_cdc_msc_hid.h | 7 | ||||
| -rw-r--r-- | ports/stm32/usbdev/class/src/usbd_cdc_msc_hid.c | 19 |
2 files changed, 9 insertions, 17 deletions
diff --git a/ports/stm32/usbdev/class/inc/usbd_cdc_msc_hid.h b/ports/stm32/usbdev/class/inc/usbd_cdc_msc_hid.h index a7f8d0a9b..2fb19bce9 100644 --- a/ports/stm32/usbdev/class/inc/usbd_cdc_msc_hid.h +++ b/ports/stm32/usbdev/class/inc/usbd_cdc_msc_hid.h @@ -98,8 +98,7 @@ uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev, size_t len, const uint uint8_t USBD_MSC_RegisterStorage(USBD_HandleTypeDef *pdev, USBD_StorageTypeDef *fops); -uint8_t USBD_HID_SetRxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff); -uint8_t USBD_HID_ReceivePacket(USBD_HandleTypeDef *pdev); +uint8_t USBD_HID_ReceivePacket(USBD_HandleTypeDef *pdev, uint8_t *buf); int USBD_HID_CanSendReport(USBD_HandleTypeDef *pdev); uint8_t USBD_HID_SendReport(USBD_HandleTypeDef *pdev, uint8_t *report, uint16_t len); uint8_t USBD_HID_SetNAK(USBD_HandleTypeDef *pdev); @@ -113,7 +112,7 @@ int8_t usbd_cdc_receive(struct _usbd_cdc_itf_t *cdc, size_t len); // These are provided externally to implement the HID interface struct _usbd_hid_itf_t; -void usbd_hid_init(struct _usbd_hid_itf_t *hid, USBD_HandleTypeDef *pdev); -int8_t usbd_hid_receive(struct _usbd_hid_itf_t *hid, size_t len, uint8_t *buf); +uint8_t *usbd_hid_init(struct _usbd_hid_itf_t *hid, USBD_HandleTypeDef *pdev); +int8_t usbd_hid_receive(struct _usbd_hid_itf_t *hid, size_t len); #endif // _USB_CDC_MSC_CORE_H_ diff --git a/ports/stm32/usbdev/class/src/usbd_cdc_msc_hid.c b/ports/stm32/usbdev/class/src/usbd_cdc_msc_hid.c index f7c082463..41cd2a8cb 100644 --- a/ports/stm32/usbdev/class/src/usbd_cdc_msc_hid.c +++ b/ports/stm32/usbdev/class/src/usbd_cdc_msc_hid.c @@ -82,8 +82,6 @@ typedef struct { uint32_t IdleState; uint32_t AltSetting; HID_StateTypeDef state; - uint8_t *RxBuffer; - uint32_t RxLength; } USBD_HID_HandleTypeDef; static uint8_t usbd_mode; @@ -724,10 +722,10 @@ static uint8_t USBD_CDC_MSC_HID_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) { USBD_EP_TYPE_INTR, mps_out); - usbd_hid_init(state->hid, pdev); + uint8_t *buf = usbd_hid_init(state->hid, pdev); // Prepare Out endpoint to receive next packet - USBD_LL_PrepareReceive(pdev, hid_out_ep, HID_ClassData.RxBuffer, mps_out); + USBD_LL_PrepareReceive(pdev, hid_out_ep, buf, mps_out); HID_ClassData.state = HID_IDLE; } @@ -973,8 +971,8 @@ static uint8_t USBD_CDC_MSC_HID_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) MSC_BOT_DataOut(pdev, epnum); return USBD_OK; } else if ((usbd_mode & USBD_MODE_HID) && epnum == (hid_out_ep & 0x7f)) { - HID_ClassData.RxLength = USBD_LL_GetRxDataSize(pdev, epnum); - usbd_hid_receive(state->hid, HID_ClassData.RxLength, HID_ClassData.RxBuffer); + size_t len = USBD_LL_GetRxDataSize(pdev, epnum); + usbd_hid_receive(state->hid, len); } return USBD_OK; @@ -1032,13 +1030,8 @@ uint8_t USBD_MSC_RegisterStorage(USBD_HandleTypeDef *pdev, USBD_StorageTypeDef * } } -uint8_t USBD_HID_SetRxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff) { - HID_ClassData.RxBuffer = pbuff; - return USBD_OK; -} - // prepare OUT endpoint for reception -uint8_t USBD_HID_ReceivePacket(USBD_HandleTypeDef *pdev) { +uint8_t USBD_HID_ReceivePacket(USBD_HandleTypeDef *pdev, uint8_t *buf) { // Suspend or Resume USB Out process if (pdev->dev_speed == USBD_SPEED_HIGH) { return USBD_FAIL; @@ -1048,7 +1041,7 @@ uint8_t USBD_HID_ReceivePacket(USBD_HandleTypeDef *pdev) { uint16_t mps_out = hid_desc[HID_DESC_OFFSET_MAX_PACKET_OUT_LO] | (hid_desc[HID_DESC_OFFSET_MAX_PACKET_OUT_HI] << 8); - USBD_LL_PrepareReceive(pdev, hid_out_ep, HID_ClassData.RxBuffer, mps_out); + USBD_LL_PrepareReceive(pdev, hid_out_ep, buf, mps_out); return USBD_OK; } |
