From 3e95b389c37046759cbe9df2e671240ec5666ad8 Mon Sep 17 00:00:00 2001 From: Amir Hammad Date: Sat, 30 Jul 2016 12:24:20 +0200 Subject: add option to pass data to control writes Signed-off-by: Amir Hammad --- src/usbh_lld_stm32f4.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'src/usbh_lld_stm32f4.c') 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(""); -- cgit