Merge "[BugFix][audio][API-1405] sos occasional call probability no sound problem" into GSW3.0-No-Connman
diff --git a/meta-sdk/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch b/meta-sdk/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
index d45f497..f2f06bb 100755
--- a/meta-sdk/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
+++ b/meta-sdk/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
@@ -1,71 +1,260 @@
--- busybox-1.29.3/sysklogd/syslogd.c 2018-07-02 19:23:06.000000000 +0800
+++ busybox-1.29.3/sysklogd/syslogdnew.c 2022-09-29 13:47:26.318538618 +0800
-@@ -165,6 +165,8 @@
+@@ -165,6 +165,7 @@
#include <sys/un.h>
#include <sys/uio.h>
+#include <dlfcn.h>
-+
#if ENABLE_FEATURE_REMOTE_LOG
#include <netinet/in.h>
-@@ -176,6 +178,10 @@
+@@ -175,8 +176,11 @@
+ #include <sys/sem.h>
#include <sys/shm.h>
#endif
-
+#define ENABLE_FEATURE_SYSLOGD_CFG 1
+#define ENABLE_FEATURE_ROTATE_LOGFILE 1
+
+-
+int (*lynq_get_value)(char *file, char *section, char *key, char *tmp);
+int (*lynq_set_value)(char *section, char *key, char *value);
-
#define DEBUG 0
-@@ -1102,6 +1113,13 @@
+ /* MARK code is not very useful, is bloat, and broken:
+@@ -210,6 +214,7 @@
+
+ typedef struct logFile_t {
+ const char *path;
++ FILE * fp;
+ int fd;
+ time_t last_log_time;
+ #if ENABLE_FEATURE_ROTATE_LOGFILE
+@@ -677,6 +682,79 @@
+ static void log_to_kmsg(int pri UNUSED_PARAM, const char *msg UNUSED_PARAM) {}
+ #endif /* FEATURE_KMSG_SYSLOG */
+
++int g_syslog_buffer_size=8*1024;
++char g_syslog_buffer[16*1024];
++
++int syslog_is_buffer_write()
++{
++ if(g_syslog_buffer_size>0 && g_syslog_buffer_size<= 16*1024)
++ {
++ return true;
++ }
++ else
++ {
++ return false;
++ }
++}
++
++void syslog_close_fp_fd(FILE * fp, int* fd)
++{
++ if(syslog_is_buffer_write() && (*fd) > 1)
++ {
++ fclose(fp);
++ }
++ else
++ {
++ close(*fd);
++ }
++ (*fd) = -1;
++}
++
++void syslog_get_fp_fd(const char * path, FILE** fp, int* fd)
++{
++ if(syslog_is_buffer_write())
++ {
++ *fp = fopen(path, "a+");
++ if(*fp!=NULL)
++ {
++ *fd=fileno(*fp);
++ if(setvbuf(*fp,g_syslog_buffer,_IOFBF,g_syslog_buffer_size)!=0)
++ {
++ fclose(*fp);
++ *fd=-1;
++ }
++ else
++ {
++ int flags = fcntl(*fd, F_GETFL, 0);
++ flags |= O_NONBLOCK;
++ fcntl(*fd, F_SETFL, flags);
++ }
++ }
++ else
++ {
++ *fd=-1;
++ }
++ }
++ else
++ {
++ *fd = open(path, O_WRONLY | O_CREAT
++ | O_NOCTTY | O_APPEND | O_NONBLOCK,
++ 0666);
++ }
++}
++
++int syslog_write(FILE* fp, int fd, char *msg, int len)
++{
++ if(syslog_is_buffer_write() && fd > 1)
++ {
++ return fwrite(msg,1,len,fp);
++ }
++ else
++ {
++ return full_write(fd, msg, len);
++ }
++}
++
+ /* Print a message to the log file. */
+ static void log_locally(time_t now, char *msg, logFile_t *log_file)
+ {
+@@ -696,11 +774,14 @@
+ */
+ if (!now)
+ now = time(NULL);
+- if (log_file->last_log_time != now) {
+- log_file->last_log_time = now;
+- close(log_file->fd);
+- goto reopen;
+- }
++ if((!syslog_is_buffer_write()))
++ {
++ if (log_file->last_log_time != now) {
++ log_file->last_log_time = now;
++ close(log_file->fd);
++ goto reopen;
++ }
++ }
+ }
+ else if (log_file->fd == 1) {
+ /* We are logging to stdout: do nothing */
+@@ -710,10 +791,8 @@
+ log_file->fd = 1;
+ /* log_file->isRegular = 0; - already is */
+ } else {
+- reopen:
+- log_file->fd = open(log_file->path, O_WRONLY | O_CREAT
+- | O_NOCTTY | O_APPEND | O_NONBLOCK,
+- 0666);
++ reopen: syslog_get_fp_fd(log_file->path, &(log_file->fp), &(log_file->fd));
++
+ if (log_file->fd < 0) {
+ /* cannot open logfile? - print to /dev/console then */
+ int fd = device_open(DEV_CONSOLE, O_WRONLY | O_NOCTTY | O_NONBLOCK);
+@@ -759,6 +838,10 @@
+ rename(oldFile, newFile);
+ }
+ /* newFile == "f.0" now */
++ if(syslog_is_buffer_write() && log_file->fd > 1)
++ {
++ fflush(log_file->fp);
++ }
+ rename(log_file->path, newFile);
+ }
+
+@@ -776,15 +859,16 @@
+ fl.l_type = F_UNLCK;
+ fcntl(log_file->fd, F_SETLKW, &fl);
+ #endif
+- close(log_file->fd);
++ syslog_close_fp_fd(log_file->fp,&(log_file->fd));
+ goto reopen;
+ }
+ /* TODO: what to do on write errors ("disk full")? */
+- len = full_write(log_file->fd, msg, len);
++ len = syslog_write(log_file->fp,log_file->fd,msg,len);
++
+ if (len > 0)
+ log_file->size += len;
+ #else
+- full_write(log_file->fd, msg, len);
++ syslog_write(log_file->fp,log_file->fd,msg,len);
+ #endif
+
+ #ifdef SYSLOGD_WRLOCK
+@@ -974,6 +1058,11 @@
+ }
+ #endif
+
++static void syslog_signal_handler(int signum) {
++ fflush_all();
++}
++
++
+ static void do_syslogd(void) NORETURN;
+ static void do_syslogd(void)
+ {
+@@ -997,6 +1086,7 @@
+ signal(SIGALRM, do_mark);
+ alarm(G.markInterval);
+ #endif
++ signal(SIGUSR1, syslog_signal_handler);
+ xmove_fd(create_socket(), STDIN_FILENO);
+
+ if (option_mask32 & OPT_circularlog)
+@@ -1089,6 +1179,7 @@
+ } /* while (!bb_got_signal) */
+
+ timestamp_and_log_internal("syslogd exiting");
++ syslog_close_fp_fd(G.logFile.fp,&(G.logFile.fd));
+ remove_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid");
+ ipcsyslog_cleanup();
+ if (option_mask32 & OPT_kmsg)
+@@ -1097,11 +1188,45 @@
+ #undef recvbuf
+ }
+
++void syslog_get_uci_config_item(char* query_string, int* value)
++{
++ char get_propty_log_data[64];
++ memset(get_propty_log_data,0,64);
++ if(0 == lynq_get_value("lynq_uci","lynq_log",query_string,get_propty_log_data))
++ {
++ *value = atoi(get_propty_log_data);
++ printf("%s :%d\n",query_string,*value);
++ }
++ else
++ {
++ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",*value);
++ lynq_set_value("lynq_log",query_string, get_propty_log_data);
++ }
++}
++
++void syslog_get_uci_config(int* lynq_syslog_filesize, int* lynq_syslog_rotate, int* lynq_syslog_buffer_size)
++{
++ if(NULL != lynq_get_value && (NULL != lynq_set_value))
++ {
++ syslog_get_uci_config_item("syslog_flie_size",lynq_syslog_filesize);
++ syslog_get_uci_config_item("syslog_flie_rotate",lynq_syslog_rotate);
++ syslog_get_uci_config_item("syslog_flie_buffer_size",lynq_syslog_buffer_size);
++ }
++}
++
+ int syslogd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int syslogd_main(int argc UNUSED_PARAM, char **argv)
{
int opts;
char OPTION_DECL;
+
+ void *handle_uci;
-+ static char get_propty_log_data[64] = {0};
++
+ int lynq_syslog_filesize = 80*1024*1024;
+ int lynq_syslog_rotate = 10;
+ const char *lynq_libpath_uci = "/lib64/liblynq-uci.so";
++ int lynq_syslog_buffer_size = 8*1024;
+
#if ENABLE_FEATURE_REMOTE_LOG
llist_t *remoteAddrList = NULL;
#endif
-@@ -1157,6 +1175,38 @@
+@@ -1157,6 +1282,14 @@
//umask(0); - why??
write_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid");
+ handle_uci = dlopen(lynq_libpath_uci,RTLD_NOW);
+ lynq_get_value = (int (*)(void))dlsym(handle_uci,"lynq_get_value");
+ lynq_set_value = (int (*)(char *section, char *key, char *value))dlsym(handle_uci,"lynq_set_value");
-+ if(NULL != lynq_get_value && (NULL != lynq_set_value))
-+ {
-+ memset(get_propty_log_data,0,64);
-+ if(0 == lynq_get_value("lynq_uci","lynq_log","syslog_flie_size",get_propty_log_data))
-+ {
-+ lynq_syslog_filesize = atoi(get_propty_log_data);
-+ printf("lynq_syslog_filesize:%d\n",lynq_syslog_filesize);
-+ }
-+ else
-+ {
-+ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",lynq_syslog_filesize);
-+ lynq_set_value("lynq_log","syslog_flie_size", get_propty_log_data);
-+ }
-+ memset(get_propty_log_data,0,64);
-+ if(0 == lynq_get_value("lynq_uci","lynq_log","syslog_flie_rotate",get_propty_log_data))
-+ {
-+ lynq_syslog_rotate = atoi(get_propty_log_data);
-+ printf("lynq_syslog_rotate:%d\n",lynq_syslog_rotate);
-+ }
-+ else
-+ {
-+ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",lynq_syslog_rotate);
-+ lynq_set_value("lynq_log","syslog_flie_rotate", get_propty_log_data);
-+ }
-+ }
++ syslog_get_uci_config(&lynq_syslog_filesize, &lynq_syslog_rotate, &g_syslog_buffer_size);
+
+ G.logFileSize = lynq_syslog_filesize;
+ G.logFileRotate = lynq_syslog_rotate;
@@ -73,3 +262,10 @@
do_syslogd();
/* return EXIT_SUCCESS; */
}
+@@ -1171,3 +1304,6 @@
+ #undef OPTION_STR
+ #undef OPTION_DECL
+ #undef OPTION_PARAM
++
++
++
diff --git a/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch b/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
index d45f497..f2f06bb 100755
--- a/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
+++ b/meta/meta-mediatek-ivt/recipes-core/busybox/busybox/ring_buf.patch
@@ -1,71 +1,260 @@
--- busybox-1.29.3/sysklogd/syslogd.c 2018-07-02 19:23:06.000000000 +0800
+++ busybox-1.29.3/sysklogd/syslogdnew.c 2022-09-29 13:47:26.318538618 +0800
-@@ -165,6 +165,8 @@
+@@ -165,6 +165,7 @@
#include <sys/un.h>
#include <sys/uio.h>
+#include <dlfcn.h>
-+
#if ENABLE_FEATURE_REMOTE_LOG
#include <netinet/in.h>
-@@ -176,6 +178,10 @@
+@@ -175,8 +176,11 @@
+ #include <sys/sem.h>
#include <sys/shm.h>
#endif
-
+#define ENABLE_FEATURE_SYSLOGD_CFG 1
+#define ENABLE_FEATURE_ROTATE_LOGFILE 1
+
+-
+int (*lynq_get_value)(char *file, char *section, char *key, char *tmp);
+int (*lynq_set_value)(char *section, char *key, char *value);
-
#define DEBUG 0
-@@ -1102,6 +1113,13 @@
+ /* MARK code is not very useful, is bloat, and broken:
+@@ -210,6 +214,7 @@
+
+ typedef struct logFile_t {
+ const char *path;
++ FILE * fp;
+ int fd;
+ time_t last_log_time;
+ #if ENABLE_FEATURE_ROTATE_LOGFILE
+@@ -677,6 +682,79 @@
+ static void log_to_kmsg(int pri UNUSED_PARAM, const char *msg UNUSED_PARAM) {}
+ #endif /* FEATURE_KMSG_SYSLOG */
+
++int g_syslog_buffer_size=8*1024;
++char g_syslog_buffer[16*1024];
++
++int syslog_is_buffer_write()
++{
++ if(g_syslog_buffer_size>0 && g_syslog_buffer_size<= 16*1024)
++ {
++ return true;
++ }
++ else
++ {
++ return false;
++ }
++}
++
++void syslog_close_fp_fd(FILE * fp, int* fd)
++{
++ if(syslog_is_buffer_write() && (*fd) > 1)
++ {
++ fclose(fp);
++ }
++ else
++ {
++ close(*fd);
++ }
++ (*fd) = -1;
++}
++
++void syslog_get_fp_fd(const char * path, FILE** fp, int* fd)
++{
++ if(syslog_is_buffer_write())
++ {
++ *fp = fopen(path, "a+");
++ if(*fp!=NULL)
++ {
++ *fd=fileno(*fp);
++ if(setvbuf(*fp,g_syslog_buffer,_IOFBF,g_syslog_buffer_size)!=0)
++ {
++ fclose(*fp);
++ *fd=-1;
++ }
++ else
++ {
++ int flags = fcntl(*fd, F_GETFL, 0);
++ flags |= O_NONBLOCK;
++ fcntl(*fd, F_SETFL, flags);
++ }
++ }
++ else
++ {
++ *fd=-1;
++ }
++ }
++ else
++ {
++ *fd = open(path, O_WRONLY | O_CREAT
++ | O_NOCTTY | O_APPEND | O_NONBLOCK,
++ 0666);
++ }
++}
++
++int syslog_write(FILE* fp, int fd, char *msg, int len)
++{
++ if(syslog_is_buffer_write() && fd > 1)
++ {
++ return fwrite(msg,1,len,fp);
++ }
++ else
++ {
++ return full_write(fd, msg, len);
++ }
++}
++
+ /* Print a message to the log file. */
+ static void log_locally(time_t now, char *msg, logFile_t *log_file)
+ {
+@@ -696,11 +774,14 @@
+ */
+ if (!now)
+ now = time(NULL);
+- if (log_file->last_log_time != now) {
+- log_file->last_log_time = now;
+- close(log_file->fd);
+- goto reopen;
+- }
++ if((!syslog_is_buffer_write()))
++ {
++ if (log_file->last_log_time != now) {
++ log_file->last_log_time = now;
++ close(log_file->fd);
++ goto reopen;
++ }
++ }
+ }
+ else if (log_file->fd == 1) {
+ /* We are logging to stdout: do nothing */
+@@ -710,10 +791,8 @@
+ log_file->fd = 1;
+ /* log_file->isRegular = 0; - already is */
+ } else {
+- reopen:
+- log_file->fd = open(log_file->path, O_WRONLY | O_CREAT
+- | O_NOCTTY | O_APPEND | O_NONBLOCK,
+- 0666);
++ reopen: syslog_get_fp_fd(log_file->path, &(log_file->fp), &(log_file->fd));
++
+ if (log_file->fd < 0) {
+ /* cannot open logfile? - print to /dev/console then */
+ int fd = device_open(DEV_CONSOLE, O_WRONLY | O_NOCTTY | O_NONBLOCK);
+@@ -759,6 +838,10 @@
+ rename(oldFile, newFile);
+ }
+ /* newFile == "f.0" now */
++ if(syslog_is_buffer_write() && log_file->fd > 1)
++ {
++ fflush(log_file->fp);
++ }
+ rename(log_file->path, newFile);
+ }
+
+@@ -776,15 +859,16 @@
+ fl.l_type = F_UNLCK;
+ fcntl(log_file->fd, F_SETLKW, &fl);
+ #endif
+- close(log_file->fd);
++ syslog_close_fp_fd(log_file->fp,&(log_file->fd));
+ goto reopen;
+ }
+ /* TODO: what to do on write errors ("disk full")? */
+- len = full_write(log_file->fd, msg, len);
++ len = syslog_write(log_file->fp,log_file->fd,msg,len);
++
+ if (len > 0)
+ log_file->size += len;
+ #else
+- full_write(log_file->fd, msg, len);
++ syslog_write(log_file->fp,log_file->fd,msg,len);
+ #endif
+
+ #ifdef SYSLOGD_WRLOCK
+@@ -974,6 +1058,11 @@
+ }
+ #endif
+
++static void syslog_signal_handler(int signum) {
++ fflush_all();
++}
++
++
+ static void do_syslogd(void) NORETURN;
+ static void do_syslogd(void)
+ {
+@@ -997,6 +1086,7 @@
+ signal(SIGALRM, do_mark);
+ alarm(G.markInterval);
+ #endif
++ signal(SIGUSR1, syslog_signal_handler);
+ xmove_fd(create_socket(), STDIN_FILENO);
+
+ if (option_mask32 & OPT_circularlog)
+@@ -1089,6 +1179,7 @@
+ } /* while (!bb_got_signal) */
+
+ timestamp_and_log_internal("syslogd exiting");
++ syslog_close_fp_fd(G.logFile.fp,&(G.logFile.fd));
+ remove_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid");
+ ipcsyslog_cleanup();
+ if (option_mask32 & OPT_kmsg)
+@@ -1097,11 +1188,45 @@
+ #undef recvbuf
+ }
+
++void syslog_get_uci_config_item(char* query_string, int* value)
++{
++ char get_propty_log_data[64];
++ memset(get_propty_log_data,0,64);
++ if(0 == lynq_get_value("lynq_uci","lynq_log",query_string,get_propty_log_data))
++ {
++ *value = atoi(get_propty_log_data);
++ printf("%s :%d\n",query_string,*value);
++ }
++ else
++ {
++ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",*value);
++ lynq_set_value("lynq_log",query_string, get_propty_log_data);
++ }
++}
++
++void syslog_get_uci_config(int* lynq_syslog_filesize, int* lynq_syslog_rotate, int* lynq_syslog_buffer_size)
++{
++ if(NULL != lynq_get_value && (NULL != lynq_set_value))
++ {
++ syslog_get_uci_config_item("syslog_flie_size",lynq_syslog_filesize);
++ syslog_get_uci_config_item("syslog_flie_rotate",lynq_syslog_rotate);
++ syslog_get_uci_config_item("syslog_flie_buffer_size",lynq_syslog_buffer_size);
++ }
++}
++
+ int syslogd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int syslogd_main(int argc UNUSED_PARAM, char **argv)
{
int opts;
char OPTION_DECL;
+
+ void *handle_uci;
-+ static char get_propty_log_data[64] = {0};
++
+ int lynq_syslog_filesize = 80*1024*1024;
+ int lynq_syslog_rotate = 10;
+ const char *lynq_libpath_uci = "/lib64/liblynq-uci.so";
++ int lynq_syslog_buffer_size = 8*1024;
+
#if ENABLE_FEATURE_REMOTE_LOG
llist_t *remoteAddrList = NULL;
#endif
-@@ -1157,6 +1175,38 @@
+@@ -1157,6 +1282,14 @@
//umask(0); - why??
write_pidfile(CONFIG_PID_FILE_PATH "/syslogd.pid");
+ handle_uci = dlopen(lynq_libpath_uci,RTLD_NOW);
+ lynq_get_value = (int (*)(void))dlsym(handle_uci,"lynq_get_value");
+ lynq_set_value = (int (*)(char *section, char *key, char *value))dlsym(handle_uci,"lynq_set_value");
-+ if(NULL != lynq_get_value && (NULL != lynq_set_value))
-+ {
-+ memset(get_propty_log_data,0,64);
-+ if(0 == lynq_get_value("lynq_uci","lynq_log","syslog_flie_size",get_propty_log_data))
-+ {
-+ lynq_syslog_filesize = atoi(get_propty_log_data);
-+ printf("lynq_syslog_filesize:%d\n",lynq_syslog_filesize);
-+ }
-+ else
-+ {
-+ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",lynq_syslog_filesize);
-+ lynq_set_value("lynq_log","syslog_flie_size", get_propty_log_data);
-+ }
-+ memset(get_propty_log_data,0,64);
-+ if(0 == lynq_get_value("lynq_uci","lynq_log","syslog_flie_rotate",get_propty_log_data))
-+ {
-+ lynq_syslog_rotate = atoi(get_propty_log_data);
-+ printf("lynq_syslog_rotate:%d\n",lynq_syslog_rotate);
-+ }
-+ else
-+ {
-+ snprintf(get_propty_log_data,sizeof(get_propty_log_data),"%d",lynq_syslog_rotate);
-+ lynq_set_value("lynq_log","syslog_flie_rotate", get_propty_log_data);
-+ }
-+ }
++ syslog_get_uci_config(&lynq_syslog_filesize, &lynq_syslog_rotate, &g_syslog_buffer_size);
+
+ G.logFileSize = lynq_syslog_filesize;
+ G.logFileRotate = lynq_syslog_rotate;
@@ -73,3 +262,10 @@
do_syslogd();
/* return EXIT_SUCCESS; */
}
+@@ -1171,3 +1304,6 @@
+ #undef OPTION_STR
+ #undef OPTION_DECL
+ #undef OPTION_PARAM
++
++
++
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-data/liblynq-data.bb b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-data/liblynq-data.bb
index 49244e3..3304725 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-data/liblynq-data.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-data/liblynq-data.bb
@@ -3,7 +3,7 @@
DESCRIPTION = "lynq call"
LICENSE = "MediaTekProprietary"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "platform-libs audio-mixer-ctrl libpal gstreamer1.0 glib-2.0 dtmf libapn liblynq-log liblynq-shm"
+DEPENDS += "platform-libs audio-mixer-ctrl libpal gstreamer1.0 glib-2.0 dtmf libapn liblynq-log liblynq-shm liblynq-uci"
inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-data"
diff --git a/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c b/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
index df570c8..3620798 100644
--- a/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
+++ b/src/bsp/lk/platform/mt2735/drivers/rtc/rtc.c
@@ -888,8 +888,10 @@
check_mode_flag = true;
}
+ /*
RTC_LOG("%s#1 powerkey1 = 0x%x, powerkey2 = 0x%x, %s LPD\n", __func__, RTC_Read(RTC_POWERKEY1), RTC_Read(RTC_POWERKEY2)
, (RTC_Read(RTC_CON) & RTC_CON_LPSTA_RAW) ? "with" : "without" );
+ */
RTC_LOG("bbpu = 0x%x, con = 0x%x, osc32con = 0x%x, sec = 0x%x, yea = 0x%x\n", RTC_Read(RTC_BBPU), RTC_Read(RTC_CON), RTC_Read(RTC_OSC32CON)
, RTC_Read(RTC_AL_SEC), RTC_Read(RTC_AL_YEA));
@@ -900,7 +902,7 @@
}
} else {
/* normally HW reload is done in BROM but check again here */
- RTC_LOG("%s#2 powerkey1 = 0x%x, powerkey2 = 0x%x\n", __func__, RTC_Read(RTC_POWERKEY1), RTC_Read(RTC_POWERKEY2));
+ //RTC_LOG("%s#2 powerkey1 = 0x%x, powerkey2 = 0x%x\n", __func__, RTC_Read(RTC_POWERKEY1), RTC_Read(RTC_POWERKEY2));
RTC_Write(RTC_BBPU, RTC_Read(RTC_BBPU) | RTC_BBPU_KEY | RTC_BBPU_RELOAD);
if (!Write_trigger()) {
rtc_recovery_flow();
@@ -910,7 +912,7 @@
} else {
RTC_LOG("%s Writeif_unlock\n", __func__);
if (RTC_Read(RTC_POWERKEY1) != RTC_POWERKEY1_KEY || RTC_Read(RTC_POWERKEY2) != RTC_POWERKEY2_KEY) {
- RTC_LOG("%s#3 powerkey1 = 0x%x, powerkey2 = 0x%x\n", __func__, RTC_Read(RTC_POWERKEY1), RTC_Read(RTC_POWERKEY2));
+ //RTC_LOG("%s#3 powerkey1 = 0x%x, powerkey2 = 0x%x\n", __func__, RTC_Read(RTC_POWERKEY1), RTC_Read(RTC_POWERKEY2));
if (!rtc_first_boot_init(result)) {
rtc_recovery_flow();
}
diff --git a/src/bsp/trustzone/teeloader/mt2735/src/security/seclib.c b/src/bsp/trustzone/teeloader/mt2735/src/security/seclib.c
index 59419d8..8aae8a5 100644
--- a/src/bsp/trustzone/teeloader/mt2735/src/security/seclib.c
+++ b/src/bsp/trustzone/teeloader/mt2735/src/security/seclib.c
@@ -43,7 +43,7 @@
/**************************************************************************
* DEBUG FUNCTIONS
**************************************************************************/
-#define TEE_DEBUG
+//#define TEE_DEBUG
#ifdef TEE_DEBUG
#define DBG_MSG(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
#define DBG_INFO(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
@@ -97,4 +97,4 @@
int seclib_get_hwid_key(u8 *key, u32 key_size)
{
return seclib_get_key(SOC_DATA, key, key_size, 2);
-}
\ No newline at end of file
+}
diff --git a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_emi_mpu.c b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_emi_mpu.c
index d7e006b..9441d09 100644
--- a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_emi_mpu.c
+++ b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_emi_mpu.c
@@ -47,7 +47,7 @@
#define writel(b,addr) __raw_writel(b,addr)
#define IOMEM(reg) (reg)
-#define TEE_DEBUG
+//#define TEE_DEBUG
#ifdef TEE_DEBUG
#define DBG_MSG(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
#define DBG_INFO(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
diff --git a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_init.c b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_init.c
index fa9e374..b261180 100644
--- a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_init.c
+++ b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_init.c
@@ -53,7 +53,7 @@
**************************************************************************/
#define MOD "[TZ_INIT]"
-#define TEE_DEBUG
+//#define TEE_DEBUG
#ifdef TEE_DEBUG
#define DBG_MSG(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
#define DBG_INFO(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
diff --git a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_sec_cfg.c b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_sec_cfg.c
index dd49816..fc44ba0 100644
--- a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_sec_cfg.c
+++ b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_sec_cfg.c
@@ -39,7 +39,7 @@
#define MOD "[TZ_SEC_CFG]"
-#define TEE_DEBUG
+//#define TEE_DEBUG
#ifdef TEE_DEBUG
#define DBG_MSG(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
#else
diff --git a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_tbase.c b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_tbase.c
index 8e14488..2311550 100644
--- a/src/bsp/trustzone/teeloader/mt2735/src/security/tz_tbase.c
+++ b/src/bsp/trustzone/teeloader/mt2735/src/security/tz_tbase.c
@@ -43,7 +43,7 @@
#define MOD "[TZ_TBASE]"
-#define TEE_DEBUG
+//#define TEE_DEBUG
#ifdef TEE_DEBUG
#define DBG_MSG(str, ...) do {print(str, ##__VA_ARGS__);} while(0)
#else
diff --git a/src/lynq/framework/lynq-audio-service/src/lynq_audio_service.c b/src/lynq/framework/lynq-audio-service/src/lynq_audio_service.c
index 9e1957c..cdf425d 100755
--- a/src/lynq/framework/lynq-audio-service/src/lynq_audio_service.c
+++ b/src/lynq/framework/lynq-audio-service/src/lynq_audio_service.c
@@ -5,7 +5,8 @@
int main()
{
- system("/usr/bin/pulseaudio -D");
+ RLOGD("Open the pulseaudio service\n");
+ system("/usr/bin/pulseaudio -D --system");
while(1)
{
sleep(UINT32_MAX);
diff --git a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
index d6fb6cd..3ea7719 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -107,6 +107,18 @@
}
bool apnHasCreated = FALSE;
Parcel p;
+ if(urc_response->pdnState == PDN_TIMEOUT_CANCEL)
+ {
+ p.writeInt32(1);
+ p.writeInt32(LYNQ_URC_DATA_CALL_STATUS_IND);
+ p.writeInt32(0);//temporary plan
+ p.writeInt32(urc_response->pdnState);
+ writeStringToParcel(p,urc_response->apnName);
+ writeStringToParcel(p,urc_response->apnType);
+ writeStringToParcel(p,urc_response->ifname);
+ android::LYNQ_RIL_urcBroadcast(p,LYNQ_URC_DATA_CALL_STATUS_IND);
+ return 0;
+ }
if(urc_response->cId > 0)
{
if(urc_response->pdnState==PDN_DISCONNECTED)//if user disable data call,the pdn state wiil change to disconnected.
@@ -417,6 +429,8 @@
return "PDN_RETRYING";
case RIL_Data_Call_PdnState::PDN_SCANNING:
return "PDN_SCANNING";
+ case RIL_Data_Call_PdnState::PDN_TIMEOUT_CANCEL:
+ return "PDN_TIMEOUT_CANCEL";
default:
return "UNKNOWN";
}
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index facd0fe..248000d 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -62,6 +62,18 @@
LYNQ_E_NULL_ANONALY=9001
}LYNQ_E;
+typedef enum {
+ PDN_IDLE,
+ PDN_CONNECTING,
+ PDN_CONNECTED,
+ PDN_DISCONNECTING,
+ PDN_DISCONNECTED,
+ PDN_RETRYING,
+ PDN_FAILED,
+ PDN_SCANNING,
+ PDN_TIMEOUT_CANCEL,
+} RIL_Data_Call_PdnState;
+
int lynq_client_sockfd = 0;
int Global_uToken = 0;
struct sockaddr_in lynq_data_socket_server_addr;
@@ -102,6 +114,7 @@
* @brief temp of apn result info
*/
char g_lynq_apn_result[1024] = {};
+int g_data_call_timeout_value = LYNQ_DATA_TIME_OUT;
static std::vector<int> s_data_urc_wait_list;
@@ -627,7 +640,7 @@
bzero(apn,LYNQ_APN_MAX_LEN);
bzero(apnType,LYNQ_APN_TYPE_MAX_LEN);
bzero(ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
- if(pdnState!=4)//PDN_DISCONNECTED
+ if(pdnState != RIL_Data_Call_PdnState::PDN_DISCONNECTED)//PDN_DISCONNECTED
{
urc_msg = strdupReadString_p(p);
int len = strlen(urc_msg);
@@ -709,8 +722,15 @@
LYERRLOG("client still without res");
break;
}
+ if(pdnState == RIL_Data_Call_PdnState::PDN_TIMEOUT_CANCEL)
+ {
+ lynq_data_call = LYNQ_E_TIME_OUT;
+ }
+ else
+ {
+ lynq_data_call = 0;
+ }
sendSignalDataCallStateChange();
- lynq_data_call = 0;
data_timelimit = 0;
}
printf_apn_table_debug(__FUNCTION__,__LINE__);
@@ -842,6 +862,7 @@
int get_imsi();
int check_apn_status();
+int get_timeout_value();
int lynq_init_data(int uToken)
{
if (g_lynq_data_init_flag == 1)
@@ -854,6 +875,15 @@
Global_uToken = uToken;
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
+ int ret = get_timeout_value();
+ if(ret >= 30000)
+ {
+ g_data_call_timeout_value = ret;
+ }
+ else
+ {
+ LYERRLOG("timeout must greater or equal to 30s!!!");
+ }
result = lynq_socket_client_start();
pthread_mutex_init(&g_lynq_data_sendto_mutex, NULL);
if(result!=0)
@@ -952,6 +982,11 @@
int lynq_setup_data_call(int *handle)
{
int error = -1;
+ if (g_lynq_data_init_flag == 0)
+ {
+ LYERRLOG("[%s][%d]Invalid operation",__FUNCTION__,__LINE__);
+ return error;
+ }
#ifdef GSW_RIL_CFG //becuase gsw not have connman,data can not be triggered by connman.
LYINFLOG("[%s][%d]",__FUNCTION__,__LINE__);
error = lynq_setup_data_call_sp(handle,NULL,"default",NULL,NULL,NULL,NULL,NULL);
@@ -1005,7 +1040,7 @@
if(error==0)
{
data_timelimit = 1;
- if (waitDataCallstateChange(LYNQ_DATA_TIME_OUT) == ETIMEDOUT)
+ if (waitDataCallstateChange(g_data_call_timeout_value) == ETIMEDOUT)
{
error = LYNQ_E_TIME_OUT;
LYERRLOG("timeout:wait data Call state fail!!!");
@@ -1019,6 +1054,13 @@
printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
+ if(lynq_data_call == LYNQ_E_TIME_OUT)
+ {
+ error = LYNQ_E_TIME_OUT;
+ LYERRLOG("PDN_TIMEOUT_CANCLE:wait data Call state fail!!!");
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
+ return error;
+ }
}
printf_apn_table_debug(__FUNCTION__,__LINE__);
#endif //GSW_RIL_CFG
@@ -1035,6 +1077,11 @@
int error = -1;
int lynq_data_call_id = -1;
int ret = 0;
+ if (g_lynq_data_init_flag == 0)
+ {
+ LYERRLOG("[%s][%d]Invalid operation",__FUNCTION__,__LINE__);
+ return error;
+ }
if(handle==NULL)
{
LYERRLOG("handle is null!!!");
@@ -1106,6 +1153,11 @@
int error = -1;
int lynq_data_call_id = -1;
char *argv[10] = {};
+ if (g_lynq_data_init_flag == 0)
+ {
+ LYERRLOG("[%s][%d]Invalid operation",__FUNCTION__,__LINE__);
+ return error;
+ }
#ifdef GSW_RIL_CFG
LYINFLOG("[%s][%d]",__FUNCTION__,__LINE__);
if(handle==NULL||apnType==NULL)
@@ -1209,7 +1261,7 @@
if(error==0)
{
data_timelimit = 1;
- if(waitDataCallstateChange(LYNQ_DATA_TIME_OUT)==ETIMEDOUT)
+ if(waitDataCallstateChange(g_data_call_timeout_value)==ETIMEDOUT)
{
error = LYNQ_E_TIME_OUT;
LYERRLOG("timeout:wait data Call state fail!!!");
@@ -1223,6 +1275,13 @@
printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
}
+ if(lynq_data_call == LYNQ_E_TIME_OUT)
+ {
+ error = LYNQ_E_TIME_OUT;
+ LYERRLOG("PDN_TIMEOUT_CANCLE:wait data Call state fail!!!");
+ printf_apn_table_debug(__FUNCTION__,__LINE__);
+ return error;
+ }
}
printf_apn_table_debug(__FUNCTION__,__LINE__);
return error;
@@ -1390,6 +1449,11 @@
int number = 0;
int lynq_data_call_id = 0;
int error = 0;
+ if (g_lynq_data_init_flag == 0)
+ {
+ LYERRLOG("[%s][%d]Invalid operation",__FUNCTION__,__LINE__);
+ return -1;
+ }
lynq_data_call_id = *handle;
if((handle==NULL) || (dataCallList==NULL))
{
@@ -1930,6 +1994,24 @@
}
return 0;
}
+int get_timeout_value()
+{
+ LYINFLOG("get_timeout_value enter");
+ int ret = -1;
+ char timeout_value[8] ={0};//get get_timeout_value
+ ret = lynq_get_value("lynq_uci","data_call","timeout",timeout_value);
+ if(ret == 0)
+ {
+ LYINFLOG("data_call.timeout is %s",timeout_value);
+ return atoi(timeout_value);
+ }
+ else
+ {
+ LYERRLOG("get_timeout_value");
+ return -1;
+ }
+}
+
int radio_switch(int status)
{
Parcel *p =NULL;
diff --git a/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h b/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h
index ba7c1f4..00c5669 100755
--- a/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/src/lynq/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -78,6 +78,9 @@
int lynq_set_ims(const int ims_mode);
int lynq_wait_signalchanges(int *handle);
int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id);
+int lynq_set_feature_config_sbp(int sbp_flag);
+int lynq_query_feature_config_sbp(int *sbp_status );
+
typedef enum {
NETWORK_STATE_BUFFER_TYPE_VOICE_REG,
diff --git a/src/lynq/lib/liblynq-network/lynq_network.cpp b/src/lynq/lib/liblynq-network/lynq_network.cpp
index c025404..ec580e2 100755
--- a/src/lynq/lib/liblynq-network/lynq_network.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_network.cpp
@@ -25,6 +25,12 @@
/*in CR AUTO00207414, in modem, 23G detach need 10s, 5g ims detach need 5s, so set length to 12s */
#define WAIT_TIME_LENGTH_FOR_SET_PREFFERRED_NETWORK_TYPE (12)
+#define SET_SBP_OPEN " AT+ESBP=5,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\",1 "
+#define SET_SBP_CLOSE " AT+ESBP=5,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\",0 "
+#define QUERY_SBP_STATUS "AT+ESBP=7,\"SBP_NRRC_BAR_CELL_WITH_CONNECTION_FAILURE\""
+#define OPEN 1
+#define CLOSE 0
+
using ::android::Parcel;
@@ -1109,6 +1115,106 @@
return RESULT_OK;
}
+
+/*****************************************
+* @brief:sned at request ,close or open SBP
+* @param count [IN]:sbp_flag 0:close 1:open
+* @param sum [OUT]:NA
+* @return :NA
+* @todo:
+* @see:NA
+* @warning:NA
+******************************************/
+int lynq_set_feature_config_sbp(int sbp_flag)
+{
+ int ret = 0;
+ Parcel* p=NULL;
+
+ if(sbp_flag != OPEN && sbp_flag != CLOSE)
+ {
+ LYERRLOG("Bad input paramater ,you need input 0 or 1 !!!");
+ return RESULT_ERROR;
+ }
+ if(sbp_flag == OPEN)
+ {
+ ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",SET_SBP_OPEN);
+ }
+ else if(sbp_flag == CLOSE)
+ {
+ ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",SET_SBP_CLOSE);
+ }
+ if(ret != RESULT_OK)
+ {
+
+ LYERRLOG("%s lynq_send_common_request failure, ret is %d",__func__,ret);
+ return ret;
+ }
+ return 0;
+}
+
+/*****************************************
+* @brief:send at request,get sbp status
+* @param count [IN]:NA
+* @param sum [OUT]:sbp_status
+* @return :NA
+* @todo:
+* @see:NA
+* @warning:NA
+******************************************/
+int lynq_query_feature_config_sbp(int *sbp_status )
+{
+ int ret = 0;
+ Parcel* p=NULL;
+
+ ret = lynq_send_common_request(p,g_wait_time,RIL_REQUEST_OEM_HOOK_RAW,1,"%s",QUERY_SBP_STATUS);
+ if(ret != RESULT_OK)
+ {
+
+ LYERRLOG("%s lynq_send_common_request failure, ret is %d",__func__,ret);
+ return ret;
+ }
+
+
+ const char* data;
+ int data_len;
+ char* data_str;
+ char* start;
+ char status[8] = {'0'};
+ data = lynq_get_raw_data(p,&data_len);
+ if(data==NULL || data_len == 0)
+ {
+ LYERRLOG("%s lynq_get_raw_data NULL or data_len is 0",__func__);
+ delete p;
+ return LYNQ_E_INNER_ERROR;
+ }
+ data_str = (char*) calloc(1,data_len+1);
+ if (NULL == data_str)
+ {
+ LYERRLOG("%s alloc mem error, data_len is %d",__func__,data_len+1);
+ delete p;
+ return LYNQ_E_MALLOC_ERROR;
+ }
+ memmove(data_str, data, data_len);
+ data_str[data_len]='\0';
+ LYINFLOG("%s return string is %s",__func__,data_str);
+ start = strchr(data_str,':');
+ if(start != NULL)
+ {
+ strncpy(status,start+1,4);
+ *sbp_status = atoi(status);
+ LYINFLOG("Query sbp status is %d",*sbp_status);
+ return RESULT_OK;
+
+ }
+ else
+ {
+ LYERRLOG("Query sbp status Failed");
+ return LYNQ_E_INNER_ERROR;
+ }
+
+}
+
+
static pthread_mutex_t urc_signal_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t urc_signal_state_change_cond = PTHREAD_COND_INITIALIZER;
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 221170c..0a5a4e3 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -2246,6 +2246,10 @@
DO_OK_FAIL_REQUEST(lynq_wifi_frequency_cmd);
DO_OK_FAIL_REQUEST(lynq_cmd_mode);
DO_OK_FAIL_REQUEST(cmd_save_config);
+//@ tmp do down/up to fix 5G AP turn to 2.4G cannot be conenct
+ system("wl down");
+ system("wl up");
+ RLOGD("[%s] -- run cmd down/up --%d",__func__,__LINE__);
return 0;
}
diff --git a/src/telephonyware/3.0/libvendor-ril/include/telephony/mtk_ril_ivt.h b/src/telephonyware/3.0/libvendor-ril/include/telephony/mtk_ril_ivt.h
index dad33d5..dfc2f46 100644
--- a/src/telephonyware/3.0/libvendor-ril/include/telephony/mtk_ril_ivt.h
+++ b/src/telephonyware/3.0/libvendor-ril/include/telephony/mtk_ril_ivt.h
@@ -405,6 +405,7 @@
PDN_RETRYING,
PDN_FAILED,
PDN_SCANNING,
+ PDN_TIMEOUT_CANCEL,
} RIL_Data_Call_PdnState;
/// @}
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
index 4cb9bd2..758f54a 100644
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/ApnContext.cpp
@@ -365,7 +365,19 @@
ApnContext::mRpDataController->notifyWorld(urc);
}
break;
+ case RIL_Data_Call_PdnState::PDN_TIMEOUT_CANCEL:
+ {
+ urcParcel = urc->getParcel();
+ urcParcel->setDataPosition(sizeof(int32_t) * 2);
+ RpDataUtils::fillDataCallResponse(urcParcel, Data_Call_Response_v1);
+
+ RFX_LOG_D(RFX_LOG_TAG, "ApnContext(%s) ::notifyStateChange with newState = %s, with Urc: %s",
+ mApnType.c_str(), RpDataUtils::apnState2string(newState), RpDataUtils::requestOrUrcToString(urc->getId()));
+
+ ApnContext::mRpDataController->notifyWorld(urc);
+ break;
+ }
case RIL_Data_Call_PdnState::PDN_IDLE:
default:
RFX_LOG_D(RFX_LOG_TAG, "ApnContext(%s)::notifyStateChange: unknown state.", mApnType.c_str());
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/DcTracker.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/DcTracker.cpp
index e39f4be..aeb0699 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/DcTracker.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/DcTracker.cpp
@@ -1210,6 +1210,10 @@
}
return;
}
+ apnContext->setSate(RIL_Data_Call_PdnState::PDN_TIMEOUT_CANCEL);
+ RFX_LOG_D(RFX_LOG_TAG, "reTrySetupData, retry with apnType: %s,RIL_Data_Call_PdnState::PDN_FAILED, delay time: %ld",
+ apnType.c_str(),
+ delay);
} else {
string str;
if (!apnContext->isEnabled()) {
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataUtils.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataUtils.cpp
index df79299..7f2a987 100644
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataUtils.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataUtils.cpp
@@ -354,6 +354,8 @@
return "PDN_RETRYING";
case RIL_Data_Call_PdnState::PDN_SCANNING:
return "PDN_SCANNING";
+ case RIL_Data_Call_PdnState::PDN_TIMEOUT_CANCEL:
+ return "PDN_TIMEOUT_CANCEL";
}
}