Merge "[BugFix][API-1450]clear dnsmasq lease info when sta device disconnect" into GSW3.0-No-Connman
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c b/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
index 25e060a..0ea28ce 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/suspend-service/files/autosuspend_wakeup_count.c
@@ -325,8 +325,6 @@
        if(adb_debug_mode == 2)
         {
             system("echo 12 | emdlogger_ctrl");
-            sleep(1);
-            system("echo 6 | emdlogger_ctrl");//start modem log SD mode
         }
 
        usleep(200000); 
@@ -342,8 +340,6 @@
      if(adb_debug_mode == 2)
     {
         system("echo 12 | emdlogger_ctrl");
-        sleep(1);
-        system("echo 6 | emdlogger_ctrl");//start modem log SD mode
     }
 
 
diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index db7d129..01829e2 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -4754,11 +4754,9 @@
 
 //unsol trigger other things.
     switch(unsolResponse) {
-#ifdef LED_SUPPORT
     case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:   //add this for API-720
         ARspRequest(RIL_REQUEST_GET_CURRENT_CALLS, soc_id);
         break;
-#endif
     case RIL_UNSOL_CALL_RING:
         callRing(soc_id);
         break;
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
index 81cfe22..c970ce1 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -133,6 +133,7 @@
 #define FOTA_UCI_MODULE "lynq_fota"
 #define FOTA_UCI_FILE "lynq_uci"
 #define FOTA_UCI_ADDR "lynq_fota_addr"
+#define FOTA_UCI_STATE "lynq_fota_state"
 
 #define FILE_UPDATE_STATE  "/data/.update_status"
 #define FILE_UPDATE_FLAG   "/tmp/update_flag"
@@ -179,6 +180,13 @@
 #define DEV_MEDMCU_A        "/dev/disk/by-partlabel/medmcu_a"
 #define DEV_MEDMCU_B        "/dev/disk/by-partlabel/medmcu_b"
 
+#define DEV_OEMAPP_A        "/dev/disk/by-partlabel/oemapp_a"
+#define DEV_OEMAPP_B        "/dev/disk/by-partlabel/oemapp_b"
+
+#define DEV_OEMAPP2_A        "/dev/disk/by-partlabel/oemapp2_a"
+#define DEV_OEMAPP2_B        "/dev/disk/by-partlabel/oemapp2_b"
+
+
 #define DEV_MISC        "/dev/disk/by-partlabel/misc"
 
 #define BACKUP_UBI_NUM  31 //max ubi number
@@ -746,7 +754,8 @@
 
 
 
-static int rock_update_main(unsigned int rom_base,  unsigned int backup_base, unsigned int backup_len, int read_rom_directly, int first_run, int switch_slot_flag, int reboot_flag) {
+static int rock_update_main(unsigned int rom_base,  unsigned int backup_base, unsigned int backup_len, int read_rom_directly, int first_run, int switch_slot_flag, int 
+reboot_flag, int backup_mode) {
     int status,err,start,fd;
     int ret = 0;
     int i = 0;
@@ -844,11 +853,18 @@
 #endif 
 
     up_info.ota_run = 0;
-    if((up_info.fota_flag[0]=='A')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='B')){
-        update_mode = MODE_A2B;
-    }else if((up_info.fota_flag[0]=='B')&&(up_info.fota_flag[1]=='-')&&(up_info.fota_flag[2]=='A')){
-        update_mode = MODE_B2A;
-    }else{
+    if(backup_mode == 1)
+    {
+        if(current_slot == 0)
+        {
+            update_mode = MODE_A2B;
+        }else
+        {
+            update_mode = MODE_B2A;
+        }
+    }
+    else
+    {
         update_mode = MODE_NORMAL;
     }
     
@@ -1219,15 +1235,13 @@
     
 
 
-    if(update_mode == MODE_NORMAL){ //need A VS B
+    if(update_mode != MODE_NORMAL){ //need backup
         if(current_slot == SLOT_A) {
-
             up_info.fota_flag[0] = 'B';
             up_info.fota_flag[1] = '-';
             up_info.fota_flag[2] = 'A';
 
         }else{
-
             up_info.fota_flag[0] = 'A';
             up_info.fota_flag[1] = '-';
             up_info.fota_flag[2] = 'B';
@@ -1308,7 +1322,7 @@
 
 #endif 
     
-        ret = rock_update_main(0, 0, 0, 0, first_run, 1, 1);
+        ret = rock_update_main(0, 0, 0, 0, first_run, 1, 1, 1);
         RLOGD("rock_update_main ret = %d\n", ret);
         if(ret)
         {
@@ -1658,6 +1672,18 @@
             RLOGD("+[UA]: backup bl33_a fail\n");
             return 1;
         }
+        ret = backup_nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
+        if(ret != 0)
+        {
+            RLOGD("+[UA]: backup oemapp_a fail\n");
+            return 1;
+        }
+        ret = backup_nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
+        if(ret != 0)
+        {
+            RLOGD("+[UA]: backup oemapp2_a fail\n");
+            return 1;
+        }
     }
     else
     {
@@ -1717,12 +1743,55 @@
             RLOGD("+[UA]: backup bl33_a fail\n");
             return 1;
         }
+        ret = backup_nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
+        if(ret != 0)
+        {
+            RLOGD("+[UA]: backup oemapp_b fail\n");
+            return 1;
+        }
+        ret = backup_nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
+        if(ret != 0)
+        {
+            RLOGD("+[UA]: backup oemapp2_b fail\n");
+            return 1;
+        }
     }
     RLOGD("+[UA]: lynq_backup_main success \n");
     return 0;
 }
 //xf.li@20230822 add for ab rollback end
 
+
+int lynq_check_oemapp(char* name)
+{
+    FILE *fp;
+    char check_result[64];
+    if(strcmp(name, "oemapp") == 0)
+    {
+        RLOGD("lynq_check_oemapp oemapp");
+        if(system("df -lh|grep oemapp |grep -v oemapp2") != 0)
+        {
+            return 0;
+        }
+        else
+        {
+            return 1;
+        }
+    }
+    else if(strcmp(name, "oemapp2") == 0)
+    {
+        RLOGD("lynq_check_oemapp oemapp2");
+        if(system("df -lh|grep oemapp2") != 0)
+        {
+            return 0;
+        }
+        else
+        {
+            return 1;
+        }
+    }
+}
+
 //lt add @2021.9.23 for  deal with power down \ backup or upgrade.
 int lynq_fota_func(void) 
 {
@@ -1736,27 +1805,6 @@
     const hw_module_t* hw_module;
     //xf.li@20230822 add for ab backup end
     RLOGD("[+UP]: ******lynq_fota_func start******\n");
-    memset(&lynq_up_info, 0, sizeof(lynq_up_info));
-    fd = open(FILE_UPDATE_STATE,O_RDWR | O_CREAT,0777);
-    if (fd < 0)
-    {
-        return -1;
-    }
-    read(fd,(unsigned char *)&lynq_up_info,sizeof(lynq_up_info));
-    close(fd);
-
-    RLOGD("[+UP]: lynq_up_info.ota_run=%d\n",lynq_up_info.ota_run);
-    if(lynq_up_info.ota_run != 0)
-    { 
-        //Power off, call UA
-        RLOGD("[+UP]: ***Power off, call UA***\n");
-        ret = rock_update_main(0, 0, 0, 0, first_run, 1,0);
-        RLOGD("rock_update_main ret = %d\n", ret);
-        if(ret) 
-        {
-            RLOGD("fota update fail!\n");
-        }
-    }
     //xf.li@20230822 add for ab backup start
     //----------get current slot and whether other slot  is bootable
     hw_module = &HAL_MODULE_INFO_SYM;
@@ -1778,15 +1826,58 @@
     other_slot = (current_slot == 0) ? 1 : 0;
     is_other_slot_bootable = module->isSlotBootable(module, other_slot);
     //-----------end
-    RLOGD("current slot:%u, is_other_slot_bootable : %d, lynq_up_info.fota_flag[3] is %c\n",current_slot, is_other_slot_bootable, lynq_up_info.fota_flag[3]);
+    RLOGD("current slot:%u, is_other_slot_bootable : %d\n",current_slot, is_other_slot_bootable);
     //xf.li@20230822 add for ab backup end
 
+    memset(&lynq_up_info, 0, sizeof(lynq_up_info));
+    fd = open(FILE_UPDATE_STATE,O_RDWR | O_CREAT,0777);
+    if (fd < 0)
+    {
+        return -1;
+    }
+    read(fd,(unsigned char *)&lynq_up_info,sizeof(lynq_up_info));
+    close(fd);
+
+    RLOGD("[+UP]: lynq_up_info.ota_run=%d\n",lynq_up_info.ota_run);
+    if((lynq_check_oemapp("oemapp") == 0) || (lynq_check_oemapp("oemapp2") == 0))
+    {
+        RLOGD("ENTER LYNQ_CHECK_OEMAPP\n");
+        system("echo mode 001 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
+        system("echo dir 001 1 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
+        system("echo out 001 1 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
+        RLOGD("need setUnbootable.\n");
+        module->setSlotAsUnbootable(module,current_slot);
+        RLOGD("+[UA]: setSlotAsUnbootable!!!!\n");
+        sync();
+        if(((lynq_up_info.fota_flag[0]=='A')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='B'))||
+        ((lynq_up_info.fota_flag[0]=='B')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='A')))
+        {
+            RLOGD("mark oemapp mount fail\n");
+            lynq_set_value(FOTA_UCI_MODULE,FOTA_UCI_STATE, "1");
+        }
+        sleep(5);
+        reboot_device();
+    }
+
+
+    if(lynq_up_info.ota_run != 0)
+    { 
+        //Power off, call UA
+        RLOGD("[+UP]: ***Power off, call UA***\n");
+        ret = rock_update_main(0, 0, 0, 0, first_run, 1, 0, 1);
+        RLOGD("rock_update_main ret = %d\n", ret);
+        if(ret) 
+        {
+            RLOGD("fota update fail!\n");
+        }
+    }
+
     if(((lynq_up_info.fota_flag[0]=='A')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='B'))||
         ((lynq_up_info.fota_flag[0]=='B')&&(lynq_up_info.fota_flag[1]=='-')&&(lynq_up_info.fota_flag[2]=='A')))
     {
         //Upgrade the other side and call UA
         RLOGD("[+UP]: ***Upgrade the other side and call UA***\n");
-        ret = rock_update_main(0, 0, 0, 0, first_run, 0, 0);
+        ret = rock_update_main(0, 0, 0, 0, first_run, 0, 0, 0);
         RLOGD("rock_update_main ret = %d\n", ret);
         if(ret)
         {
@@ -1897,7 +1988,7 @@
     test_write_delta("/data/delta",DEV_DELTA);
 #endif
 
-    ret = rock_update_main(0, 0, 0, 0, 1, 1, 0);
+    ret = rock_update_main(0, 0, 0, 0, 1, 1, 0, 1);
     RLOGD("rock_update_nrestart ret = %d\n", ret);
     if(ret)
     {