diff options
| author | Frédéric Desbiens <[email protected]> | 2025-11-27 17:19:42 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-27 17:19:42 -0500 |
| commit | 130fd5b9b41b416649cbc993630ebb094e038820 (patch) | |
| tree | 6f62f54799f2449f07afd6e4b361c0e786b91b6c | |
| parent | 54660f647629ea0a31bfe67d1be7ed7858fd4ecc (diff) | |
| parent | 2db1b7bd2c0a87683d2bbacf5ac61de23d6c3f32 (diff) | |
Merge pull request #219 from ayedm1/add_check_hid_out_ep_abort
Add check for optional device hid out endpoint
| -rw-r--r-- | common/usbx_device_classes/src/ux_device_class_hid_deactivate.c | 82 |
1 files changed, 46 insertions, 36 deletions
diff --git a/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c b/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c index cf41404..55033ca 100644 --- a/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c +++ b/common/usbx_device_classes/src/ux_device_class_hid_deactivate.c @@ -1,17 +1,17 @@ /*************************************************************************** - * Copyright (c) 2024 Microsoft Corporation - * + * Copyright (c) 2024 Microsoft Corporation + * * This program and the accompanying materials are made available under the * terms of the MIT License which is available at * https://opensource.org/licenses/MIT. - * + * * SPDX-License-Identifier: MIT **************************************************************************/ /**************************************************************************/ /**************************************************************************/ -/** */ -/** USBX Component */ +/** */ +/** USBX Component */ /** */ /** Device HID Class */ /** */ @@ -28,40 +28,40 @@ #include "ux_device_stack.h" -/**************************************************************************/ -/* */ -/* FUNCTION RELEASE */ -/* */ -/* _ux_device_class_hid_deactivate PORTABLE C */ +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _ux_device_class_hid_deactivate PORTABLE C */ /* 6.1.12 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ /* */ /* DESCRIPTION */ -/* */ -/* This function deactivate an instance of the hid class. */ -/* */ -/* INPUT */ -/* */ -/* command Pointer to a class command */ -/* */ -/* OUTPUT */ -/* */ -/* Completion Status */ -/* */ -/* CALLS */ -/* */ -/* _ux_device_stack_transfer_all_request_abort Abort all transfers */ -/* */ -/* CALLED BY */ -/* */ +/* */ +/* This function deactivate an instance of the hid class. */ +/* */ +/* INPUT */ +/* */ +/* command Pointer to a class command */ +/* */ +/* OUTPUT */ +/* */ +/* Completion Status */ +/* */ +/* CALLS */ +/* */ +/* _ux_device_stack_transfer_all_request_abort Abort all transfers */ +/* */ +/* CALLED BY */ +/* */ /* HID Class */ -/* */ -/* RELEASE HISTORY */ -/* */ -/* DATE NAME DESCRIPTION */ -/* */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* resulting in version 6.1 */ @@ -73,9 +73,10 @@ /**************************************************************************/ UINT _ux_device_class_hid_deactivate(UX_SLAVE_CLASS_COMMAND *command) { - + UX_SLAVE_CLASS_HID *hid; UX_SLAVE_CLASS *class_ptr; +UX_SLAVE_ENDPOINT *endpoint; /* Get the class container. */ class_ptr = command -> ux_slave_class_command_class_ptr; @@ -83,11 +84,20 @@ UX_SLAVE_CLASS *class_ptr; /* Get the class instance in the container. */ hid = (UX_SLAVE_CLASS_HID *) class_ptr -> ux_slave_class_instance; - /* Terminate the transactions pending on the endpoints. */ - _ux_device_stack_transfer_all_request_abort(hid -> ux_device_class_hid_interrupt_endpoint, UX_TRANSFER_BUS_RESET); + /* Locate the hid interrupt in endpoint. */ + endpoint = hid -> ux_device_class_hid_interrupt_endpoint; + + /* Terminate the transactions pending on the endpoint. */ + if (endpoint) + _ux_device_stack_transfer_all_request_abort(endpoint, UX_TRANSFER_BUS_RESET); #if defined(UX_DEVICE_CLASS_HID_INTERRUPT_OUT_SUPPORT) - _ux_device_stack_transfer_all_request_abort(hid -> ux_device_class_hid_read_endpoint, UX_TRANSFER_BUS_RESET); + /* Locate the hid interrupt out endpoint. */ + endpoint = hid -> ux_device_class_hid_read_endpoint; + + /* Terminate the transactions pending on the endpoint. */ + if (endpoint) + _ux_device_stack_transfer_all_request_abort(endpoint, UX_TRANSFER_BUS_RESET); #endif /* If there is a deactivate function call it. */ |
