xref: /OK3568_Linux_fs/external/rk_pcba_test/echo_audio_play_test.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *  audio_test.c  --  audio test application
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  *  Copyright (c) 2017 Rockchip Electronics Co. Ltd.
5*4882a593Smuzhiyun  *  Author: Panzhenzhuan Wang <randy.wang@rock-chips.com>
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
8*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
9*4882a593Smuzhiyun  * You may obtain a copy of the License at
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  * 	 http://www.apache.org/licenses/LICENSE-2.0
12*4882a593Smuzhiyun  *
13*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
14*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
15*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
17*4882a593Smuzhiyun  * limitations under the License.
18*4882a593Smuzhiyun  */
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #include <stdio.h>
21*4882a593Smuzhiyun #include <stdlib.h>
22*4882a593Smuzhiyun #include <string.h>
23*4882a593Smuzhiyun #include <unistd.h>
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #include <sys/types.h>
26*4882a593Smuzhiyun #include <sys/stat.h>
27*4882a593Smuzhiyun #include <fcntl.h>
28*4882a593Smuzhiyun #include <sys/time.h>
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #include "audio_test.h"
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define LOG_TAG "audio_play_test"
33*4882a593Smuzhiyun #include "common.h"
34*4882a593Smuzhiyun #define AUDIO_EVENT_TIMEOUT -85
35*4882a593Smuzhiyun #define AUDIO_TIME 5
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun //*Audio test
audio_play_test(void * argv)38*4882a593Smuzhiyun void *audio_play_test(void *argv)
39*4882a593Smuzhiyun {
40*4882a593Smuzhiyun     char cmd[128];
41*4882a593Smuzhiyun     memset(cmd, 0, sizeof(cmd));
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun     fprintf(stderr,"=========function :%s start=============\n",__func__);
44*4882a593Smuzhiyun     //* 1���ȷ���
45*4882a593Smuzhiyun     fprintf(stderr,"Start test audio record and play.\n");
46*4882a593Smuzhiyun #ifdef PCBA_PX3SE
47*4882a593Smuzhiyun     sprintf(cmd,"aplay -d %d %s/%s",AUDIO_TIME,PCBA_TEST_PATH,AUDIO_PLAY_FILE);
48*4882a593Smuzhiyun #endif
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #ifdef PCBA_3308
51*4882a593Smuzhiyun     sprintf(cmd,"aplay %s/%s",PCBA_TEST_PATH,AUDIO_PLAY_FILE);
52*4882a593Smuzhiyun #endif
53*4882a593Smuzhiyun #ifdef PCBA_3229GVA
54*4882a593Smuzhiyun     sprintf(cmd,"aplay %s/%s",PCBA_TEST_PATH,AUDIO_PLAY_FILE);
55*4882a593Smuzhiyun #endif
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #ifdef PCBA_1808
58*4882a593Smuzhiyun     sprintf(cmd,"aplay -D default:CARD=rockchiprk809co %s/%s",PCBA_TEST_PATH,AUDIO_PLAY_FILE);
59*4882a593Smuzhiyun #endif
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun     if (cmd[0] != '\0')
62*4882a593Smuzhiyun         system(cmd);
63*4882a593Smuzhiyun     else {
64*4882a593Smuzhiyun         fprintf(stderr,"====CMD is null, Pls check PCBA platform====\n",__func__);
65*4882a593Smuzhiyun         return (void*)-1;
66*4882a593Smuzhiyun     }
67*4882a593Smuzhiyun     fprintf(stderr,"=========function :%s finish=============\n",__func__);
68*4882a593Smuzhiyun     return 0;
69*4882a593Smuzhiyun }
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun /*���������*/
main(int argc,char * argv[])72*4882a593Smuzhiyun int main(int argc, char *argv[])
73*4882a593Smuzhiyun {
74*4882a593Smuzhiyun     int delay_t = 0,err_code = 0;
75*4882a593Smuzhiyun 	struct timeval t1, t2;
76*4882a593Smuzhiyun 	char buf[COMMAND_VALUESIZE] = "audio_play_test";
77*4882a593Smuzhiyun     char result[COMMAND_VALUESIZE] = RESULT_VERIFY;
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #ifdef PCBA_3308
80*4882a593Smuzhiyun     system("amixer cset numid=4 26");
81*4882a593Smuzhiyun #endif
82*4882a593Smuzhiyun #ifdef PCBA_3308
83*4882a593Smuzhiyun     system("amixer set Master Playback 30%");
84*4882a593Smuzhiyun #endif
85*4882a593Smuzhiyun #ifdef PCBA_3229GVA
86*4882a593Smuzhiyun     system("amixer cset numid=4 26");
87*4882a593Smuzhiyun #endif
88*4882a593Smuzhiyun 	log_info("audio play test start...\n");
89*4882a593Smuzhiyun 	gettimeofday(&t1, NULL);
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun     int ret;
92*4882a593Smuzhiyun     while(1)
93*4882a593Smuzhiyun     {
94*4882a593Smuzhiyun         ret = (int)audio_play_test(argv[0]);
95*4882a593Smuzhiyun         if (ret) {
96*4882a593Smuzhiyun             err_code = AUDIO_PLAY_ERR;
97*4882a593Smuzhiyun             break;
98*4882a593Smuzhiyun         }
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun         gettimeofday(&t2, NULL);
101*4882a593Smuzhiyun 		delay_t = (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec);
102*4882a593Smuzhiyun 		if (delay_t > MANUAL_TEST_TIMEOUT) {
103*4882a593Smuzhiyun 			log_warn("audio play test end, timeout 60s\n");
104*4882a593Smuzhiyun 			err_code = AUDIO_EVENT_TIMEOUT;
105*4882a593Smuzhiyun 			break;
106*4882a593Smuzhiyun 		}
107*4882a593Smuzhiyun     }
108*4882a593Smuzhiyun     if (err_code)
109*4882a593Smuzhiyun 		strcpy(result, RESULT_FAIL);
110*4882a593Smuzhiyun     send_msg_to_server(buf, result, err_code);
111*4882a593Smuzhiyun     return 0;
112*4882a593Smuzhiyun }
113