[Bugfix][T106BUG-553][AUTOSUSPEND]5 seconds of continuous abnormal current after 30 minutes of sleep
Only Configure: No
Affected branch: master
Affected module: AUTOSUSPEND
Is it affected on both ZXIC and MTK:only zxic
Self-test: Yes
Doc Update:No
Change-Id: Ib897224a1f89c9d1be3b1837289ef1c5e48aa415
diff --git a/allbins/zx297520v3/prj_evb/nv/psPriData_nvrw_0x00002000.bin b/allbins/zx297520v3/prj_evb/nv/psPriData_nvrw_0x00002000.bin
index c022672..04eba65 100755
--- a/allbins/zx297520v3/prj_evb/nv/psPriData_nvrw_0x00002000.bin
+++ b/allbins/zx297520v3/prj_evb/nv/psPriData_nvrw_0x00002000.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_evb/nv_230a/psPriData_nvrw_0x00002000.bin b/allbins/zx297520v3/prj_evb/nv_230a/psPriData_nvrw_0x00002000.bin
index 4284bf6..c45d319 100755
--- a/allbins/zx297520v3/prj_evb/nv_230a/psPriData_nvrw_0x00002000.bin
+++ b/allbins/zx297520v3/prj_evb/nv_230a/psPriData_nvrw_0x00002000.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/nv/psPriData_nvrw_0x00002000.bin b/allbins/zx297520v3/prj_vehicle/nv/psPriData_nvrw_0x00002000.bin
index c6cd534..73937d4 100755
--- a/allbins/zx297520v3/prj_vehicle/nv/psPriData_nvrw_0x00002000.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv/psPriData_nvrw_0x00002000.bin
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/amt/amt.a b/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
old mode 100755
new mode 100644
index e391950..09efff3
--- a/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
+++ b/ap/lib/libps/220A1_vehicle_dc/amt/amt.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/amr.a b/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
old mode 100755
new mode 100644
index b84b7c5..539290c
--- a/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/amr.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a b/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
old mode 100755
new mode 100644
index e2ad7f2..9719874
--- a/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/audio_base.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/chip.a b/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
old mode 100755
new mode 100644
index 07f3eb8..2e8e198
--- a/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/chip.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/drv/public.a b/ap/lib/libps/220A1_vehicle_dc/drv/public.a
old mode 100755
new mode 100644
index e26c1e5..65b80f2
--- a/ap/lib/libps/220A1_vehicle_dc/drv/public.a
+++ b/ap/lib/libps/220A1_vehicle_dc/drv/public.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
old mode 100755
new mode 100644
index 8dcf0f0..ecb98e7
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
old mode 100755
new mode 100644
index b98e806..f83e43c
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
old mode 100755
new mode 100644
index 6e5ff53..a876ff9
--- a/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/armv7-a/GCC/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
old mode 100755
new mode 100644
index 8dcf0f0..ecb98e7
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_osa_linux.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
old mode 100755
new mode 100644
index b98e806..f83e43c
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_psm.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a b/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
old mode 100755
new mode 100644
index 6e5ff53..a876ff9
--- a/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
+++ b/ap/lib/libps/220A1_vehicle_dc/plat/plat_sup.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a b/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
index 1f20caf..8ae7d6e 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/as_com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ati.a b/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
old mode 100755
new mode 100644
index c5feb86..3944e9c
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ati.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/com.a b/ap/lib/libps/220A1_vehicle_dc/ps/com.a
index 82a4eba..1f16824 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a b/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
index 6b8c96e..11ffad4 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/eurrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/nas.a b/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
index c41b253..0cb5ca6 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/nas.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a b/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
index 469cad0..0a55f6d 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ul1t.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a b/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
index 90c749e..6cd74c4 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/ul2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a b/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
index 39c6c08..7d7b2ee 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/urrc.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a b/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
index ff7ff0f..3921260 100755
--- a/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ps/wl2_up.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ref/com.a b/ap/lib/libps/220A1_vehicle_dc/ref/com.a
old mode 100755
new mode 100644
index 824f39f..f8bda9e
--- a/ap/lib/libps/220A1_vehicle_dc/ref/com.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ref/com.a
Binary files differ
diff --git a/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a b/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
old mode 100755
new mode 100644
index 6ebede9..34aaca0
--- a/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
+++ b/ap/lib/libps/220A1_vehicle_dc/ref/ref_drv.a
Binary files differ
diff --git a/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/elfs/normalelfs/zte_volte_main.elf b/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/elfs/normalelfs/zte_volte_main.elf
index b40128a..e1a62de 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/elfs/normalelfs/zte_volte_main.elf
+++ b/ap/project/zx297520v3/prj_vehicle_dc_ref/bin/220A1/elfs/normalelfs/zte_volte_main.elf
Binary files differ
diff --git a/ap/project/zx297520v3/prj_vehicle_dc_ref/fs/normal/rootfs/bin/zte_volte_main b/ap/project/zx297520v3/prj_vehicle_dc_ref/fs/normal/rootfs/bin/zte_volte_main
index ca13289..472ca9b 100755
--- a/ap/project/zx297520v3/prj_vehicle_dc_ref/fs/normal/rootfs/bin/zte_volte_main
+++ b/ap/project/zx297520v3/prj_vehicle_dc_ref/fs/normal/rootfs/bin/zte_volte_main
Binary files differ
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index d3ac78b..8c08eff 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -439,6 +439,8 @@
IMS_PCSCF_PORT=5060
G_IMS_CMGF=0
ECALL_MTTEST=0
+POWER_CONTROL=1
+NOT_KEEP_TCP_CONN=1
#for volte end
DEBUG_INFO_DISABLE=0
DEBUG_INFO_FILE_PATH=/mnt/userdata
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys
index 4b4d8aa..0f851ee 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_systemd/fs/normal/rootfs/etc_ro/default/default_parameter_sys
@@ -429,6 +429,8 @@
IMS_PCSCF_PORT=5060
G_IMS_CMGF=0
ECALL_MTTEST=0
+POWER_CONTROL=0
+NOT_KEEP_TCP_CONN=0
#for volte end
DEBUG_INFO_DISABLE=0
DEBUG_INFO_FILE_PATH=/mnt/userdata
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
index 6d724ef..ca823c2 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
@@ -658,6 +658,8 @@
char buf[80];
char timeout_str[100]="100000";
pid = getpid();
+ char cmdstr[32];
+ char rsp[128];
//if (property_get("sys.autosuspend.timeout", timeout_str, NULL))
{
possible_max_sleep_time = atoi(timeout_str);
@@ -691,15 +693,25 @@
ALOGI("Error creating semaphore: %s\n", buf);
goto err_sem_init;
}
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
if(sc_at_init(1)){
ALOGD("sc_at_init failed.\n");
return NULL;
}
+ else
+ {
+ strcpy(cmdstr, "AT+ZPOWSTAT=1\r\n");
+ printf("AUTOSUSPEND: cmd:%s\n",cmdstr);
+ ret = sc_at_send(1,cmdstr,rsp,sizeof(rsp));
+ printf("AUTOSUSPEND: sc_at_send result:%d %s\n",ret,rsp);
+
+ }
if(sc_mnet_whitelist_init() != 0)
{
ALOGD("sc_mnet_whitelist_init failed.\n");
return NULL;
}
+#endif
ret = lynq_sim_init((int)pid);
if(ret == 0)
{
diff --git a/cp/ps/modem/ps/inc/atipscom.h b/cp/ps/modem/ps/inc/atipscom.h
index d8e8aca..72560ba 100755
--- a/cp/ps/modem/ps/inc/atipscom.h
+++ b/cp/ps/modem/ps/inc/atipscom.h
@@ -232,13 +232,14 @@
#define Z_ATI_NV_EcallCapa (BYTE)(Z_ATI_NV_Msisdn2 + 1)
#define Z_ATI_NV_EcallNum (BYTE)(Z_ATI_NV_EcallCapa + 1)
#define Z_ATI_NV_EcallTime (BYTE)(Z_ATI_NV_EcallNum + 1)
+#define Z_ATI_NV_RrcStatus (BYTE)(Z_ATI_NV_EcallTime + 1)
#ifdef BTRUNK_SUPPORT
-#define Z_ATI_NV_PttTruncUser (BYTE)(Z_ATI_NV_EcallTime + 1)
+#define Z_ATI_NV_PttTruncUser (BYTE)(Z_ATI_NV_RrcStatus + 1)
#define Z_ATI_NV_PttIOTFlag (BYTE)(Z_ATI_NV_PttTruncUser + 1)
#define Z_ATI_NV_PttSubWayFlag (BYTE)(Z_ATI_NV_PttIOTFlag + 1)
#define Z_ATI_NV_PrvEnd (BYTE)(Z_ATI_NV_PttSubWayFlag + 0)
#else
-#define Z_ATI_NV_PrvEnd (BYTE)(Z_ATI_NV_EcallTime + 0)
+#define Z_ATI_NV_PrvEnd (BYTE)(Z_ATI_NV_RrcStatus + 0)
#endif
@@ -1319,6 +1320,11 @@
BYTE abPadding[2];
}T_zAti_NV_EcallTime;
+typedef struct{
+ BYTE bSoftPowStat;/*0-disable, 1-sleep, 2-wakeup,³ö³§Öµ0*/
+ BYTE abPadding[3];
+}T_zAti_NV_RrcStatus;
+
#ifdef BTRUNK_SUPPORT
typedef struct
{
diff --git a/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h b/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
index 6da8e4b..67a34a4 100755
--- a/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
+++ b/cp/ps/modem/ps/src/nas/ati/inc/zat_api.h
@@ -112,6 +112,7 @@
ZAT2_CFG_ZCUSTMMCC,
ZAT2_CFG_ZCAUSE,
ZAT2_CFG_ZVREG,
+ ZAT2_CFG_ZPOWSTAT,
ZAT2_CFG_END,
/*-----------MMÄ£¿é-------------*/
@@ -157,6 +158,7 @@
ZAT2_MM_ZSRVING,
ZAT2_MM_ZPSSTAT,
ZAT2_MM_ZIMSSTATE,
+ ZAT2_MM_ZIMSAIRREL,
ZAT2_MM_CIREP,
ZAT2_MM_CNEM,
ZAT2_MM_CEN,
diff --git a/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h b/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
index 96b21ad..4791734 100755
--- a/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
+++ b/cp/ps/modem/ps/src/nas/ati/inc/zat_fnc.h
@@ -1287,6 +1287,8 @@
T_ZAt_ParseCmd2MsgRslt zAt_PsDecZcustmMccSetReq(T_ZAt_DecCmdInfo *pDecCmdInfo);
T_ZAt_ParseCmd2MsgRslt zAt_PsDecZcustmMccQryReq(T_ZAt_DecCmdInfo *pDecCmdInfo);
T_ZAt_ParseCmd2MsgRslt zAt_PsDecZvregSetReq(T_ZAt_DecCmdInfo * pDecCmdInfo);
+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpowstatSet(T_ZAt_DecCmdInfo * pDecCmdInfo);
+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpowstatQry(T_ZAt_DecCmdInfo * pDecCmdInfo);
#ifdef DSDS_VSIM
T_ZAt_ParseCmd2MsgRslt zAt_PsDecZcardSwitchReq(T_ZAt_DecCmdInfo *pDecCmdInfo);
UINT16 zAt_PsEncCardSwitchReqCnf(T_ZAt_EncCmdInfo * pEncCmdInfo);
diff --git a/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h b/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
index 3547aa4..c7fc40d 100755
--- a/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
+++ b/cp/ps/modem/ps/src/nas/ati/inc/zati_com.h
@@ -565,6 +565,11 @@
#define Z_ATI_ECALL_MAXT7_TIME (BYTE)200
#define Z_ATI_ECALL_MAXT9_TIME (WORD)36000
+/*********************ZPOWSTAT************************/
+#define Z_ATI_SOFTPOWER_DIABLE (BYTE)0
+#define Z_ATI_SOFTPOWER_SLEEP (BYTE)1
+#define Z_ATI_SOFTPOWER_WAKEUP (BYTE)2
+
#ifdef DSDS_VSIM
/**********************´ý»ú²à״̬***************************/
#define Z_ATI_CARD_DEACT (BYTE)0
@@ -1435,6 +1440,7 @@
VOID zAti_Cereg0InitGlobalVar(BYTE bInstance);
VOID zAti_Randomize(VOID);
BYTE zAti_MsgFromATI(DWORD dwMsgId);
+VOID zAti_DisablePowerStatus(VOID);
VOID zAti_WordtoBytes(BYTE* bDestBytes,WORD wSrcWord);
VOID zAti_DWordtoBytes(BYTE* bDestBytes,DWORD dwSrcWord);
@@ -1514,6 +1520,8 @@
#ifdef DSDS_VSIM
DWORD zAti_CardSwitchReq(VOID* pBuff);
#endif
+DWORD zAti_ImsAirRelReq(VOID* pBuff);
+DWORD zAti_SoftPowerReq(VOID* pBuff);
DWORD zAti_Cbs_DataInd(VOID* pBuff, DWORD * pdwChangedMsgId, T_ZAti_ChannelInfo *pChnelNode);
DWORD zAti_SmMtCgevInd(VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo *pChnelNode);
//DWORD zAti_SmMtActivateInd(VOID* pBuff, DWORD *pdwChangedMsgId, T_ZAti_ChannelInfo *pChnelNode);
diff --git a/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h b/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
index fefb59b..029479f 100755
--- a/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
+++ b/cp/ps/modem/ps/src/nas/ati/inc/zati_int.h
@@ -2031,6 +2031,13 @@
BYTE bPadding;
}T_zApMmia_CfunQuery_Cnf;
+typedef struct {
+ BYTE bSrcIndex;
+ BYTE bDesIndex;
+ BYTE bMode;
+ BYTE bPadding;
+}T_zApMmia_PowerStat_Req;
+
/****************************************************************************
ÔÓï:Z_APMMIA_CplsSetReq_Ev(ATI->MMIA),Z_APMMIA_CplsQueryCnf_Ev(MMIA->ATI)
¹¦ÄÜ:Ñ¡Ôñpreferred plmn selector
diff --git a/cp/ps/modem/ps/src/nas/ati/inc/zati_typ.h b/cp/ps/modem/ps/src/nas/ati/inc/zati_typ.h
old mode 100644
new mode 100755
index 670f753..f229e11
--- a/cp/ps/modem/ps/src/nas/ati/inc/zati_typ.h
+++ b/cp/ps/modem/ps/src/nas/ati/inc/zati_typ.h
@@ -195,18 +195,20 @@
#define ATI_DISTRIBUTE_FUNC_ZIMSDATDEL_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_ZTPMR_REQ_EV + 1)
#ifdef DSDS_VSIM
#define ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_ZIMSDATDEL_REQ_EV + 1)
-#define ATI_DISTRIBUTE_FUNC_EVENT_END (BYTE)(ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV)
+#define ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV + 1)
#else
-#define ATI_DISTRIBUTE_FUNC_EVENT_END (BYTE)(ATI_DISTRIBUTE_FUNC_ZIMSDATDEL_REQ_EV)
+#define ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_ZIMSDATDEL_REQ_EV + 1)
#endif
#else
#ifdef DSDS_VSIM
#define ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_ZTPMR_REQ_EV + 1)
-#define ATI_DISTRIBUTE_FUNC_EVENT_END (BYTE)(ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV)
+#define ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV + 1)
#else
-#define ATI_DISTRIBUTE_FUNC_EVENT_END (BYTE)(ATI_DISTRIBUTE_FUNC_ZTPMR_REQ_EV)
+#define ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_ZTPMR_REQ_EV + 1)
#endif
#endif
+#define ATI_DISTRIBUTE_FUNC_SOFTPOWER_REQ_EV (BYTE)(ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV + 1)
+#define ATI_DISTRIBUTE_FUNC_EVENT_END (BYTE)(ATI_DISTRIBUTE_FUNC_SOFTPOWER_REQ_EV)
#define ATI_ATMEM_EVENT_BASE (BYTE) (ATI_DISTRIBUTE_FUNC_EVENT_END+1)
#define ATI_ATMEM_ZACL_SET_REQ_EV (BYTE) (ATI_ATMEM_EVENT_BASE+0)
diff --git a/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c b/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
index 0b9ebf3..fcd10bf 100755
--- a/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
+++ b/cp/ps/modem/ps/src/nas/ati/src/zat_fnc.c
@@ -25771,6 +25771,40 @@
return zAt_GetParseRslt(ZAT2_CMD_REPLY_DIRECT);
}
+
+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpowstatSet(T_ZAt_DecCmdInfo * pDecCmdInfo)
+{
+ CHAR* pDecCmdStr = pDecCmdInfo->strParam; /* ¼Ç¼²ÎÊý×ֶεÄÓÎ×ßÖ¸Õë */
+ CHAR strSubBuf[ZAT2_SUB_PARAM_MAX_LEN] = {0}; /* ´æ·ÅÁÙʱ½ØÈ¡µÄ×Ö·û´® */
+ T_ZAt_ParseCmd2MsgRslt prsCmd2Msg = {0};
+ T_zApMmia_PowerStat_Req tPowStatus = {0};
+
+ zAt_PsDecParamInit(&prsCmd2Msg, sizeof(T_zApMmia_PowerStat_Req));
+
+ /*+ZPOWSTAT=<n>*/
+ if(!zAt_PsDecNextParamDecimalNumByteNeed(&prsCmd2Msg, strSubBuf, &pDecCmdStr, &tPowStatus.bMode, NULL)
+ || (tPowStatus.bMode > Z_ATI_SOFTPOWER_WAKEUP))
+ {
+ return zAt_GetParseRslt2(&prsCmd2Msg,ZAT2_CMD_PARAM_ERR);
+ }
+
+ return zAt_PsDecFinishParse(&prsCmd2Msg, pDecCmdStr, &tPowStatus, sizeof(T_zApMmia_PowerStat_Req), TRUE);
+}
+
+T_ZAt_ParseCmd2MsgRslt zAt_PsDecZpowstatQry(T_ZAt_DecCmdInfo * pDecCmdInfo)
+{
+ T_ZAt_ParseCmd2MsgRslt prsCmd2Msg = {0};
+ T_zAti_NV_RrcStatus tRrcStat = {0};
+ CHAR * pStrWalk = g_zAt_EncBuf;
+
+ /*¶ÁÈ¡NV*/
+ zDev_NV_AtiReadItem(Z_ATI_NV_RrcStatus, (PBYTE)&tRrcStat);
+
+ sprintf((char *)pStrWalk ,"%s+ZPOWSTAT: %d%s%s", g_zAt_CRLF, tRrcStat.bSoftPowStat, g_zAt_CRLF, g_zAt_OK);
+
+ prsCmd2Msg.decRslt2nd = ZAT2_CMD_REPLY_DIRECT;
+ return prsCmd2Msg;
+}
/**************************************************************************
* º¯ÊýÃû³Æ£º zAt_PsDecZtpmrReq
* ¹¦ÄÜÃèÊö£º ¸ù¾ÝµÚ1²½½âÎö½á¹û£¬ÌîдÏûÏ¢¶ÔÓ¦µÄ½á¹¹Ìå
diff --git a/cp/ps/modem/ps/src/nas/ati/src/zat_var.c b/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
index 759cb8a..3ab794e 100755
--- a/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
+++ b/cp/ps/modem/ps/src/nas/ati/src/zat_var.c
@@ -99,6 +99,7 @@
{ "+ZMOBILE", ZAT2_CFG_ZMOBILE, "" },
{ "+ZUECAPASET", ZAT2_CFG_ZUECAPASET, "" },
{ "+ZULRTIND", ZAT2_CFG_ZULRTIND, "" },
+ { "+ZPOWSTAT", ZAT2_CFG_ZPOWSTAT, "+ZPOWSTAT: (0-2)" },
/********************************* MMÄ£¿é ************************************/
{ "+CREG", ZAT2_MM_CREG, "+CREG: (0-2)" },
@@ -469,6 +470,7 @@
{ "+ZGACT", ZAT2_LTE_ZGACT, "" },
{ "+ZCONSTAT", ZAT2_LTE_ZCONSTAT, "" },
{ "+ZIMSSTATE", ZAT2_MM_ZIMSSTATE, "" },
+ { "+ZIMSAIRREL", ZAT2_MM_ZIMSAIRREL, "" },
{ "+CIREP", ZAT2_MM_CIREP, "+CIREP: (0,1)" },
{ "+CNEM", ZAT2_MM_CNEM, "" },
{ "+CEN", ZAT2_MM_CEN, "+CEN: (0,1)" },
@@ -711,6 +713,9 @@
/**********************************+ZCAUSE***********************/
{ ZAT2_CFG_ZCAUSE, ZAT2_CO_SET_REQ, 0, zAt_PsDecZcauseSetReq },
{ ZAT2_CFG_ZCAUSE, ZAT2_CO_QUERY_REQ, 0, zAt_PsDecZcauseQryReq },
+ /***********************************+ZPOWSTAT*************************************/
+ { ZAT2_CFG_ZPOWSTAT, ZAT2_CO_SET_REQ, ATI_DISTRIBUTE_FUNC_SOFTPOWER_REQ_EV, zAt_PsDecZpowstatSet },
+ { ZAT2_CFG_ZPOWSTAT, ZAT2_CO_QUERY_REQ, 0, zAt_PsDecZpowstatQry },
/***********************************************************************************************
MMÄ£¿é
***********************************************************************************************/
@@ -1576,6 +1581,9 @@
{ZAT2_MM_ZIMSSTATE, ZAT2_CO_SET_REQ, MMIA_UMM_IMS_REGISTER_STATES_EV, zAt_PsDecZimsstateSetReq},
{ZAT2_MM_ZIMSSTATE, ZAT2_CO_QUERY_REQ, 0, zAt_PsDecZimsstateQueryReq},
+ /********************************************+ZIMSAIRREL**********************************/
+ {ZAT2_MM_ZIMSAIRREL, ZAT2_CO_SET_REQ, ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV, zAt_PsDecCommonReq},
+
/********************************************+CIREP**************************/
{ZAT2_MM_CIREP, ZAT2_CO_SET_REQ, 0, zAt_PsDecCirepSetReq},
{ZAT2_MM_CIREP, ZAT2_CO_QUERY_REQ, 0, zAt_PsDecCirepQueryReq},
diff --git a/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c b/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
index d0b3f6e..89a4676 100755
--- a/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
+++ b/cp/ps/modem/ps/src/nas/ati/src/zati_distribute_fnc.c
@@ -101,6 +101,8 @@
#ifdef DSDS_VSIM
{ATI_DISTRIBUTE_FUNC_CARDSWITCH_REQ_EV, zAti_CardSwitchReq},
#endif
+ {ATI_DISTRIBUTE_FUNC_IMSAIRREL_REQ_EV, zAti_ImsAirRelReq},
+ {ATI_DISTRIBUTE_FUNC_SOFTPOWER_REQ_EV, zAti_SoftPowerReq},
// Stm º¯Êý
{EV_ZATI2_CpbrExeReq_Ev,zAti_ProcCpbr},
@@ -4900,6 +4902,7 @@
}
zAti_RetUbCardPlmnInfo();
zAti_MiniFunModeInitGlobalVarByInstNo(g_zAti_CurInstance);
+ zAti_DisablePowerStatus();
g_zAti_atDataEx[g_zAti_CurInstance].bCcoCount = bCcoCount;
g_zAti_atDataEx[g_zAti_CurInstance].bTraceCellInfSet = bTraceCellInfSet;
@@ -8352,6 +8355,47 @@
return Z_APMMIA_NOERROR_ERR;
}
#endif
+
+DWORD zAti_ImsAirRelReq(VOID* pBuff)
+{
+ zAti_MsgSend(MMIA_UMM_IMSAIRREL_REQ_EV, ZOSS_NULL, 0, Z_ATI_TASKID_UMM);
+
+ sprintf((char *)g_zAt_EncBuf, "%s", g_zAt_OK);
+ return Z_APMMIA_NOERROR_ERR;
+}
+
+DWORD zAti_SoftPowerReq(VOID* pBuff)
+{
+ BYTE IsSend = Z_INVALID;
+ T_zApMmia_PowerStat_Req *ptStatus = (T_zApMmia_PowerStat_Req*)pBuff;
+ T_zAti_NV_RrcStatus tNvStatus = {0};
+ T_zAti_NV_RrcStatus tTempStatus = {0};
+
+ zDev_NV_AtiReadItem(Z_ATI_NV_RrcStatus, (PBYTE)&tNvStatus);
+
+ zOss_Memcpy(&tTempStatus, &tNvStatus, sizeof(T_zAti_NV_RrcStatus));
+
+ tNvStatus.bSoftPowStat = ptStatus->bMode;
+
+ if(tNvStatus.bSoftPowStat != tTempStatus.bSoftPowStat)
+ {
+ zDev_NV_AtiWriteItem(Z_ATI_NV_RrcStatus, (PBYTE)&tNvStatus);
+
+ if(tNvStatus.bSoftPowStat == Z_ATI_SOFTPOWER_SLEEP || tTempStatus.bSoftPowStat == Z_ATI_SOFTPOWER_SLEEP)
+ {
+ IsSend = Z_VALID;
+ }
+ }
+
+ if(IsSend == Z_VALID)
+ {
+ zAti_MsgSend(MMIA_UMM_SOFTPOWER_STATUS_IND_EV, ZOSS_NULL, 0, Z_ATI_TASKID_UMM);
+ }
+
+ sprintf((char *)g_zAt_EncBuf, "%s", g_zAt_OK);
+ return Z_APMMIA_NOERROR_ERR;
+}
+
DWORD zAti_SmsTpmrReq(VOID* pBuff)
{
T_zApMmia_TpmrSet_Req *ptTpmrReq = (T_zApMmia_TpmrSet_Req*)pBuff;
diff --git a/cp/ps/modem/ps/src/nas/ati/src/zati_main.c b/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
index 32f9fe7..aafa90a 100755
--- a/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
+++ b/cp/ps/modem/ps/src/nas/ati/src/zati_main.c
@@ -714,6 +714,23 @@
#endif
}
+VOID zAti_DisablePowerStatus(VOID)
+{
+ T_zAti_NV_RrcStatus tNvStatus = {0};
+ T_zAti_NV_RrcStatus tTempStatus = {0};
+
+ zDev_NV_AtiReadItem(Z_ATI_NV_RrcStatus, (PBYTE)&tNvStatus);
+
+ zOss_Memcpy(&tTempStatus, &tNvStatus, sizeof(T_zAti_NV_RrcStatus));
+
+ tNvStatus.bSoftPowStat = Z_ATI_SOFTPOWER_DIABLE;
+
+ if(tNvStatus.bSoftPowStat != tTempStatus.bSoftPowStat)
+ {
+ zDev_NV_AtiWriteItem(Z_ATI_NV_RrcStatus, (PBYTE)&tNvStatus);
+ }
+}
+
/* ==================================================================
º¯ÊýÃû³Æ: zAti_Randomize
º¯Êý¹¦ÄÜ: ²úÉúËæ»úÊýÖÖ×Ó
diff --git a/pub/include/ps_phy/atipsevent.h b/pub/include/ps_phy/atipsevent.h
index 7ac2437..35b9d4e 100755
--- a/pub/include/ps_phy/atipsevent.h
+++ b/pub/include/ps_phy/atipsevent.h
@@ -948,6 +948,8 @@
#define MMIA_UMM_ECALLONLY_QUERY_REQ_EV (DWORD)(MMIA_UMM_EVENT_BASE + 33)
#define MMIA_UMM_FREQ_SCAN_REQ_EV (DWORD)(MMIA_UMM_EVENT_BASE + 34)
#define MMIA_UMM_FAST_FREQ_SCAN_REQ_EV (DWORD)(MMIA_UMM_EVENT_BASE + 35)
+#define MMIA_UMM_IMSAIRREL_REQ_EV (DWORD)(MMIA_UMM_EVENT_BASE + 36)
+#define MMIA_UMM_SOFTPOWER_STATUS_IND_EV (DWORD)(MMIA_UMM_EVENT_BASE + 37)
#define MMIA_UMM_PLMN_INFO_IND_EV (DWORD)(MMIA_UMM_RSP_EVENT + 0)
diff --git a/pub/include/ps_phy/psevent.h b/pub/include/ps_phy/psevent.h
index 62cace6..a615c21 100755
--- a/pub/include/ps_phy/psevent.h
+++ b/pub/include/ps_phy/psevent.h
@@ -3124,6 +3124,7 @@
#define UMM_TSEARCHECALLCELL_EXPIRY_EV (DWORD)(UMM_TIMER_EVENT_BASE + 31)
#define UMM_TECALL_INACT_EXPIRY_EV (DWORD)(UMM_TIMER_EVENT_BASE + 32)
#define UMM_TTESTECALL_INACT_EXPIRY_EV (DWORD)(UMM_TIMER_EVENT_BASE + 33)
+#define UMM_T_IMSREL_EXPIRY_EV (DWORD)(UMM_TIMER_EVENT_BASE + 34)
/* ========================================================================
CC¶¨Ê±Æ÷ÏûÏ¢ºÅ¶¨Òå
======================================================================== */