1、问题描述
客户xx公司,TTS报警项目,项目需求是在营业厅中放置一个报警设备,需要报警的时候,自动打电话并且在对端播报TTS报警。
在4个月之内,隔一段时间就会出现报警返回ERROR的问题。上周刚接到问题,以为是概率问题,并且抓不到log(log是使用printf打印,都打印到了atfwd_daemon进程中),上位机也得不到log,因此解决起来比较困难,一开始几天没重视,后来发现客户需要赶紧解决,不然要退货,这才看是看TTS代码。
2、问题分析
1、根据客户描述,这应该是linux应用问题,和底层无关
2、客户现场失败后,使用 AT+GTTS? 查询到播放标记为1
3、涉及场景是通话和播放TTS
4、从现象看,大概率是软件问题,并且在我们公司应该可以复现
3、问题定位
根据上面分析,我们开始走读代码。我们的代码涉及到如下:
apps_proc/mdm-ss-mgr/atfwd-daemon
主要涉及
atfwd_misc.c、pcm_util.c、tts.c
因为是TTS返回ERROR,所以我们首先走读下TTS代码
TTS播放命令
at+gtts=1,“E5B9BFE5928CE9809AE697A0E7BABFE882A1E4BBBDE69C89E99990E585ACE58FB8”,0
tts_handle_tts_cmd是播放TTS的入口函数,但是如果当前正在播放TTS,也就说说,播放的标记为1,这个时候就会返回ERROR。
if(