Merge "[Feature][T8TSK-209][Modem]Update Modem version to P4 0511" into GSW3.0-No-Connman
diff --git a/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/dnsmasq_%.bbappend b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/dnsmasq_%.bbappend
new file mode 100755
index 0000000..b7e5ed0
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/dnsmasq_%.bbappend
@@ -0,0 +1,15 @@
+FILESEXTRAPATHS_append := ":${THISDIR}/files"
+
+SRC_URI += "\
+ file://dnsmasq.service \
+ file://init_dns_srv \
+ "
+
+FILES_${PN} += "${datadir}/init/init_dns_srv"
+
+do_install_append() {
+ install -d ${D}${datadir}/init
+ install -m 0755 ${WORKDIR}/init_dns_srv ${D}${datadir}/init/
+ install -m 0644 ${WORKDIR}/dnsmasq.service ${D}${systemd_unitdir}/system/dnsmasq.service
+}
+
diff --git a/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/dnsmasq.service b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/dnsmasq.service
new file mode 100644
index 0000000..67d99c2
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/dnsmasq.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=DNS forwarder and DHCP server
+After=network.target
+
+[Service]
+Type=forking
+PIDFile=/run/dnsmasq.pid
+ExecStartPre=/usr/share/init/init_dns_srv
+ExecStart=/usr/bin/dnsmasq -x /run/dnsmasq.pid -7 /etc/dnsmasq.d --local-service -C /tmp/dns_srv.conf
+ExecStop=/bin/kill $MAINPID
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/init_dns_srv b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/init_dns_srv
new file mode 100644
index 0000000..0eaf4b4
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-support/dnsmasq/files/init_dns_srv
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+mkdir -p /var/run/connman
+touch /var/run/connman/resolv.conf
+echo "# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" > /tmp/dns_srv.conf
+echo "cache-size=150" >> /tmp/dns_srv.conf
+echo "strict-order" >> /tmp/dns_srv.conf
+
diff --git a/src/lynq/lib/liblynq-sms/lynq_module_common.h b/src/lynq/lib/liblynq-sms/lynq_module_common.h
index 590971a..60719ef 100755
--- a/src/lynq/lib/liblynq-sms/lynq_module_common.h
+++ b/src/lynq/lib/liblynq-sms/lynq_module_common.h
@@ -64,6 +64,7 @@
LYNQ_E_ECALL_MSD_LENGTH_ERROR =9004,
LYNQ_E_ECALL_DAILING_NO_ANSWER =9005,
#endif
+ LYNQ_E_SMS_MSGLEN_OUT_OF_RANGE = 9006,
}LYNQ_E;
#define MODULE_CLOSED (0)
diff --git a/src/lynq/lib/liblynq-sms/lynq_sms.cpp b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
index 46f2119..f457d7c 100755
--- a/src/lynq/lib/liblynq-sms/lynq_sms.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
@@ -27,7 +27,6 @@
using ::android::Parcel;
-#define MAX_SMS_BUF 1024
int sms_storage_index = 0;
@@ -118,13 +117,9 @@
void ArrayToStr(unsigned char *Buff, unsigned int BuffLen, char *OutputStr)
{
int i = 0;
- char TempBuff[MAX_SMS_BUF] = {0};
- char strBuff[MAX_SMS_BUF] = {0};
- if(sizeof(Buff) < BuffLen)
- {
- LYERRLOG("BuffLen is error\n");
- return;
- }
+ char TempBuff[MSG_MAX_LEN * 2 +1] = {0};
+ char strBuff[MSG_MAX_LEN * 2 +1] = {0};
+
for(i = 0; i<BuffLen;i++)
{
sprintf(TempBuff,"%02x",(unsigned char)Buff[i]);
@@ -136,6 +131,12 @@
int lynq_send_sms(char telephony_num[TELEPHONE_NUM_LEN], int charset, char *msg, int msglen)
{
+ LYINFLOG("charset is %d, msglen %d\n", charset, msglen);
+ if(msglen > MSG_MAX_LEN || msglen < 0)
+ {
+ LYERRLOG("msglen out of the range");
+ return LYNQ_E_SMS_MSGLEN_OUT_OF_RANGE;
+ }
if(g_module_init_flag != MODULE_RUNNING)
{
LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
@@ -146,6 +147,7 @@
{
char msg_e_b[msglen*2+1] = {0};// +1 for end of string.*2:A char array contains two elements of a string for each value
ArrayToStr(msg, msglen, msg_e_b);
+ LYINFLOG("tel, charset, msg_e_b: %s, %d, %s", telephony_num, charset, msg_e_b);
int ret=lynq_send_common_request(p,g_wait_time,RIL_REQUEST_SEND_SMS,3,"%s %d %s",telephony_num, charset, msg_e_b);
if(ret!=RESULT_OK)
{
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 2bfbd1e..368ae4f 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -170,10 +170,41 @@
return system(str_cmd);
}
+static int exec_cmd(const char *str_cmd, char * str_cmd_ret, size_t max_len);
+
+static const char * inner_get_ap_interface_name()
+{
+ char * p;
+ char cmd[128]={0};
+
+ sprintf(cmd, "%s %d", get_interface_name_script, LYNQ_WIFI_INTERFACE_1);
+ if (0 != exec_cmd(cmd, s_ap_iterface_name, sizeof(s_ap_iterface_name)) || s_ap_iterface_name[0] == '\0')
+ {
+ memset(s_ap_iterface_name, 0, sizeof (s_ap_iterface_name));
+ return NULL;
+ }
+ p = strchr(s_ap_iterface_name, ' ');
+ if (NULL != p)
+ {
+ *p = '\0';
+ }
+ p = strchr(s_ap_iterface_name, '\n');
+ if (NULL != p)
+ {
+ *p = '\0';
+ }
+ if (s_ap_iterface_name[0] == '\0')
+ {
+ return NULL;
+ }
+
+ return s_ap_iterface_name;
+}
+
static void check_tether_and_notify()
{
RLOGD("check_tether_and_notify called");
- if (s_ap_iterface_name[0] != '\0' && 0 == system_call_v("ifconfig | grep %s", s_ap_iterface_name))
+ if (inner_get_ap_interface_name() == NULL || 0 == system_call_v("ifconfig | grep %s", s_ap_iterface_name))
{
return;
}
@@ -279,8 +310,6 @@
}while (0)
-static int exec_cmd(const char *str_cmd, char * str_cmd_ret, size_t max_len);
-
static int check_connection(struct wpa_ctrl * wpa_ctrl)
{
size_t reply_len = MAX_RET;
@@ -1886,9 +1915,9 @@
CHECK_WPA_CTRL(CTRL_AP);
- sprintf(LYNQ_WIFI_CMD, "%s %d", get_interface_name_script, LYNQ_WIFI_INTERFACE_1);
- if (0 != exec_cmd(LYNQ_WIFI_CMD, s_ap_iterface_name, sizeof(s_ap_iterface_name)) || s_ap_iterface_name[0] == '\0')
+ if (inner_get_ap_interface_name() == NULL)
{
+ RLOGE("lynq_wifi_ap_start get ap name fail");
return -1;
}
@@ -1898,8 +1927,6 @@
sprintf(LYNQ_WIFI_CMD,"SELECT_NETWORK %d",AP_NETWORK_0);
DO_OK_FAIL_REQUEST(LYNQ_WIFI_CMD);
- check_tether_and_notify();
-
ret = system_call_v("%s %s", start_stop_ap_script, "start");
if (ret != 0)
{
@@ -1907,6 +1934,8 @@
return -1;
}
+ check_tether_and_notify();
+
return 0;
}
@@ -3159,7 +3188,11 @@
CHECK_WPA_CTRL(CTRL_STA);
-// system(clean_last_re); // youchen @ 2023-04-14 temp delete ,next time to fix the orginal bug
+ if (g_sta_scan_finish_flag == 1 && s_sta_status == INNER_STA_STATUS_INIT) // temp add
+ {
+ RLOGD("tmp clear scanlist");
+ system(clean_last_re);
+ }
g_sta_scan_finish_flag = 0;
DO_REQUEST(lynq_scan_cmd);
if (reply_len >=9 && memcmp(cmd_reply, "FAIL-BUSY", 9) == 0 )
@@ -3431,7 +3464,12 @@
if (idx == 1)
{
- ifaName = s_ap_iterface_name;
+ ifaName = inner_get_ap_interface_name();
+ if (ifaName == NULL)
+ {
+ RLOGE("[lynq_get_interface_ip] ap name get fail");
+ return -1;
+ }
}
else if (idx != 0)
{
@@ -3740,7 +3778,7 @@
nmax = 6;
ncheckcount = nidlecount = 0;
- if (s_ap_iterface_name[0] == '\0')
+ if (inner_get_ap_interface_name() == NULL)
{
RLOGE("------gbw thread run\n");
return;
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 cbf3e4c..5415602 100755
--- a/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
+++ b/src/lynq/lib/liblynq-wifi6/scripts/start_stop_ap.sh
@@ -7,8 +7,9 @@
exit 1
fi
mkdir -p /run/wg870/dnsmasq.d
- echo "interface=ap0" > /run/wg870/dnsmasq.conf
- echo "listen-address=127.0.0.1,192.168.15.1" >> /run/wg870/dnsmasq.conf
+ echo "port=0" > /run/wg870/dnsmasq.conf
+ echo "interface=ap0" >> /run/wg870/dnsmasq.conf
+ echo "listen-address=192.168.15.1" >> /run/wg870/dnsmasq.conf
echo "bind-interfaces" >> /run/wg870/dnsmasq.conf
echo "localise-queries" >> /run/wg870/dnsmasq.conf
echo "dhcp-range=192.168.15.2,192.168.15.14,255.255.255.240,1h" >> /run/wg870/dnsmasq.conf
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 f92fd54..4c37b77 100644
--- 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
@@ -1202,7 +1202,11 @@
RFX_LOG_D(RFX_LOG_TAG, "reTrySetupData, retry with apnType: %s, request: RIL_REQUEST_SETUP_DATA_CALL, delay time: %ld",
apnType.c_str(),
delay);
- DcTracker::mRpDataController->retryRequest(apnType, setupDataMessage, reason, delay);
+ if (apnType == TEXT_APN_TYPE_DEFAULT) {
+ DcTracker::mRpDataController->retryRequest(apnType, setupDataMessage, reason, delay);
+ } else {
+ DcTracker::mRpDataController->retryRequest2(apnType, setupDataMessage, reason, delay);
+ }
return;
}
} else {
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
index 4dc7432..b80a565 100644
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.cpp
@@ -63,7 +63,7 @@
RFX_IMPLEMENT_CLASS("RpDataController", RpDataController, RfxController);
RpDataController::RpDataController() :
- mRetryTimerHandle(NULL){
+ mRetryTimerHandle(NULL), mRetryTimerHandle2(NULL){
}
RpDataController::~RpDataController() {
@@ -401,6 +401,39 @@
RpDataController::mDcTracker.trySetupData(apnType, request, reason);
}
+void RpDataController::retryRequest2(string apnType, const sp<RfxMessage>& request, string reason, long delay) {
+
+ logD(RFX_LOG_TAG, "RpDataController::retryRequest2, retry with apnType: %s, request: %s, delay time: %ld",
+ apnType.c_str(),
+ RpDataUtils::requestOrUrcToString(request->getId()),
+ delay);
+ logD(RFX_LOG_TAG, "Step1, mRetryTimerHandle2=%x", mRetryTimerHandle2);
+ if (RpDataController::mRetryTimerHandle2 != NULL) {
+ RfxTimer::stop(mRetryTimerHandle2);
+ }
+ logD(RFX_LOG_TAG, "Step2, mRetryTimerHandle2=%x", mRetryTimerHandle2);
+ // anyway record the latest retry info.
+ RpDataController::mRetryInfo2.apnType = apnType;
+ RpDataController::mRetryInfo2.request = request;
+ RpDataController::mRetryInfo2.reason = reason;
+ logD(RFX_LOG_TAG, "Step3, mRetryTimerHandle2=%x", mRetryTimerHandle2);
+ RpDataController::mRetryTimerHandle2 = RfxTimer::start(RfxCallback0(this,
+ &RpDataController::onTimer2), ms2ns(delay));
+}
+
+void RpDataController::onTimer2() {
+ string apnType = RpDataController::mRetryInfo2.apnType;
+ sp<RfxMessage> request = RpDataController::mRetryInfo2.request;
+ string reason = RpDataController::mRetryInfo2.reason;
+
+ logD(RFX_LOG_TAG, "RpDataController::onTimer2, retry with apnType: %s, request: %s, delay time: %s",
+ apnType.c_str(),
+ RpDataUtils::requestOrUrcToString(request->getId()),
+ reason.c_str());
+
+ RpDataController::mDcTracker.trySetupData(apnType, request, reason);
+}
+
void RpDataController::onApnReady() {
logD(RFX_LOG_TAG, "RpDataController::onApnReady");
diff --git a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
index 5a34862..d270e08 100644
--- a/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
+++ b/src/telephonyware/3.0/libvendor-ril/mtk-rilproxy/telephony/data/RpDataController.h
@@ -58,6 +58,8 @@
void notifyWorld(const sp<RfxMessage>& response);
void retryRequest(string apnType, const sp<RfxMessage>& request, string reason, long delay);
void onTimer();
+ void retryRequest2(string apnType, const sp<RfxMessage>& request, string reason, long delay);
+ void onTimer2();
void onApnReady();
void sendToMD(const sp<RfxMessage>& request);
@@ -121,8 +123,9 @@
private:
DcTracker mDcTracker;
TimerHandle mRetryTimerHandle;
-
+ TimerHandle mRetryTimerHandle2;
RetryInfo mRetryInfo;
+ RetryInfo mRetryInfo2;
};