rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
usbd_conf.c
Go to the documentation of this file.
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file : Target/usbd_conf.c
5 * @version : v1.0_Cube
6 * @brief : This file implements the board support package for the USB device library
7 ******************************************************************************
8 * @attention
9 *
10 * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
11 * All rights reserved.</center></h2>
12 *
13 * This software component is licensed by ST under Ultimate Liberty license
14 * SLA0044, the "License"; You may not use this file except in compliance with
15 * the License. You may obtain a copy of the License at:
16 * www.st.com/SLA0044
17 *
18 ******************************************************************************
19 */
20/* USER CODE END Header */
21
22/* Includes ------------------------------------------------------------------*/
23#ifdef STM32F429xx
24#include "stm32f4xx.h" /* STM32 CPU and HAL header */
25#include "stm32f4xx_hal.h"
26#endif
27#ifdef STM32F767xx
28#include "stm32f7xx.h" /* STM32 CPU and HAL header */
29#include "stm32f7xx_hal.h"
30#endif
31#ifdef STM32H743xx
32#include "stm32h7xx.h" /* STM32 CPU and HAL header */
33#include "stm32h7xx_hal.h"
34#endif
35#include "usbd_def.h"
36#include "usbd_core.h"
37#include "usbd_bulk.h"
38#include "boot.h"
39#include "usb.h"
40
41/* USER CODE BEGIN Includes */
42
43/* USER CODE END Includes */
44
45/* Private typedef -----------------------------------------------------------*/
46/* Private define ------------------------------------------------------------*/
47/* Private macro -------------------------------------------------------------*/
48
49/* USER CODE BEGIN PV */
50/* Private variables ---------------------------------------------------------*/
51
52/* USER CODE END PV */
53
54PCD_HandleTypeDef hpcd_USB_OTG_FS;
55
56/* External functions --------------------------------------------------------*/
58
59/* USER CODE BEGIN 0 */
60
61/* USER CODE END 0 */
62
63/* USER CODE BEGIN PFP */
64/* Private function prototypes -----------------------------------------------*/
65USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status);
66
67/* USER CODE END PFP */
68
69/* Private functions ---------------------------------------------------------*/
70
71/* USER CODE BEGIN 1 */
72
73/* USER CODE END 1 */
74
75
76/*******************************************************************************
77 LL Driver Callbacks (PCD -> USB Device Library)
78*******************************************************************************/
79/**
80 * @brief Setup stage callback
81 * @param hpcd: PCD handle
82 * @retval None
83 */
84#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
85static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
86#else
87void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
88#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
89{
90 USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup);
91}
92
93/**
94 * @brief Data Out stage callback.
95 * @param hpcd: PCD handle
96 * @param epnum: Endpoint number
97 * @retval None
98 */
99#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
100static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
101#else
102void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
103#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
104{
105 USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff);
106}
107
108/**
109 * @brief Data In stage callback.
110 * @param hpcd: PCD handle
111 * @param epnum: Endpoint number
112 * @retval None
113 */
114#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
115static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
116#else
117void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
118#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
119{
120 USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff);
121}
122
123/**
124 * @brief SOF callback.
125 * @param hpcd: PCD handle
126 * @retval None
127 */
128#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
129static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
130#else
131void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
132#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
133{
134 USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData);
135}
136
137/**
138 * @brief Reset callback.
139 * @param hpcd: PCD handle
140 * @retval None
141 */
142#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
143static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
144#else
145void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
146#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
147{
148 USBD_SpeedTypeDef speed = USBD_SPEED_FULL;
149
150 if ( hpcd->Init.speed == PCD_SPEED_HIGH)
151 {
152 speed = USBD_SPEED_HIGH;
153 }
154 else if ( hpcd->Init.speed == PCD_SPEED_FULL)
155 {
156 speed = USBD_SPEED_FULL;
157 }
158 else
159 {
160 ASSERT_RT(BLT_FALSE);
161 }
162 /* Set Speed. */
163 USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed);
164
165 /* Reset Device. */
166 USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData);
167}
168
169/**
170 * @brief Suspend callback.
171 * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it)
172 * @param hpcd: PCD handle
173 * @retval None
174 */
175#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
176static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
177#else
178void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
179#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
180{
181 /* Inform USB library that core enters in suspend Mode. */
182 USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData);
183 __HAL_PCD_GATE_PHYCLOCK(hpcd);
184 /* Enter in STOP mode. */
185 /* USER CODE BEGIN 2 */
186 if (hpcd->Init.low_power_enable)
187 {
188 /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */
189 SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk));
190 }
191 /* Inform application that the USB entered low power mode. */
193 /* USER CODE END 2 */
194}
195
196/**
197 * @brief Resume callback.
198 * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it)
199 * @param hpcd: PCD handle
200 * @retval None
201 */
202#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
203static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
204#else
205void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
206#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
207{
208 /* USER CODE BEGIN 3 */
209 /* Inform application that the USB left low power mode. */
211 /* USER CODE END 3 */
212 USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData);
213}
214
215/**
216 * @brief ISOOUTIncomplete callback.
217 * @param hpcd: PCD handle
218 * @param epnum: Endpoint number
219 * @retval None
220 */
221#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
222static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
223#else
224void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
225#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
226{
227 USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum);
228}
229
230/**
231 * @brief ISOINIncomplete callback.
232 * @param hpcd: PCD handle
233 * @param epnum: Endpoint number
234 * @retval None
235 */
236#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
237static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
238#else
239void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum)
240#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
241{
242 USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum);
243}
244
245/**
246 * @brief Connect callback.
247 * @param hpcd: PCD handle
248 * @retval None
249 */
250#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
251static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
252#else
253void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
254#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
255{
256 /* Configure Low connection state. */
257 UsbConnectHook(BLT_TRUE);
258 /* Inform lower layer. */
259 USBD_LL_DevConnected((USBD_HandleTypeDef*)hpcd->pData);
260}
261
262/**
263 * @brief Disconnect callback.
264 * @param hpcd: PCD handle
265 * @retval None
266 */
267#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
268static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
269#else
270void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
271#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
272{
273 /* Configure High connection state. */
274 UsbConnectHook(BLT_FALSE);
275 /* Inform lower layer. */
276 USBD_LL_DevDisconnected((USBD_HandleTypeDef*)hpcd->pData);
277}
278
279/*******************************************************************************
280 LL Driver Interface (USB Device Library --> PCD)
281*******************************************************************************/
282
283/**
284 * @brief Initializes the low level portion of the device driver.
285 * @param pdev: Device handle
286 * @retval USBD status
287 */
288USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
289{
290 /* Init USB Ip. */
291 if (pdev->id == DEVICE_FS) {
292 /* Link the driver to the stack. */
293 hpcd_USB_OTG_FS.pData = pdev;
294 pdev->pData = &hpcd_USB_OTG_FS;
295
296 hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
297 hpcd_USB_OTG_FS.Init.dev_endpoints = 4;
298 hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
299 hpcd_USB_OTG_FS.Init.dma_enable = DISABLE;
300 hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
301 hpcd_USB_OTG_FS.Init.Sof_enable = ENABLE;
302 hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
303 hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
304 hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
305 hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
306 if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK)
307 {
308 ASSERT_RT(BLT_FALSE);
309 }
310
311#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
312 /* Register USB PCD CallBacks */
313 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback);
314 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback);
315 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback);
316 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback);
317 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback);
318 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback);
319 HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback);
320
321 HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_OTG_FS, PCD_DataOutStageCallback);
322 HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_OTG_FS, PCD_DataInStageCallback);
323 HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOOUTIncompleteCallback);
324 HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOINIncompleteCallback);
325#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
326 HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80);
327 HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40);
328 HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x80);
329 }
330 return USBD_OK;
331}
332
333/**
334 * @brief De-Initializes the low level portion of the device driver.
335 * @param pdev: Device handle
336 * @retval USBD status
337 */
338USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
339{
340 HAL_StatusTypeDef hal_status = HAL_OK;
341 USBD_StatusTypeDef usb_status = USBD_OK;
342
343 hal_status = HAL_PCD_DeInit(pdev->pData);
344
345 usb_status = USBD_Get_USB_Status(hal_status);
346
347 return usb_status;
348}
349
350/**
351 * @brief Starts the low level portion of the device driver.
352 * @param pdev: Device handle
353 * @retval USBD status
354 */
355USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
356{
357 HAL_StatusTypeDef hal_status = HAL_OK;
358 USBD_StatusTypeDef usb_status = USBD_OK;
359
360 hal_status = HAL_PCD_Start(pdev->pData);
361
362 usb_status = USBD_Get_USB_Status(hal_status);
363
364 return usb_status;
365}
366
367/**
368 * @brief Stops the low level portion of the device driver.
369 * @param pdev: Device handle
370 * @retval USBD status
371 */
372USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
373{
374 HAL_StatusTypeDef hal_status = HAL_OK;
375 USBD_StatusTypeDef usb_status = USBD_OK;
376
377 hal_status = HAL_PCD_Stop(pdev->pData);
378
379 usb_status = USBD_Get_USB_Status(hal_status);
380
381 return usb_status;
382}
383
384/**
385 * @brief Opens an endpoint of the low level driver.
386 * @param pdev: Device handle
387 * @param ep_addr: Endpoint number
388 * @param ep_type: Endpoint type
389 * @param ep_mps: Endpoint max packet size
390 * @retval USBD status
391 */
392USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
393{
394 HAL_StatusTypeDef hal_status = HAL_OK;
395 USBD_StatusTypeDef usb_status = USBD_OK;
396
397 hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type);
398
399 usb_status = USBD_Get_USB_Status(hal_status);
400
401 return usb_status;
402}
403
404/**
405 * @brief Closes an endpoint of the low level driver.
406 * @param pdev: Device handle
407 * @param ep_addr: Endpoint number
408 * @retval USBD status
409 */
410USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
411{
412 HAL_StatusTypeDef hal_status = HAL_OK;
413 USBD_StatusTypeDef usb_status = USBD_OK;
414
415 hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr);
416
417 usb_status = USBD_Get_USB_Status(hal_status);
418
419 return usb_status;
420}
421
422/**
423 * @brief Flushes an endpoint of the Low Level Driver.
424 * @param pdev: Device handle
425 * @param ep_addr: Endpoint number
426 * @retval USBD status
427 */
428USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
429{
430 HAL_StatusTypeDef hal_status = HAL_OK;
431 USBD_StatusTypeDef usb_status = USBD_OK;
432
433 hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr);
434
435 usb_status = USBD_Get_USB_Status(hal_status);
436
437 return usb_status;
438}
439
440/**
441 * @brief Sets a Stall condition on an endpoint of the Low Level Driver.
442 * @param pdev: Device handle
443 * @param ep_addr: Endpoint number
444 * @retval USBD status
445 */
446USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
447{
448 HAL_StatusTypeDef hal_status = HAL_OK;
449 USBD_StatusTypeDef usb_status = USBD_OK;
450
451 hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr);
452
453 usb_status = USBD_Get_USB_Status(hal_status);
454
455 return usb_status;
456}
457
458/**
459 * @brief Clears a Stall condition on an endpoint of the Low Level Driver.
460 * @param pdev: Device handle
461 * @param ep_addr: Endpoint number
462 * @retval USBD status
463 */
464USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
465{
466 HAL_StatusTypeDef hal_status = HAL_OK;
467 USBD_StatusTypeDef usb_status = USBD_OK;
468
469 hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr);
470
471 usb_status = USBD_Get_USB_Status(hal_status);
472
473 return usb_status;
474}
475
476/**
477 * @brief Returns Stall condition.
478 * @param pdev: Device handle
479 * @param ep_addr: Endpoint number
480 * @retval Stall (1: Yes, 0: No)
481 */
482uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
483{
484 PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData;
485
486 if((ep_addr & 0x80) == 0x80)
487 {
488 return hpcd->IN_ep[ep_addr & 0x7F].is_stall;
489 }
490 else
491 {
492 return hpcd->OUT_ep[ep_addr & 0x7F].is_stall;
493 }
494}
495
496/**
497 * @brief Assigns a USB address to the device.
498 * @param pdev: Device handle
499 * @param dev_addr: Device address
500 * @retval USBD status
501 */
502USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
503{
504 HAL_StatusTypeDef hal_status = HAL_OK;
505 USBD_StatusTypeDef usb_status = USBD_OK;
506
507 hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr);
508
509 usb_status = USBD_Get_USB_Status(hal_status);
510
511 return usb_status;
512}
513
514/**
515 * @brief Transmits data over an endpoint.
516 * @param pdev: Device handle
517 * @param ep_addr: Endpoint number
518 * @param pbuf: Pointer to data to be sent
519 * @param size: Data size
520 * @retval USBD status
521 */
522USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
523{
524 HAL_StatusTypeDef hal_status = HAL_OK;
525 USBD_StatusTypeDef usb_status = USBD_OK;
526
527 hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size);
528
529 usb_status = USBD_Get_USB_Status(hal_status);
530
531 return usb_status;
532}
533
534/**
535 * @brief Prepares an endpoint for reception.
536 * @param pdev: Device handle
537 * @param ep_addr: Endpoint number
538 * @param pbuf: Pointer to data to be received
539 * @param size: Data size
540 * @retval USBD status
541 */
542USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
543{
544 HAL_StatusTypeDef hal_status = HAL_OK;
545 USBD_StatusTypeDef usb_status = USBD_OK;
546
547 hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size);
548
549 usb_status = USBD_Get_USB_Status(hal_status);
550
551 return usb_status;
552}
553
554/**
555 * @brief Returns the last transfered packet size.
556 * @param pdev: Device handle
557 * @param ep_addr: Endpoint number
558 * @retval Recived Data Size
559 */
560uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
561{
562 return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr);
563}
564
565/**
566 * @brief Delays routine for the USB Device Library.
567 * @param Delay: Delay in ms
568 * @retval None
569 */
570void USBD_LL_Delay(uint32_t Delay)
571{
572 HAL_Delay(Delay);
573}
574
575/**
576 * @brief Retuns the USB status depending on the HAL status:
577 * @param hal_status: HAL status
578 * @retval USB status
579 */
580USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
581{
582 USBD_StatusTypeDef usb_status = USBD_OK;
583
584 switch (hal_status)
585 {
586 case HAL_OK :
587 usb_status = USBD_OK;
588 break;
589 case HAL_ERROR :
590 usb_status = USBD_FAIL;
591 break;
592 case HAL_BUSY :
593 usb_status = USBD_BUSY;
594 break;
595 case HAL_TIMEOUT :
596 usb_status = USBD_FAIL;
597 break;
598 default :
599 usb_status = USBD_FAIL;
600 break;
601 }
602 return usb_status;
603}
604
605/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
Transmits data over an endpoint.
Definition usbd_conf.c:522
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Flushes an endpoint of the Low Level Driver.
Definition usbd_conf.c:428
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata)
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
Initializes the low level portion of the device driver.
Definition usbd_conf.c:288
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns Stall condition.
Definition usbd_conf.c:482
void USBD_LL_Delay(uint32_t Delay)
Delays routine for the USB Device Library.
Definition usbd_conf.c:570
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev)
Starts the low level portion of the device driver.
Definition usbd_conf.c:355
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
Prepares an endpoint for reception.
Definition usbd_conf.c:542
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev)
De-Initializes the low level portion of the device driver.
Definition usbd_conf.c:338
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed)
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Sets a Stall condition on an endpoint of the Low Level Driver.
Definition usbd_conf.c:446
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev)
Stops the low level portion of the device driver.
Definition usbd_conf.c:372
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr)
Assigns a USB address to the device.
Definition usbd_conf.c:502
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Clears a Stall condition on an endpoint of the Low Level Driver.
Definition usbd_conf.c:464
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps)
Opens an endpoint of the low level driver.
Definition usbd_conf.c:392
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Closes an endpoint of the low level driver.
Definition usbd_conf.c:410
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
Returns the last transfered packet size.
Definition usbd_conf.c:560
void UsbConnectHook(blt_bool connect)
Callback that gets called whenever the USB device should be connected to the USB bus.
Definition hooks.c:132
void UsbLeaveLowPowerModeHook(void)
Callback that gets called whenever the USB host requests the device to exit low power mode.
Definition hooks.c:156
void UsbEnterLowPowerModeHook(void)
Callback that gets called whenever the USB host requests the device to enter a low power mode.
Definition hooks.c:144
composite packet size
header file for the usbd_bulk.c file.
static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd
ISOOUTIncomplete callback.
static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd)
Resume callback. When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support i...
Definition usbd_conf.c:203
PCD_HandleTypeDef hpcd_USB_OTG_FS
Definition usbd_conf.c:54
static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
Suspend callback. When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support ...
Definition usbd_conf.c:176
static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
Disconnect callback.
Definition usbd_conf.c:268
static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd)
Setup stage callback.
Definition usbd_conf.c:85
void SystemClock_Config(void)
USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status)
Retuns the USB status depending on the HAL status:
Definition usbd_conf.c:580
static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd
Data Out stage callback.
static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd)
SOF callback.
Definition usbd_conf.c:129
static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd
ISOINIncomplete callback.
static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd)
Reset callback.
Definition usbd_conf.c:143
static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd
Data In stage callback.
static void uint8_t epnum
Definition usbd_conf.c:104
static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
Connect callback.
Definition usbd_conf.c:251
Header file for usbd_core.c file.