Merge "[Bugfix][API-1383][power]gsw suspend 10 ma when -s download because clk no close" into GSW3.0-No-Connman
diff --git a/src/connectivity/gps/2.0/gps_hal/mnldinf/inc/mnldinf_utility.h b/src/connectivity/gps/2.0/gps_hal/mnldinf/inc/mnldinf_utility.h
index 9b6d74b..30d3aa5 100644
--- a/src/connectivity/gps/2.0/gps_hal/mnldinf/inc/mnldinf_utility.h
+++ b/src/connectivity/gps/2.0/gps_hal/mnldinf/inc/mnldinf_utility.h
@@ -21,6 +21,7 @@
#define DUMP_BYTES_PER_LINE 16
#define DUMP_MAX_PRINT_LINE 10
+#define SOCKET_RETRY_MAX_COUNT 20
#define MNLDINF_DUMP_MEM(addr, len) do{\
int i = 0, j = 0;\
diff --git a/src/connectivity/gps/2.0/gps_hal/mnldinf/src/mnldinf_utility.c b/src/connectivity/gps/2.0/gps_hal/mnldinf/src/mnldinf_utility.c
old mode 100644
new mode 100755
index 3141c69..052a9ba
--- a/src/connectivity/gps/2.0/gps_hal/mnldinf/src/mnldinf_utility.c
+++ b/src/connectivity/gps/2.0/gps_hal/mnldinf/src/mnldinf_utility.c
@@ -427,6 +427,7 @@
int fd;
int size;
struct sockaddr_un addr;
+ int socket_retry_counter=0;
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
@@ -447,13 +448,23 @@
strerror(errno), errno);
return -1;
}
- if(connect(fd, (struct sockaddr*)&addr, size) == -1) {
- LOGE("mnldinf_socket_tcp_client_connect_local() connect() failed, abstruct=%d name=[%s] reason=[%s]%d",
+/* retry connection if socket connection fail, 500000us*20 times */
+ while (1){
+ if(connect(fd, (struct sockaddr*)&addr, size) == -1) {
+ LOGE("mnldinf_socket_tcp_client_connect_local() connect() failed, abstruct=%d name=[%s] reason=[%s]%d",
abstract, name, strerror(errno), errno);
- close(fd);
- return -1;
+ }else{
+ break;
+ }
+ if(socket_retry_counter >= SOCKET_RETRY_MAX_COUNT) {
+ LOGE("retry connect() for 20 times");
+ close(fd);
+ return -1;
+ }
+ socket_retry_counter++;
+ LOGE("retry connect() socket_retry_counter=%d", socket_retry_counter);
+ usleep(500000);
}
-
return fd;
}
@@ -720,19 +731,24 @@
void mnldinf_wake_lock_take() {
#if !defined(__LIBMNL_SIMULATOR__) //no permission to open wake_lock on Linux
time_t time_cur = 0;
+ int timer_ret;
+ int mutex_ret = 0;
+
+ mutex_ret = mnldinf_wakeup_mutex_lock();
time_cur = mnldinf_get_time_in_millisecond();
if(time_cur > (wlock_ctx.time_last_refresh + MNLDINF_WAKE_LOCK_LATENCY)) {
- int mutex_ret = 0;
- mnldinf_stop_timer(wlock_ctx.unlock_timer);
- mutex_ret = mnldinf_wakeup_mutex_lock();
+ timer_ret = mnldinf_stop_timer(wlock_ctx.unlock_timer);
+ LOGD("hal stop unlock_timer, ret=%d", timer_ret);
if(wlock_ctx.wake_lock_acquired == false) {
wlock_ctx.wake_lock_acquired = true;
mnldinf_wake_lock();
+ LOGD("mnldinf_wake_lock");
}
- if(mutex_ret == 0) {
- mnldinf_wakeup_mutex_unlock();
- }
+ }
+
+ if(mutex_ret == 0) {
+ mnldinf_wakeup_mutex_unlock();
}
#endif
}
@@ -740,12 +756,22 @@
void mnldinf_wake_lock_give() {
#if !defined(__LIBMNL_SIMULATOR__) //no permission to open wake_lock on Linux
time_t time_cur = 0;
+ int timer_ret;
+ int mutex_ret = 0;
+
+ mutex_ret = mnldinf_wakeup_mutex_lock();
+
//delay to do wake_unlock to ensure the msg can be deliveried to other process
time_cur = mnldinf_get_time_in_millisecond();
if(time_cur > (wlock_ctx.time_last_refresh + MNLDINF_WAKE_LOCK_LATENCY)) { //Only refresh timer when over latency time
- mnldinf_start_timer(wlock_ctx.unlock_timer, MNLDINF_WAKE_LOCK_TIMEOUT);
+ timer_ret = mnldinf_start_timer(wlock_ctx.unlock_timer, MNLDINF_WAKE_LOCK_TIMEOUT);
+ LOGD("hal start unlock_timer, ret=%d", timer_ret);
wlock_ctx.time_last_refresh = mnldinf_get_time_in_millisecond();
}
+
+ if(mutex_ret == 0) {
+ mnldinf_wakeup_mutex_unlock();
+ }
#endif
}
@@ -757,6 +783,7 @@
if(wlock_ctx.wake_lock_acquired == true) {
wlock_ctx.wake_lock_acquired = false;
mnldinf_wake_unlock();
+ LOGD("mnldinf_wake_unlock");
}
if(mutex_ret == 0) {
mnldinf_wakeup_mutex_unlock();
@@ -819,10 +846,10 @@
}
LOGD("wake_lock:[%s]", buff_read);
close(fd);
- retry_timer = wlock_ctx.unlock_timer;
- wlock_ctx.unlock_timer = INVALID_TIMERID;
- mnldinf_deinit_timer(retry_timer);
- pthread_mutex_destroy(&wlock_ctx.mutex);
+ // retry_timer = wlock_ctx.unlock_timer;
+ // wlock_ctx.unlock_timer = INVALID_TIMERID;
+ // mnldinf_deinit_timer(retry_timer);
+ // pthread_mutex_destroy(&wlock_ctx.mutex);
#endif
}
diff --git a/src/connectivity/gps/2.0/gps_hal/src/gpshal.c b/src/connectivity/gps/2.0/gps_hal/src/gpshal.c
old mode 100644
new mode 100755
index 9ddfa3d..9aad141
--- a/src/connectivity/gps/2.0/gps_hal/src/gpshal.c
+++ b/src/connectivity/gps/2.0/gps_hal/src/gpshal.c
@@ -86,7 +86,7 @@
.vzw_debug_cbs = NULL,
.gps_name = "MTK_MNLD_default,MNL_VER_default",
.proxy_apps = {0},
- .mnl_retry_timer = NULL,
+ .mnl_retry_timer = INVALID_TIMERID,
};
#ifdef FREQUENCE_START
@@ -139,7 +139,7 @@
// Do not deinit resources
// We want to have a simple design for a built-in service
// "Deinit" is for an installable / removable service
-static void gpshal_resource_init(GpsCallbacks_ext* src) {
+static int gpshal_resource_init(GpsCallbacks_ext* src) {
unsigned int capabilities = 0;
unsigned int year = 0;
char *name = g_gpshal_ctx.gps_name;//"Version: MNLD, MNL";
@@ -155,50 +155,56 @@
system_info.size = sizeof(GnssSystemInfo);
g_gpshal_ctx.gps_cbs->set_system_info_cb(&system_info);
- if (GPSHAL_STATE_UNKNOWN != g_gpshal_ctx.gps_state_intent) return; // at most once
+ if (GPSHAL_STATE_UNKNOWN != g_gpshal_ctx.gps_state_intent){
+ return 0; // already set
+ } // at most once
g_gpshal_ctx.fd_mnl2hal_basic = create_mnl2hal_fd_basic();
- if (-1 == g_gpshal_ctx.fd_mnl2hal_basic) return; // error
+ if (-1 == g_gpshal_ctx.fd_mnl2hal_basic){
+ return -1; // error
+ }
g_gpshal_ctx.fd_mnl2hal_ext = create_mnl2hal_fd_ext();
- if (-1 == g_gpshal_ctx.fd_mnl2hal_ext) return; // error
+ if (-1 == g_gpshal_ctx.fd_mnl2hal_ext){
+ return -1; // error
+ }
g_gpshal_ctx.fd_worker_epoll = epoll_create(MAX_EPOLL_EVENT);
if (-1 == g_gpshal_ctx.fd_worker_epoll) {
LOGE("Fail to create epoll reason=[%s]%d",
strerror(errno), errno);
- return; // error
+ return -1; // error
}
if (mnldinf_epoll_add_fd(
g_gpshal_ctx.fd_worker_epoll,
g_gpshal_ctx.fd_mnl2hal_basic) == -1) {
LOGE("Fail to add fd_mnl2hal basic");
- return; // error
+ return -1; // error
}
if (mnldinf_epoll_add_fd(
g_gpshal_ctx.fd_worker_epoll,
g_gpshal_ctx.fd_mnl2hal_ext) == -1) {
LOGE("Fail to add fd_mnl2hal ext");
- return; // error
+ return -1; // error
}
g_gpshal_ctx.thd_worker = g_gpshal_ctx.gps_cbs->create_thread_cb(
GPSHAL_WORKER_THREAD_NAME, gpshal_worker_thread, NULL);
if (!g_gpshal_ctx.thd_worker) {
LOGE("Fail to create %s", GPSHAL_WORKER_THREAD_NAME);
- return; // error
+ return -1; // error
}
gpshal_set_gps_state(GPSHAL_STATE_RESOURCE);
+ return 0;
}
int gpshal_gpscbs_save(GpsCallbacks_ext* src) {
// assert(NULL != src);
if (sizeof(GpsCallbacks_ext) == src->size) {
LOGD("Use GpsCallbacks");
- gpshal_resource_init(src);
- return 0;
+ return gpshal_resource_init(src);
}
LOGE("Bad callback, size: %zd, expected: %zd",
src->size, sizeof(GpsCallbacks_ext));
diff --git a/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c b/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
index 8b07e58..bd2b62b 100644
--- a/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
+++ b/src/connectivity/gps/2.0/gps_hal/src/gpshal_worker.c
@@ -639,6 +639,7 @@
// GPSHAL_DEBUG_FUNC_SCOPE;
struct epoll_event events[MAX_EPOLL_EVENT];
UNUSED(arg);
+ mnldinf_wake_lock_init();
while (true) {
int i;
diff --git a/src/connectivity/gps/2.0/gps_hal/src/gpsinf.c b/src/connectivity/gps/2.0/gps_hal/src/gpsinf.c
index 4de9894..1dc85f0 100644
--- a/src/connectivity/gps/2.0/gps_hal/src/gpsinf.c
+++ b/src/connectivity/gps/2.0/gps_hal/src/gpsinf.c
@@ -323,7 +323,7 @@
static int gpsinf_init(GpsCallbacks_ext* callbacks) {
// GPSHAL_DEBUG_FUNC_SCOPE2(g_gpshal_ctx.mutex_gps_state_intent);
- mnldinf_wake_lock_init();
+ // mnldinf_wake_lock_init();
if (gpshal_gpscbs_save(callbacks) != 0) {
return -1; // error
@@ -338,6 +338,10 @@
// Thread: BackgroundThread
static int gpsinf_start(void) {
// GPSHAL_DEBUG_FUNC_SCOPE2(g_gpshal_ctx.mutex_gps_state_intent);
+ if (GPSHAL_STATE_UNKNOWN == g_gpshal_ctx.gps_state_intent){
+ LOGE("gpsinf_start failed: gps_state_intent=UNKNOWN");
+ return -1;
+ }
memset(&mnlDebugData, 0, sizeof(DebugData));//clear debug data every session
gpshal_set_gps_state_intent(GPSHAL_STATE_START);
gpshal2mnl_gps_start();
@@ -347,6 +351,10 @@
// Thread: BackgroundThread
static int gpsinf_stop(void) {
// GPSHAL_DEBUG_FUNC_SCOPE2(g_gpshal_ctx.mutex_gps_state_intent);
+ if (GPSHAL_STATE_UNKNOWN == g_gpshal_ctx.gps_state_intent){
+ LOGE("gpsinf_stop failed: gps_state_intent=UNKNOWN");
+ return -1;
+ }
gpshal_set_gps_state_intent(GPSHAL_STATE_STOP);
gpshal2mnl_gps_stop();
return 0; // OK to stop
@@ -354,6 +362,10 @@
// Thread: BackgroundThread
static void gpsinf_cleanup(void) {
+ if (GPSHAL_STATE_UNKNOWN == g_gpshal_ctx.gps_state_intent){
+ LOGE("gpsinf_cleanup failed: gps_state_intent=UNKNOWN");
+ return -1;
+ }
timer_t retry_timer;
// GPSHAL_DEBUG_FUNC_SCOPE2(g_gpshal_ctx.mutex_gps_state_intent);
gpshal_set_gps_state_intent(GPSHAL_STATE_CLEANUP);
diff --git a/src/connectivity/gps/2.0/mtk_mnld/mnld_entity/src/mnld.c b/src/connectivity/gps/2.0/mtk_mnld/mnld_entity/src/mnld.c
index 3411b98..d32a295 100755
--- a/src/connectivity/gps/2.0/mtk_mnld/mnld_entity/src/mnld.c
+++ b/src/connectivity/gps/2.0/mtk_mnld/mnld_entity/src/mnld.c
@@ -7,6 +7,8 @@
#include <stdio.h>
#include <sys/time.h>
#include <sys/socket.h>
+#include <sys/types.h>
+#include <fcntl.h>
#include <time.h>
#include <signal.h>
#if defined(__ANDROID_OS__)
@@ -3530,7 +3532,7 @@
int main(int argc, char** argv) {
mnld_wake_lock_init();
mnld_wake_lock_take();
- LOGD("mnld version=%s\n", MNLD_VERSION);
+ LOGE("mnld version=%s\n", MNLD_VERSION);
daemon_parse_commandline(argc, argv);
set_signal_ignore(SIGPIPE);
@@ -3595,9 +3597,11 @@
if ((argc >= 3) //Parameter count check
&& (!strncmp(argv[2], "meta", 4) || !strncmp(argv[2], "factory", 7)
|| !strncmp(argv[2], "test", 4) || !strncmp(argv[2], "PDNTest", 7))) {
+ LOGE("enter not normal mode\n");
mnld_factory_test_entry(argc, argv);
mnld_wake_lock_give();
} else {
+ LOGE("enter normal mode\n");
gps_control_init();
epo_downloader_init();
qepo_downloader_init();
@@ -3607,6 +3611,21 @@
mpe_function_init();
#endif
mnld_init();
+
+ /*lcz add mnld.server to determined if mnld is ready.start. 2023/10/26/ */
+ int fd=0;
+ fd = open("/tmp/mnld.server",O_CREAT|O_RDONLY,0744);
+ LOGE("tmp-file open\n");
+ if(fd < 0)
+ {
+ LOGE("open error: %d (%s)\n", errno, strerror(errno));
+ }
+ else
+ {
+ close(fd);
+ }
+ /*lcz add mnld.server to determined if mnld is ready.end. 2023/10/26/ */
+
// For MNL5.9 and later version, we move flp_monitor_init after mnld_init,
// creating that the monitor thread after mnld msg socket initialized,
// then the screen status can be send to mnld main thread without concern
diff --git a/src/connectivity/gps/2.0/mtk_mnld/utility/src/mtk_lbs_utility.c b/src/connectivity/gps/2.0/mtk_mnld/utility/src/mtk_lbs_utility.c
old mode 100644
new mode 100755
index 790982e..1921c42
--- a/src/connectivity/gps/2.0/mtk_mnld/utility/src/mtk_lbs_utility.c
+++ b/src/connectivity/gps/2.0/mtk_mnld/utility/src/mtk_lbs_utility.c
@@ -1254,19 +1254,24 @@
void mnld_wake_lock_take() {
#if !defined(__LIBMNL_SIMULATOR__) //no permission to open wake_lock on Linux
UINT64 time_cur = 0;
+ int timer_ret;
+ int mutex_ret = 0;
+
+ mutex_ret = mnld_wakeup_mutex_lock();
time_cur = get_time_in_millisecond();
if(time_cur > (wlock_ctx.time_last_refresh + MNLD_WAKE_LOCK_LATENCY)) {
- int mutex_ret = 0;
- stop_timer(wlock_ctx.unlock_timer);
- mutex_ret = mnld_wakeup_mutex_lock();
+ timer_ret = stop_timer(wlock_ctx.unlock_timer);
+ LOGD("stop unlock_timer, ret=%d", timer_ret);
if(wlock_ctx.wake_lock_acquired == false) {
wlock_ctx.wake_lock_acquired = true;
mnld_wake_lock();
+ LOGD("mnld_wake_lock");
}
- if(mutex_ret == 0) {
- mnld_wakeup_mutex_unlock();
- }
+ }
+
+ if(mutex_ret == 0) {
+ mnld_wakeup_mutex_unlock();
}
#endif
}
@@ -1274,12 +1279,21 @@
void mnld_wake_lock_give() {
#if !defined(__LIBMNL_SIMULATOR__) //no permission to open wake_lock on Linux
UINT64 time_cur = 0;
+ int timer_ret;
+ int mutex_ret = 0;
+
+ mutex_ret = mnld_wakeup_mutex_lock();
//delay to do wake_unlock to ensure the msg can be deliveried to other process
time_cur = get_time_in_millisecond();
if(time_cur > (wlock_ctx.time_last_refresh + MNLD_WAKE_LOCK_LATENCY)) { //Only refresh timer when over latency time
- start_timer(wlock_ctx.unlock_timer, MNLD_WAKE_LOCK_TIMEOUT);
+ timer_ret = start_timer(wlock_ctx.unlock_timer, MNLD_WAKE_LOCK_TIMEOUT);
+ LOGD("start unlock_timer, ret=%d", timer_ret);
wlock_ctx.time_last_refresh = get_time_in_millisecond();
}
+
+ if(mutex_ret == 0) {
+ mnld_wakeup_mutex_unlock();
+ }
#endif
}
@@ -1291,6 +1305,7 @@
if(wlock_ctx.wake_lock_acquired == true) {
wlock_ctx.wake_lock_acquired = false;
mnld_wake_unlock();
+ LOGD("mnld_wake_unlock");
}
if(mutex_ret == 0) {
mnld_wakeup_mutex_unlock();
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 980ebd8..d6fb6cd 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
@@ -121,6 +121,7 @@
{
bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
+ bzero(apn_table[i].ifaceName,LYNQ_APNTPYE_LEN_MAX);
apn_table[i].used = 0;
apn_table[i].netId = 0;
apn_table[i].pdpstate = PDN_DISCONNECTED;
@@ -280,6 +281,7 @@
{
bzero(apn_table[i].apn,LYNQ_APN_LEN_MAX);
bzero(apn_table[i].apntype,LYNQ_APNTPYE_LEN_MAX);
+ bzero(apn_table[i].ifaceName,LYNQ_APNTPYE_LEN_MAX);
apn_table[i].used = 0;
apn_table[i].netId = 0;
apn_table[i].pdpstate = PDN_DISCONNECTED;
@@ -312,6 +314,7 @@
else
{
memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
+ memcpy(apn_table[i].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
}
if(NULL == urc_response->addresses)
{
@@ -363,6 +366,7 @@
else
{
memcpy(iface_t,urc_response->ifname,strlen(urc_response->ifname)+1);
+ memcpy(apn_table[i].ifaceName,urc_response->ifname,strlen(urc_response->ifname)+1);
}
if(NULL == urc_response->addresses)
{
diff --git a/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h b/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
index 5c461f4..bdd73e2 100755
--- a/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
+++ b/src/lynq/framework/lynq-ril-service/src/mtk_ril_unsol_commands.h
@@ -50,3 +50,4 @@
{ RIL_UNSOL_ECC_NUM,responseString, WAKE_PARTIAL},
{RIL_UNSOL_SIP_CALL_PROGRESS_INDICATOR, responseStrings, WAKE_PARTIAL},
{RIL_UNSOL_CALL_INFO_INDICATION, responseStrings, WAKE_PARTIAL},
+{RIL_UNSOL_TELEPHONY_RESTART, responseVoid, WAKE_PARTIAL}
diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index ccd0e01..011a083 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -26,6 +26,7 @@
#include <hardware_legacy/power.h>
#include <vendor-ril/telephony/ril.h>
#include <telephony/ril_cdma_sms.h>
+#include <telephony/mtk_ril_sp.h>
#include <cutils/jstring.h>
#include <telephony/record_stream.h>
#include <utils/SystemClock.h>
@@ -163,6 +164,7 @@
// Enable RILC log
#define RILC_LOG 1
/*Warren add for t800 RIL service 2021_12_10 start*/
+#define LYNQ_RIL_FWK_IP "127.0.0.1"
#define LYNQ_SOCKET_ENVNT_FD_MAX 100
#define LYNQ_SERVICE_PORT 8088
#define LYNQ_AT_SERVICE_PORT 8087
@@ -5396,6 +5398,7 @@
case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
+ case RIL_UNSOL_TELEPHONY_RESTART:return "RIL_UNSOL_TELEPHONY_RESTART";/*xy.he add for t800 ril service 2023/10/23*/
/*warren add for t800 ril service 2022/1/22 end*/
default: return "<unknown request>";
}
@@ -5694,6 +5697,7 @@
case RIL_UNSOL_ECALL_MSDHACK: return 1;
case RIL_UNSOL_TX_POWER: return 1;
case RIL_UNSOL_NETWORK_INFO: return 1;
+ case RIL_UNSOL_TELEPHONY_RESTART: return 1;
#ifdef ECALL_SUPPORT
case RIL_UNSOL_ECALL_INDICATIONS: return 1;
#endif /*ECALL_SUPPORT*/
@@ -5927,7 +5931,7 @@
struct sockaddr_in lynqClient_addr;
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
- server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ server_addr.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
/* create socket */
//int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0);
diff --git a/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp b/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
index 17c3e40..e007262 100755
--- a/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
+++ b/src/lynq/framework/lynq-sdk-ready/src/timer/lynq_timer.cpp
@@ -115,6 +115,18 @@
/*set uci*/
return NULL;
}
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+ int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
+ return NULL;
+ }
+
struct timeval timeOut;
timeOut.tv_sec = 3;//timeout time 3s
timeOut.tv_usec = 0;
diff --git a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
index ff45c02..3b084e0 100755
--- a/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_module_socket.cpp
@@ -666,6 +666,19 @@
return -1;
}
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+ int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+ return -1;
+ }
+
+
LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -684,7 +697,6 @@
BLOCK_RECV_MSG_UNLOCK();
// pthread_attr_t attr;
- int ret;
pthread_mutex_init(&s_sendto_mutex, NULL);
pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index b7498a6..facd0fe 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -19,6 +19,8 @@
#include "lynq_data_urc.h"
#define LYNQ_SERVICE_PORT 8088
+#define LYNQ_RIL_FWK_IP "127.0.0.1"
+
#define LYNQ_REC_BUF 8192
#define LYNQ_REQUEST_PARAM_BUF 8192
#define LYQN_SEDN_BUF 1024*8+sizeof(int)*3
@@ -26,6 +28,7 @@
#define LYNQ_DATA_UCI_BUF 258
#define LYNQ_DATA_TIME_OUT 1000*120
+#define TELEPHONY_RESTART 10
using ::android::Parcel;
@@ -65,6 +68,7 @@
int lynq_data_socket_server_addr_len;
int lynq_data_call_change_id = -1;
+int lynq_telephony_restart_g = 0;
pthread_t lynq_data_tid =-1;
static pthread_mutex_t s_data_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t s_data_call_state_change_cond = PTHREAD_COND_INITIALIZER;
@@ -115,6 +119,8 @@
lynq_data_call_response_v11_t lynq_data_call_lists[LYNQ_APN_CHANNEL_MAX] = {};
int lynq_data_call = 0;
+int radio_switch(int status);
+
int getLynqApnID(char apnType[])
{
int ret = 0;
@@ -497,10 +503,10 @@
int send_request(int sockfd,lynq_client_t *client_tmp)
{
int ret=0;
- ret = write(sockfd, client_tmp, LYQN_SEDN_BUF);
+ ret = sendto(sockfd,client_tmp,LYQN_SEDN_BUF,0,(struct sockaddr *)&lynq_data_socket_server_addr,lynq_data_socket_server_addr_len);
if(ret==-1)
{
- perror("write error");
+ LYERRLOG("%s:errno code:%d",__FUNCTION__,errno);
return -1;
}
return 0;
@@ -521,32 +527,36 @@
/*Warren add for T800 platform 2021/11/19 start*/
int lynq_socket_client_start()
{
- /* init lynq_socket_server_addr */
- bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
- lynq_data_socket_server_addr.sin_family = AF_INET;
- lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
- lynq_data_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);
- lynq_data_socket_server_addr_len = sizeof(lynq_data_socket_server_addr);
- /*
- if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)
- {
- printf("[%s] is not a valid IPaddress\n", argv[1]);
- exit(1);
- }
-*/
- lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- struct timeval timeOut;
+ int ret;
+ struct timeval timeOut;
+ struct sockaddr_in liblynq_data_socket;
+ ret = 0;
timeOut.tv_sec = 30;
timeOut.tv_usec = 0;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ bzero(&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr));
+
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
+ //set ril service socket config
+ lynq_data_socket_server_addr.sin_family = AF_INET;
+ lynq_data_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);
+ lynq_data_socket_server_addr.sin_addr.s_addr = inet_addr(LYNQ_RIL_FWK_IP);
+ lynq_data_socket_server_addr_len = sizeof(lynq_data_socket_server_addr);
+
+ lynq_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+ ret = bind(lynq_client_sockfd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+ return -1;
+ }
if (setsockopt(lynq_client_sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
{
- LYERRLOG("time out setting failed");
- }
- if(connect(lynq_client_sockfd, (struct sockaddr *)&lynq_data_socket_server_addr, sizeof(lynq_data_socket_server_addr)) == -1)
- {
- perror("connect error");
+ LYERRLOG("time out setting failed,errno:%d",errno);
return -1;
}
return 0;
@@ -560,6 +570,7 @@
case LYNQ_URC_MODIFY_APNDB:
case LYNQ_URC_RESET_APNDB:
+ case LYNQ_TELEPHONY_RESTART:
return true;
default:
return false;
@@ -796,6 +807,23 @@
}
free(urc_msg);
}
+ case LYNQ_TELEPHONY_RESTART:
+ {
+ if(slot_id == 0)
+ {
+ RLOGI("data has received telephony has restart");
+ RLOGI("handle set to 10");
+ lynq_telephony_restart_g = 1;
+ pthread_mutex_lock(&s_lynq_urc_vector_mutex);
+ s_data_urc_wait_list.push_back(TELEPHONY_RESTART);
+ pthread_mutex_unlock(&s_lynq_urc_vector_mutex);
+ radio_switch(0);
+ sleep(1);
+ radio_switch(1);
+ sleep(1);
+ sendSignalPdnChange();
+ }
+ }
default:
break;
}
@@ -813,7 +841,7 @@
}
int get_imsi();
int check_apn_status();
-int radio_switch(int status);
+
int lynq_init_data(int uToken)
{
if (g_lynq_data_init_flag == 1)
diff --git a/src/lynq/lib/liblynq-data/lynq_data_urc.h b/src/lynq/lib/liblynq-data/lynq_data_urc.h
index 7ac4f75..59f9f9d 100755
--- a/src/lynq/lib/liblynq-data/lynq_data_urc.h
+++ b/src/lynq/lib/liblynq-data/lynq_data_urc.h
@@ -16,6 +16,7 @@
#define LYNQ_REQUEST_SET_DTMF_VOLUME (LYNQ_REQUEST_VENDOR_BASE +3)
#define LYNQ_URC_MODIFY_APNDB (LYNQ_URC_VENDOR_BASE+4)
#define LYNQ_URC_RESET_APNDB (LYNQ_URC_VENDOR_BASE+5)
+#define LYNQ_TELEPHONY_RESTART 3113
typedef struct{
int resp_type;
diff --git a/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c b/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
index 4d79d0f..a812738 100755
--- a/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/src/lynq/lib/liblynq-gnss/src/lynq_gnss.c
@@ -72,6 +72,7 @@
int lynq_gnss_callback_reg(lynq_gnss_cb* callbacks)
{
+ int i=0;
if (NULL == callbacks)
{
RLOGD("illegal callbacks!!!");
@@ -85,9 +86,23 @@
RLOGD("callbacks error");
return -1;
}
- if(gpshal_gpscbs_save(turn_cbs) != 0)
+ for(i=0;i<5;i++)
{
- RLOGD("For cbs save error\r\n");
+ RLOGD("The callback_gps_state:%s",gpshal_state_to_string(g_gpshal_ctx.gps_state));
+ if(gpshal_gpscbs_save(turn_cbs) != 0)
+ {
+ RLOGD("For cbs save error\r\n");
+ }
+ RLOGD("The callback_gps_state:%s",gpshal_state_to_string(g_gpshal_ctx.gps_state));
+ if(g_gpshal_ctx.gps_state != GPSHAL_STATE_UNKNOWN)
+ {
+ break;
+ }
+ sleep(1);
+ }
+ if(i>=5)
+ {
+ RLOGD("For cbs save error2\r\n");
return -1;
}
g_lynq_gnss_calback_flag = 1;
@@ -122,6 +137,11 @@
int lynq_gnss_start(void)
{
+ if (g_lynq_gnss_init_flag == 0)
+ {
+ RLOGD("start is not allowed");
+ return -1;
+ }
//memset(&lynq_debug_data, 0, sizeof(DebugData));
gpshal_set_gps_state_intent(GPSHAL_STATE_START);
gpshal2mnl_gps_start();
@@ -130,6 +150,11 @@
int lynq_gnss_stop(void)
{
+ if (g_lynq_gnss_init_flag == 0)
+ {
+ RLOGD("stop is not allowed");
+ return -1;
+ }
gpshal_set_gps_state_intent(GPSHAL_STATE_STOP);
gpshal2mnl_gps_stop();
return 0;
diff --git a/src/lynq/lib/liblynq-network/lynq_module_socket.cpp b/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
index c3f7334..8ab8f34 100755
--- a/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-network/lynq_module_socket.cpp
@@ -666,6 +666,18 @@
return -1;
}
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+ int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+ return -1;
+ }
+
LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -684,7 +696,6 @@
BLOCK_RECV_MSG_UNLOCK();
// pthread_attr_t attr;
- int ret;
pthread_mutex_init(&s_sendto_mutex, NULL);
pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);
diff --git a/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
index 1fa5578..0099537 100755
--- a/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/src/lynq/lib/liblynq-sim/src/lynq_sim.cpp
@@ -102,6 +102,19 @@
{
return sock_fd;
}
+
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);
+ int ret = bind(sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ RLOGE("liblynq_data_socket bind fail,errno:%d",errno);
+ return -1;
+ }
+
struct timeval timeOut;
timeOut.tv_sec = 60;
timeOut.tv_usec = 0;
diff --git a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
index 4b6f020..d7c654e 100755
--- a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
@@ -692,6 +692,18 @@
return -1;
}
+ struct sockaddr_in liblynq_data_socket;
+ bzero(&liblynq_data_socket, sizeof(liblynq_data_socket));
+ //set this lib socket config
+ liblynq_data_socket.sin_family = AF_INET;
+ liblynq_data_socket.sin_addr.s_addr = inet_addr(LYNQ_ADDRESS);
+ int ret = bind(module_rc_sock_fd, (struct sockaddr *)&liblynq_data_socket, sizeof(liblynq_data_socket));
+ if (-1 == ret)
+ {
+ LYERRLOG("liblynq_data_socket bind fail,errno:%d",errno);
+ return -1;
+ }
+
LYINFLOG("module_rc_sock_fd = %d",module_rc_sock_fd);
memset(&module_rc_addr_serv, 0, sizeof(module_rc_addr_serv));
@@ -710,7 +722,6 @@
BLOCK_RECV_MSG_UNLOCK();
// pthread_attr_t attr;
- int ret;
pthread_mutex_init(&s_sendto_mutex, NULL);
pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 082f9bc..221170c 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -54,6 +54,7 @@
volatile int g_sta_scan_finish_flag = 1;
volatile int g_sta_watcher_started_flag = 0;
volatile int g_sta_conncet_status_flag = 0;
+volatile int g_sta_fake_scan_finish_flag = 0;
pthread_t g_sta_auto_watcher_pid = 0;
volatile int g_sta_auto_watcher_stop_flag = 0;
@@ -96,7 +97,7 @@
pthread_mutex_t mutex;
};
-int g_history_disconnect_valid_num = 0;
+volatile int g_history_disconnect_valid_num = 0;
int g_history_disconnect_net[128];
static pthread_mutex_t s_check_wpa_ctrl_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -143,6 +144,73 @@
static int s_service_invoke_timeout_cnt=0;
const int FAKE_MAX_INT_VALUE = 99999;
+static void print_disconnect_list()
+{
+ int i;
+ for( i = 0; i < g_history_disconnect_valid_num; i++ )
+ {
+ RLOGD(" list of g_history_disconnect_valid_num is %d histroy_list[%d]:%d --------- %d",g_history_disconnect_valid_num,i,g_history_disconnect_net[i],__LINE__);
+ }
+
+ return;
+}
+
+// idex ----> history_disconnect_list[x] index
+static int removeElement(int idex)
+{
+ RLOGD("into removeElement");
+ if( index < 0 )
+ {
+ RLOGD("WIFI [removeElement] input idex < 0,idex is %d: ",idex);
+ return -1;
+ }
+ RLOGD("%s line: %d g_history_disconnect_net[%d]: %d end g_history_disconnect_net[%d]:%d",__func__,__LINE__,idex,g_history_disconnect_net[idex],g_history_disconnect_valid_num-1, g_history_disconnect_net[g_history_disconnect_valid_num-1]);
+ g_history_disconnect_net[idex] = g_history_disconnect_net[g_history_disconnect_valid_num-1]; //g_history_disconnect_vaild_num -1 for get last index
+ g_history_disconnect_valid_num --;
+ RLOGD("end removeElement");
+ return 0;
+}
+static int check_history_disconenct_ap_list(int val)
+{
+ print_disconnect_list();
+ RLOGD("WIFI[check_history_disconenct_ap_list]into check_history_disconenct_ap_list && input val is %d g_history_disconnect_valid_num is %d line",val,g_history_disconnect_valid_num,__LINE__);
+ int i;
+ for( i = 0; i < g_history_disconnect_valid_num; i++)
+ {
+ if( val == g_history_disconnect_net[i] )
+ {
+ RLOGD("[wifi]-----input val is %d,g_history_disconnect_net[%d]:%d",val,i,g_history_disconnect_net[i]);
+ RLOGD("end check_history_disconenct_ap_list && return network index");
+ return i;
+ }
+ }
+ RLOGD("end check_history_disconenct_ap_list && return fail,didn't need remove networkid %d from list g_history_disconnect_valid_num is %d line %d",val,g_history_disconnect_valid_num,__LINE__);
+ return -1;
+}
+
+
+static void lynq_sta_removeElement(int net_no)
+{
+ int ret;
+
+ ret = check_history_disconenct_ap_list(net_no);
+ if( ret == -1 )
+ {
+ RLOGD("curr_net_no not in history_disconenct_lsit,return 0 %s %d",__func__,__LINE__);
+ return;
+ }else
+ {
+ ret = removeElement(ret);
+ if( ret == 0 )
+ {
+ RLOGD("removeElement pass %s %d",__func__,__LINE__);
+ return;
+ }
+ }
+
+ return;
+}
+
static void notify_service_invoke_fail(int error)
{
struct local_wpa_ctrl *lynq_wpa_ctrl = NULL;
@@ -837,19 +905,27 @@
*/
static void lynq_two_arr_merge(int dis_net_list[],int valid_num,int out[],int * outlen)
{
+ RLOGD("enter %s %d",__func__,__LINE__);
+ print_disconnect_list();
int count,ncount,index;
int flag = 0;
int merge_index = 0;
int net_no_list[128];
+ for(ncount = 0;ncount < valid_num; ncount++ )
+ {
+ RLOGD("input history disconenct_list[%d] %d %d",ncount,dis_net_list[ncount],__LINE__);
+ }
+
index =lynq_get_network_number_list(0, 0, net_no_list,NULL);
for( count = 0; count < index; count++)
{
for(ncount = 0; ncount < valid_num; ncount++)
{
+ RLOGD(" %s dis_net_list[%d]->%d %d",__func__,ncount,dis_net_list[ncount],__LINE__);
if(net_no_list[count] == dis_net_list[ncount])
{
- RLOGD("[wifi]this is history disconnect idx ----> ",net_no_list[count]);
+ RLOGD("[wifi]this is history disconnect idx ----> %d %d",net_no_list[count],__LINE__);
flag = 1;
break;
}
@@ -857,6 +933,7 @@
if( flag != 1 )
{
out[merge_index] = net_no_list[count];
+ RLOGD("out[%d]: %d net_no_list[%d]: %d %d",merge_index,out[merge_index],count,net_no_list[count],__LINE__);
merge_index ++;
}
flag = 0;
@@ -891,7 +968,7 @@
if (strstr(modify, "CTRL-EVENT-CONNECTED") != NULL)
{
*state = LYNQ_WIFI_STA_STATUS_CONNECT;
- RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d\n",*state,*error);
+ RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d",*state,*error);
g_sta_conncet_status_flag = 0;
return;
}
@@ -1012,6 +1089,20 @@
return;
}
+ // add by qs.xiong 20231026 tmp fix sta association request to the driver failed
+ if (strstr(modify, "Association request to the driver failed") != NULL)
+ {
+ RLOGD("Association request to the driver failed --- recover");
+ system("wl down");
+ system("wl up");
+ *error = LYNQ_UNSPECIFIED_REASON;
+ *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+ RLOGD("CTRL-EVENT-DISCONNECTED state:%d,error:%d\n",*state,*error);
+ return;
+ }
+ // add by qs.xiong 20231026 tmp fix sta association request to the driver failed end
+
+
RLOGD("EVENT : %s\n", modify);
*error = LYNQ_UNSPECIFIED_REASON;
*state = LYNQ_WIFI_STATUS_EGNORE;
@@ -1218,6 +1309,11 @@
{
notify_connect_status(LYNQ_WIFI_STA_STATUS_DISCONNECT, error);
}
+ else if (state == LYNQ_WIFI_STA_STATUS_SCAN_RESULT &&
+ s_sta_status != INNER_STA_STATUS_INIT && g_sta_conncet_status_flag != 0)
+ {
+ RLOGD("donot report scan result during in call connect manual");
+ }
else
{
notify_connect_status(state, error);
@@ -1238,7 +1334,13 @@
system_call_v("%s %s", sta_status_change_script, "disconnect");
}
}
+
last_state = state;
+ if (g_sta_fake_scan_finish_flag == 1)
+ {
+ g_sta_fake_scan_finish_flag = 0;
+ notify_connect_status(LYNQ_WIFI_STA_STATUS_SCAN_RESULT, 0);
+ }
}
}
}
@@ -3552,6 +3654,7 @@
pthread_mutex_lock(&s_global_check_mutex);
s_sta_status = INNER_STA_STATUS_CONNECTED;
+ lynq_sta_removeElement(net_no);
pthread_cond_signal(&s_global_check_cond);
pthread_mutex_unlock(&s_global_check_mutex);
return 0;
@@ -3606,10 +3709,15 @@
system("echo \"\" > /tmp/wlan0_dhcpcd_router");
usleep(200*1000);
+ pthread_mutex_lock(&s_global_check_mutex);
+ lynq_sta_removeElement(net_no);
+ pthread_mutex_unlock(&s_global_check_mutex);
+
ret = inner_sta_start_stop(net_no, 1, 1);
pthread_mutex_lock(&s_global_check_mutex);
s_sta_status = INNER_STA_STATUS_CONNECTING;
+ g_sta_conncet_status_flag = 1;
strcpy(s_sta_current_connecting_ssid, ssid);
struct timeval now;
gettimeofday(&now,NULL);
@@ -3660,9 +3768,11 @@
int lynq_wifi_sta_disconnect_ap(lynq_wifi_index_e idx, char *ssid)
{
+ int i,check_history_idx_flag;
ap_info_s ap;
curr_status_info curr_state;
ap.ap_ssid[0] = '\0';
+ check_history_idx_flag = 0;
if (ssid == NULL || *ssid == '\0')
{
@@ -3688,8 +3798,25 @@
pthread_mutex_lock(&s_global_check_mutex);
s_sta_status = INNER_STA_STATUS_DISCONNECTING;
- g_history_disconnect_net[g_history_disconnect_valid_num] = curr_state.net_no;
- g_history_disconnect_valid_num++;
+ RLOGD("WIFI[lynq_wifi_sta_disconnect_ap]g_history_disconnect_valid_num is %d",g_history_disconnect_valid_num);
+ for( i = 0; i< g_history_disconnect_valid_num ; i++)
+ {
+ RLOGD("WIFI[lynq_wifi_sta_disconnect_ap]g_history_disconnect_net[%d] is %d,current disconnet network is %d",i,g_history_disconnect_net[i],curr_state.net_no);
+ if( g_history_disconnect_net[i] == curr_state.net_no)
+ {
+ RLOGD("current disconenct ap idx is %d && last aready into g_history_disconenct_net",curr_state.net_no);
+ check_history_idx_flag = 1;
+ break;
+ }
+ }
+ if ( check_history_idx_flag == 0)
+ {
+ RLOGD("current need add ap idx is %d ,g_history_disconnect_valid_num is %d line %d",curr_state.net_no,g_history_disconnect_valid_num,__LINE__);
+ g_history_disconnect_net[g_history_disconnect_valid_num] = curr_state.net_no;
+ g_history_disconnect_valid_num++;
+ }
+ RLOGD("%s %d",__func__,__LINE__);
+ print_disconnect_list();
pthread_mutex_unlock(&s_global_check_mutex);
return lynq_wifi_sta_stop_network(idx, curr_state.net_no);
@@ -3985,6 +4112,7 @@
int count, net_no, index;
int net_no_list[128];
lynq_wifi_auth_s net_auth;
+
char lynq_remove_cmd[MAX_CMD];
if (ssid == NULL || *ssid == '\0')
@@ -4018,6 +4146,15 @@
sprintf(lynq_remove_cmd, "REMOVE_NETWORK %d", net_no);
DO_OK_FAIL_REQUEST(lynq_remove_cmd);
+
+ RLOGD("WIFI[lynq_sta_forget_ap][check_history_disconenct_ap_list] input net_no is %d",net_no);
+
+ pthread_mutex_lock(&s_global_check_mutex);
+ lynq_sta_removeElement(net_no);
+ pthread_mutex_unlock(&s_global_check_mutex);
+
+ RLOGD("%s %d",__func__,__LINE__);
+ print_disconnect_list();
DO_OK_FAIL_REQUEST(cmd_save_config);
return 0;
@@ -4080,11 +4217,18 @@
int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx)
{
- if ( g_sta_conncet_status_flag != 0 )
+ if ( s_sta_status == INNER_STA_STATUS_INIT && g_sta_conncet_status_flag != 0 )
{
- RLOGD("current sta is connecting dest ap");
+ RLOGD("current sta is autoconnecting dest ap,fake scan result");
+ g_sta_fake_scan_finish_flag = 1;
+ return 0;
+ }
+ else if (g_sta_conncet_status_flag != 0)
+ {
+ RLOGD("current sta is connecting dest ap, don't scan");
return 1;
}
+
const char *clean_last_re ="wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 bss_flush";
const char *lynq_scan_cmd = "SCAN";
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 ff0c59c..441a0ee 100755
--- a/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
+++ b/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
@@ -17,12 +17,12 @@
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
+ echo "dhcp-option=6,192.168.15.1,114.114.114.114" >> $conf_file
echo "dhcp-range=192.168.15.2,192.168.15.14,255.255.255.240,1h" >> $conf_file
echo "dhcp-leasefile=/run/wg870/ap0.lease" >> $conf_file
ps -eo "%p %a" | grep "/usr/bin/dnsmasq -x /run/wg870/dnsmasq.pid" | grep -v grep
if [ $? != 0 ]; then
- /usr/bin/dnsmasq -x /run/wg870/dnsmasq.pid -7 /run/wg870/dnsmasq.d --local-service -C $conf_file -r /run/wg870
+ /usr/bin/dnsmasq -x /run/wg870/dnsmasq.pid -7 /run/wg870/dnsmasq.d --local-service -C $conf_file -r /run/wg870 --dhcp-broadcast
fi
elif [ "$1" == "stop" ]; then
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
index 15a17ab..dca7898 100755
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/socket_channel.cpp
@@ -647,7 +647,11 @@
#if defined(TELEPHONYWARE)
static void send_restart_unsol(RIL_SOCKET_ID slot){
#if defined(ANDROID_MULTI_SIM) && !defined(MODE_DSSS)
+ RLOGI("start send RIL_UNSOL_TELEPHONY_RESTART111111");
RFX_onUnsolicitedResponse(RIL_UNSOL_TELEPHONY_RESTART, NULL, 0, slot);
+#else
+ //RFX_onUnsolicitedResponse(RIL_UNSOL_TELEPHONY_RESTART, NULL, 0, slot);
+ RLOGI("don't defined ANDROID_MULIT_SIM and MODE_DSSS");
#endif
return;
}
@@ -657,6 +661,11 @@
void *ril_socket_reader_looper(void *arg) {
while (1) {
RilpSocket *socket = (RilpSocket *)arg;
+ #if defined(TELEPHONYWARE)
+ RLOGI("[ril_socket_reader_looper]TELEPHONY HAS RESTART");
+ RLOGI("has defined TELEPHONYWARE");
+ send_restart_unsol(socket->id);
+ #endif
socket->readerLooper();
rfx_close_socket(socket->group, socket->id);
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 640cff1..e39f4be 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
@@ -1203,7 +1203,7 @@
RFX_LOG_D(RFX_LOG_TAG, "reTrySetupData, retry with apnType: %s, request: RIL_REQUEST_SETUP_DATA_CALL, delay time: %ld",
apnType.c_str(),
delay);
- if (apnType == TEXT_APN_TYPE_DEFAULT) {
+ if (apnType == TEXT_APN_TYPE_DEFAULT || apnType == TEXT_IOT_APN_TYPE_DEFAULT) {
DcTracker::mRpDataController->retryRequest(apnType, setupDataMessage, reason, delay);
} else {
DcTracker::mRpDataController->retryRequest2(apnType, setupDataMessage, reason, delay);