[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);