Merge "[T8TSK-226][DATA]tele-fwk supports restart after disconnection" into GSW3.0-No-Connman
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
index 159e628..20bc4a8 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-core/initial/files/init_mount_nand
@@ -39,36 +39,16 @@
mntdone=`mount -t ubifs /dev/ubi6_0 $MNT_FOLDER 2>&1`
echo "mount: mount oemdata"
elif [ $BLK_NAME == "oemapp_a" ]; then
- cat /proc/mtd | grep "oemapp_a" | grep "mtd49"
- if [ $? -eq 0 ]; then
- mntdone=`mount -t squashfs /dev/mtdblock49 $MNT_FOLDER 2>&1`
- else
- mntdone=`mount -t squashfs /dev/mtdblock43 $MNT_FOLDER 2>&1`
- fi
+ mntdone=`mount -t squashfs /dev/mtdblock49 $MNT_FOLDER 2>&1`
echo "mount: mount oemapp"
elif [ $BLK_NAME == "oemapp_b" ]; then
- cat /proc/mtd | grep "oemapp_b" | grep "mtd50"
- if [ $? -eq 0 ]; then
- mntdone=`mount -t squashfs /dev/mtdblock50 $MNT_FOLDER 2>&1`
- else
- mntdone=`mount -t squashfs /dev/mtdblock44 $MNT_FOLDER 2>&1`
- fi
+ mntdone=`mount -t squashfs /dev/mtdblock50 $MNT_FOLDER 2>&1`
echo "mount: mount oemapp"
elif [ $BLK_NAME == "oemapp2_a" ]; then
- cat /proc/mtd | grep "oemapp2_a" | grep "mtd47"
- if [ $? -eq 0 ]; then
- mntdone=`mount -t squashfs /dev/mtdblock47 $MNT_FOLDER 2>&1`
- else
- mntdone=`mount -t squashfs /dev/mtdblock41 $MNT_FOLDER 2>&1`
- fi
+ mntdone=`mount -t squashfs /dev/mtdblock47 $MNT_FOLDER 2>&1`
echo "mount: mount oemapp2"
elif [ $BLK_NAME == "oemapp2_b" ]; then
- cat /proc/mtd | grep "oemapp2_b" | grep "mtd48"
- if [ $? -eq 0 ]; then
- mntdone=`mount -t squashfs /dev/mtdblock48 $MNT_FOLDER 2>&1`
- else
- mntdone=`mount -t squashfs /dev/mtdblock42 $MNT_FOLDER 2>&1`
- fi
+ mntdone=`mount -t squashfs /dev/mtdblock48 $MNT_FOLDER 2>&1`
echo "mount: mount oemapp2"
#you.chen@2022-07-11 add for load oemapp end
fi
@@ -225,75 +205,47 @@
mkdir -p /dev/disk/by-partlabel
if [ -d "/dev/disk/by-partlabel" ]; then
cd /dev/disk/by-partlabel
- cat /proc/mtd | grep "bl2_a"
- if [ $? -eq 0 ]; then
- ln -s ../../mtd6 hsm_bl
- ln -s ../../mtd7 hsm_os_a
- ln -s ../../mtd42 hsm_os_b
- ln -s ../../mtd8 boot_para
- ln -s ../../mtd9 protect_a
- ln -s ../../mtd10 protect_b
- ln -s ../../mtd12 boot_a
- ln -s ../../mtd13 boot_b
- ln -s ../../mtd14 system_a
- ln -s ../../mtd15 system_b
- ln -s ../../mtd16 md1img_a
- ln -s ../../mtd17 md1img_b
- ln -s ../../mtd18 md1dsp_a
- ln -s ../../mtd19 md1dsp_b
- ln -s ../../mtd20 mcf1_a
- ln -s ../../mtd21 mcf1_b
- ln -s ../../mtd22 mcf2_a
- ln -s ../../mtd23 mcf2_b
- ln -s ../../mtd24 misc
- ln -s ../../mtd25 tee_a
- ln -s ../../mtd26 tee_b
- ln -s ../../mtd36 vbmeta_a
- ln -s ../../mtd37 vbmeta_b
- ln -s ../../mtd39 expdb
- ln -s ../../mtd0 bl2_a
- ln -s ../../mtd40 bl2_b
- ln -s ../../mtd1 bl33_a
- ln -s ../../mtd41 bl33_b
- ln -s ../../mtd29 mcupm_a
- ln -s ../../mtd43 mcupm_b
- ln -s ../../mtd30 sspm_a
- ln -s ../../mtd44 sspm_b
- ln -s ../../mtd31 dpm_a
- ln -s ../../mtd45 dpm_b
- ln -s ../../mtd47 oemapp2_a
- ln -s ../../mtd48 oemapp2_b
- ln -s ../../mtd49 oemapp_a
- ln -s ../../mtd50 oemapp_b
- else
- ln -s ../../mtd6 hsm_bl
- ln -s ../../mtd7 hsm_os
- ln -s ../../mtd8 boot_para
- ln -s ../../mtd9 protect_a
- ln -s ../../mtd10 protect_b
- ln -s ../../mtd12 boot_a
- ln -s ../../mtd13 boot_b
- ln -s ../../mtd14 system_a
- ln -s ../../mtd15 system_b
- ln -s ../../mtd16 md1img_a
- ln -s ../../mtd17 md1img_b
- ln -s ../../mtd18 md1dsp_a
- ln -s ../../mtd19 md1dsp_b
- ln -s ../../mtd20 mcf1_a
- ln -s ../../mtd21 mcf1_b
- ln -s ../../mtd22 mcf2_a
- ln -s ../../mtd23 mcf2_b
- ln -s ../../mtd24 misc
- ln -s ../../mtd25 tee_a
- ln -s ../../mtd26 tee_b
- ln -s ../../mtd36 vbmeta_a
- ln -s ../../mtd37 vbmeta_b
- ln -s ../../mtd39 expdb
- ln -s ../../mtd41 oemapp2_a
- ln -s ../../mtd42 oemapp2_b
- ln -s ../../mtd43 oemapp_a
- ln -s ../../mtd44 oemapp_b
- fi
+ ln -s ../../mtd6 hsm_bl
+ ln -s ../../mtd7 hsm_os_a
+ ln -s ../../mtd42 hsm_os_b
+ ln -s ../../mtd8 boot_para
+ ln -s ../../mtd9 protect_a
+ ln -s ../../mtd10 protect_b
+ ln -s ../../mtd12 boot_a
+ ln -s ../../mtd13 boot_b
+ ln -s ../../mtd14 system_a
+ ln -s ../../mtd15 system_b
+ ln -s ../../mtd16 md1img_a
+ ln -s ../../mtd17 md1img_b
+ ln -s ../../mtd18 md1dsp_a
+ ln -s ../../mtd19 md1dsp_b
+ ln -s ../../mtd20 mcf1_a
+ ln -s ../../mtd21 mcf1_b
+ ln -s ../../mtd22 mcf2_a
+ ln -s ../../mtd23 mcf2_b
+ ln -s ../../mtd24 misc
+ ln -s ../../mtd25 tee_a
+ ln -s ../../mtd26 tee_b
+ ln -s ../../mtd36 vbmeta_a
+ ln -s ../../mtd37 vbmeta_b
+ ln -s ../../mtd39 expdb
+ ln -s ../../mtd0 bl2_a
+ ln -s ../../mtd40 bl2_b
+ ln -s ../../mtd1 bl33_a
+ ln -s ../../mtd41 bl33_b
+ ln -s ../../mtd29 mcupm_a
+ ln -s ../../mtd43 mcupm_b
+ ln -s ../../mtd30 sspm_a
+ ln -s ../../mtd44 sspm_b
+ ln -s ../../mtd31 dpm_a
+ ln -s ../../mtd45 dpm_b
+ ln -s ../../mtd47 oemapp2_a
+ ln -s ../../mtd48 oemapp2_b
+ ln -s ../../mtd49 oemapp_a
+ ln -s ../../mtd50 oemapp_b
+ ln -s ../../mtd32 medmcu_a
+ ln -s ../../mtd33 medmcu_b
+
fi
mount -t tmpfs /dev/disk/by-partlabel/misc /misc
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
index 074f5c9..338166b 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/auto2735evb-ivt-main/flashproc.py
@@ -3,7 +3,7 @@
#!/usr/bin/python
import os
-procedures = {
+oemfactoryprocedures = {
# product : fastboot args
'DEFAULT': [['fbWait'],
['fastboot', 'flash', 'EMPTY', 'hsm_bl.img'],
@@ -106,6 +106,100 @@
['fastboot', 'flash', 'oemapp2_b', 'oemapp2.img']]
}
+partitiontableprocedures = {
+ # product : fastboot args
+ 'DEFAULT': [['fbWait'],
+ ['fastboot', 'flash', 'EMPTY', 'hsm_bl.img'],
+ ['fastboot', 'continue'],
+ ['fbWait'],
+ ['fastboot', 'flash', 'EMPTY', 'bl2.img'],
+ ['fastboot', 'continue'],
+ ['fbWait'],
+ ['fastboot', 'flash', 'download:tz', 'tee.img'],
+ ['fastboot', 'flash', 'download:bl33', 'bl33.img'],
+ ['fastboot', 'flash', 'download:spmfw', 'spmfw.img'],
+ ['fastboot', 'flash', 'download:mcupm', 'mcupm.img'],
+ ['fastboot', 'flash', 'download:medmcu', 'medmcu.img'],
+ ['fastboot', 'flash', 'download:sspm', 'sspm.img'],
+ ['fastboot', 'flash', 'download:dpm', 'dpm.img'],
+ ['fastboot', 'flash', 'download:hsmos', 'hsm_os.img'],
+ ['fastboot', 'oem', 'continue'],
+ ['fbWait'],
+ ['fastboot', 'oem', 'nanderaseblock', '0'],
+ ['fastboot', 'oem', 'nanderaseblock', '1'],
+ ['fastboot', 'flash', 'nand0', 'MBR_NAND'],
+ ['fastboot', 'erase', 'bl2_a'],
+ ['fastboot', 'flash', 'bl2_a', 'bl2.img'],
+ ['fastboot', 'erase', 'bl2_b'],
+ ['fastboot', 'flash', 'bl2_b', 'bl2.img'],
+ ['fastboot', 'erase', 'bl33_a'],
+ ['fastboot', 'flash', 'bl33_a', 'bl33.img'],
+ ['fastboot', 'erase', 'bl33_b'],
+ ['fastboot', 'flash', 'bl33_b', 'bl33.img'],
+ ['fastboot', 'erase', 'spm_a'],
+ ['fastboot', 'flash', 'spm_a', 'spmfw.img'],
+ ['fastboot', 'erase', 'spm_b'],
+ ['fastboot', 'flash', 'spm_b', 'spmfw.img'],
+ ['fastboot', 'erase', 'dtbo'],
+ ['fastboot', 'flash', 'dtbo', 'combo.dtbo'],
+ ['fastboot', 'erase', 'hsm_bl'],
+ ['fastboot', 'flash', 'hsm_bl', 'hsm_bl.img'],
+ ['fastboot', 'erase', 'hsm_os_a'],
+ ['fastboot', 'flash', 'hsm_os_a', 'hsm_os.img'],
+ ['fastboot', 'erase', 'hsm_os_b'],
+ ['fastboot', 'flash', 'hsm_os_b', 'hsm_os.img'],
+ ['fastboot', 'erase', 'proinfo'],
+ ['fastboot', 'flash', 'proinfo', 'sncfg.ubi'],
+ ['fastboot', 'erase', 'boot_a'],
+ ['fastboot', 'flash', 'boot_a', 'boot.img'],
+ ['fastboot', 'erase', 'boot_b'],
+ ['fastboot', 'flash', 'boot_b', 'boot.img'],
+ ['fastboot', 'erase', 'system_a'],
+ ['fastboot', 'flash', 'system_a', 'system.img'],
+ ['fastboot', 'erase', 'system_b'],
+ ['fastboot', 'flash', 'system_b', 'system.img'],
+ ['fastboot', 'erase', 'md1img_a'],
+ ['fastboot', 'flash', 'md1img_a', 'md1img.img'],
+ ['fastboot', 'erase', 'md1img_b'],
+ ['fastboot', 'flash', 'md1img_b', 'md1img.img'],
+ ['fastboot', 'erase', 'md1dsp_a'],
+ ['fastboot', 'flash', 'md1dsp_a', 'md1dsp.img'],
+ ['fastboot', 'erase', 'md1dsp_b'],
+ ['fastboot', 'flash', 'md1dsp_b', 'md1dsp.img'],
+ ['fastboot', 'erase', 'tee_a'],
+ ['fastboot', 'flash', 'tee_a', 'tee.img'],
+ ['fastboot', 'erase', 'tee_b'],
+ ['fastboot', 'flash', 'tee_b', 'tee.img'],
+ ['fastboot', 'erase', 'mcupm_a'],
+ ['fastboot', 'flash', 'mcupm_a', 'mcupm.img'],
+ ['fastboot', 'erase', 'mcupm_b'],
+ ['fastboot', 'flash', 'mcupm_b', 'mcupm.img'],
+ ['fastboot', 'erase', 'medmcu_a'],
+ ['fastboot', 'flash', 'medmcu_a', 'medmcu.img'],
+ ['fastboot', 'erase', 'medmcu_b'],
+ ['fastboot', 'flash', 'medmcu_b', 'medmcu.img'],
+ ['fastboot', 'erase', 'sspm_a'],
+ ['fastboot', 'flash', 'sspm_a', 'sspm.img'],
+ ['fastboot', 'erase', 'sspm_b'],
+ ['fastboot', 'flash', 'sspm_b', 'sspm.img'],
+ ['fastboot', 'erase', 'dpm_a'],
+ ['fastboot', 'flash', 'dpm_a', 'dpm.img'],
+ ['fastboot', 'erase', 'dpm_b'],
+ ['fastboot', 'flash', 'dpm_b', 'dpm.img'],
+ ['fastboot', 'erase', 'vbmeta_a'],
+ ['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
+ ['fastboot', 'erase', 'vbmeta_b'],
+ ['fastboot', 'flash', 'vbmeta_b', 'vbmeta.img'],
+ ['fastboot', 'erase', 'oemapp_a'],
+ ['fastboot', 'flash', 'oemapp_a', 'oemapp.img'],
+ ['fastboot', 'erase', 'oemapp_b'],
+ ['fastboot', 'flash', 'oemapp_b', 'oemapp.img'],
+ ['fastboot', 'erase', 'oemapp2_a'],
+ ['fastboot', 'flash', 'oemapp2_a', 'oemapp2.img'],
+ ['fastboot', 'erase', 'oemapp2_b'],
+ ['fastboot', 'flash', 'oemapp2_b', 'oemapp2.img']]
+}
+
userprocedures = {
# product : fastboot args
'DEFAULT': [['fbWait'],
@@ -162,14 +256,18 @@
['fastboot', 'flash', 'bl33_a', 'bl33.img'],
['fastboot', 'erase', 'bl33_b'],
['fastboot', 'flash', 'bl33_b', 'bl33.img'],
+ ['fastboot', 'erase', 'spm_a'],
+ ['fastboot', 'flash', 'spm_a', 'spmfw.img'],
+ ['fastboot', 'erase', 'spm_b'],
+ ['fastboot', 'flash', 'spm_b', 'spmfw.img'],
+ ['fastboot', 'erase', 'dtbo'],
+ ['fastboot', 'flash', 'dtbo', 'combo.dtbo'],
['fastboot', 'erase', 'hsm_bl'],
['fastboot', 'flash', 'hsm_bl', 'hsm_bl.img'],
['fastboot', 'erase', 'hsm_os_a'],
['fastboot', 'flash', 'hsm_os_a', 'hsm_os.img'],
['fastboot', 'erase', 'hsm_os_b'],
['fastboot', 'flash', 'hsm_os_b', 'hsm_os.img'],
- ['fastboot', 'erase', 'dtbo'],
- ['fastboot', 'flash', 'dtbo', 'combo.dtbo'],
['fastboot', 'erase', 'proinfo'],
['fastboot', 'flash', 'proinfo', 'sncfg.ubi'],
['fastboot', 'erase', 'boot_a'],
@@ -188,6 +286,10 @@
['fastboot', 'flash', 'md1dsp_a', 'md1dsp.img'],
['fastboot', 'erase', 'md1dsp_b'],
['fastboot', 'flash', 'md1dsp_b', 'md1dsp.img'],
+ ['fastboot', 'erase', 'tee_a'],
+ ['fastboot', 'flash', 'tee_a', 'tee.img'],
+ ['fastboot', 'erase', 'tee_b'],
+ ['fastboot', 'flash', 'tee_b', 'tee.img'],
['fastboot', 'erase', 'mcupm_a'],
['fastboot', 'flash', 'mcupm_a', 'mcupm.img'],
['fastboot', 'erase', 'mcupm_b'],
@@ -204,10 +306,6 @@
['fastboot', 'flash', 'dpm_a', 'dpm.img'],
['fastboot', 'erase', 'dpm_b'],
['fastboot', 'flash', 'dpm_b', 'dpm.img'],
- ['fastboot', 'erase', 'tee_a'],
- ['fastboot', 'flash', 'tee_a', 'tee.img'],
- ['fastboot', 'erase', 'tee_b'],
- ['fastboot', 'flash', 'tee_b', 'tee.img'],
['fastboot', 'erase', 'vbmeta_a'],
['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
['fastboot', 'erase', 'vbmeta_b'],
@@ -243,14 +341,18 @@
['fastboot', 'flash', 'bl33_a', 'bl33.img'],
['fastboot', 'erase', 'bl33_b'],
['fastboot', 'flash', 'bl33_b', 'bl33.img'],
+ ['fastboot', 'erase', 'spm_a'],
+ ['fastboot', 'flash', 'spm_a', 'spmfw.img'],
+ ['fastboot', 'erase', 'spm_b'],
+ ['fastboot', 'flash', 'spm_b', 'spmfw.img'],
+ ['fastboot', 'erase', 'dtbo'],
+ ['fastboot', 'flash', 'dtbo', 'combo.dtbo'],
['fastboot', 'erase', 'hsm_bl'],
['fastboot', 'flash', 'hsm_bl', 'hsm_bl.img'],
['fastboot', 'erase', 'hsm_os_a'],
['fastboot', 'flash', 'hsm_os_a', 'hsm_os.img'],
['fastboot', 'erase', 'hsm_os_b'],
['fastboot', 'flash', 'hsm_os_b', 'hsm_os.img'],
- ['fastboot', 'erase', 'dtbo'],
- ['fastboot', 'flash', 'dtbo', 'combo.dtbo'],
['fastboot', 'erase', 'proinfo'],
['fastboot', 'flash', 'proinfo', 'sncfg.ubi'],
['fastboot', 'erase', 'boot_a'],
@@ -269,6 +371,10 @@
['fastboot', 'flash', 'md1dsp_a', 'md1dsp.img'],
['fastboot', 'erase', 'md1dsp_b'],
['fastboot', 'flash', 'md1dsp_b', 'md1dsp.img'],
+ ['fastboot', 'erase', 'tee_a'],
+ ['fastboot', 'flash', 'tee_a', 'tee.img'],
+ ['fastboot', 'erase', 'tee_b'],
+ ['fastboot', 'flash', 'tee_b', 'tee.img'],
['fastboot', 'erase', 'mcupm_a'],
['fastboot', 'flash', 'mcupm_a', 'mcupm.img'],
['fastboot', 'erase', 'mcupm_b'],
@@ -285,10 +391,6 @@
['fastboot', 'flash', 'dpm_a', 'dpm.img'],
['fastboot', 'erase', 'dpm_b'],
['fastboot', 'flash', 'dpm_b', 'dpm.img'],
- ['fastboot', 'erase', 'tee_a'],
- ['fastboot', 'flash', 'tee_a', 'tee.img'],
- ['fastboot', 'erase', 'tee_b'],
- ['fastboot', 'flash', 'tee_b', 'tee.img'],
['fastboot', 'erase', 'vbmeta_a'],
['fastboot', 'flash', 'vbmeta_a', 'vbmeta.img'],
['fastboot', 'erase', 'vbmeta_b'],
@@ -310,7 +412,7 @@
# return procedure list
def getFlashProc(product):
try:
- ret = procedures[product.upper()]
+ ret = partitiontableprocedures[product.upper()]
return ret
except:
return None
@@ -343,3 +445,17 @@
return ret
except:
return None
+
+def getFlashFactoryProc(product):
+ try:
+ ret = factoryprocedures[product.upper()]
+ return ret
+ except:
+ return None
+
+def getFlashOemFactoryProc(product):
+ try:
+ ret = oemfactoryprocedures[product.upper()]
+ return ret
+ except:
+ return None
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/flashimage.py b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/flashimage.py
index 557af18..bac8417 100755
--- a/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/flashimage.py
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-devtools/flashtool/files/flashimage.py
@@ -209,6 +209,10 @@
help='print more information while flashing')
parser.add_argument('-n', '--nata', action = 'store_true', default = False,
help = 'Flash image in nata')
+ parser.add_argument('--oem_factory', action = 'store_true', default = False,
+ help = 'Flash image for oem factory produce')
+ parser.add_argument('-p', '--update_with_partiontable_keep_alldata', action = 'store_true', default = False,
+ help = 'Flash image with partion table and keep all data')
parser.add_argument('--toolsdir', default=None,
help='''\
The tools dir where to find fbtool and fastboot.
@@ -266,6 +270,10 @@
from flashproc import getFlashUserDataProc
except:
getFlashUserDataProc = getFlashProc
+ try:
+ from flashproc import getFlashOemFactoryProc
+ except:
+ getFlashOemFactoryProc = getFlashProc
# check flash tools
toolsdir = ''
@@ -288,7 +296,7 @@
devProduct = 'DEFAULT'
- procs = getFlashProc(devProduct)
+ procs = None
if args.user:
procs = getFlashUserProc(devProduct)
if args.boot:
@@ -297,6 +305,13 @@
procs = getFlashTestProc(devProduct)
if args.userdata:
procs = getFlashUserDataProc(devProduct)
+ if args.oem_factory:
+ procs = getFlashOemFactoryProc(devProduct)
+ if args.oem_factory:
+ procs = getFlashOemFactoryProc(devProduct)
+ if args.update_with_partiontable_keep_alldata:
+ procs = getFlashProc(devProduct)
+
if procs:
if verbose:
print('Flash procedure'.center(80))
diff --git a/src/bsp/trustzone/atf/v1.6/mt2xxx/plat/mediatek/mt2735/mpu_ctrl/plat_mpu_feats.h b/src/bsp/trustzone/atf/v1.6/mt2xxx/plat/mediatek/mt2735/mpu_ctrl/plat_mpu_feats.h
index 9aec04d..970c2e7 100644
--- a/src/bsp/trustzone/atf/v1.6/mt2xxx/plat/mediatek/mt2735/mpu_ctrl/plat_mpu_feats.h
+++ b/src/bsp/trustzone/atf/v1.6/mt2xxx/plat/mediatek/mt2735/mpu_ctrl/plat_mpu_feats.h
@@ -68,7 +68,7 @@
.d11 = FORBIDDEN, .d10 = FORBIDDEN,
.d9 = NO_PROTECTION, .d8 = NO_PROTECTION,
.d7 = SEC_R_NSEC_R, .d6 = SEC_R_NSEC_RW,
- .d5 = FORBIDDEN, .d4 = NO_PROTECTION,
+ .d5 = NO_PROTECTION, .d4 = NO_PROTECTION, //tmp change for reboot_reason 3
.d3 = FORBIDDEN, .d2 = FORBIDDEN,
.d1 = SEC_R_NSEC_R, .d0 = NO_PROTECTION,
}, },
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5.c b/src/lynq/lib/liblynq-fota/MD5/md5.c
old mode 100644
new mode 100755
diff --git "a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/main\0507919\051.c" "b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/main\0507919\051.c"
old mode 100644
new mode 100755
diff --git "a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/md5_encode\0502203\051.h" "b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/md5_encode\0502203\051.h"
old mode 100644
new mode 100755
diff --git "a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/md5_encode\0505411\051.c" "b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/Backup/md5_encode\0505411\051.c"
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/main.c.sisc b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/main.c.sisc
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5.c.sisc b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5.c.sisc
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5.h.sisc b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5.h.sisc
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5_encode.c.sisc b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5_encode.c.sisc
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5_encode.h.sisc b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/cache/parse/md5_encode.h.sisc
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.bookmarks.xml b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.bookmarks.xml
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.siproj_settings.xml b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.siproj_settings.xml
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.siwork b/src/lynq/lib/liblynq-fota/MD5/md5_0628.si4project/md5_0628.siwork
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/MD5/md5_encode.c b/src/lynq/lib/liblynq-fota/MD5/md5_encode.c
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/include/iot_rock.h b/src/lynq/lib/liblynq-fota/include/iot_rock.h
index e757a42..59ec7f6 100755
--- a/src/lynq/lib/liblynq-fota/include/iot_rock.h
+++ b/src/lynq/lib/liblynq-fota/include/iot_rock.h
@@ -29,21 +29,48 @@
#define PATCH_OEMAPP (7)
#define PATCH_OEMAPP2 (8)
#define PATCH_MEDMCU (9)
-#define PATCH_BL33 (10)
-#define PATCH_RESERVE (11)
-#define FULL_SYSTEM (12)
-#define FULL_BOOT (13)
-#define FULL_TEE (14)
-#define FULL_MD1IMG (15)
-#define FULL_MD1DSP (16)
-#define FULL_VBMETA (17)
-#define FULL_OEMAPP (18)
-#define FULL_OEMAPP2 (19)
-#define FULL_MEDMCU (20)
-#define FULL_BL33 (21)
-#define FULL_RESERVE (22)
+#define PATCH_SPM (10)
+#define PATCH_PROTECT (11)
+#define PATCH_MCF1 (12)
+#define PATCH_MCF2 (13)
+#define PATCH_MCUPM (14)
+#define PATCH_SSPM (15)
+#define PATCH_DPM (16)
+#define PATCH_PIIMG (17)
+#define PATCH_HSMOS (18)
+#define PATCH_BL2 (19)
+#define PATCH_BL33 (20)
-#define MAX_OTA_ROLE (22)
+#define FULL_SYSTEM (65)
+#define FULL_BOOT (66)
+#define FULL_TEE (67)
+#define FULL_MD1IMG (68)
+#define FULL_MD1DSP (69)
+#define FULL_VBMETA (70)
+#define FULL_OEMAPP (71)
+#define FULL_OEMAPP2 (72)
+#define FULL_MEDMCU (73)
+#define FULL_SPM (74)
+#define FULL_PROTECT (75)
+#define FULL_MCF1 (76)
+#define FULL_MCF2 (77)
+#define FULL_MCUPM (78)
+#define FULL_SSPM (79)
+#define FULL_DPM (80)
+#define FULL_PIIMG (81)
+#define FULL_HSMOS (82)
+#define FULL_BL2 (83)
+#define FULL_BL33 (84)
+
+
+
+
+
+
+
+
+#define MAX_OTA_ROLE (128)
+#define REAL_OTA_ROLE (20)
@@ -71,30 +98,7 @@
} IOT_UPDATA_CONTEXT;
-typedef struct {
- unsigned int sys; //system 差分包大小
- unsigned int boot; //boot 差分包大小
- unsigned int tee; //tee 差分包大小
- unsigned int md1img; //md1img 差分包大小
- unsigned int md1dsp; //md1dsp 差分包大小
- unsigned int vbmeta; //vbmeta 差分包大小
- unsigned int oemapp;
- unsigned int oemapp2;
- unsigned int medmcu;
- unsigned int bl33; //bl33 差分包大小
- unsigned int reserve;
- unsigned int full_sys; //system 整包大小
- unsigned int full_boot; //boot
- unsigned int full_tee; //tee 整包大小
- unsigned int full_md1img; // 整包大小
- unsigned int full_md1dsp; //md1dsp 整包大小
- unsigned int full_vbmeta; //vbmeta 整包大小
- unsigned int full_oemapp;
- unsigned int full_oemapp2;
- unsigned int full_medmcu;
- unsigned int full_bl33; //bl33 整包大小
- unsigned int full_reserve;
-} DELTA_HEAD;
+
typedef struct {
@@ -129,7 +133,8 @@
//#define DELTA_HEARD_SIZE (4*5)
-#define DELTA_HEARD_SIZE (4*11 + 4*11)
+//#define DELTA_HEARD_SIZE (4*11 + 4*11)
+#define DELTA_HEARD_SIZE 512
#define DELTA_FULL_HEARD_SIZE 8
@@ -138,6 +143,7 @@
unsigned int iot_hash(unsigned char *buf,unsigned int len, unsigned int* value);
int lynq_md5_file_verfy(char* filePath, char* file_md5);
+//int md5_file_verfy_new(char* filePath, char* file_md5,int packe_len);
int lynq_rock_main(int first_run);
int lynq_fota_func(void);
int lynq_nand_open(const char *pathname, int flags);
diff --git a/src/lynq/lib/liblynq-fota/include/iot_rock_ipl.h b/src/lynq/lib/liblynq-fota/include/iot_rock_ipl.h
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/include/md5.h b/src/lynq/lib/liblynq-fota/include/md5.h
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/include/md5_encode.h b/src/lynq/lib/liblynq-fota/include/md5_encode.h
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/include/sha.h b/src/lynq/lib/liblynq-fota/include/sha.h
old mode 100644
new mode 100755
diff --git a/src/lynq/lib/liblynq-fota/lib/libiotpatch.a b/src/lynq/lib/liblynq-fota/lib/libiotpatch.a
old mode 100644
new mode 100755
Binary files differ
diff --git a/src/lynq/lib/liblynq-fota/lib/libmd5.a b/src/lynq/lib/liblynq-fota/lib/libmd5.a
old mode 100644
new mode 100755
Binary files differ
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 4106d5c..854de9e 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -39,40 +39,9 @@
#define ROCK_BACKUP_LEN ROCK_DEFAULT_BLOCK_SIZE
-#define DEV_SYSTEM_A "/dev/disk/by-partlabel/system_a"
-#define DEV_SYSTEM_B "/dev/disk/by-partlabel/system_b"
-#define DEV_BOOT_A "/dev/disk/by-partlabel/boot_a"
-#define DEV_BOOT_B "/dev/disk/by-partlabel/boot_b"
-#define DEV_MD1IMG_A "/dev/disk/by-partlabel/md1img_a"
-#define DEV_MD1IMG_B "/dev/disk/by-partlabel/md1img_b"
+#define FILENAME_SIZE 50
-#define DEV_TEE_A "/dev/disk/by-partlabel/tee_a"
-#define DEV_TEE_B "/dev/disk/by-partlabel/tee_b"
-
-#define DEV_MD1DSP_A "/dev/disk/by-partlabel/md1dsp_a"
-#define DEV_MD1DSP_B "/dev/disk/by-partlabel/md1dsp_b"
-
-#define DEV_VBMETA_A "/dev/disk/by-partlabel/vbmeta_a"
-#define DEV_VBMETA_B "/dev/disk/by-partlabel/vbmeta_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_BL2 "/dev/disk/by-partlabel/bl2"
-#define DEV_BL33 "/dev/disk/by-partlabel/bl33"
-
-#define DEV_MISC "/dev/disk/by-partlabel/misc"
-
-
-#define DEV_MEDMCU_A "/dev/mtd32"
-#define DEV_MEDMCU_B "/dev/mtd33"
-
-#define DEV_BL33_A "/dev/disk/by-partlabel/bl33_a"
-#define DEV_BL33_B "/dev/disk/by-partlabel/bl33_b"
//#define DEV_DELTA "/dev/disk/by-partlabel/delta"
@@ -82,6 +51,86 @@
#define DEV_DELTA "/dev/mtd41"
#endif
+
+
+char partition_filename_a[][FILENAME_SIZE] = {
+ {"/dev/disk/by-partlabel/system_a"},
+ {"/dev/disk/by-partlabel/boot_a"},
+ {"/dev/disk/by-partlabel/tee_a"},
+ {"/dev/disk/by-partlabel/md1img_a"},
+ {"/dev/disk/by-partlabel/md1dsp_a"},
+ {"/dev/disk/by-partlabel/vbmeta_a"},
+ {"/dev/disk/by-partlabel/oemapp_a"},
+ {"/dev/disk/by-partlabel/oemapp2_a"},
+ {"/dev/disk/by-partlabel/medmcu_a"},
+ {"/dev/disk/by-partlabel/spm_a"},
+ {"/dev/disk/by-partlabel/protect_a"},
+ {"/dev/disk/by-partlabel/mcf1_a"},
+ {"/dev/disk/by-partlabel/mcf2_a"},
+ {"/dev/disk/by-partlabel/mcupm_a"},
+ {"/dev/disk/by-partlabel/sspm_a"},
+ {"/dev/disk/by-partlabel/dpm_a"},
+ {"/dev/disk/by-partlabel/pi_img_a"},
+ {"/dev/disk/by-partlabel/hsm_os_a"},
+ {"/dev/disk/by-partlabel/bl2_a"},
+ {"/dev/disk/by-partlabel/bl33_a"}
+};
+
+
+char partition_filename_b[][FILENAME_SIZE] = {
+ {"/dev/disk/by-partlabel/system_b"},
+ {"/dev/disk/by-partlabel/boot_b"},
+ {"/dev/disk/by-partlabel/tee_b"},
+ {"/dev/disk/by-partlabel/md1img_b"},
+ {"/dev/disk/by-partlabel/md1dsp_b"},
+ {"/dev/disk/by-partlabel/vbmeta_b"},
+ {"/dev/disk/by-partlabel/oemapp_b"},
+ {"/dev/disk/by-partlabel/oemapp2_b"},
+ {"/dev/disk/by-partlabel/medmcu_b"},
+ {"/dev/disk/by-partlabel/spm_b"},
+ {"/dev/disk/by-partlabel/protect_b"},
+ {"/dev/disk/by-partlabel/mcf1_b"},
+ {"/dev/disk/by-partlabel/mcf2_b"},
+ {"/dev/disk/by-partlabel/mcupm_b"},
+ {"/dev/disk/by-partlabel/sspm_b"},
+ {"/dev/disk/by-partlabel/dpm_b"},
+ {"/dev/disk/by-partlabel/pi_img_b"},
+ {"/dev/disk/by-partlabel/hsm_os_b"},
+ {"/dev/disk/by-partlabel/bl2_b"},
+ {"/dev/disk/by-partlabel/bl33_b"}
+};
+
+
+
+
+char partition_filename[][FILENAME_SIZE] = {
+ {"system"},
+ {"boot"},
+ {"tee"},
+ {"md1img"},
+ {"md1dsp"},
+ {"vbmeta"},
+ {"oemapp"},
+ {"oemapp2"},
+ {"medmcu"},
+ {"spm"},
+ {"protect"},
+ {"mcf1"},
+ {"mcf2"},
+ {"mcupm"},
+ {"sspm"},
+ {"dpm"},
+ {"pi_img"},
+ {"hsm_os"},
+ {"bl2"},
+ {"bl33"}
+};
+//+10
+
+unsigned int delta_head[128]={0}; //512/4 128/2=64
+
+
+
#define FOTA_UCI_MODULE "lynq_fota"
#define FOTA_UCI_FILE "lynq_uci"
#define FOTA_UCI_ADDR "lynq_fota_addr"
@@ -104,7 +153,8 @@
-int fd_system_a,fd_system_b,fd_boot_a,fd_boot_b,fd_tee_a,fd_tee_b,fd_bl2,fd_bl33,fd_delta,fd_curr,fd_log,fd_update_status,fd_md1img_a,fd_md1img_b,fd_fota_status,fd_md1dsp_a,fd_md1dsp_b,fd_vbmeta_a,fd_vbmeta_b,fd_oemapp_a,fd_oemapp_b,fd_oemapp2_a,fd_oemapp2_b,fd_medmcu_a,fd_medmcu_b,fd_bl33_a,fd_bl33_b;
+//int fd_system_a,fd_system_b,fd_boot_a,fd_boot_b,fd_tee_a,fd_tee_b,fd_bl2,fd_bl33,fd_delta,fd_curr,fd_log,fd_update_status,fd_md1img_a,fd_md1img_b,fd_fota_status,fd_md1dsp_a,fd_md1dsp_b,fd_vbmeta_a,fd_vbmeta_b,fd_oemapp_a,fd_oemapp_b,fd_oemapp2_a,fd_oemapp2_b,fd_medmcu_a,fd_medmcu_b,fd_bl33_a,fd_bl33_b;
+int fd_delta,fd_curr,fd_log,fd_update_status,fd_fota_status;
int fd_write,fd_read;
static unsigned int delta_offset = 0;
@@ -112,7 +162,7 @@
unsigned int current_slot = 0;
unsigned char rock_debug_buffer[512];
-DELTA_HEAD da_head;
+
OTA_STATUS fota_status;
@@ -163,7 +213,7 @@
vsnprintf(rock_debug_buffer,sizeof(rock_debug_buffer),fmt,ap);
- RLOGD("+[ROCK_TRACE]: %s",rock_debug_buffer);
+ LYDBGLOG("+[UA]: %s",rock_debug_buffer);
va_end (ap);
@@ -502,12 +552,12 @@
if (lseek(fd_delta, start, SEEK_SET) < 0) {
- RLOGD("+[UA]: delta_copyto_nand seek err\n");
+ LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
return -1;
}
if (mtk_device_wrap_seek(fd_curr, 0, SEEK_SET) < 0) {
- RLOGD("+[UA]: delta_copyto_nand seek err\n");
+ LYERRLOG("+[UA]: delta_copyto_nand seek err\n");
return -1;
}
@@ -544,9 +594,7 @@
-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 status,err,start;
int ret = 0;
int i = 0;
@@ -567,8 +615,11 @@
char digest_s[SHA_DIGEST_SIZE];
char digest_t[SHA_DIGEST_SIZE];
char str_sha[40];
+ char cmd_sys[100];
int sha_size = 0;
+ int is_need_fullupdate = 0;
+ int fd_partition_a,fd_partition_b;
hw_module = &HAL_MODULE_INFO_SYM;
@@ -608,7 +659,8 @@
ctx.ram_base =(unsigned char *)&ram_buffer[0];
ctx.ram_len = ROCK_RAM_LEN;
ctx.backup_base = BACKUP_ADDR_FLAG;
- ctx.backup_len = ROCK_DEFAULT_BLOCK_SIZE;
+ //ctx.backup_len = ROCK_DEFAULT_BLOCK_SIZE;
+ ctx.backup_len = 0;
ctx.update_nvram = 0;
ctx.read_rom_directly = read_rom_directly;
//ctx.first_run = first_run;
@@ -631,11 +683,12 @@
RLOGD("+[UA]: up_info.ota_run = %d\n",up_info.ota_run);
-
+#if 0
if ((up_info.ota_run>PATCH_BL33)||(up_info.ota_run<PATCH_SYSTEM))
{
up_info.ota_run = 0;
}
+#endif
up_info.ota_run = 0;
@@ -650,85 +703,50 @@
RLOGD("+[UA]: up_info.fota_flag = %s\n",up_info.fota_flag);
RLOGD("+[UA]: update_mode = %d\n",update_mode);
- memset(&da_head, 0, sizeof(da_head));
+ //memset(&da_head, 0, sizeof(da_head));
- read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+ //read(fd_delta, (unsigned char*)&da_head, sizeof(da_head));
+
+ memset(&delta_head, 0, sizeof(delta_head));
+ read(fd_delta, (char *)&delta_head[0], sizeof(delta_head));
- rock_trace(&ctx, "da_head.sys:%d,da_head.boot:%d,da_head.tee:%d,da_head.md1img=%d,da_head.md1dsp=%d,da_head.vbmeta=%d,da_head.oemapp=%d,da_head.oemapp2=%d,da_head.bl33=%d\n", da_head.sys, da_head.boot,da_head.tee,da_head.md1img,da_head.md1dsp,da_head.vbmeta,da_head.oemapp,da_head.oemapp2,da_head.bl33);
- rock_trace(&ctx, "da_head.fullsys:%d,da_head.fullboot:%d,da_head.fulltee:%d,da_head.fullmd1img=%d,da_head.fullmd1dsp=%d,da_head.fullvbmeta=%d,da_head.full_oemapp=%d,da_head.full_oemapp2=%d,da_head.fullbl33=%d\n", da_head.full_sys, da_head.full_boot,da_head.full_tee, da_head.full_md1img,da_head.full_md1dsp,da_head.full_vbmeta,da_head.full_oemapp,da_head.full_oemapp2,da_head.full_bl33);
-
- if (da_head.sys>0) {
- fota_status.update_status[PATCH_SYSTEM - 1].need_update = 1;
- }
- if (da_head.boot>0) {
- fota_status.update_status[PATCH_BOOT - 1].need_update = 1;
- }
- if (da_head.tee>0) {
- fota_status.update_status[PATCH_TEE - 1].need_update = 1;
- }
- if (da_head.md1img>0) {
- fota_status.update_status[PATCH_MD1IMG - 1].need_update = 1;
- }
- if (da_head.md1dsp>0) {
- fota_status.update_status[PATCH_MD1DSP - 1].need_update = 1;
- }
- if (da_head.vbmeta>0) {
- fota_status.update_status[PATCH_VBMETA - 1].need_update = 1;
- }
- if (da_head.oemapp>0) {
- fota_status.update_status[PATCH_OEMAPP - 1].need_update = 1;
- }
- if (da_head.oemapp2>0) {
- fota_status.update_status[PATCH_OEMAPP2 - 1].need_update = 1;
- }
- if (da_head.medmcu>0) {
- fota_status.update_status[PATCH_MEDMCU - 1].need_update = 1;
- }
- if (da_head.bl33>0) {
- fota_status.update_status[PATCH_BL33 - 1].need_update = 1;
+
+ delta_size = 0;
+ sha_size = 0;
+ for (i = 0;i<REAL_OTA_ROLE; i++) {
+ if (delta_head[i] > 0) {
+ fota_status.update_status[i].need_update = 1;
+ delta_size+=delta_head[i];
+
+ }
+ RLOGD("+[UA]: %s,delta size = %d\n",partition_filename[i],delta_head[i]);
}
- if (da_head.full_sys>0) {
- fota_status.update_status[FULL_SYSTEM - 1].need_update = 1;
+
+ for(i = MAX_OTA_ROLE/2;i<(MAX_OTA_ROLE/2+REAL_OTA_ROLE); i++) {
+ if (delta_head[i] > 0) {
+ fota_status.update_status[i].need_update = 1;
+ sha_size+=delta_head[i];
+ }
+ RLOGD("+[UA]: %s,full size = %d\n",partition_filename[i-MAX_OTA_ROLE/2],delta_head[i]);
}
- if (da_head.full_boot>0) {
- fota_status.update_status[FULL_BOOT - 1].need_update = 1;
- }
- if (da_head.full_tee>0) {
- fota_status.update_status[FULL_TEE - 1].need_update = 1;
- }
- if (da_head.full_md1img>0) {
- fota_status.update_status[FULL_MD1IMG - 1].need_update = 1;
- }
- if (da_head.full_bl33>0) {
- fota_status.update_status[FULL_BL33 - 1].need_update = 1;
- }
- if (da_head.full_md1dsp>0) {
- fota_status.update_status[FULL_MD1DSP - 1].need_update = 1;
- }
- if (da_head.full_vbmeta>0) {
- fota_status.update_status[FULL_VBMETA - 1].need_update = 1;
- }
- if (da_head.full_oemapp>0) {
- fota_status.update_status[FULL_OEMAPP - 1].need_update = 1;
- }
- if (da_head.full_oemapp2>0) {
- fota_status.update_status[FULL_OEMAPP2 - 1].need_update = 1;
- }
- if (da_head.full_medmcu>0) {
- fota_status.update_status[FULL_MEDMCU - 1].need_update = 1;
- }
+
+
fota_status.switch_slot = WAIT;
save_fota_status();
- delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2 + da_head.medmcu+da_head.bl33;
+ //delta_size = da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2 + da_head.medmcu+da_head.bl33;
- sha_size = da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp + da_head.full_oemapp2 + da_head.full_medmcu+da_head.full_bl33;
+ //sha_size = da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp + da_head.full_oemapp2 + da_head.full_medmcu+da_head.full_bl33
+
+
+
+ is_need_fullupdate = 0;
if(sha_size>0) {
-
+ is_need_fullupdate = 1;
sha_size+=8;
}
@@ -738,12 +756,12 @@
memset(digest_t,0,SHA_DIGEST_SIZE);
memset(str_sha,0,40);
- lseek(fd_delta, sha_size + sizeof(da_head), SEEK_SET);
+ lseek(fd_delta, sha_size + sizeof(delta_head), SEEK_SET);
read(fd_delta, digest_s, SHA_DIGEST_SIZE);
convert_hex(digest_s,str_sha);
RLOGD("+[UA]: delta save sha = %s\n",str_sha);
- ROCK_SHA_FILE_COMMON(fd_delta,sizeof(da_head),sha_size,digest_t);
+ ROCK_SHA_FILE_COMMON(fd_delta,sizeof(delta_head),sha_size,digest_t);
memset(str_sha,0,40);
convert_hex(digest_t,str_sha);
RLOGD("+[UA]: delta calc sha = %s\n",str_sha);
@@ -762,1252 +780,138 @@
memset(digest_s,0,SHA_DIGEST_SIZE);
memset(digest_t,0,SHA_DIGEST_SIZE);
+
+
+ //delta_offset = DELTA_HEARD_SIZE;
+ delta_offset = sizeof(delta_head);
+
+ for(i = 0;i<REAL_OTA_ROLE; i++){ //diff
+ //now_patch = i+1;
+ if (i>0) {
+ delta_offset+=delta_head[i-1];
+ }
+ if((delta_head[i]>0) && (up_info.ota_run<=(i+1))){
+ now_patch = i + 1;
+#if 0
+ if (up_info.ota_run == now_patch) //升级ps断电?
+ {
+ ctx.first_run = 0;
- if ((da_head.sys>0) && (up_info.ota_run <= PATCH_SYSTEM))
- {
-
- now_patch = PATCH_SYSTEM;
- delta_offset = DELTA_HEARD_SIZE;
-
-#if 0
- if (up_info.ota_run == PATCH_SYSTEM)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
- //up_info.ota_run = 0;
-
+ }else{
+ ctx.first_run = 1;
+ }
+#endif
+ ctx.first_run = 1; //always
+ RLOGD("+[UA]: PATCH %s,ctx.first_run = %d\n", partition_filename[i] ,ctx.first_run);
+ up_info.ota_run = now_patch;
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
+ if(current_slot==SLOT_B) {
+ sprintf(cmd_sys,"flash_eraseall %s",partition_filename_a[i]);
+ }else{
+ sprintf(cmd_sys,"flash_eraseall %s",partition_filename_b[i]);
+ }
+ system(cmd_sys);
+
+
+ fd_partition_a = mtk_device_wrap_open(partition_filename_a[i],O_RDWR);
+ if (fd_partition_a < 0) {
err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- return -err;
- }
- fd_curr = fd_system_b;
- }
-
-#endif
-
-
- ctx.first_run = 1; // always
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening system file: %s\n",strerror(errno));
+ RLOGD("+[UA]: Error opening id_a[%d] file: %s\n",i,strerror(errno));
lynq_fota_release_wake_lock();
return -err;
}
-// fd_curr = fd_system_a;
-// }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
+
+ fd_partition_b = mtk_device_wrap_open(partition_filename_b[i],O_RDWR);
+ if (fd_partition_b < 0) {
err = errno;
- RLOGD("+[UA]: Error opening system file: %s\n",strerror(errno));
+ RLOGD("+[UA]: Error opening id_b[%d] file: %s\n",i,strerror(errno));
lynq_fota_release_wake_lock();
return -err;
- }
-// fd_curr = fd_system_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_system_b;
- fd_write = fd_system_a;
- } else {
- fd_read = fd_system_a;
- fd_write = fd_system_b;
- }
+ }
+ if(current_slot==SLOT_B){
+ fd_read = fd_partition_b;
+ fd_write = fd_partition_a;
+ } else {
+ fd_read = fd_partition_a;
+ fd_write = fd_partition_b;
+ }
-
- fota_status.ota_run = PATCH_SYSTEM;
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = WAIT;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- fota_status.update_status[PATCH_SYSTEM-1].update_result= WAIT;
+ fota_status.ota_run = i;
+ fota_status.update_status[i].check_delta = WAIT;
+ fota_status.update_status[i].check_rom = WAIT;
+ fota_status.update_status[i].update_result= WAIT;
- save_fota_status();
+ save_fota_status();
- up_info.ota_run = PATCH_SYSTEM;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
+ up_info.ota_run = i+1;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
- RLOGD("+[UA]: Start upgrading system.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: system upgrade result:%d\n",status);
+ RLOGD("+[UA]: Start upgrading %s.\n",partition_filename[i]);
+ status = iot_patch(&ctx);
+ RLOGD("+[UA]: %s upgrade result:%d\n",partition_filename[i],status);
- //up_info.ota_run = 0;
+ //up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_SYSTEM -1].update_result= status;
- fota_status.update_result= status;
+ //fota_status.ota_run = 0;
+ fota_status.update_status[i].update_result= status;
+ fota_status.update_result= status;
- if((status == 0)||(status ==1))
- {
+ if((status == 0)||(status ==1))
+ {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = PASS;
- RLOGD("system upgrade success!!!\n");
+ fota_status.update_status[i].check_delta = PASS;
+ fota_status.update_status[i].check_rom = PASS;
+ RLOGD("+[UA]: %s upgrade success!!!\n",partition_filename[i]);
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = ERROR;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- fota_status.update_status[PATCH_SYSTEM -1].check_rom = ERROR;
+ }else if(status == E_ROCK_INVALID_DELTA) {
+ fota_status.update_status[i].check_delta = ERROR;
+ fota_status.update_status[i].check_rom = WAIT;
+ }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
+ fota_status.update_status[i].check_delta = PASS;
+ fota_status.update_status[i].check_rom = ERROR;
- }else{
+ }else{
//fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
//fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
+ }
- save_fota_status();
+ save_fota_status();
- if ((status != 0) &&(status != 1))
- {
+ if ((status != 0) &&(status != 1))
+ {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ up_info.update_result = status;
+ up_info.ota_run = 0;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
+ lynq_fota_release_wake_lock();
+ return status;
+ }
+ mtk_device_wrap_close(fd_read);
+ mtk_device_wrap_close(fd_write);
-
- }
+ }
+
+ }
-
-
- if ((da_head.boot>0) && (up_info.ota_run <= PATCH_BOOT))
- {
-
- now_patch = PATCH_BOOT;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys;
-
-
- if (up_info.ota_run == PATCH_BOOT)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
- //if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_a;
-// }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_boot_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_boot_b;
- fd_write = fd_boot_a;
- } else {
- fd_read = fd_boot_a;
- fd_write = fd_boot_b;
- }
-
-
- fota_status.ota_run = PATCH_BOOT;
- fota_status.update_status[PATCH_BOOT-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BOOT-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_BOOT;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
-
- RLOGD("+[UA]: Start upgrading boot.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: boot upgrade result:%d\n",status);
- //up_info.ota_run = 0;
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BOOT-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = PASS;
- RLOGD("boot upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BOOT-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BOOT-1].check_delta = PASS;
- fota_status.update_status[PATCH_BOOT-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
-
- if ((da_head.tee>0) && (up_info.ota_run <= PATCH_TEE))
- {
-
- now_patch = PATCH_TEE;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot;
-
-
- if (up_info.ota_run == PATCH_TEE)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_a;
-// }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_tee_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_tee_b;
- fd_write = fd_tee_a;
- } else {
- fd_read = fd_tee_a;
- fd_write = fd_tee_b;
- }
-
-
- fota_status.ota_run = PATCH_TEE;
- fota_status.update_status[PATCH_TEE-1].check_delta = WAIT;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- fota_status.update_status[PATCH_TEE-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_TEE;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- RLOGD("+[UA]: Start upgrading tee.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: tee upgrade result:%d\n",status);
- //up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_TEE-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = PASS;
- RLOGD("tee upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_TEE-1].check_delta = ERROR;
- fota_status.update_status[PATCH_TEE-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_TEE-1].check_delta = PASS;
- fota_status.update_status[PATCH_TEE-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_SYSTEM -1].check_delta = PASS;
- //fota_status.update_status[PATCH_SYSTEM -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
- }
-
-
-
-
- if ((da_head.md1img>0) && (up_info.ota_run <= PATCH_MD1IMG))
- {
-
- now_patch = PATCH_MD1IMG;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee;
-
-
- if (up_info.ota_run == PATCH_MD1IMG)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
-// if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_a;
-// }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1img_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1img_b;
- fd_write = fd_md1img_a;
- } else {
- fd_read = fd_md1img_a;
- fd_write = fd_md1img_b;
- }
-
- fota_status.ota_run = PATCH_MD1IMG;
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_MD1IMG;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- RLOGD("+[UA]: Start upgrading md1img.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: md1img upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1IMG-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = PASS;
- RLOGD("md1img upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1IMG-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1IMG-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
- if ((da_head.md1dsp>0) && (up_info.ota_run <= PATCH_MD1DSP))
- {
-
- now_patch = PATCH_MD1DSP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img;
-
-
- if (up_info.ota_run == PATCH_MD1DSP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_a;
-// }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_md1dsp_b;
-// }
-
-
- if(current_slot==SLOT_B){
- fd_read = fd_md1dsp_b;
- fd_write = fd_md1dsp_a;
- } else {
- fd_read = fd_md1dsp_a;
- fd_write = fd_md1dsp_b;
- }
-
-
- fota_status.ota_run = PATCH_MD1DSP;
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= WAIT;
-
- save_fota_status();
-
-
- up_info.ota_run = PATCH_MD1DSP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
-
- RLOGD("+[UA]: Start upgrading md1dsp.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: md1dsp upgrade result:%d\n",status);
-
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MD1DSP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = PASS;
- RLOGD("md1dsp upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MD1DSP-1].check_delta = PASS;
- fota_status.update_status[PATCH_MD1DSP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
- if ((da_head.vbmeta>0) && (up_info.ota_run <= PATCH_VBMETA))
- {
-
- now_patch = PATCH_VBMETA;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp;
-
-
- if (up_info.ota_run == PATCH_VBMETA)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-// if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_a;
-// }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_vbmeta_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_vbmeta_b;
- fd_write = fd_vbmeta_a;
- } else {
- fd_read = fd_vbmeta_a;
- fd_write = fd_vbmeta_b;
- }
-
-
- fota_status.ota_run = PATCH_VBMETA;
- fota_status.update_status[PATCH_VBMETA-1].check_delta = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- fota_status.update_status[PATCH_VBMETA-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_VBMETA;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- RLOGD("+[UA]: Start upgrading vbmeta.\n");
- status = iot_patch(&ctx);
- RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_VBMETA-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = PASS;
- RLOGD("vbmeta upgrade success!!!\n");
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = ERROR;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_VBMETA-1].check_delta = PASS;
- fota_status.update_status[PATCH_VBMETA-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_MD1IMG -1].check_delta = PASS;
- //fota_status.update_status[PATCH_MD1IMG -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.oemapp>0) && (up_info.ota_run <= PATCH_OEMAPP))
- {
-
- now_patch = PATCH_OEMAPP;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta;
-
-
- if (up_info.ota_run == PATCH_OEMAPP)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_a;
-// }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp_b;
- fd_write = fd_oemapp_a;
- } else {
- fd_read = fd_oemapp_a;
- fd_write = fd_oemapp_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP;
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
- if ((da_head.oemapp2>0) && (up_info.ota_run <= PATCH_OEMAPP2))
- {
-
- now_patch = PATCH_OEMAPP2;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp;
-
-
- if (up_info.ota_run == PATCH_OEMAPP2)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
- }
-// if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_a;
-// }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_oemapp2_b;
- fd_write = fd_oemapp2_a;
- } else {
- fd_read = fd_oemapp2_a;
- fd_write = fd_oemapp2_b;
- }
-
-
- fota_status.ota_run = PATCH_OEMAPP2;
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_OEMAPP2;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading oemapp2.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: oemapp2 upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_OEMAPP2-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = ERROR;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_OEMAPP2-1].check_delta = PASS;
- fota_status.update_status[PATCH_OEMAPP2-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
- if ((da_head.medmcu>0) && (up_info.ota_run <= PATCH_MEDMCU))
- {
-
- now_patch = PATCH_MEDMCU;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2;
-
-
- if (up_info.ota_run == PATCH_MEDMCU)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/mtd32");
- } else {
- system("flash_eraseall /dev/mtd33");
- }
-// if(current_slot==SLOT_B) {
- fd_medmcu_a = mtk_device_wrap_open(DEV_MEDMCU_A,O_RDWR);
- if (fd_medmcu_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_a;
-// }else{
- fd_medmcu_b = mtk_device_wrap_open(DEV_MEDMCU_B,O_RDWR);
- if (fd_medmcu_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_medmcu_b;
- fd_write = fd_medmcu_a;
- } else {
- fd_read = fd_medmcu_a;
- fd_write = fd_medmcu_b;
- }
-
-
- fota_status.ota_run = PATCH_MEDMCU;
- fota_status.update_status[PATCH_MEDMCU-1].check_delta = WAIT;
- fota_status.update_status[PATCH_MEDMCU-1].check_rom = WAIT;
- fota_status.update_status[PATCH_MEDMCU-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_MEDMCU;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading medmcu.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: medmcu upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_MEDMCU-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_MEDMCU-1].check_delta = PASS;
- fota_status.update_status[PATCH_MEDMCU-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_MEDMCU-1].check_delta = ERROR;
- fota_status.update_status[PATCH_MEDMCU-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_MEDMCU-1].check_delta = PASS;
- fota_status.update_status[PATCH_MEDMCU-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
-
-
-
-
- if ((da_head.bl33>0) && (up_info.ota_run <= PATCH_BL33))
- {
-
- now_patch = PATCH_BL33;
- delta_offset = DELTA_HEARD_SIZE + da_head.sys + da_head.boot + da_head.tee + da_head.md1img + da_head.md1dsp + da_head.vbmeta + da_head.oemapp + da_head.oemapp2 + da_head.medmcu;
-
-
- if (up_info.ota_run == PATCH_BL33)
- {
- ctx.first_run = 0;
-
- }else{
- ctx.first_run = 1;
- }
-
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/bl33_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/bl33_b");
- }
-// if(current_slot==SLOT_B) {
- fd_bl33_a = mtk_device_wrap_open(DEV_BL33_A,O_RDWR);
- if (fd_bl33_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_a;
-// }else{
- fd_bl33_b = mtk_device_wrap_open(DEV_BL33_B,O_RDWR);
- if (fd_bl33_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
-// fd_curr = fd_oemapp2_b;
-// }
-
- if(current_slot==SLOT_B){
- fd_read = fd_bl33_b;
- fd_write = fd_bl33_a;
- } else {
- fd_read = fd_bl33_a;
- fd_write = fd_bl33_b;
- }
-
-
- fota_status.ota_run = PATCH_BL33;
- fota_status.update_status[PATCH_BL33-1].check_delta = WAIT;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- fota_status.update_status[PATCH_BL33-1].update_result= WAIT;
-
- save_fota_status();
-
- up_info.ota_run = PATCH_BL33;
-
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
-
- LYVERBLOG("+[UA]: Start upgrading medmcu.\n");
- status = iot_patch(&ctx);
- LYVERBLOG("+[UA]: medmcu upgrade result:%d\n",status);
-
- up_info.ota_run = 0;
- //fota_status.ota_run = 0;
- fota_status.update_status[PATCH_BL33-1].update_result= status;
- fota_status.update_result= status;
-
- if((status == 0)||(status ==1))
- {
-
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = PASS;
-
- }else if(status == E_ROCK_INVALID_DELTA) {
- fota_status.update_status[PATCH_BL33-1].check_delta = ERROR;
- fota_status.update_status[PATCH_BL33-1].check_rom = WAIT;
- }else if((status == E_ROCK_DELTA_MISMATCH)||(status == E_ROCK_DELTA_CHUNK_MISMATCH)) {
- fota_status.update_status[PATCH_BL33-1].check_delta = PASS;
- fota_status.update_status[PATCH_BL33-1].check_rom = ERROR;
-
- }else{
-
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_delta = PASS;
- //fota_status.update_status[PATCH_OEMAPP2 -1].check_rom = WAIT;
- }
-
- save_fota_status();
-
-
- if ((status != 0) &&(status != 1))
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
- lynq_fota_release_wake_lock();
- return status;
- }
- mtk_device_wrap_close(fd_read);
- mtk_device_wrap_close(fd_write);
-
-
- }
-
-
-
- //if(current_slot==SLOT_B)
-
-
-
- if ((da_head.full_sys>0)|| (da_head.full_boot>0)|| (da_head.full_tee>0)||(da_head.full_md1img>0)||(da_head.full_md1dsp>0)||(da_head.full_vbmeta>0)||(da_head.full_oemapp>0)||(da_head.full_oemapp2>0)||(da_head.full_bl33>0))
+ if (is_need_fullupdate == 1)
{
now_patch = 0;
@@ -2040,12 +944,14 @@
sync();
close(fd_update_status);
- for (i = FULL_SYSTEM;i<=FULL_BL33;i++){
- if (fota_status.update_status[i-1].need_update ==1) {
+ //for (i = FULL_SYSTEM;i<=FULL_BL33;i++){
+
+ for (i = MAX_OTA_ROLE/2;i<(MAX_OTA_ROLE/2+REAL_OTA_ROLE);i++){
+ if (fota_status.update_status[i].need_update ==1) {
fota_status.ota_run = i;
- fota_status.update_status[i-1].check_delta = ERROR;
- fota_status.update_status[i-1].check_rom= WAIT;
- fota_status.update_status[i-1].update_result= ERROR;
+ fota_status.update_status[i].check_delta = ERROR;
+ fota_status.update_status[i].check_rom= WAIT;
+ fota_status.update_status[i].update_result= ERROR;
}
}
fota_status.update_result = ERROR;
@@ -2056,799 +962,98 @@
}
-
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
- if(da_head.full_sys>0) {
+ for(i = MAX_OTA_ROLE/2;i<(MAX_OTA_ROLE/2+REAL_OTA_ROLE);i++) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
+ if (i>MAX_OTA_ROLE/2) {
+ delta_offset+=delta_head[i-1];
+ }
+ if(delta_head[i]>0) {
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/system_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/system_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
- if (fd_system_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_sys file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_a;
- }else{
- fd_system_b = mtk_device_wrap_open(DEV_SYSTEM_B,O_RDWR);
- if (fd_system_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_sys file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_system_b;
- }
- fota_status.ota_run = FULL_SYSTEM;
- save_fota_status();
-
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading system full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_sys);
-
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_sys,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: system full retry_cnt = %d\n",retry_cnt);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_SYSTEM_B,DEV_SYSTEM_A);
+ sprintf(cmd_sys,"flash_eraseall %s",partition_filename_a[i-MAX_OTA_ROLE/2]);
+ } else {
+ sprintf(cmd_sys,"flash_eraseall %s",partition_filename_b[i-MAX_OTA_ROLE/2]);
}
- else{
- nand_copyto_nand(DEV_SYSTEM_A,DEV_SYSTEM_B);
- }
- }
-
- RLOGD("+[UA]: system full upgrade result:%d\n",status);
-
- fota_status.update_result = status;
- fota_status.update_status[FULL_SYSTEM-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
-
- if(da_head.full_boot>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/boot_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/boot_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
- if (fd_boot_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_a;
- }else{
- fd_boot_b = mtk_device_wrap_open(DEV_BOOT_B,O_RDWR);
- if (fd_boot_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_boot file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_boot_b;
- }
- fota_status.ota_run = FULL_BOOT;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading boot full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_boot);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_boot,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
-
- RLOGD("+[UA]: boot full retry_cnt = %d\n",retry_cnt);
- mtk_device_wrap_close(fd_curr);
-
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
+ system(cmd_sys);
+
if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_BOOT_B,DEV_BOOT_A);
+ fd_partition_a = mtk_device_wrap_open(partition_filename_a[i-MAX_OTA_ROLE/2],O_RDWR);
+ if (fd_partition_a < 0) {
+ err = errno;
+ RLOGD("+[UA]: Error opening full id_a[%d] file: %s\n",i,strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+ fd_curr = fd_partition_a;
+ }else{
+ fd_partition_b = mtk_device_wrap_open(partition_filename_b[i-MAX_OTA_ROLE/2],O_RDWR);
+ if (fd_partition_b < 0) {
+ err = errno;
+ RLOGD("+[UA]: Error opening full_id_b[%d] file: %s\n",i,strerror(errno));
+ lynq_fota_release_wake_lock();
+ return -err;
+ }
+ fd_curr = fd_partition_b;
}
- else{
- nand_copyto_nand(DEV_BOOT_A,DEV_BOOT_B);
+ fota_status.ota_run = i+1;
+ save_fota_status();
+
+ retry_cnt = 0;
+ RLOGD("+[UA]: Start upgrading %s full.\n",partition_filename[i-MAX_OTA_ROLE/2]);
+ do{
+ status = delta_copyto_nand(delta_offset,delta_head[i]);
+
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,delta_head[i],digest_s);
+ ROCK_SHA_FILE(fd_curr,0,delta_head[i],digest_t);
+ retry_cnt++;
+ }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
+
+ mtk_device_wrap_close(fd_curr);
+
+ RLOGD("+[UA]: %s full retry_cnt = %d\n",partition_filename[i-MAX_OTA_ROLE/2],retry_cnt);
+
+ if (retry_cnt>3) {
+ if (status == 0) {
+ status = retry_cnt;
+ }
+ if(current_slot==SLOT_B) {
+ nand_copyto_nand(partition_filename_b[i-MAX_OTA_ROLE/2],partition_filename_a[i-MAX_OTA_ROLE/2]);
+ }
+ else{
+ nand_copyto_nand(partition_filename_a[i-MAX_OTA_ROLE/2],partition_filename_b[i-MAX_OTA_ROLE/2]);
+ }
}
- }
-
- RLOGD("+[UA]: boot full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_BOOT-1].update_result = status;
- save_fota_status();
-
+ RLOGD("+[UA]: %s full upgrade result:%d\n",partition_filename[i-MAX_OTA_ROLE/2],status);
- if (status != 0)
- {
+ fota_status.update_result = status;
+ fota_status.update_status[i].update_result = status;
+ save_fota_status();
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
+ if (status != 0)
+ {
+
+ up_info.fota_flag[0] = 'e';
+ up_info.fota_flag[1] = 'n';
+ up_info.fota_flag[2] = 'd';
+ up_info.update_result = status;
+ up_info.ota_run = 0;
+ lseek(fd_update_status,0,SEEK_SET);
+ write(fd_update_status, &up_info,sizeof(up_info));
+ sync();
+ close(fd_update_status);
+ lynq_fota_release_wake_lock();
+ return status;
+ }
+
}
}
- if(da_head.full_tee>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/tee_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/tee_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
- if (fd_tee_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_a;
- }else{
- fd_tee_b = mtk_device_wrap_open(DEV_TEE_B,O_RDWR);
- if (fd_tee_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_tee file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_tee_b;
- }
- fota_status.ota_run = FULL_TEE;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading tee full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_tee);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_tee,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: tee full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_TEE_B,DEV_TEE_A);
- }
- else{
- nand_copyto_nand(DEV_TEE_A,DEV_TEE_B);
- }
- }
-
- printf("+[UA] tee full upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_TEE-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1img>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
- if (fd_md1img_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_a;
- }else{
- fd_md1img_b = mtk_device_wrap_open(DEV_MD1IMG_B,O_RDWR);
- if (fd_md1img_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1img file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1img_b;
- }
- fota_status.ota_run = FULL_MD1IMG;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1img full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1img);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1img,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1img full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1IMG_B,DEV_MD1IMG_A);
- }
- else{
- nand_copyto_nand(DEV_MD1IMG_A,DEV_MD1IMG_B);
- }
- }
-
- RLOGD("+[UA]: md1img upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1IMG-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_md1dsp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
- if (fd_md1dsp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_a;
- }else{
- fd_md1dsp_b = mtk_device_wrap_open(DEV_MD1DSP_B,O_RDWR);
- if (fd_md1dsp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_md1dsp file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_md1dsp_b;
- }
- fota_status.ota_run = FULL_MD1DSP;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading md1dsp full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: md1dsp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MD1DSP_B,DEV_MD1DSP_A);
- }
- else{
- nand_copyto_nand(DEV_MD1DSP_A,DEV_MD1DSP_B);
- }
- }
-
- RLOGD("+[UA]: md1dsp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MD1DSP-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
-
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_vbmeta>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
- if (fd_vbmeta_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_a;
- }else{
- fd_vbmeta_b = mtk_device_wrap_open(DEV_VBMETA_B,O_RDWR);
- if (fd_vbmeta_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening full_vbmeta file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_vbmeta_b;
- }
- fota_status.ota_run = FULL_VBMETA;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading vbmeta full.\n");
- do{
- status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: vbmeta full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_VBMETA_B,DEV_VBMETA_A);
- }
- else{
- nand_copyto_nand(DEV_VBMETA_A,DEV_VBMETA_B);
- }
- }
-
- RLOGD("+[UA]: vbmeta upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_VBMETA-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
- if(da_head.full_oemapp>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta;
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_oemapp_a = mtk_device_wrap_open(DEV_OEMAPP_A,O_RDWR);
- if (fd_oemapp_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp_a;
- }else{
- fd_oemapp_b = mtk_device_wrap_open(DEV_OEMAPP_B,O_RDWR);
- if (fd_oemapp_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp_b;
- }
- fota_status.ota_run = FULL_OEMAPP;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading oemapp full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: oemapp full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP_B,DEV_OEMAPP_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP_A,DEV_OEMAPP_B);
- }
- }
-
- RLOGD("+[UA]: oemapp upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
- if(da_head.full_oemapp2>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp;
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/oemapp2_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_oemapp2_a = mtk_device_wrap_open(DEV_OEMAPP2_A,O_RDWR);
- if (fd_oemapp2_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_a;
- }else{
- fd_oemapp2_b = mtk_device_wrap_open(DEV_OEMAPP2_B,O_RDWR);
- if (fd_oemapp2_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_oemapp2_b;
- }
- fota_status.ota_run = FULL_OEMAPP2;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading oemapp2 full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_oemapp2);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_oemapp2,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_oemapp2,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
-
- RLOGD("+[UA]: oemapp2 full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_OEMAPP2_B,DEV_OEMAPP2_A);
- }
- else{
- nand_copyto_nand(DEV_OEMAPP2_A,DEV_OEMAPP2_B);
- }
- }
-
- RLOGD("+[UA]: oemapp2 upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_OEMAPP2-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
-
- if(da_head.full_medmcu>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp +da_head.full_oemapp2;
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/mtd32");
- } else {
- system("flash_eraseall /dev/mtd33");
- }
-
- if(current_slot==SLOT_B) {
- fd_medmcu_a = mtk_device_wrap_open(DEV_MEDMCU_A,O_RDWR);
- if (fd_medmcu_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_medmcu_a;
- }else{
- fd_medmcu_b = mtk_device_wrap_open(DEV_MEDMCU_B,O_RDWR);
- if (fd_medmcu_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_medmcu_b;
- }
- fota_status.ota_run = FULL_MEDMCU;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading medmcu full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_medmcu);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_medmcu,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_medmcu,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: medmcu full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_MEDMCU_B,DEV_MEDMCU_A);
- }
- else{
- nand_copyto_nand(DEV_MEDMCU_A,DEV_MEDMCU_B);
- }
- }
- RLOGD("+[UA]: medmcu upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_MEDMCU-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
- }
-
-
-
-
-
-
- if(da_head.full_bl33>0) {
-
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp + da_head.full_vbmeta + da_head.full_oemapp +da_head.full_oemapp2 + da_head.full_medmcu;
-
-
- if(current_slot==SLOT_B) {
- system("flash_eraseall /dev/disk/by-partlabel/bl33_a");
- } else {
- system("flash_eraseall /dev/disk/by-partlabel/bl33_b");
- }
-
- if(current_slot==SLOT_B) {
- fd_bl33_a = mtk_device_wrap_open(DEV_BL33_A,O_RDWR);
- if (fd_bl33_a < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_bl33_a;
- }else{
- fd_bl33_b = mtk_device_wrap_open(DEV_BL33_B,O_RDWR);
- if (fd_bl33_b < 0) {
- err = errno;
- RLOGD("+[UA]: Error opening metadata file: %s\n",strerror(errno));
- lynq_fota_release_wake_lock();
- return -err;
- }
- fd_curr = fd_bl33_b;
- }
- fota_status.ota_run = FULL_BL33;
- save_fota_status();
- retry_cnt = 0;
- RLOGD("+[UA]: Start upgrading bl33 full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_bl33);
- ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_bl33,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_bl33,digest_t);
- retry_cnt++;
- }while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
- mtk_device_wrap_close(fd_curr);
- RLOGD("+[UA]: bl33 full retry_cnt = %d\n",retry_cnt);
- if (retry_cnt>3) {
- if (status == 0) {
- status = retry_cnt;
- }
- if(current_slot==SLOT_B) {
- nand_copyto_nand(DEV_BL33_B,DEV_BL33_A);
- }
- else{
- nand_copyto_nand(DEV_BL33_A,DEV_BL33_B);
- }
- }
- RLOGD("+[UA]: bl33 upgrade result:%d\n",status);
- fota_status.update_result = status;
- fota_status.update_status[FULL_BL33-1].update_result = status;
- save_fota_status();
-
- if (status != 0)
- {
- up_info.fota_flag[0] = 'e';
- up_info.fota_flag[1] = 'n';
- up_info.fota_flag[2] = 'd';
- up_info.update_result = status;
- up_info.ota_run = 0;
- lseek(fd_update_status,0,SEEK_SET);
- write(fd_update_status, &up_info,sizeof(up_info));
- sync();
- close(fd_update_status);
- lynq_fota_release_wake_lock();
- return status;
- }
-
-
- }
-
if(update_mode == MODE_NORMAL){ //need A VS B
@@ -2905,6 +1110,10 @@
fota_status.update_result = status;
save_fota_status();
+ sleep(5);
+ sync();
+ sleep(5);
+
lynq_fota_release_wake_lock();
if(reboot_flag==1){
@@ -2940,7 +1149,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);
RLOGD("rock_update_main ret = %d\n", ret);
if(ret)
{
@@ -2971,7 +1180,7 @@
{
//Power off, call UA
RLOGD("[+UP]: ***Power off, call UA***\n");
- ret = rock_update_main(0, 0, 0, 0, first_run, 1, 0);
+ ret = rock_update_main(0, 0, 0, 0, first_run, 1,0);
RLOGD("rock_update_main ret = %d\n", ret);
if(ret)
{
@@ -3063,11 +1272,18 @@
* @param void
* @return 0:fota success -Other values:fota fail
*/
+
int lynq_fota_nrestart(void)
{
+
int ret = 0;
+#if 0
+ printf("-********copy delta ***-\n");
+ test_write_delta("/data/delta",DEV_DELTA);
+#endif
+
ret = rock_update_main(0, 0, 0, 0, 1, 1, 0);
- RLOGD("lynq_fota_nrestart ret = %d\n", ret);
+ RLOGD("rock_update_nrestart ret = %d\n", ret);
if(ret)
{
RLOGD("fota update fail!\n");
@@ -3175,4 +1391,3 @@
* @brief This is the wake up call
* end
*/
-
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/sha.c b/src/lynq/lib/liblynq-fota/rock_ua/sha.c
index ce52383..5ac6b53 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/sha.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/sha.c
@@ -342,11 +342,10 @@
else
{
size = read(fd_sha,data,totale_size_common);
- }
- if(size==0){
-
- break;
- }
+ }
+ if (size == 0){
+ break;
+ }
SHA_update(&ctx, data, size);
totale_size_common -= size;
@@ -381,6 +380,9 @@
{
size = mtk_device_wrap_read(fd_sha,data,totale_size_file);
}
+ if (size == 0){
+ break;
+ }
SHA_update(&ctx, data, size);
totale_size_file -= size;
diff --git a/src/lynq/lib/liblynq-sms/lynq_sms.cpp b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
index f457d7c..73cd37f 100755
--- a/src/lynq/lib/liblynq-sms/lynq_sms.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
@@ -132,7 +132,7 @@
int lynq_send_sms(char telephony_num[TELEPHONE_NUM_LEN], int charset, char *msg, int msglen)
{
LYINFLOG("charset is %d, msglen %d\n", charset, msglen);
- if(msglen > MSG_MAX_LEN || msglen < 0)
+ if(msglen > MSG_MAX_LEN || msglen <= 0)
{
LYERRLOG("msglen out of the range");
return LYNQ_E_SMS_MSGLEN_OUT_OF_RANGE;
diff --git a/src/lynq/lib/liblynq-wifi6/include/libwifi6.h b/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
index 34a6ec8..8caf003 100755
--- a/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
+++ b/src/lynq/lib/liblynq-wifi6/include/libwifi6.h
@@ -173,6 +173,8 @@
//start scan availbale ap active
int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx);
+//add for STA auto connect
+int lynq_wifi_sta_stop_net(lynq_wifi_index_e idx,int networkid);
/*
* event usage:
* first declare a funcion like AP_CALLBACK_FUNC_PTR to recv messge from wifi lib
@@ -207,6 +209,9 @@
typedef void(*STA_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number);
int lynq_reg_sta_event_callback(void * priv, STA_CALLBACK_FUNC_PTR cb);
int lynq_unreg_sta_event_callback(void * priv);
+typedef void(*STA_AUTO_CALLBACK_FUNC_PTR)(void *priv, lynq_wifi_sta_status_s status, error_number_s number,int networkid);
+int lynq_reg_sta_auto_event_callback(void * priv, STA_AUTO_CALLBACK_FUNC_PTR cb);
+int lynq_unreg_sta_auto_event_callback(void * priv);
//get current ap status
int lynq_get_ap_status(lynq_wifi_index_e idx, lynq_wifi_ap_run_status_s * ap_status);
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index ed4024c..ed38fbf 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -51,10 +51,16 @@
volatile int g_sta_scan_finish_flag = 1;
volatile int g_sta_watcher_started_flag = 0;
+pthread_t g_sta_auto_watcher_pid = 0;
+volatile int g_sta_auto_watcher_stop_flag = 0;
+volatile int g_sta_auto_scan_finish_flag = 1;
+volatile int g_sta_auto_watcher_started_flag = 0;
void * g_ap_callback_priv = NULL;
AP_CALLBACK_FUNC_PTR g_ap_callback_func = NULL;
void * g_sta_callback_priv = NULL;
STA_CALLBACK_FUNC_PTR g_sta_callback_func = NULL;
+void * g_sta_auto_callback_priv = NULL;
+STA_AUTO_CALLBACK_FUNC_PTR g_sta_auto_callback_func = NULL;
//const char * CTRL_PATH="/var/run/wpa_supplicant";
const char * CTRL_PATH[2] = {"/var/run/wpa_supplicant/wlan0", "/var/run/wpa_supplicant/ap0"};
@@ -89,6 +95,8 @@
static pthread_mutex_t s_check_wpa_ctrl_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t s_sta_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t s_ap_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
+// add for auto connect
+static pthread_mutex_t s_sta_auto_callback_mutex = PTHREAD_MUTEX_INITIALIZER;
static struct local_wpa_ctrl * g_lynq_wpa_ctrl[2] = {0};
@@ -662,6 +670,142 @@
}
+void get_state_error_networkid(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error,int *networkid)
+{
+ char *pReason;
+ char *wpanetid;
+ char destid[3];
+ *error = LYNQ_WAIT_CONNECT_ACTIVE;
+ *networkid = -1;
+ if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
+ {
+ *state = LYNQ_WIFI_STA_STATUS_SCAN_RESULT;
+ RLOGD("CTRL-EVENT-SCAN-RESULTS state:%d,error:%d,,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-CONNECTED") != NULL)
+ {
+ RLOGD("[xiong]:wpanetid = strstrmodify;\n");
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ RLOGD("[xiong]:memcpy(destid,wpanetid,0\n");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ RLOGD("[xiong]:memcpy(destid,wpanetid,1\n");
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ RLOGD("[xiong]:memcpy(destid,wpanetid,2\n");
+ }
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT;
+ RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
+ {
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ }
+ pReason = strstr(modify, "reason=");
+ if (pReason != NULL)
+ {
+ pReason += strlen("reason=");
+ if (memcmp(pReason, "CONN_FAILED", 11) == 0)
+ {
+ *error = LYNQ_TIME_OUT;
+ }
+ else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
+ {
+ *error = LYNQ_PSW_ERROR;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT_FAIL;
+ RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STA_STATUS_CONNECT_FAIL;
+ return;
+ }
+ }
+ if (strstr(modify, "CTRL-EVENT-ASSOC-REJECT") != NULL)
+ {
+ wpanetid = strstr(modify,"id=");
+ if ( wpanetid != NULL )
+ {
+ wpanetid +=strlen("id=");
+ if (memcpy(destid,wpanetid,2) != NULL)
+ {
+ *networkid = atoi(destid);
+ RLOGD("get networkid is %d\n",*networkid);
+ }
+ }
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT\n");
+ pReason = strstr(modify, "status_code=");
+ if (pReason != NULL)
+ {
+ pReason += strlen("status_code=");
+ if (memcmp(pReason, "17", 2) == 0)
+ {
+ *error = LYNQ_AP_UNABLE_HANDLE;
+ }
+ else if (memcmp(pReason, "1",1) == 0)
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ else
+ {
+ *error = LYNQ_UNSPECIFIED_REASON;
+ }
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-ASSOC-REJECT BUT NOT STATUS_CODE NOT 1 or 17 state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ else
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT BUT NOT FOUND STATUS_CODE\n");
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-ASSOC-REJECT state:%d,error:%d£¬networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ }
+ if (strstr(modify, "CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER") != NULL)
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER\n");
+ *error = LYNQ_AUTHENTICATION_NO_LONGER_VALID;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ if (strstr(modify, "CTRL-EVENT-DISCONNECTED") != NULL)
+ {
+ RLOGD("FIND CTRL EVENT : CTRL-EVENT-DISCONNECTED\n");
+ *error = LYNQ_WAIT_CONNECT_ACTIVE;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-DISCONNECTED state:%d,error:%d,networkid:%d\n",*state,*error,*networkid);
+ return;
+ }
+ RLOGD("EVENT : %s\n", modify);
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STATUS_EGNORE;
+ RLOGD("LAST : STA state:%d,error:%d,network:%d\n",*state,*error,*networkid);
+ return;
+}
static void notify_connect_status(lynq_wifi_sta_status_s state, error_number_s error)
{
pthread_mutex_lock(&s_sta_callback_mutex);
@@ -673,6 +817,17 @@
}
pthread_mutex_unlock(&s_sta_callback_mutex);
}
+static void notify_auto_connect_status(lynq_wifi_sta_status_s state, error_number_s error,int networkid)
+{
+ pthread_mutex_lock(&s_sta_callback_mutex);
+ if (g_sta_callback_func != NULL && state != LYNQ_WIFI_STATUS_EGNORE)
+ {
+ RLOGD("STAWatcherThreadProc callback begin ------> %d %d %d\n", state, error,networkid);
+ g_sta_auto_callback_func(g_sta_auto_callback_priv, state, error,networkid);
+ RLOGD("STAAutoWatcherThreadProc callback end ------> %d %d %d\n", state, error,networkid);
+ }
+ pthread_mutex_unlock(&s_sta_callback_mutex);
+}
static void STAWatcherThreadProc() {
size_t len = MAX_RET;
@@ -735,6 +890,62 @@
wpa_ctrl_close(lynq_wpa_ctrl);
}
}
+static void STAAutoWatcherThreadProc() {
+ size_t len = MAX_RET;
+ char msg_notify[MAX_RET];
+ error_number_s error;
+ lynq_wifi_sta_status_s state, last_state = -1;
+ int idle_count = 0;
+ int networkid;
+ struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+ g_sta_auto_watcher_stop_flag = 0;
+ RLOGD("STAAutoWatcherThreadProc thread started ------");
+ while (g_sta_auto_watcher_stop_flag == 0)
+ {
+ if (check_pending_msg(&lynq_wpa_ctrl, CTRL_STA, &idle_count, &g_sta_auto_watcher_started_flag) != 1)
+ {
+ continue;
+ }
+ memset(msg_notify, 0, MAX_RET);
+ len = MAX_RET;
+ if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
+ {
+ msg_notify[len+1] = '\0';
+ RLOGD("STAAutoWatcherThreadProc sta ------> %s\n", msg_notify);
+ if (strstr(msg_notify, state_scan_result) != NULL)
+ {
+ g_sta_auto_scan_finish_flag = 1;
+ }
+ if (g_sta_auto_callback_func == NULL)
+ {
+ continue;
+ }
+ get_state_error_networkid(msg_notify,&state,&error,&networkid); // add net state error network function
+ notify_auto_connect_status(state, error,networkid);
+ if (state != LYNQ_WIFI_STA_STATUS_SCAN_RESULT)
+ {
+ inner_check_connect_error(msg_notify, state, error);
+ if (last_state != state)
+ {
+ if (state == LYNQ_WIFI_STA_STATUS_CONNECT)
+ {
+ system_call_v("%s %s", sta_status_change_script, "connect");
+ }
+ else if (state == LYNQ_WIFI_STA_STATUS_DISCONNECT)
+ {
+ system_call_v("%s %s", sta_status_change_script, "disconnect");
+ }
+ }
+ last_state = state;
+ }
+ }
+ }
+ if (lynq_wpa_ctrl != NULL)
+ {
+ wpa_ctrl_detach(lynq_wpa_ctrl);
+ wpa_ctrl_close(lynq_wpa_ctrl);
+ }
+}
// this thread will not exit when lynq_wifi_disable called,to avoid dead lock,take care
static void GlobalWatcherThreadProc()
@@ -904,16 +1115,20 @@
pthread_mutex_lock(&s_check_wpa_ctrl_mutex);
g_ap_watcher_stop_flag = 1;
g_sta_watcher_stop_flag = 1;
+ g_sta_auto_watcher_stop_flag = 1;
if (g_ap_watcher_pid != 0)
pthread_join(g_ap_watcher_pid, NULL);
if (g_sta_watcher_pid != 0)
pthread_join(g_sta_watcher_pid, NULL);
+ if (g_sta_auto_watcher_pid != 0)
+ pthread_join(g_sta_auto_watcher_pid, NULL);
if (g_lynq_wpa_ctrl[0] != NULL)
wpa_ctrl_close(g_lynq_wpa_ctrl[0]);
if (g_lynq_wpa_ctrl[1] != NULL)
wpa_ctrl_close(g_lynq_wpa_ctrl[1]);
g_ap_watcher_pid = 0;
g_sta_watcher_pid = 0;
+ g_sta_auto_watcher_pid = 0;
g_lynq_wpa_ctrl[0] = NULL;
g_lynq_wpa_ctrl[1] = NULL;
system("systemctl stop wg870_drv_insmod.service");
@@ -1101,7 +1316,7 @@
if (NULL == mac || NULL == ip)
return -1;
memset(ip, 0, ip_len);
- sprintf(cmd, "ip n s | grep \"lladdr\" | grep \"%s\" | head -1 | awk '{print $1}'", mac);
+ sprintf(cmd, "ip n s | grep \"lladdr\" | grep \"%s\" | awk '{print $1}' | grep -v \":\" | head -1", mac);
ret = exec_cmd(cmd, ip, ip_len);
p = strchr(ip, '\n');
if (NULL != p)
@@ -3065,6 +3280,16 @@
return 0;
// return system("connmanctl disable wifi");
}
+int lynq_wifi_sta_stop_net(lynq_wifi_index_e idx,int networkid)
+{
+ char LYNQ_DISABLE_CMD[128]={0};
+ CHECK_IDX(idx, CTRL_STA);
+ CHECK_WPA_CTRL(CTRL_STA);
+ sprintf(LYNQ_DISABLE_CMD,"DISABLE_NETWORK %d",networkid);
+ RLOGD("LYNQ_DISABLE_CMD is:%d\n",LYNQ_DISABLE_CMD);
+ DO_OK_FAIL_REQUEST(LYNQ_DISABLE_CMD);
+ return 0;
+}
//static int inner_get_sta_info(lynq_wifi_index_e idx, const char * bssid, device_info_s *dev) {
// int i, count;
@@ -3452,6 +3677,48 @@
return -1;
}
+int lynq_reg_sta_auto_event_callback(void * priv, STA_AUTO_CALLBACK_FUNC_PTR cb){
+ if (cb == NULL)
+ {
+ RLOGE("lynq_reg_sta_auto_event_callback ptr is NULL,plese check!\n");
+ return -1;
+ }
+ pthread_mutex_lock(&s_sta_auto_callback_mutex);
+ g_sta_auto_callback_priv = priv;
+ g_sta_auto_callback_func = cb;
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ pthread_mutex_lock(&s_check_wpa_ctrl_mutex);
+ if (g_sta_auto_watcher_pid == 0 ) {
+ if(pthread_create(&g_sta_auto_watcher_pid,NULL,STAAutoWatcherThreadProc,NULL) < 0) //create STAAutoWatcherThreadProc
+ {
+ g_sta_auto_watcher_pid = 0;
+ pthread_mutex_unlock(&s_check_wpa_ctrl_mutex);
+ RLOGE("[wifi error]creat STAWatcherThreadProc fail");
+ return -1;
+ }
+ }
+ pthread_mutex_unlock(&s_check_wpa_ctrl_mutex);
+ RLOGD("creat STAWatcherTheradProc susccs");
+ return 0;
+}
+int lynq_unreg_sta_auto_event_callback(void * priv) {
+ pthread_mutex_lock(&s_sta_auto_callback_mutex);
+ if (g_sta_auto_callback_priv == priv)
+ {
+ g_sta_auto_watcher_stop_flag = 1;
+ if (g_sta_auto_watcher_pid != 0)
+ {
+ pthread_join(g_sta_auto_watcher_pid, NULL);
+ }
+ g_sta_auto_watcher_pid = 0;
+ g_sta_auto_callback_func = NULL;
+ g_sta_auto_callback_priv = NULL;
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ return 0;
+ }
+ pthread_mutex_unlock(&s_sta_auto_callback_mutex);
+ return -1;
+}
int lynq_get_ap_status(lynq_wifi_index_e idx, lynq_wifi_ap_run_status_s * ap_status)
{
char state[MAX_CMD];
diff --git a/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh b/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
index 25dd644..ff0c59c 100755
--- a/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
+++ b/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
@@ -13,6 +13,8 @@
echo "listen-address=192.168.15.1" >> $conf_file
echo "bind-interfaces" >> $conf_file
echo "localise-queries" >> $conf_file
+ echo "no-ping" >> $conf_file
+ echo "dhcp-authoritative" >> $conf_file
echo "dhcp-range=192.168.15.2,192.168.15.14,255.255.255.240,1h" >> $conf_file
echo "dhcp-option=3,192.168.15.1" >> $conf_file
echo "dhcp-option=6,192.168.15.1" >> $conf_file