[Feature][T800]For WOM version, recover lynq_uci
Change-Id: Idef1ee621a70ee95e4bc8c1be5cf59ff7f29baff
diff --git a/meta/meta-mediatek-mt2735/recipes-core/images/mtk-image-2735.bb b/meta/meta-mediatek-mt2735/recipes-core/images/mtk-image-2735.bb
index eebe5f4..8fd2820 100755
--- a/meta/meta-mediatek-mt2735/recipes-core/images/mtk-image-2735.bb
+++ b/meta/meta-mediatek-mt2735/recipes-core/images/mtk-image-2735.bb
@@ -211,6 +211,7 @@
TARGET=${TOPDIR}/tmp/work/auto2735evb_ivt_main-poky-linux/mtk-image-2735/1.0-r0/rootfs
mkdir ${TARGET}/data_backup
cp ${TARGET}/etc/config/radio_property ${TARGET}/data_backup/
+ cp ${TARGET}/etc/config/lynq_uci ${TARGET}/data_backup/
cp ${TARGET}/data/atsvc/lynq_atsvc_plugin.xml ${TARGET}/data_backup/
cp ${TARGET}/data/atsvc/terminal_controller.conf ${TARGET}/data_backup/
cd ${SOURCE}
diff --git a/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover_wom b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover_wom
new file mode 100644
index 0000000..a46a3bf
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover_wom
@@ -0,0 +1,139 @@
+#!/bin/busybox sh
+TAG=[DATA_BACKUP_RECOVER]
+echo "$TAG: === Initial: LYNQ MOUNT Abnomal Judge Start ===" > /dev/kmsg
+FilePath=/data/lynq-low-power.sh
+
+detect_read(){
+ a=1
+ while [ $a -le 3 ]
+ do
+ if [ -r "$FilePath" ]
+ then
+ echo "$TAG a=$a can read" > /dev/kmsg
+ return 0
+ else
+ echo "$TAG a=$a can't read" > /dev/kmsg
+ fi
+ a=$[$a+1]
+ done
+ return 1
+}
+detect_write(){
+ a=1
+ while [ $a -le 3 ]
+ do
+ if [ -w "$FilePath" ]
+ then
+ echo "$TAG a=$a can write" > /dev/kmsg
+ return 0
+ else
+ echo "$TAG a=$a can't write" > /dev/kmsg
+ fi
+ a=$[$a+1]
+ done
+ return 1
+}
+
+format_ubi(){
+ ubidetach -m 38
+ echo "$TAG detach over" > /dev/kmsg
+ echo y | ubiformat /dev/mtd38
+ echo "$TAG format over" > /dev/kmsg
+ ubiattach /dev/ubi_ctrl -m 38 -d 31
+ echo "$TAG attach over" > /dev/kmsg
+ ubimkvol /dev/ubi31 -m -N data_recover
+ echo "$TAG mkvol over" > /dev/kmsg
+ mount -t ubifs /dev/ubi31_0 /STATE
+}
+
+mount_read_only(){
+ echo "$TAG: umount start" > /dev/kmsg
+
+ umount /usr/lib/tmpfiles.d
+ umount /etc/firmware
+ umount /etc/syslog
+ umount /home
+ umount /mnt/sncfg
+ umount /mnt/vendor/nvram
+ umount /mnt
+ umount /srv
+ umount /usr/local
+ umount /system/etc/firmware
+ umount /custom/etc/firmware
+ umount /var/lib
+ umount /data
+ umount /system/etc/tele
+ umount /system/etc/adr
+ umount /system/etc/agps
+ umount /system/etc/security
+ umount /etc/adr
+ umount /etc/gnss
+ umount /usr/share/gps
+ umount /etc/thermal
+ umount /etc/config
+ umount /STATE
+
+ echo "$TAG: after umount" > /dev/kmsg
+ mount | grep "ubi1" > /dev/kmsg
+ #some directories are not umount
+ if [ $(mount | grep "ubi1") != "" ];
+ then echo "$TAG: umount Fail!" > /dev/kmsg
+ reboot
+ exit
+ fi
+ format_ubi
+
+}
+cd /
+
+echo "$TAG: Before recover radio_property" > /dev/kmsg
+rm -rf /etc/config/.*.uci*
+cp /data_backup/radio_property /etc/config/radio_property
+cp /data_backup/lynq_uci /etc/config/lynq_uci
+mkdir -p /data/atsvc
+cp /data_backup/lynq_atsvc_plugin.xml /data/atsvc/lynq_atsvc_plugin.xml
+cp /data_backup/terminal_controller.conf /data/atsvc/terminal_controller.conf
+echo "$TAG: After recover radio_property" > /dev/kmsg
+
+IFRO="$(cat /sys/class/ubi/ubi1/ro_mode)"
+echo "$TAG the ro_mode:$IFRO" > /dev/kmsg
+
+echo "$TAG ubimount:" > /dev/kmsg
+echo "$(mount | grep "ubi1")" > /dev/kmsg
+#if ro_mode = 1, ubi1 in read-only mode
+if [ $IFRO = "1" ];
+ then echo "$TAG: [Read-Only]ubi1 ro_mode is readonly" > /dev/kmsg
+ mount_read_only
+ cd /data_backup
+ tar -zxvf userdata.tar.gz -C /STATE/
+ reboot
+else
+ detect_read
+ result_read=$?
+ detect_write
+ result_write=$?
+ #can't read the file, the file is lost
+ if [ $result_read -eq 1 ];
+ then echo "$TAG: File Lost!!!" > /dev/kmsg
+ exit
+ fi
+ #ubi1 is not in read-only mode, but no directory is mounted on ubi1
+ if [ $(mount | grep "ubi1") = ""];
+ then echo "$TAG: [Unmount]Unmount!!!" > /dev/kmsg
+ format_ubi
+ cd /data_backup
+ tar -zxvf userdata.tar.gz -C /STATE/
+ reboot
+ else
+ #ubi1 is not in read-only mode, directories mounted on ubi1, but the file can't write
+ #/data is mounted in read-only mode
+ if [ $result_write -eq 1 ];
+ then echo "$TAG: [Read-only]/data is Readonly!!!" > /dev/kmsg
+ mount_read_only
+ cd /data_backup
+ tar -zxvf userdata.tar.gz -C /STATE/
+ reboot
+ fi
+ fi
+fi
+echo "$TAG === Initial: LYNQ MOUNT Abnomal End ===" > /dev/kmsg
diff --git a/meta/meta-mediatek-mt2735/recipes-core/initial/init-2735_1.0.0.bb b/meta/meta-mediatek-mt2735/recipes-core/initial/init-2735_1.0.0.bb
index 25b963f..8d87332 100755
--- a/meta/meta-mediatek-mt2735/recipes-core/initial/init-2735_1.0.0.bb
+++ b/meta/meta-mediatek-mt2735/recipes-core/initial/init-2735_1.0.0.bb
@@ -11,6 +11,10 @@
SRC_URI += "${@bb.utils.contains("MOBILETEK_OEMAPP_CFG", "PLATFORM", "file://init_mount_nand", "", d)}"
SRC_URI += "${@bb.utils.contains("MOBILETEK_USB_CFG", "PLATFORM", "file://usb_switch", "", d)}"
SRC_URI += "${@bb.utils.contains("MOBILETEK_USB_CFG", "GSW", "file://usb_switch_gsw", "", d)}"
+#xf.li@20230530 add for wom rndis start
+SRC_URI += "${@bb.utils.contains("MOBILETEK_RNDIS_CFG", "PLATFORM", "file://lynq_data_recover", "", d)}"
+SRC_URI += "${@bb.utils.contains("MOBILETEK_RNDIS_CFG", "WOM", "file://lynq_data_recover_wom", "", d)}"
+#xf.li@20230530 add for wom rndis end
SRC_URI += "file://init_network.service"
SRC_URI += "file://init_mount.service"
SRC_URI += "file://nvram_daemon.service"
@@ -123,9 +127,15 @@
if [ "${MOBILETEK_USB_CFG}" = "GSW" ]; then
install -m 0755 init_usb_gsw ${D}${datadir}/init/init_usb
fi
+#xf.li@20230530 add for wom rndis start
+ if [ "${MOBILETEK_RNDIS_CFG}" = "WOM" ]; then
+ install -m 0755 lynq_data_recover_wom ${D}${datadir}/init/lynq_data_recover
+ else
+ install -m 0755 lynq_data_recover ${D}${datadir}/init/lynq_data_recover
+ fi
+#xf.li@20230530 add for wom rndis end
install -m 0755 smp.sh ${D}${datadir}/init/smp.sh
#xf.li 2022.11.17 modify for userdata recover start
- install -m 0755 lynq_data_recover ${D}${datadir}/init/lynq_data_recover
install -m 0755 lynq_ubi1_wmtd ${D}${datadir}/init/lynq_ubi1_wmtd
#xf.li 2022.11.17 modify for userdata recover end
#dongyu@2022.7.15 delete for Slow loading of ETS port start