summaryrefslogtreecommitdiff
path: root/src/usbh_lld_stm32f4.c
diff options
context:
space:
mode:
authorAmir Hammad <amir.hammad@hotmail.com>2016-07-30 12:24:20 +0200
committerAmir Hammad <amir.hammad@hotmail.com>2016-07-30 12:24:20 +0200
commit3e95b389c37046759cbe9df2e671240ec5666ad8 (patch)
treebca91eed95fab4b392426f6b8fa2efd8a0758a29 /src/usbh_lld_stm32f4.c
parent0c1bd8ff76fbe191b7eb136d371ef30fc83c8eb0 (diff)
downloadsecure-hid-3e95b389c37046759cbe9df2e671240ec5666ad8.tar.gz
secure-hid-3e95b389c37046759cbe9df2e671240ec5666ad8.tar.bz2
secure-hid-3e95b389c37046759cbe9df2e671240ec5666ad8.zip
add option to pass data to control writes
Signed-off-by: Amir Hammad <amir.hammad@hotmail.com>
Diffstat (limited to 'src/usbh_lld_stm32f4.c')
-rw-r--r--src/usbh_lld_stm32f4.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/usbh_lld_stm32f4.c b/src/usbh_lld_stm32f4.c
index 0b12888..6f1d4aa 100644
--- a/src/usbh_lld_stm32f4.c
+++ b/src/usbh_lld_stm32f4.c
@@ -261,20 +261,16 @@ static void write(void *drvdata, const usbh_packet_t *packet)
uint32_t dpid;
if (packet->endpoint_type == USBH_ENDPOINT_TYPE_CONTROL) {
- dpid = OTG_HCTSIZ_DPID_MDATA;
- packet->toggle[0] = 0;
- } else if(packet->endpoint_type == USBH_ENDPOINT_TYPE_INTERRUPT) {
- if (packet->toggle[0]) {
- dpid = OTG_HCTSIZ_DPID_DATA1;
+ if (packet->control_type == USBH_CONTROL_TYPE_DATA) {
+ dpid = packet->toggle[0] ? OTG_HCTSIZ_DPID_DATA1 : OTG_HCTSIZ_DPID_DATA0;
} else {
- dpid = OTG_HCTSIZ_DPID_DATA0;
+ dpid = OTG_HCTSIZ_DPID_MDATA;
+ packet->toggle[0] = 0;
}
+ } else if(packet->endpoint_type == USBH_ENDPOINT_TYPE_INTERRUPT) {
+ dpid = packet->toggle[0] ? OTG_HCTSIZ_DPID_DATA1 : OTG_HCTSIZ_DPID_DATA0;
} else if (packet->endpoint_type == USBH_ENDPOINT_TYPE_BULK) {
- if (packet->toggle[0]) {
- dpid = OTG_HCTSIZ_DPID_DATA1;
- } else {
- dpid = OTG_HCTSIZ_DPID_DATA0;
- }
+ dpid = packet->toggle[0] ? OTG_HCTSIZ_DPID_DATA1 : OTG_HCTSIZ_DPID_DATA0;
} else {
dpid = OTG_HCTSIZ_DPID_DATA0; // ! TODO: BUG
ERROR("");