Skip to content

Commit 07b50a8

Browse files
committed
[USB] Update STM32 USB Host library to v3.3.4
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 52642d9 commit 07b50a8

File tree

9 files changed

+517
-266
lines changed

9 files changed

+517
-266
lines changed

system/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src/usbh_audio.c

Lines changed: 121 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ static USBH_StatusTypeDef USBH_AUDIO_InterfaceInit(USBH_HandleTypeDef *phost)
277277
{
278278
USBH_AUDIO_BuildHeadphonePath(phost);
279279

280-
AUDIO_Handle->headphone.Pipe = USBH_AllocPipe(phost, AUDIO_Handle->headphone.Ep);
280+
AUDIO_Handle->headphone.Pipe = USBH_AllocPipe(phost, AUDIO_Handle->headphone.Ep);
281281

282282
/* Open pipe for IN endpoint */
283283
USBH_OpenPipe(phost,
@@ -289,13 +289,12 @@ static USBH_StatusTypeDef USBH_AUDIO_InterfaceInit(USBH_HandleTypeDef *phost)
289289
AUDIO_Handle->headphone.EpSize);
290290

291291
USBH_LL_SetToggle(phost, AUDIO_Handle->headphone.Pipe, 0U);
292-
293292
}
294293

295294
if (AUDIO_Handle->microphone.supported == 1U)
296295
{
297296
USBH_AUDIO_BuildMicrophonePath(phost);
298-
AUDIO_Handle->microphone.Pipe = USBH_AllocPipe(phost, AUDIO_Handle->microphone.Ep);
297+
AUDIO_Handle->microphone.Pipe = USBH_AllocPipe(phost, AUDIO_Handle->microphone.Ep);
299298

300299
/* Open pipe for IN endpoint */
301300
USBH_OpenPipe(phost,
@@ -389,143 +388,178 @@ static USBH_StatusTypeDef USBH_AUDIO_ClassRequest(USBH_HandleTypeDef *phost)
389388
/* Switch AUDIO REQ state machine */
390389
switch (AUDIO_Handle->req_state)
391390
{
392-
case AUDIO_REQ_INIT:
393-
case AUDIO_REQ_SET_DEFAULT_IN_INTERFACE:
394-
if (AUDIO_Handle->microphone.supported == 1U)
395-
{
396-
req_status = USBH_SetInterface(phost,
397-
AUDIO_Handle->microphone.interface,
398-
0U);
391+
case AUDIO_REQ_INIT:
392+
case AUDIO_REQ_SET_DEFAULT_IN_INTERFACE:
393+
if (AUDIO_Handle->microphone.supported == 1U)
394+
{
395+
req_status = USBH_SetInterface(phost,
396+
AUDIO_Handle->microphone.interface,
397+
0U);
399398

400-
if (req_status == USBH_OK)
401-
{
402-
AUDIO_Handle->req_state = AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE;
403-
}
399+
if (req_status == USBH_OK)
400+
{
401+
AUDIO_Handle->req_state = AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE;
402+
}
403+
else if (req_status == USBH_NOT_SUPPORTED)
404+
{
405+
USBH_ErrLog("Control error: AUDIO: Device Set interface request failed");
406+
status = USBH_FAIL;
404407
}
405408
else
406409
{
407-
AUDIO_Handle->req_state = AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE;
410+
/* .. */
411+
}
412+
}
413+
else
414+
{
415+
AUDIO_Handle->req_state = AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE;
408416

409417
#if (USBH_USE_OS == 1U)
410-
phost->os_msg = (uint32_t)USBH_URB_EVENT;
418+
phost->os_msg = (uint32_t)USBH_URB_EVENT;
411419
#if (osCMSIS < 0x20000U)
412-
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
420+
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
413421
#else
414-
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
422+
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
415423
#endif
416424
#endif
417-
}
418-
break;
425+
}
426+
break;
419427

420-
case AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE:
421-
if (AUDIO_Handle->headphone.supported == 1U)
422-
{
423-
req_status = USBH_SetInterface(phost,
424-
AUDIO_Handle->headphone.interface,
425-
0U);
428+
case AUDIO_REQ_SET_DEFAULT_OUT_INTERFACE:
429+
if (AUDIO_Handle->headphone.supported == 1U)
430+
{
431+
req_status = USBH_SetInterface(phost,
432+
AUDIO_Handle->headphone.interface,
433+
0U);
426434

427-
if (req_status == USBH_OK)
428-
{
429-
AUDIO_Handle->req_state = AUDIO_REQ_CS_REQUESTS;
430-
AUDIO_Handle->cs_req_state = AUDIO_REQ_GET_VOLUME;
435+
if (req_status == USBH_OK)
436+
{
437+
AUDIO_Handle->req_state = AUDIO_REQ_CS_REQUESTS;
438+
AUDIO_Handle->cs_req_state = AUDIO_REQ_GET_VOLUME;
431439

432-
AUDIO_Handle->temp_feature = AUDIO_Handle->headphone.asociated_feature;
433-
AUDIO_Handle->temp_channels = AUDIO_Handle->headphone.asociated_channels;
434-
}
440+
AUDIO_Handle->temp_feature = AUDIO_Handle->headphone.asociated_feature;
441+
AUDIO_Handle->temp_channels = AUDIO_Handle->headphone.asociated_channels;
442+
}
443+
else if (req_status == USBH_NOT_SUPPORTED)
444+
{
445+
USBH_ErrLog("Control error: AUDIO: Device Set interface request failed");
446+
status = USBH_FAIL;
435447
}
436448
else
437449
{
438-
AUDIO_Handle->req_state = AUDIO_REQ_CS_REQUESTS;
439-
AUDIO_Handle->cs_req_state = AUDIO_REQ_GET_VOLUME;
450+
/* .. */
451+
}
452+
}
453+
else
454+
{
455+
AUDIO_Handle->req_state = AUDIO_REQ_CS_REQUESTS;
456+
AUDIO_Handle->cs_req_state = AUDIO_REQ_GET_VOLUME;
440457

441458
#if (USBH_USE_OS == 1U)
442-
phost->os_msg = (uint32_t)USBH_URB_EVENT;
459+
phost->os_msg = (uint32_t)USBH_URB_EVENT;
443460
#if (osCMSIS < 0x20000U)
444-
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
461+
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
445462
#else
446-
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
463+
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
447464
#endif
448465
#endif
449-
}
450-
break;
466+
}
467+
break;
468+
469+
case AUDIO_REQ_CS_REQUESTS:
470+
if (USBH_AUDIO_HandleCSRequest(phost) == USBH_OK)
471+
{
472+
AUDIO_Handle->req_state = AUDIO_REQ_SET_IN_INTERFACE;
473+
}
474+
break;
451475

452-
case AUDIO_REQ_CS_REQUESTS:
453-
if (USBH_AUDIO_HandleCSRequest(phost) == USBH_OK)
476+
case AUDIO_REQ_SET_IN_INTERFACE:
477+
if (AUDIO_Handle->microphone.supported == 1U)
478+
{
479+
req_status = USBH_SetInterface(phost,
480+
AUDIO_Handle->microphone.interface,
481+
AUDIO_Handle->microphone.AltSettings);
482+
483+
if (req_status == USBH_OK)
454484
{
455-
AUDIO_Handle->req_state = AUDIO_REQ_SET_IN_INTERFACE;
485+
AUDIO_Handle->req_state = AUDIO_REQ_SET_OUT_INTERFACE;
456486
}
457-
break;
458-
459-
case AUDIO_REQ_SET_IN_INTERFACE:
460-
if (AUDIO_Handle->microphone.supported == 1U)
487+
else if (req_status == USBH_NOT_SUPPORTED)
461488
{
462-
req_status = USBH_SetInterface(phost,
463-
AUDIO_Handle->microphone.interface,
464-
AUDIO_Handle->microphone.AltSettings);
465-
466-
if (req_status == USBH_OK)
467-
{
468-
AUDIO_Handle->req_state = AUDIO_REQ_SET_OUT_INTERFACE;
469-
}
489+
USBH_ErrLog("Control error: AUDIO: Device Set interface request failed");
490+
status = USBH_FAIL;
470491
}
471492
else
472493
{
473-
AUDIO_Handle->req_state = AUDIO_REQ_SET_OUT_INTERFACE;
494+
/* .. */
495+
}
496+
}
497+
else
498+
{
499+
AUDIO_Handle->req_state = AUDIO_REQ_SET_OUT_INTERFACE;
474500

475501
#if (USBH_USE_OS == 1U)
476-
phost->os_msg = (uint32_t)USBH_URB_EVENT;
502+
phost->os_msg = (uint32_t)USBH_URB_EVENT;
477503
#if (osCMSIS < 0x20000U)
478-
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
504+
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
479505
#else
480-
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
506+
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
481507
#endif
482508
#endif
509+
}
510+
break;
511+
case AUDIO_REQ_SET_OUT_INTERFACE:
512+
if (AUDIO_Handle->headphone.supported == 1U)
513+
{
514+
req_status = USBH_SetInterface(phost,
515+
AUDIO_Handle->headphone.interface,
516+
AUDIO_Handle->headphone.AltSettings);
517+
518+
if (req_status == USBH_OK)
519+
{
520+
AUDIO_Handle->req_state = AUDIO_REQ_IDLE;
483521
}
484-
break;
485-
case AUDIO_REQ_SET_OUT_INTERFACE:
486-
if (AUDIO_Handle->headphone.supported == 1U)
522+
else if (req_status == USBH_NOT_SUPPORTED)
487523
{
488-
req_status = USBH_SetInterface(phost,
489-
AUDIO_Handle->headphone.interface,
490-
AUDIO_Handle->headphone.AltSettings);
491-
492-
if (req_status == USBH_OK)
493-
{
494-
AUDIO_Handle->req_state = AUDIO_REQ_IDLE;
495-
}
496-
524+
USBH_ErrLog("Control error: AUDIO: Device Set interface request failed");
525+
status = USBH_FAIL;
497526
}
498527
else
499528
{
500-
AUDIO_Handle->req_state = AUDIO_REQ_IDLE;
529+
/* .. */
530+
}
531+
}
532+
else
533+
{
534+
AUDIO_Handle->req_state = AUDIO_REQ_IDLE;
501535

502536
#if (USBH_USE_OS == 1U)
503-
phost->os_msg = (uint32_t)USBH_URB_EVENT;
537+
phost->os_msg = (uint32_t)USBH_URB_EVENT;
504538
#if (osCMSIS < 0x20000U)
505-
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
539+
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
506540
#else
507-
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
541+
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
508542
#endif
509543
#endif
510-
}
511-
break;
512-
case AUDIO_REQ_IDLE:
513-
AUDIO_Handle->play_state = AUDIO_PLAYBACK_INIT;
514-
phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
515-
status = USBH_OK;
544+
}
545+
break;
546+
case AUDIO_REQ_IDLE:
547+
AUDIO_Handle->play_state = AUDIO_PLAYBACK_INIT;
548+
phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
549+
status = USBH_OK;
516550

517551
#if (USBH_USE_OS == 1U)
518-
phost->os_msg = (uint32_t)USBH_CLASS_EVENT;
552+
phost->os_msg = (uint32_t)USBH_CLASS_EVENT;
519553
#if (osCMSIS < 0x20000U)
520-
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
554+
(void)osMessagePut(phost->os_event, phost->os_msg, 0U);
521555
#else
522-
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
556+
(void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, NULL);
523557
#endif
524558
#endif
525-
break;
559+
break;
526560

527-
default:
528-
break;
561+
default:
562+
break;
529563
}
530564
return status;
531565
}

system/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,15 +307,24 @@ static USBH_StatusTypeDef USBH_CDC_InterfaceDeInit(USBH_HandleTypeDef *phost)
307307
*/
308308
static USBH_StatusTypeDef USBH_CDC_ClassRequest(USBH_HandleTypeDef *phost)
309309
{
310-
USBH_StatusTypeDef status = USBH_FAIL ;
310+
USBH_StatusTypeDef status;
311311
CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData;
312312

313-
/*Issue the get line coding request*/
314-
status = GetLineCoding(phost, &CDC_Handle->LineCoding);
313+
/* Issue the get line coding request */
314+
status = GetLineCoding(phost, &CDC_Handle->LineCoding);
315315
if (status == USBH_OK)
316316
{
317317
phost->pUser(phost, HOST_USER_CLASS_ACTIVE);
318318
}
319+
else if (status == USBH_NOT_SUPPORTED)
320+
{
321+
USBH_ErrLog("Control error: CDC: Device Get Line Coding configuration failed");
322+
}
323+
else
324+
{
325+
/* .. */
326+
}
327+
319328
return status;
320329
}
321330

@@ -392,7 +401,7 @@ static USBH_StatusTypeDef USBH_CDC_Process(USBH_HandleTypeDef *phost)
392401
if (req_status == USBH_OK)
393402
{
394403
/*Change the state to waiting*/
395-
CDC_Handle->state = CDC_IDLE_STATE ;
404+
CDC_Handle->state = CDC_IDLE_STATE;
396405
}
397406
break;
398407

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy