[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;
 
 };