[BugFix][audio][API-1405] sos occasional call probability no sound problem, support fota, optimize dialing process
Change-Id: Ic6ced914924962b0fb912af16b825d346b604696
diff --git a/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
index 28e8ef0..f8ce340 100644
--- a/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
+++ b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
@@ -99,9 +99,38 @@
}
#you.chen@2023.07.11 add for rndis check start
+recover_tmp_conf()
+{
+ FIND_FILE="/usr/lib/tmpfiles.d/tmp.conf"
+ FIND_STR="x /tmp/ap_speech"
+
+ if [ `grep -c "$FIND_STR" $FIND_FILE` -ne '0' ];then
+ echo "This str exit" > /dev/kmsg
+ else
+ echo "$FIND_STR" >> "$FIND_FILE"
+ fi
+ FIND_STR2="x /tmp/audio_ctrl_service"
+ if [ `grep -c "$FIND_STR2" $FIND_FILE` -ne '0' ];then
+ echo "This str2 exit" > /dev/kmsg
+ else
+ echo "$FIND_STR2" >> "$FIND_FILE"
+ fi
+ FIND_STR3="x /tmp/libmodem-afe-ctrl"
+ if [ `grep -c "$FIND_STR3" $FIND_FILE` -ne '0' ];then
+ echo "This str3 exit" > /dev/kmsg
+ else
+ echo "$FIND_STR3" >> "$FIND_FILE"
+ fi
+ FIND_STR4="x /tmp/tel_demo_single_proc.lock"
+ if [ `grep -c "$FIND_STR4" $FIND_FILE` -ne '0' ];then
+ echo "This str4 exit" > /dev/kmsg
+ else
+ echo "$FIND_STR4" >> "$FIND_FILE"
+ fi
+}
cd /
-
+#recover some files start
echo "$TAG: Before recover radio_property" > /dev/kmsg
rm -rf /etc/config/.*.uci*
check_copy_file /data_backup/radio_property /etc/config/radio_property
@@ -111,6 +140,8 @@
check_copy_file /data_backup/terminal_controller.conf /data/atsvc/terminal_controller.conf
echo "$TAG: After recover radio_property" > /dev/kmsg
+recover_tmp_conf
+#recover some files end
IFRO="$(cat /sys/class/ubi/ubi1/ro_mode)"
echo "$TAG the ro_mode:$IFRO" > /dev/kmsg
diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index 65ce400..b197c28 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -26,6 +26,11 @@
#define CALL_ON (1)
#define USER_LOG_TAG "LYNQ_CALL"
+#define AP_SPEECH "/tmp/ap_speech"
+#define AUDIO_CTRL_SER "/tmp/audio_ctrl_service"
+#define LIBMODEM_AFE "/tmp/libmodem-afe-ctrl"
+#define TELE_DEMO_LOCK "/tmp/tel_demo_single_proc.lock"
+
using ::android::Parcel;
/**
@@ -909,6 +914,52 @@
return s_module_isDial;
}
+int check_file_access(const char *fileName)
+{
+ if(0 == access(fileName,F_OK))
+ {
+ LYINFLOG("find file %s success",fileName);
+ return 0;
+ }
+ LYERRLOG("find file %s fail",fileName);
+ return 1;
+}
+int try_reset_audio_service()
+{
+ //check files:audio-ctrl-service,libmodem-afe-service,speech_daemon
+ int ap_speech = 0;
+ int audio_ctrl_ser = 0;
+ int md_afe = 0;
+ int tele_demo_lock = 0;
+ LYINFLOG("try_reset_audio_service start");
+ ap_speech = check_file_access(AP_SPEECH);
+ audio_ctrl_ser = check_file_access(AUDIO_CTRL_SER);
+ md_afe = check_file_access(LIBMODEM_AFE);
+ tele_demo_lock = check_file_access(TELE_DEMO_LOCK);
+ if((ap_speech + audio_ctrl_ser + md_afe) > 0)
+ {
+ system("systemctl stop audio-ctrl-service");
+ system("systemctl stop speech_daemon");
+ system("systemctl stop libmodem_afe_service");
+ usleep(200000);//200ms
+ system("rm /tmp/audio_ctrl_service -rf");
+ system("rm /tmp/ap_speech -rf");
+ system("rm /tmp/libmodem-afe-ctrl -rf");
+ usleep(100000);//100ms
+ system("systemctl start libmodem_afe_service");
+ usleep(200000);//200ms
+ system("systemctl start speech_daemon");
+ usleep(200000);//200ms
+ system("systemctl start audio-ctrl-service");
+ sleep(1);//1s
+ LYERRLOG("reset audio relation service");
+ }
+ if(tele_demo_lock)
+ {
+ LYERRLOG("%s lose,why?",TELE_DEMO_LOCK);
+ }
+ return 0;
+}
int lynq_call(int* handle,char addr[])
{
@@ -917,7 +968,7 @@
LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
return LYNQ_E_CONFLICT;
}
-
+ try_reset_audio_service();
int lynq_call_id = -1;
LYINFLOG("lynq_call begin addr %s",addr);