@@ -277,7 +277,7 @@ static USBH_StatusTypeDef USBH_AUDIO_InterfaceInit(USBH_HandleTypeDef *phost)
277
277
{
278
278
USBH_AUDIO_BuildHeadphonePath (phost );
279
279
280
- AUDIO_Handle -> headphone .Pipe = USBH_AllocPipe (phost , AUDIO_Handle -> headphone .Ep );
280
+ AUDIO_Handle -> headphone .Pipe = USBH_AllocPipe (phost , AUDIO_Handle -> headphone .Ep );
281
281
282
282
/* Open pipe for IN endpoint */
283
283
USBH_OpenPipe (phost ,
@@ -289,13 +289,12 @@ static USBH_StatusTypeDef USBH_AUDIO_InterfaceInit(USBH_HandleTypeDef *phost)
289
289
AUDIO_Handle -> headphone .EpSize );
290
290
291
291
USBH_LL_SetToggle (phost , AUDIO_Handle -> headphone .Pipe , 0U );
292
-
293
292
}
294
293
295
294
if (AUDIO_Handle -> microphone .supported == 1U )
296
295
{
297
296
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 );
299
298
300
299
/* Open pipe for IN endpoint */
301
300
USBH_OpenPipe (phost ,
@@ -389,143 +388,178 @@ static USBH_StatusTypeDef USBH_AUDIO_ClassRequest(USBH_HandleTypeDef *phost)
389
388
/* Switch AUDIO REQ state machine */
390
389
switch (AUDIO_Handle -> req_state )
391
390
{
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 );
399
398
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 ;
404
407
}
405
408
else
406
409
{
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 ;
408
416
409
417
#if (USBH_USE_OS == 1U )
410
- phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
418
+ phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
411
419
#if (osCMSIS < 0x20000U )
412
- (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
420
+ (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
413
421
#else
414
- (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
422
+ (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
415
423
#endif
416
424
#endif
417
- }
418
- break ;
425
+ }
426
+ break ;
419
427
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 );
426
434
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 ;
431
439
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 ;
435
447
}
436
448
else
437
449
{
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 ;
440
457
441
458
#if (USBH_USE_OS == 1U )
442
- phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
459
+ phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
443
460
#if (osCMSIS < 0x20000U )
444
- (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
461
+ (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
445
462
#else
446
- (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
463
+ (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
447
464
#endif
448
465
#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 ;
451
475
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 )
454
484
{
455
- AUDIO_Handle -> req_state = AUDIO_REQ_SET_IN_INTERFACE ;
485
+ AUDIO_Handle -> req_state = AUDIO_REQ_SET_OUT_INTERFACE ;
456
486
}
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 )
461
488
{
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 ;
470
491
}
471
492
else
472
493
{
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 ;
474
500
475
501
#if (USBH_USE_OS == 1U )
476
- phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
502
+ phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
477
503
#if (osCMSIS < 0x20000U )
478
- (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
504
+ (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
479
505
#else
480
- (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
506
+ (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
481
507
#endif
482
508
#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 ;
483
521
}
484
- break ;
485
- case AUDIO_REQ_SET_OUT_INTERFACE :
486
- if (AUDIO_Handle -> headphone .supported == 1U )
522
+ else if (req_status == USBH_NOT_SUPPORTED )
487
523
{
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 ;
497
526
}
498
527
else
499
528
{
500
- AUDIO_Handle -> req_state = AUDIO_REQ_IDLE ;
529
+ /* .. */
530
+ }
531
+ }
532
+ else
533
+ {
534
+ AUDIO_Handle -> req_state = AUDIO_REQ_IDLE ;
501
535
502
536
#if (USBH_USE_OS == 1U )
503
- phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
537
+ phost -> os_msg = (uint32_t )USBH_URB_EVENT ;
504
538
#if (osCMSIS < 0x20000U )
505
- (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
539
+ (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
506
540
#else
507
- (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
541
+ (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
508
542
#endif
509
543
#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 ;
516
550
517
551
#if (USBH_USE_OS == 1U )
518
- phost -> os_msg = (uint32_t )USBH_CLASS_EVENT ;
552
+ phost -> os_msg = (uint32_t )USBH_CLASS_EVENT ;
519
553
#if (osCMSIS < 0x20000U )
520
- (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
554
+ (void )osMessagePut (phost -> os_event , phost -> os_msg , 0U );
521
555
#else
522
- (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
556
+ (void )osMessageQueuePut (phost -> os_event , & phost -> os_msg , 0U , NULL );
523
557
#endif
524
558
#endif
525
- break ;
559
+ break ;
526
560
527
- default :
528
- break ;
561
+ default :
562
+ break ;
529
563
}
530
564
return status ;
531
565
}
0 commit comments