[Bugfix][API-1011][PL]Fix mtk tele_fwk only supports rebuilding a PDN at the same time,now it can supports two PDNs
Change-Id: Idc796e0026b93d6bdbccd48bd7f685491138b68c
(cherry picked from commit f380ddba26d4f4349c1741f81ab145fb91c5a4e8)
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;
};