Select one of the symbols to view example projects that use it.
 
Outline
...
...
...
...
#define UX_SOURCE_CODE
#define UX_DCD_STM32_SOURCE_CODE
#include "ux_api.h"
#include "ux_dcd_stm32.h"
#include "ux_utility.h"
#include "ux_device_stack.h"
...
...
Files
loading...
SourceVuSTM32 Libraries and Samplesusbxcommon/usbx_stm32_device_controllers/ux_dcd_stm32_transfer_run.c
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**************************************************************************/ /* */ /* Copyright (c) Microsoft Corporation. All rights reserved. */ /* */ /* This software is licensed under the Microsoft Software License */ /* Terms for Microsoft Azure RTOS. Full text of the license can be */ /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */ /* and in the root directory of this software. */ /* */... /**************************************************************************/ ... /**************************************************************************/ /**************************************************************************/ /** */ /** USBX Component */ /** */ /** STM32 Controller Driver */ /** */... /**************************************************************************/ /**************************************************************************/ #define UX_SOURCE_CODE #define UX_DCD_STM32_SOURCE_CODE /* Include necessary system files. */ #include "ux_api.h" #include "ux_dcd_stm32.h" #include "ux_utility.h" #include "ux_device_stack.h" #if defined(UX_DEVICE_STANDALONE)... /**************************************************************************/ /* */ /* FUNCTION RELEASE */ /* */ /* _ux_dcd_stm32_transfer_request PORTABLE C */ /* 6.1.10 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ /* */ /* DESCRIPTION */ /* */ /* This function will initiate a transfer to a specific endpoint. */ /* If the endpoint is IN, the endpoint register will be set to accept */ /* the request. */ /* */ /* If the endpoint is IN, the endpoint FIFO will be filled with the */ /* buffer and the endpoint register set. */ /* */ /* INPUT */ /* */ /* dcd_stm32 Pointer to device controller */ /* transfer_request Pointer to transfer request */ /* */ /* OUTPUT */ /* */ /* Completion Status */ /* */ /* */ /* CALLS */ /* */ /* HAL_PCD_EP_Transmit Transmit data */ /* HAL_PCD_EP_Receive Receive data */ /* _ux_utility_semaphore_get Get semaphore */ /* */ /* CALLED BY */ /* */ /* STM32 Controller Driver */ /* */ /* RELEASE HISTORY */ /* */ /* DATE NAME DESCRIPTION */ /* */ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 01-31-2022 Chaoqiong Xiao Modified comment(s), used ST */ /* HAL library to drive the */ /* controller, */ /* resulting in version 6.1.10 */ /* */... /**************************************************************************/ UINT _ux_dcd_stm32_transfer_run(UX_DCD_STM32 *dcd_stm32, UX_SLAVE_TRANSFER *transfer_request) { UX_INTERRUPT_SAVE_AREA UX_SLAVE_ENDPOINT *endpoint; UX_DCD_STM32_ED *ed; ULONG ed_status; /* Get the pointer to the logical endpoint from the transfer request. */ endpoint = transfer_request -> ux_slave_transfer_request_endpoint; /* Get the physical endpoint address in the endpoint container. */ ed = (UX_DCD_STM32_ED *) endpoint -> ux_slave_endpoint_ed; UX_DISABLE /* Get current ED status. */ ed_status = ed -> ux_dcd_stm32_ed_status; /* Invalid state. */ if (_ux_system_slave -> ux_system_slave_device.ux_slave_device_state == UX_DEVICE_RESET) { transfer_request -> ux_slave_transfer_request_completion_code = UX_TRANSFER_BUS_RESET; UX_RESTORE return(UX_STATE_EXIT); }if (_ux_system_slave -> ux_system_slave_device.ux_slave_device_state == UX_DEVICE_RESET) { ... } /* ED stalled. */ if (ed_status & UX_DCD_STM32_ED_STATUS_STALLED) { transfer_request -> ux_slave_transfer_request_completion_code = UX_TRANSFER_STALLED; UX_RESTORE return(UX_STATE_NEXT); }if (ed_status & UX_DCD_STM32_ED_STATUS_STALLED) { ... } /* ED transfer in progress. */ if (ed_status & UX_DCD_STM32_ED_STATUS_TRANSFER) { if (ed_status & UX_DCD_STM32_ED_STATUS_DONE) { /* Keep used, stall and task pending bits. */ ed -> ux_dcd_stm32_ed_status &= (UX_DCD_STM32_ED_STATUS_USED | UX_DCD_STM32_ED_STATUS_STALLED | UX_DCD_STM32_ED_STATUS_TASK_PENDING); UX_RESTORE return(UX_STATE_NEXT); }if (ed_status & UX_DCD_STM32_ED_STATUS_DONE) { ... } UX_RESTORE return(UX_STATE_WAIT); }if (ed_status & UX_DCD_STM32_ED_STATUS_TRANSFER) { ... } /* Start transfer. */ ed -> ux_dcd_stm32_ed_status |= UX_DCD_STM32_ED_STATUS_TRANSFER; /* Check for transfer direction. Is this a IN endpoint ? */ if (transfer_request -> ux_slave_transfer_request_phase == UX_TRANSFER_PHASE_DATA_OUT) { /* Transmit data. */ HAL_PCD_EP_Transmit(dcd_stm32 -> pcd_handle, endpoint->ux_slave_endpoint_descriptor.bEndpointAddress, transfer_request->ux_slave_transfer_request_data_pointer, transfer_request->ux_slave_transfer_request_requested_length); }if (transfer_request -> ux_slave_transfer_request_phase == UX_TRANSFER_PHASE_DATA_OUT) { ... } else { /* We have a request for a SETUP or OUT Endpoint. */ /* Receive data. */ HAL_PCD_EP_Receive(dcd_stm32 -> pcd_handle, endpoint->ux_slave_endpoint_descriptor.bEndpointAddress, transfer_request->ux_slave_transfer_request_data_pointer, transfer_request->ux_slave_transfer_request_requested_length); }else { ... } /* Return to caller with WAIT. */ UX_RESTORE return(UX_STATE_WAIT); }_ux_dcd_stm32_transfer_run (UX_DCD_STM32 *dcd_stm32, UX_SLAVE_TRANSFER *transfer_request) { ... } ...#endif/* ... */ /* defined(UX_DEVICE_STANDALONE) */
Details
Show:
from
Types: Columns:
This file uses the notable symbols shown below. Click anywhere in the file to view more details.