diff options
author | Amir Hammad <amir.hammad@hotmail.com> | 2016-07-30 12:24:20 +0200 |
---|---|---|
committer | Amir Hammad <amir.hammad@hotmail.com> | 2016-07-30 12:24:20 +0200 |
commit | 3e95b389c37046759cbe9df2e671240ec5666ad8 (patch) | |
tree | bca91eed95fab4b392426f6b8fa2efd8a0758a29 /src/usbh_lld_stm32f4.c | |
parent | 0c1bd8ff76fbe191b7eb136d371ef30fc83c8eb0 (diff) | |
download | secure-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.c | 18 |
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("");
|