Merge "[Feature][T8TSK-212][Modem]Update modem version to MT2735_V02.MP1_MR3_NLWG_T28_20240103" into MR3.0-Merge-v2.0-GSW
diff --git a/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
index 209e2ed..cf95d6a 100755
--- a/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
+++ b/meta/meta-mediatek-mt2735/recipes-core/initial/files/lynq_data_recover
@@ -118,6 +118,7 @@
#recover some files start
echo "$TAG: Before recover radio_property" > /dev/kmsg
rm -rf /etc/config/.*.uci*
+rm -rf /home/root/.config/pulse/*
mkdir -p /data/atsvc
cp /data_backup/lynq_atsvc_plugin.xml /data/atsvc/lynq_atsvc_plugin.xml
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/mipc_adapter.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/mipc_adapter.cpp
index df11fbd..76f822a 100644
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/mipc_adapter.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/mipc_adapter.cpp
@@ -83,7 +83,7 @@
*pState = newState;
}
pthread_mutex_unlock(&s_state_mutex[rid]);
-
+#if 0
if((*pState != oldState) && (*pState == RADIO_STATE_ON)) {
char prop_value[MTK_PROPERTY_VALUE_MAX] = { 0 };
mtk_property_get(PROPERTY_VOLTE_ENABLE[rid], prop_value, "0");
@@ -95,6 +95,7 @@
parcel->writeInt32(volte_enable); //1:VoLTE only, 2:VoNR only, 3: VoLTE+VoNR
Rfx_issueLocalRequest(RIL_REQUEST_SET_IMS_ENABLE,parcel,rid);
}
+#endif
}
RIL_RadioState getRadioState(RIL_SOCKET_ID rid)
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
index 2f39946..1d40a9e 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/network/RpNwController.cpp
@@ -62,6 +62,7 @@
#include "RfxRootController.h"
#include "RilParcelUtils.h"
#include "rfx_properties.h"
+#include "mipc_adapter.h"
using namespace std;
@@ -120,6 +121,14 @@
int mCurPreferedNetWorkType[RIL_SOCKET_NUM];
int mPhoneMode[RIL_SOCKET_NUM];
bool mHasSetRat[RIL_SOCKET_NUM];
+
+static const char PROPERTY_VOLTE_ENABLE[4][30] = {
+ "persist.mtk.volte.enable1",
+ "persist.mtk.volte.enable2",
+ "persist.mtk.volte.enable3",
+ "persist.mtk.volte.enable4"
+};
+
/*****************************************************************************
* Class RfxNwController
* The class is created if the slot is single mode, LWG or C,
@@ -592,6 +601,7 @@
void mipc_unsol_nw_ps_ind_cb(mipc_msg_t *msg_ptr, void *cb_priv_ptr) {
mipc_sim_ps_id_enum sim_ps_id;
+ static uint8_t old_attach_state = MIPC_NW_PS_DETACH;
uint8_t attach_state;
mipc_nw_ps_reg_info_struct4 *reg_info;
@@ -615,10 +625,26 @@
p->writeInt32(attach_state);
p->writeInt32(atoi(value));
p->writeInt32(reg_info->rat);
- RFX_LOG_D(RFX_LOG_TAG,"mipc_unsol_nw_ps_ind_cb attach_state[%d],mccmnc[%d-%s],rat[%d]\n",
- attach_state,atoi(value),value,reg_info->rat);
+ RFX_LOG_D(RFX_LOG_TAG,"mipc_unsol_nw_ps_ind_cb attach_state[%d], old_attach_state[%d],mccmnc[%d-%s],rat[%d]\n",
+ attach_state,old_attach_state,atoi(value),value,reg_info->rat);
rfx_enqueue_urc_message(RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED,p,mipc_sim_id_to_slot_id(sim_ps_id),RIL_E_SUCCESS);
isNeedNotifyStateChanged(mipc_sim_id_to_slot_id(sim_ps_id));
+
+ if ((attach_state == MIPC_NW_PS_ATTACH) && (old_attach_state != attach_state))
+ {
+ RFX_LOG_D(RFX_LOG_TAG,"%s try to SET_IMS_ENABLE\n", __FUNCTION__);
+ char prop_value[MTK_PROPERTY_VALUE_MAX] = { 0 };
+ mtk_property_get(PROPERTY_VOLTE_ENABLE[mipc_sim_id_to_slot_id(sim_ps_id)], prop_value, "0");
+ int volte_enable = atoi(prop_value);
+ RIL_SOCKET_ID rid = mipc_sim_id_to_slot_id(sim_ps_id);
+ Parcel *parcel = new Parcel();
+ parcel->writeInt32(RIL_REQUEST_SET_IMS_ENABLE);
+ parcel->writeInt32(0xffffffff);
+ parcel->writeInt32(1);//count
+ parcel->writeInt32(volte_enable); //1:VoLTE only, 2:VoNR only, 3: VoLTE+VoNR
+ Rfx_issueLocalRequest(RIL_REQUEST_SET_IMS_ENABLE,parcel, rid);
+ }
+ old_attach_state = attach_state;
}
}
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/radio/RpRadioController.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/radio/RpRadioController.cpp
index 6e70ad6..9ea00c2 100644
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/radio/RpRadioController.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/radio/RpRadioController.cpp
@@ -20,6 +20,7 @@
#include "RpRadioController.h"
#include "RfxRootController.h"
#include "rfx_properties.h"
+#include "mipc_adapter.h"
#define RIL_BOOTPROF 1
@@ -43,6 +44,13 @@
static std::unordered_map<int, int> mPendingRequest;
+static const char PROPERTY_VOLTE_ENABLE[4][30] = {
+ "persist.mtk.volte.enable1",
+ "persist.mtk.volte.enable2",
+ "persist.mtk.volte.enable3",
+ "persist.mtk.volte.enable4"
+};
+
extern void setRadioState(RIL_RadioState newState, RIL_SOCKET_ID rid);
extern RIL_RadioState getRadioState(RIL_SOCKET_ID rid);
@@ -125,6 +133,7 @@
static void mipc_nw_radio_state_ind_cb(mipc_sim_ps_id_enum sim_ps_id, mipc_nw_radio_state_struct *result_ptr, void *cb_priv_ptr) {
RFX_LOG_D(getTag(sim_ps_id).c_str(),"%s RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED, sw=%d, hw=%d", __FUNCTION__, result_ptr->sw_radio_state, result_ptr->hw_radio_state);
RIL_Errno err = RIL_E_SUCCESS;
+
RFX_OBJ_GET_INSTANCE(RfxRootController)->getStatusManager(mipc_sim_id_to_slot_id(sim_ps_id))->setBoolValue(RFX_STATUS_KEY_REQUEST_RADIO_POWER, (result_ptr->sw_radio_state == mipc_nw_radio_state_const_enum::MIPC_NW_RADIO_STATE_OFF) ? false : true);
setRadioState(((result_ptr->sw_radio_state == mipc_nw_radio_state_const_enum::MIPC_NW_RADIO_STATE_OFF) ? RIL_RadioState::RADIO_STATE_OFF : RIL_RadioState::RADIO_STATE_ON), mipc_sim_id_to_slot_id(sim_ps_id));
rfx_enqueue_urc_message(RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED,NULL,mipc_sim_id_to_slot_id(sim_ps_id),err);