33
33
struct card_data {
34
34
snd_ctl_t * handle ;
35
35
int card ;
36
+ snd_ctl_card_info_t * info ;
37
+ const char * card_name ;
36
38
struct pollfd pollfd ;
37
39
int num_ctls ;
38
40
snd_ctl_elem_list_t * ctls ;
@@ -91,8 +93,26 @@ static void find_controls(void)
91
93
err = snd_card_get_longname (card , & card_longname );
92
94
if (err != 0 )
93
95
card_longname = "Unknown" ;
94
- ksft_print_msg ("Card %d - %s (%s)\n" , card ,
95
- card_name , card_longname );
96
+
97
+ err = snd_ctl_card_info_malloc (& card_data -> info );
98
+ if (err != 0 )
99
+ ksft_exit_fail_msg ("Failed to allocate card info: %d\n" ,
100
+ err );
101
+
102
+ err = snd_ctl_card_info (card_data -> handle , card_data -> info );
103
+ if (err == 0 ) {
104
+ card_data -> card_name = snd_ctl_card_info_get_id (card_data -> info );
105
+ if (!card_data -> card_name )
106
+ ksft_print_msg ("Failed to get card ID\n" );
107
+ } else {
108
+ ksft_print_msg ("Failed to get card info: %d\n" , err );
109
+ }
110
+
111
+ if (!card_data -> card_name )
112
+ card_data -> card_name = "Unknown" ;
113
+
114
+ ksft_print_msg ("Card %d/%s - %s (%s)\n" , card ,
115
+ card_data -> card_name , card_name , card_longname );
96
116
97
117
/* Count controls */
98
118
snd_ctl_elem_list_malloc (& card_data -> ctls );
@@ -389,16 +409,16 @@ static void test_ctl_get_value(struct ctl_data *ctl)
389
409
/* If the control is turned off let's be polite */
390
410
if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
391
411
ksft_print_msg ("%s is inactive\n" , ctl -> name );
392
- ksft_test_result_skip ("get_value.%d .%d\n" ,
393
- ctl -> card -> card , ctl -> elem );
412
+ ksft_test_result_skip ("get_value.%s .%d\n" ,
413
+ ctl -> card -> card_name , ctl -> elem );
394
414
return ;
395
415
}
396
416
397
417
/* Can't test reading on an unreadable control */
398
418
if (!snd_ctl_elem_info_is_readable (ctl -> info )) {
399
419
ksft_print_msg ("%s is not readable\n" , ctl -> name );
400
- ksft_test_result_skip ("get_value.%d .%d\n" ,
401
- ctl -> card -> card , ctl -> elem );
420
+ ksft_test_result_skip ("get_value.%s .%d\n" ,
421
+ ctl -> card -> card_name , ctl -> elem );
402
422
return ;
403
423
}
404
424
@@ -413,8 +433,8 @@ static void test_ctl_get_value(struct ctl_data *ctl)
413
433
err = - EINVAL ;
414
434
415
435
out :
416
- ksft_test_result (err >= 0 , "get_value.%d .%d\n" ,
417
- ctl -> card -> card , ctl -> elem );
436
+ ksft_test_result (err >= 0 , "get_value.%s .%d\n" ,
437
+ ctl -> card -> card_name , ctl -> elem );
418
438
}
419
439
420
440
static bool strend (const char * haystack , const char * needle )
@@ -431,7 +451,7 @@ static void test_ctl_name(struct ctl_data *ctl)
431
451
{
432
452
bool name_ok = true;
433
453
434
- ksft_print_msg ("%d .%d %s\n" , ctl -> card -> card , ctl -> elem ,
454
+ ksft_print_msg ("%s .%d %s\n" , ctl -> card -> card_name , ctl -> elem ,
435
455
ctl -> name );
436
456
437
457
/* Only boolean controls should end in Switch */
@@ -453,8 +473,8 @@ static void test_ctl_name(struct ctl_data *ctl)
453
473
}
454
474
}
455
475
456
- ksft_test_result (name_ok , "name.%d .%d\n" ,
457
- ctl -> card -> card , ctl -> elem );
476
+ ksft_test_result (name_ok , "name.%s .%d\n" ,
477
+ ctl -> card -> card_name , ctl -> elem );
458
478
}
459
479
460
480
static void show_values (struct ctl_data * ctl , snd_ctl_elem_value_t * orig_val ,
@@ -695,30 +715,30 @@ static void test_ctl_write_default(struct ctl_data *ctl)
695
715
/* If the control is turned off let's be polite */
696
716
if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
697
717
ksft_print_msg ("%s is inactive\n" , ctl -> name );
698
- ksft_test_result_skip ("write_default.%d .%d\n" ,
699
- ctl -> card -> card , ctl -> elem );
718
+ ksft_test_result_skip ("write_default.%s .%d\n" ,
719
+ ctl -> card -> card_name , ctl -> elem );
700
720
return ;
701
721
}
702
722
703
723
if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
704
724
ksft_print_msg ("%s is not writeable\n" , ctl -> name );
705
- ksft_test_result_skip ("write_default.%d .%d\n" ,
706
- ctl -> card -> card , ctl -> elem );
725
+ ksft_test_result_skip ("write_default.%s .%d\n" ,
726
+ ctl -> card -> card_name , ctl -> elem );
707
727
return ;
708
728
}
709
729
710
730
/* No idea what the default was for unreadable controls */
711
731
if (!snd_ctl_elem_info_is_readable (ctl -> info )) {
712
732
ksft_print_msg ("%s couldn't read default\n" , ctl -> name );
713
- ksft_test_result_skip ("write_default.%d .%d\n" ,
714
- ctl -> card -> card , ctl -> elem );
733
+ ksft_test_result_skip ("write_default.%s .%d\n" ,
734
+ ctl -> card -> card_name , ctl -> elem );
715
735
return ;
716
736
}
717
737
718
738
err = write_and_verify (ctl , ctl -> def_val , NULL );
719
739
720
- ksft_test_result (err >= 0 , "write_default.%d .%d\n" ,
721
- ctl -> card -> card , ctl -> elem );
740
+ ksft_test_result (err >= 0 , "write_default.%s .%d\n" ,
741
+ ctl -> card -> card_name , ctl -> elem );
722
742
}
723
743
724
744
static bool test_ctl_write_valid_boolean (struct ctl_data * ctl )
@@ -828,15 +848,15 @@ static void test_ctl_write_valid(struct ctl_data *ctl)
828
848
/* If the control is turned off let's be polite */
829
849
if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
830
850
ksft_print_msg ("%s is inactive\n" , ctl -> name );
831
- ksft_test_result_skip ("write_valid.%d .%d\n" ,
832
- ctl -> card -> card , ctl -> elem );
851
+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
852
+ ctl -> card -> card_name , ctl -> elem );
833
853
return ;
834
854
}
835
855
836
856
if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
837
857
ksft_print_msg ("%s is not writeable\n" , ctl -> name );
838
- ksft_test_result_skip ("write_valid.%d .%d\n" ,
839
- ctl -> card -> card , ctl -> elem );
858
+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
859
+ ctl -> card -> card_name , ctl -> elem );
840
860
return ;
841
861
}
842
862
@@ -859,16 +879,16 @@ static void test_ctl_write_valid(struct ctl_data *ctl)
859
879
860
880
default :
861
881
/* No tests for this yet */
862
- ksft_test_result_skip ("write_valid.%d .%d\n" ,
863
- ctl -> card -> card , ctl -> elem );
882
+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
883
+ ctl -> card -> card_name , ctl -> elem );
864
884
return ;
865
885
}
866
886
867
887
/* Restore the default value to minimise disruption */
868
888
write_and_verify (ctl , ctl -> def_val , NULL );
869
889
870
- ksft_test_result (pass , "write_valid.%d .%d\n" ,
871
- ctl -> card -> card , ctl -> elem );
890
+ ksft_test_result (pass , "write_valid.%s .%d\n" ,
891
+ ctl -> card -> card_name , ctl -> elem );
872
892
}
873
893
874
894
static bool test_ctl_write_invalid_value (struct ctl_data * ctl ,
@@ -1040,15 +1060,15 @@ static void test_ctl_write_invalid(struct ctl_data *ctl)
1040
1060
/* If the control is turned off let's be polite */
1041
1061
if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
1042
1062
ksft_print_msg ("%s is inactive\n" , ctl -> name );
1043
- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1044
- ctl -> card -> card , ctl -> elem );
1063
+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1064
+ ctl -> card -> card_name , ctl -> elem );
1045
1065
return ;
1046
1066
}
1047
1067
1048
1068
if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
1049
1069
ksft_print_msg ("%s is not writeable\n" , ctl -> name );
1050
- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1051
- ctl -> card -> card , ctl -> elem );
1070
+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1071
+ ctl -> card -> card_name , ctl -> elem );
1052
1072
return ;
1053
1073
}
1054
1074
@@ -1071,28 +1091,28 @@ static void test_ctl_write_invalid(struct ctl_data *ctl)
1071
1091
1072
1092
default :
1073
1093
/* No tests for this yet */
1074
- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1075
- ctl -> card -> card , ctl -> elem );
1094
+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1095
+ ctl -> card -> card_name , ctl -> elem );
1076
1096
return ;
1077
1097
}
1078
1098
1079
1099
/* Restore the default value to minimise disruption */
1080
1100
write_and_verify (ctl , ctl -> def_val , NULL );
1081
1101
1082
- ksft_test_result (pass , "write_invalid.%d .%d\n" ,
1083
- ctl -> card -> card , ctl -> elem );
1102
+ ksft_test_result (pass , "write_invalid.%s .%d\n" ,
1103
+ ctl -> card -> card_name , ctl -> elem );
1084
1104
}
1085
1105
1086
1106
static void test_ctl_event_missing (struct ctl_data * ctl )
1087
1107
{
1088
- ksft_test_result (!ctl -> event_missing , "event_missing.%d .%d\n" ,
1089
- ctl -> card -> card , ctl -> elem );
1108
+ ksft_test_result (!ctl -> event_missing , "event_missing.%s .%d\n" ,
1109
+ ctl -> card -> card_name , ctl -> elem );
1090
1110
}
1091
1111
1092
1112
static void test_ctl_event_spurious (struct ctl_data * ctl )
1093
1113
{
1094
- ksft_test_result (!ctl -> event_spurious , "event_spurious.%d .%d\n" ,
1095
- ctl -> card -> card , ctl -> elem );
1114
+ ksft_test_result (!ctl -> event_spurious , "event_spurious.%s .%d\n" ,
1115
+ ctl -> card -> card_name , ctl -> elem );
1096
1116
}
1097
1117
1098
1118
int main (void )
0 commit comments