Merge "[Bugfix][T106BUG-416]fix sim error num"
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
index 48a44e2..4c6dd9f 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyGgeAmtUser_nvrwo_0x00038400.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
index 1d21a9a..ae19b25 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyLteaAmtUser_nvrwo_0x0003C800.bin
Binary files differ
diff --git a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
index 1c458bf..854310c 100755
--- a/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
+++ b/allbins/zx297520v3/prj_vehicle/nv_dc_ref/phyWcdmaAmtUser_nvrwo_0x0003A000.bin
Binary files differ
diff --git a/ap/app/zte_comm/at_ctl/src/atconfig/ps_sms.c b/ap/app/zte_comm/at_ctl/src/atconfig/ps_sms.c
index 55bd76b..f71c254 100755
--- a/ap/app/zte_comm/at_ctl/src/atconfig/ps_sms.c
+++ b/ap/app/zte_comm/at_ctl/src/atconfig/ps_sms.c
@@ -700,14 +700,19 @@
}
#endif
-/*Öն˲àÖ§³Ö¶ÌÐÅʱ²ÅÐèÒª½âÎö£¬Öն˲àÖ»Ö§³Öpdu¸ñʽ¶ÌÐÅ*/
+
+extern int g_modem_model;//jb.qi add for it will be awakened by sms after setting up the whiltelist on 20231218
+extern int g_support_sms;//jb.qi add for it will be awakened by sms after setting up the whiltelist on 20231218
int atSms_RecvPdu( char *at_str, struct at_context *context)
{
- char needModemInit[10] = {0};
+ /*jb.qi add for it will be awakened by sms after setting up the whiltelist on 20231218 start*/
+ /*char needModemInit[10] = {0};
char needSmsInit[10] = {0};
sc_cfg_get(NV_NEED_SUPPORT_SMS,needSmsInit,sizeof(needSmsInit));
sc_cfg_get("need_init_modem",needModemInit,sizeof(needModemInit));
- if(0 == strcmp(needModemInit, "yes") && 0 != strcmp(needSmsInit, "no"))
+ if(0 == strcmp(needModemInit, "yes") && 0 != strcmp(needSmsInit, "no"))*/
+ if((g_modem_model == 1) && (g_support_sms == 1))
+ /*jb.qi add for it will be awakened by sms after setting up the whiltelist on 20231218 end*/
{
//at_print(AT_DEBUG,"atSms_RecvPdu atstr:%s, bNewCmt:%d, bNewCds:%d!\n", at_str, bNewCmt, bNewCds);
if(context != NULL)
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
index fdeb548..9fa09c2 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
@@ -13,6 +13,31 @@
#define MAX_LOCK_NUM 128
+static void qser_lpm_handler(qser_lpm_edge_t edge_state)
+{
+ printf("this is qser_lpm_handler\n");
+
+}
+
+static void printUsage(void)
+{
+ printf("-i --qser_lpm_init\n");
+ printf("-d --qser_lpm_deinit\n");
+ printf("-q --quit\n");
+ printf("-e --qser_autosuspend_enable\n");
+ printf("-cl [wakelock name] --qser_wakelock_create \n");
+ printf("-al [wakelock num] --qser_wakelock_lock \n");
+ printf("-rl [wakelock num] --qser_wakelock_unlock \n");
+ printf("-dl [wakelock num] --qser_wakelock_destroy\n");
+ printf("-ccl --check created locks\n");
+ printf("-cll --check lockup locks\n");
+ printf("-wla [id] --qser_whitelist_add\n");
+ printf("-wld [id] --qser_whitelist_del\n");
+ printf("-wlg --qser_whitelist_get\n");
+ printf("-wlc --qser_whitelist_clear\n");
+ printf("Please input an cmd:");
+}
+
int check_lock(void)
{
@@ -50,200 +75,212 @@
}
+
+void delete_enter(char *data)
+{
+ char *find = strchr(data, '\n');
+ if(find)
+ *find = '\0';
+ return ;
+}
+
int main(int argc,char** argv)
{
int num;
int ret;
int len;
+ char cmd[16];
+ char *cmd2;
+ char *cmd1;
+ qser_pm_cfg_t *qser_lpm_cfg = NULL;
+ qser_lpm_cfg = (qser_pm_cfg_t *)malloc(sizeof(qser_pm_cfg_t));
+ qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
+ qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
+ while(1)
+ {
+ printUsage();
+ memset(cmd,0,sizeof(cmd));
+ fgets(cmd, sizeof(cmd), stdin);
+ cmd1 = strtok(cmd, " ");
+ cmd2 = strtok(NULL, " ");
+ delete_enter(cmd1);
+ printf("cmd1:%s\n", cmd1);
+ if(strcmp(cmd1,"-i") == 0)
+ {
+ ret = qser_lpm_init( qser_lpm_handler, qser_lpm_cfg);
+ if(ret != 0)
+ {
+ printf("lpm init fail\n");
+ break;
+ }
+ else
+ {
+ printf("lpm init success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-e") == 0)
+ {
+ char num='1';
+ ret = qser_autosuspend_enable(num);
+ if(ret != 0)
+ {
+ printf("qser_autosuspend_enable fail\n");
+ }
+ else
+ {
+ printf("qser_autosuspend_enable success\n");
+ }
+ }
+ else if(strcmp(cmd1,"-cl") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("name is null\n");
+ }
+ len = strlen(cmd2);
+ printf("len =%d\n", len);
+ ret = qser_wakelock_create(cmd2, len);
+ if(ret < 0)
+ {
+ printf("wakelock create fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock create success\n");
+ printf("fd=%d\n", ret);
+ }
+ }
+ else if (strcmp(cmd1,"-al") == 0)
+ {
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_lock(num);
+ if(ret != 0)
+ {
+ printf("wakelock lock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock lock success\n");
+ }
+ }
- if(argc < 2)
- {
- printf("wrong input format, please -h \n");
- return -1;
- }
- if(strcmp(argv[1],"-h") == 0)
- {
- printf(" -h --help\n");
- printf(" -i --qseq_lpm_init\n");
- printf(" -d --qser_lpm_deinit\n");
- printf(" -e --qser_autosuspend_enable\n");
- printf(" -cl [wakelock name] --qser_wakelock_create \n");
- printf(" -al [wakelock num] --qser_wakelock_lock \n");
- printf(" -rl [wakelock num] --qser_wakelock_unlock \n");
- printf(" -dl [wakelock num] --qser_wakelock_destroy\n");
- printf(" -ccl --check created locks\n");
- printf(" -cll --check lockup locks\n");
- printf(" -wla [id] --qser_whitelist_add\n");
- printf(" -wld [id] --qser_whitelist_del\n");
- printf(" -wlg --qser_whitelist_get\n");
- printf(" -wlc --qser_whitelist_clear\n");
- }
- else if(strcmp(argv[1],"-d") == 0)
- {
- ret = qser_lpm_deinit();
- if(ret != 0)
+ else if (strcmp(cmd1,"-rl") == 0)
{
- printf("lpm deinit fail\n");
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_unlock(num);
+ if(ret != 0)
+ {
+ printf("wakelock unlock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock unlock success\n");
+ }
}
- else
+ else if(strcmp(cmd1,"-dl") == 0)
{
- printf("lpm deinit success\n");
+ if(cmd2 == NULL)
+ {
+ printf("fd is null\n");
+ }
+ num = atoi(cmd2);
+ ret = qser_wakelock_destroy(num);
+ if(ret != 0)
+ {
+ printf("wakelock destroy fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("wakelock destroy success\n");
+ }
}
- }
- else if(strcmp(argv[1],"-e") == 0)
- {
- char num='1';
- ret = qser_autosuspend_enable(num);
- if(ret != 0)
+ else if(strcmp(cmd1,"-ccl") == 0)
{
- printf("qser_autosuspend_enable fail\n");
+ int ret;
+ ret = check_lock();
+ if(ret != 0)
+ {
+ printf("check lock fail\n");
+ printf("ret=%d\n", ret);
+ }
+ else
+ {
+ printf("check lock success\n");
+ }
}
- else
+ else if(strcmp(cmd1,"-cll") == 0)
{
- printf("qser_autosuspend_enable success\n");
+ int ret;
+ ret = system("cat /sys/power/wake_lock");
+ if(ret != 0)
+ {
+ printf("check created lock fail\n");
+ }
}
- }
- else if(strcmp(argv[1],"-cl") == 0)
- {
- if(argv[2] == NULL)
+ else if(strcmp(cmd1,"-wla") == 0)
{
- printf("name is null\n");
- return -1;
+ num = atoi(cmd2);
+ ret = qser_whitelist_add(num);
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_add ret %d.\n", ret);
+ }
+
}
- len = strlen(argv[2]);
- printf("len =%d\n", len);
- ret = qser_wakelock_create(argv[2], len);
- if(ret < 0)
+ else if(strcmp(cmd1,"-wld") == 0)
{
- printf("wakelock create fail\n");
- printf("ret=%d\n", ret);
+ num = atoi(cmd2);
+ ret = qser_whitelist_del(num);
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_del ret %d.\n", ret);
+ }
}
- else
+ else if(strcmp(cmd1,"-wlg") == 0)
{
- printf("wakelock create success\n");
- printf("fd=%d\n", ret);
+ char* whitelist;
+ qser_whitelist_get(whitelist);
+ printf("mnet_whitelist_get :%s\n",whitelist);
}
- }
- else if (strcmp(argv[1],"-al") == 0)
- {
- if(argv[2] == NULL)
+ else if(strcmp(cmd1,"-wlc") == 0)
{
- printf("fd is null\n");
- return -1;
+ ret = qser_whitelist_clear();
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_clear ret %d.\n", ret);
+ }
}
- num = atoi(argv[2]);
- ret = qser_wakelock_lock(num);
- if(ret != 0)
+ else if(strcmp(cmd1, "-d") == 0)
{
- printf("wakelock lock fail\n");
- printf("ret=%d\n", ret);
+ ret = qser_lpm_deinit();
+ if(ret != 0)
+ {
+ printf("lpm deinit fail\n");
+ }
+ else
+ {
+ printf("lpm deinit success\n");
+ }
}
- else
+ else if(strcmp(cmd1,"-q") == 0)
{
- printf("wakelock lock success\n");
+ break;
}
}
- else if (strcmp(argv[1],"-rl") == 0)
- {
- if(argv[2] == NULL)
- {
- printf("fd is null\n");
- return -1;
- }
- num = atoi(argv[2]);
- ret = qser_wakelock_unlock(num);
- if(ret != 0)
- {
- printf("wakelock unlock fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock unlock success\n");
- }
- }
- else if(strcmp(argv[1],"-dl") == 0)
- {
- if(argv[2] == NULL)
- {
- printf("fd is null\n");
- return -1;
- }
- num = atoi(argv[2]);
- ret = qser_wakelock_destroy(num);
- if(ret != 0)
- {
- printf("wakelock destroy fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("wakelock destroy success\n");
- }
- }
- else if(strcmp(argv[1],"-ccl") == 0)
- {
- int ret;
- ret = check_lock();
- if(ret != 0)
- {
- printf("check lock fail\n");
- printf("ret=%d\n", ret);
- }
- else
- {
- printf("check lock success\n");
- }
- }
- else if(strcmp(argv[1],"-cll") == 0)
- {
- int ret;
- ret = system("cat /sys/power/wake_lock");
- if(ret != 0)
- {
- printf("check created lock fail\n");
- }
- }
- else if(strcmp(argv[1],"-wla") == 0)
- {
- num = atoi(argv[2]);
- ret = qser_whitelist_add(num);
- if(ret != 0)
- {
- printf("mnet_whitelist_add ret %d.\n", ret);
- }
-
- }
- else if(strcmp(argv[1],"-wld") == 0)
- {
- num = atoi(argv[2]);
- ret = qser_whitelist_del(num);
- if(ret != 0)
- {
- printf("mnet_whitelist_del ret %d.\n", ret);
- }
- }
- else if(strcmp(argv[1],"-wlg") == 0)
- {
- char* whitelist;
- qser_whitelist_get(whitelist);
- printf("mnet_whitelist_get :%s\n",whitelist);
- }
- else if(strcmp(argv[1],"-wlc") == 0)
- {
- ret = qser_whitelist_clear();
- if(ret != 0)
- {
- printf("mnet_whitelist_clear ret %d.\n", ret);
- }
- }
- else
- {
- printf("wrong input format, please -h \n");
- return -1;
- }
return 0;
}
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
index 75da1e1..2e0f71f 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/poweralarm-demo/files/poweralarm-demo.cpp
@@ -6,12 +6,16 @@
#include <dlfcn.h>
#include <stdint.h>
+
+#define INIT_SUCCESS 0
+
typedef struct
{
int cmdIdx;
char *funcName;
} st_api_test_case;
-
+
+
//for server test
st_api_test_case at_api_testcases[] =
{
@@ -26,7 +30,10 @@
{-1, NULL}
};
-int src_id = -1;
+ int init_flag = -1;
+ int src_id = -1;
+ void *dlHandle_poweralarm = NULL;
+
typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);
int (*lynq_rtc_service_init)(void);
@@ -37,7 +44,6 @@
int (*lynq_set_poweralarm)(unsigned long time_sec,int src_id);
int (*lynq_set_wakealarm)(unsigned long time_sec,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);
-void *dlHandle_poweralarm = NULL;
void print_help(void)
@@ -125,6 +131,7 @@
print_help();
while(1)
{
+
printf("\nplease input cmd index(-1 exit): ");
scanf("%d", &cmdIdx);
if(cmdIdx == -1)
@@ -139,92 +146,145 @@
case 1:
{
src_id = lynq_rtc_service_init();
+ if(src_id <= 0)
+ {
+
+ printf("RTC service init failed ");
+ return -1;
+ }
+ else
+ {
+ init_flag = INIT_SUCCESS;
+ }
+
break;
}
case 2:
{
- int ret = 0;
- char tmp_time[32] = {0};
- printf("Set poweralarm time,e.g: 60 (seconds)\n");
- scanf("%s",tmp_time);
- ret = poweralarm(tmp_time,src_id);
- if(ret != 0)
+
+ if(init_flag != INIT_SUCCESS)
{
- printf("set poweralarm failed\n");
- return -1;
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ char tmp_time[32] = {0};
+ printf("Set poweralarm time,e.g: 60 (seconds)\n");
+ scanf("%s",tmp_time);
+ ret = poweralarm(tmp_time,src_id);
+ if(ret != 0)
+ {
+ printf("set poweralarm failed\n");
+ return -1;
+ }
}
break;
}
case 3:
{
- int ret = 0;
- char tmp_time[32]={0};
- int rtc_id = 0;
- printf("Set wakealarm time ,e.g: 60 1 (seconds)\n");
- scanf("%s%d",tmp_time,&rtc_id);
-
- ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
- if(ret != 0)
+ if(init_flag != INIT_SUCCESS)
{
- printf("set wakealarm failed\n");
- return -1;
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ char tmp_time[32]={0};
+ int rtc_id = 0;
+ printf("Set wakealarm time ,e.g: 60 1 (seconds)\n");
+ scanf("%s%d",tmp_time,&rtc_id);
+
+ ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);
+ if(ret != 0)
+ {
+ printf("set wakealarm failed\n");
+ return -1;
+ }
}
break;
}
case 4:
{
- int ret = 0;
- int rtc_id = 0;
- printf("Please input you want cancel rtc timer rtc id\n");
- scanf("%d",&rtc_id);
- ret = cancel_wakealarm(src_id,rtc_id);
- if(ret != 0)
+ if(init_flag != INIT_SUCCESS)
{
- printf("Cancel_wakealarm failed!!!");
- return -1;
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ int rtc_id = 0;
+ printf("Please input you want cancel rtc timer rtc id\n");
+ scanf("%d",&rtc_id);
+ ret = cancel_wakealarm(src_id,rtc_id);
+ if(ret != 0)
+ {
+ printf("Cancel_wakealarm failed!!!");
+ return -1;
+ }
}
break;
}
case 5:
{
- int ret = 0;
- unsigned long time_sec = 0;
- printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
- scanf("%lu",&time_sec);
- ret =lynq_set_poweralarm(time_sec,src_id);
- printf("ret is %d\n",ret);
- if(ret != 0)
- {
- printf("lynq_set_poweralarm failed\n");
- return -1;
- }
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = 0;
+ unsigned long time_sec = 0;
+ printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");
+ scanf("%lu",&time_sec);
+ ret =lynq_set_poweralarm(time_sec,src_id);
+ printf("ret is %d\n",ret);
+ if(ret != 0)
+ {
+ printf("lynq_set_poweralarm failed\n");
+ return -1;
+ }
+ }
break;
}
case 6:
- {
- int ret = 0;
- unsigned long time_sec = 0;
- int rtc_id;
- printf("Input time_sec you want wakealarm,e.g:60 1(seconds)\n");
- scanf("%lu%d",&time_sec,&rtc_id);
- ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
- if(ret != 0)
- {
- printf("lynq_set_wakealarm failed\n");
- return -1;
+ {
+ if(init_flag != INIT_SUCCESS)
+ {
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
}
+ else
+ {
+ int ret = 0;
+ unsigned long time_sec = 0;
+ int rtc_id;
+ printf("Input time_sec you want wakealarm,e.g:60 1(seconds)\n");
+ scanf("%lu%d",&time_sec,&rtc_id);
+ ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);
+ if(ret != 0)
+ {
+ printf("lynq_set_wakealarm failed\n");
+ return -1;
+ }
+ }
break;
}
case 7:
{
- int ret = -1;
- printf("rtc servce deinit !!!!!!!!!!!!");
- ret = lynq_rtc_service_deinit();
- if(ret != 0)
+ if(init_flag != INIT_SUCCESS)
{
- printf("lynq rtc service deinit failed \n");
- return -1;
-
+ printf("*****ERROR must init rtc service ,Please reselect *******\n ");
+ }
+ else
+ {
+ int ret = -1;
+ printf("rtc servce deinit !!!!!!!!!!!!");
+ ret = lynq_rtc_service_deinit();
+ if(ret != 0)
+ {
+ printf("lynq rtc service deinit failed \n");
+ return -1;
+ }
}
break;
}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
index 612d968..cc26db6 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
@@ -229,7 +229,7 @@
int greep = input[0] - '0';
ALOGD(res,"the greep:%d\n",greep);//The first digit represents grouping
- for (int i = 1; input[i] != '\0'; i++)
+ for (int i = 1; i < strlen(input); i++)
{
int num = 0;
for (; input[i] != ',' && input[i] != '\0'; i++)
@@ -422,6 +422,7 @@
if((valid_length = lynq_gpio_analysis(input, lynq_gpio_arr, lynq_gpio_total_arr, total_length)) < 0)
{
lynq_response_error(100);
+ all_gpio_uninit(total_length, lynq_gpio_total_arr);
return;
}
ALOGE("The Valid count:%d\n",valid_length);
@@ -451,6 +452,7 @@
{
ALOGE("gpio init or uninit fail\n");
lynq_response_error(100);
+ all_gpio_uninit(total_length, lynq_gpio_total_arr);
return;
}
ALOGD("finsh configure function\n");
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
index e82e2c0..5a88ef7 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
@@ -7,6 +7,7 @@
#include <errno.h>
#include <pthread.h>
#include<unistd.h>
+#include <cutils/uevent.h>
#include <lynq_autosuspend.h>
#include "lynq-qser-autosuspend.h"
@@ -25,6 +26,20 @@
#define USER_LOG_TAG "LYNQ_QSER_AUTOSUSPEND"
#define FILE_LOCK_TABLE "/tmp/.lock_table"
+#define UEVENT_MSG_LEN 128
+
+
+struct dtr_uevent {
+ const char *action;
+ const char *path;
+ const char *subsystem;
+ const char *usbevent;
+};
+
+static void parse_event(const char *msg, struct dtr_uevent *dtr_uevent);
+
+
+qser_lpm_Handler_t g_lpm_handler = NULL;
LOCK_TABLE lock_status;
@@ -32,6 +47,7 @@
int file_fd;
int first_run = 0;
+pthread_t thid;
int lock_table_init(void)
@@ -218,19 +234,84 @@
return ret;
}
+static void parse_event(const char *msg, struct dtr_uevent *dtr_uevent)
+{
+ dtr_uevent->action = "";
+ dtr_uevent->path = "";
+ dtr_uevent->subsystem = "";
+ dtr_uevent->usbevent = "";
+
+ while (*msg) {
+ if (!strncmp(msg, "ACTION=", 7))
+ {
+ msg += 7;
+ dtr_uevent->action = msg;
+ }
+ else if (!strncmp(msg, "DEVPATH=", 8))
+ {
+ msg += 8;
+ dtr_uevent->path = msg;
+ }
+ else if (!strncmp(msg, "SUBSYSTEM=", 10))
+ {
+ msg += 10;
+ dtr_uevent->subsystem = msg;
+ }
+ else if (!strncmp(msg, "USBEVENT=", 9)) {
+ msg += 9;
+ dtr_uevent->usbevent = msg;
+ }
+
+ while(*msg++);
+ }
+
+ LYINFLOG("event { '%s', '%s', '%s', '%s'}\n",
+ dtr_uevent->action, dtr_uevent->path, dtr_uevent->subsystem,dtr_uevent->usbevent);
+}
+
+
+
+void *check_dtr(void * arg)
+{
+ int device_fd;
+ qser_lpm_edge_t lpm_edge;
+ char msg[UEVENT_MSG_LEN+2];
+ struct dtr_uevent dtr_uevent;
+ int n;
+ int i;
+
+ device_fd = uevent_open_socket(4*UEVENT_MSG_LEN, true);
+ if(device_fd < 0)
+ {
+ LYERRLOG("uevent_open_socket fail\n");
+ return -1;
+ }
+ while(1)
+ {
+ n = uevent_kernel_multicast_recv(device_fd, msg, UEVENT_MSG_LEN);
+ msg[n] = '\0';
+ msg[n+1] = '\0';
+ parse_event(msg, &dtr_uevent);
+ if((!strcmp(dtr_uevent.subsystem, "xp2xp")) && (!strcmp(dtr_uevent.action, "online")))
+ {
+ g_lpm_handler(lpm_edge);
+ }
+ }
+
+ return 0;
+}
+
+
int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg)
{
int ret;
- ret = system("uci set lynq_uci.lynq_autosuspend.init='1'");
- system("uci commit");
+ int num;
+
+ g_lpm_handler = qser_lpm_handler;
+ ret = pthread_create(&thid,NULL,check_dtr,NULL);
if(ret != 0)
{
- LYINFLOG("uci set fail");
- }
- ret = system("./etc/init.d/lynq-autosuspend.sh restart");
- if(ret != 0)
- {
- LYINFLOG("restart service fail");
+ LYERRLOG("restart service fail");
}
return ret;
}
@@ -239,18 +320,17 @@
int qser_lpm_deinit(void)
{
int ret;
- system("uci set lynq_uci.lynq_autosuspend.init='0'");
- system("uci commit");
- if(ret != 0)
+ ret = pthread_cancel(thid);
+ if(!ret)
{
- LYINFLOG("uci set fail");
+ LYERRLOG("pthread cancel success, lpm deinit success\n");
}
- system("./etc/init.d/lynq-autosuspend.sh restarts");
- if(ret != 0)
+ else
{
- LYINFLOG("restart service fail");
+ LYERRLOG("pthread cancel fail, lpm deinit fail\n");
}
- return 0;
+ return ret;
+
}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
index 6d46661..569b224 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-uci/lynq_uci.config
@@ -32,5 +32,5 @@
option status '0'
config lynq_led_rw 'lynq_led'
- option lynq_statusled_on '1'
- option lynq_netled_on '1'
\ No newline at end of file
+ option lynq_statusled_on '0'
+ option lynq_netled_on '0'
\ No newline at end of file
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
index 7bc3ed0..650be94 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
@@ -1447,7 +1447,7 @@
prv->gpio_power[0] = of_get_gpio_flags(pdev->dev.of_node, 0, &flags);
ret = gpio_request(prv->gpio_power[0], "gmac_power"); /* gpio 83/124 */
- gpio_direction_output(prv->gpio_power[0], 1);
+ //gpio_direction_output(prv->gpio_power[0], 1);jb.qi add for gmac power off defaultly
mdelay(15);
#ifdef _USE_VEHICLE_DC_REF
prv->gpio_power[1] = of_get_gpio_flags(pdev->dev.of_node, 1, &flags);
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/soc/sc/power_4line/hal_xp2xp.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/soc/sc/power_4line/hal_xp2xp.c
index 5e14b7d..7d75efc 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/soc/sc/power_4line/hal_xp2xp.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/soc/sc/power_4line/hal_xp2xp.c
@@ -333,6 +333,8 @@
*
* Others:
********************************************************************************/
+
+/*jb.qi add for dtr uevent on 20231218 start*/
static int xp2xp_wkcp_thread(void *ptr)
{
int call_state = 0;
@@ -340,11 +342,7 @@
int ret = 0;
unsigned long flags;
struct hal_xp2xp_dev *xp2xp_dev = (struct hal_xp2xp_dev *)ptr;
-#if 0
- struct sched_param sch_param = { .sched_priority = 1 };
- sch_param.sched_priority = 40;
- sched_setscheduler(current, SCHED_FIFO, &sch_param);
-#endif
+
while(!kthread_should_stop()){
ret = down_interruptible(&xp2xp_dev->wk_sem);
@@ -358,43 +356,32 @@
}
}
- spin_lock_irqsave(&xp2xp_dev->wk_lock, flags);
- if(xp2xp_dev->wake_state){
+ spin_lock_irqsave(&xp2xp_dev->wk_lock, flags);
+ if(xp2xp_dev->wake_state){
spin_unlock_irqrestore(&xp2xp_dev->wk_lock, flags);
- //now wakeup
xp2xp_notify_up(WAKEUP_NOTIFY);
-
- xp2xp_dev->wake_cnt++;
-#ifdef CONFIG_KERNEL_CONTROL_WAKEUP
- xp2xp_wakeup_notifier_call_chain(WAKEUP_NOTIFY, &call_state);
- if(call_state == 0){//check device wakeup result
- xp2xp_SetSleepState(TRUE);
- }
-#endif
+ xp2xp_dev->wake_cnt++;
+#ifdef CONFIG_KERNEL_CONTROL_WAKEUP
+ xp2xp_wakeup_notifier_call_chain(WAKEUP_NOTIFY, &call_state);
+#endif
}else{
- //now sleep
spin_unlock_irqrestore(&xp2xp_dev->wk_lock, flags);
xp2xp_notify_up(SLEEP_NOTIFY);
xp2xp_dev->sleep_cnt++;
-#ifdef CONFIG_KERNEL_CONTROL_WAKEUP
- xp2xp_SetSleepState(FALSE);
+#ifdef CONFIG_KERNEL_CONTROL_WAKEUP
xp2xp_wakeup_notifier_call_chain(SLEEP_NOTIFY, &call_state);
- if(call_state){//check device sleep result
- //to do
- }
-#endif
+#endif
}
-
enable_irq(xp2xp_dev->eint_irq);
xp2xp_dev->xp2xp_irq_state = 1;
- //pm_relax(xp2xp_dev->dev);
-
+
}
return 0;
}
-
+/*jb.qi add for dtr uevent on 20231218 end*/
+
/*******************************************************************************
* Function: ApWakeCp int
* Description: ap2cp wake up int isr
@@ -407,7 +394,7 @@
*
* Others:
********************************************************************************/
-/*jb.qi add for dtr on 20231304 start*/
+/*jb.qi add for dtr uevent on 20231218 start*/
irqreturn_t xp2xp_wkcp_handler(int irq, void *priv)
{
unsigned long flags;
@@ -436,10 +423,12 @@
if(1 == gpio_value){
irq_type = IRQF_TRIGGER_LOW;
printk("gpio_value is 1 , release wakelock\n");
+ xp2xp_dev->wake_state = 0;
pm_relax(g_xp2xp.dev);
}else{
irq_type = IRQF_TRIGGER_HIGH;
printk("gpio_value is 0 , lock wakelock\n");
+ xp2xp_dev->wake_state = 1;
pm_stay_awake(g_xp2xp.dev);
}
@@ -450,7 +439,7 @@
up(&xp2xp_dev->wk_sem);
return IRQ_HANDLED;
}
-/*jb.qi add for dtr on 20231304 end*/
+/*jb.qi add for dtr uevent on 20231218 end*/
/*******************************************************************************
* Function:
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/nv-rpc-daemon/main.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/nv-rpc-daemon/main.c
index ed602a0..451abfd 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/nv-rpc-daemon/main.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/nv-rpc-daemon/main.c
@@ -68,7 +68,7 @@
*******************************************************************************/
static long g_pid;
static long g_ap_pid_backup;
-static int nv_debug_switch = false;
+static int nv_debug_switch = true;//jb.qi add for nv wakeup debug on 20231220
/*******************************************************************************
* ¾Ö²¿º¯ÊýʵÏÖ *
@@ -171,7 +171,7 @@
msgSnd.msgType = MSG_TYPE_NV;
msgSnd.pid = g_pid;
//printf("apnv_cap msgsnd to nvserver pid:%d\n", msgSnd.pid);
- if (strcmp(msgSnd.key, "zcat_mode"))
+ //if (strcmp(msgSnd.key, "zcat_mode")) jb.qi add for nv wakeup debug on 20231220
print_nv_info(&msgSnd);
retry1:
diff --git a/update_version.sh b/update_version.sh
index 37aea04..0882ff2 100755
--- a/update_version.sh
+++ b/update_version.sh
@@ -1,8 +1,8 @@
#!/bin/bash
#export LYNQ_VERSION="T106_lynq_version_ap_build_sh"
-LYNQ_AP_VERSION="T106CN-ZS03.V2.01.01.02P52U02.AP.09.07"
-LYNQ_CAP_INSIDE_VERSION="CAP.09.07"
-LYNQ_CAP_VERSION="CAP.09.07"
+LYNQ_AP_VERSION="T106CN-ZS03.V2.01.01.02P52U02.AP.09.10"
+LYNQ_CAP_INSIDE_VERSION="CAP.09.10"
+LYNQ_CAP_VERSION="CAP.09.10"
COMMIT_ID="$(git rev-parse HEAD)"
LYNQ_SW_INSIDE_VERSION="LYNQ_CONFIG_VERSION = \"${LYNQ_AP_VERSION}_${LYNQ_CAP_INSIDE_VERSION}\""