Skip to content

Commit 0aa8cc0

Browse files
committed
[USB] Update STM32 USB Host library to v3.3.4
Signed-off-by: Frederic Pillon <[email protected]>
1 parent ad13094 commit 0aa8cc0

File tree

9 files changed

+517
-266
lines changed

9 files changed

+517
-266
lines changed

Diff for: system/Middlewares/ST/STM32_USB_Host_Library/Class/AUDIO/Src/usbh_audio.c

+121-87
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
}

Diff for: system/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c

+13-4
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)