[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTest.h b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTest.h
new file mode 100644
index 0000000..5f9d0b2
--- /dev/null
+++ b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTest.h
@@ -0,0 +1,257 @@
+/* Copyright Statement:
+ *
+ * This software/firmware and related documentation ("MediaTek Software") are
+ * protected under relevant copyright laws. The information contained herein
+ * is confidential and proprietary to MediaTek Inc. and/or its licensors.
+ * Without the prior written permission of MediaTek inc. and/or its licensors,
+ * any reproduction, modification, use or disclosure of MediaTek Software,
+ * and information contained herein, in whole or in part, shall be strictly prohibited.
+ *
+ * MediaTek Inc. (C) 2016. All rights reserved.
+ *
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
+ * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+ * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+ * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+ * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
+ * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
+ * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
+ * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
+ * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+ * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
+ * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+ * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+ * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
+ * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+ *
+ * The following software/firmware and/or related documentation ("MediaTek Software")
+ * have been modified by MediaTek Inc. All revisions are subject to any receiver's
+ * applicable license agreements with MediaTek Inc.
+ */
+
+#ifndef RFDESENSETXTEST_H_
+#define RFDESENSETXTEST_H_
+
+#include <string>
+#include <vector>
+#include <memory>
+#include <mutex>
+#include <thread>
+#include <condition_variable>
+#include <vendor-ril/telephony/ril.h>
+#include <utils/Looper.h>
+#include <utils/Thread.h>
+#include <utils/RefBase.h>
+
+using namespace std;
+using ::android::Looper;
+using ::android::Thread;
+using ::android::MessageHandler;
+using ::android::Message;
+using ::android::sp;
+using ::android::RefBase;
+
+#include "rfdesense/RfDesenseRatInfo.h"
+#include "Radio_capability_switch_util.h"
+
+class RfDesenseTxTest: public android::RefBase {
+public:
+    RfDesenseTxTest();
+    virtual ~RfDesenseTxTest();
+    static RfDesenseTxTest* getInstance();
+    int emRfDesenseStart(int len,int *item,int multilen,char *value[]);
+    void emRadioStateOn();
+    void emRadioStateOfforNotAvailable();
+    void emOemHookRaw(int value, int slot_id);
+    void emRfDesenseAtCmdHandle(char*response, int responselen);
+    static const int STATE_NONE;
+    static const int STATE_STARTED;
+    static const int STATE_STOPPED;
+
+    static const int MSG_START_TX;
+    static const int MSG_NEXT_RAT;
+    static const int MSG_READ_POWER;
+    static const int MSG_EWMPOLICY_TDSCDMA;
+    static const int MSG_EWMPOLICY_WCDMA;
+    static const int MSG_ECSRA;
+    static const int MSG_SWITCH_RAT_DONE;
+
+    static const std::string KEY_GSM_ATCMD;
+    static const std::string KEY_TDSCDMA_ATCMD;
+    static const std::string KEY_WCDMA_ATCMD;
+    static const std::string KEY_LTE_FDD_ATCMD;
+    static const std::string KEY_LTE_TDD_ATCMD;
+    static const std::string KEY_CDMA_1X_ATCMD;
+    static const std::string KEY_CDMA_EVDO_ATCMD;
+    static const std::string KEY_TEST_DURATION;
+    static const std::string KEY_TEST_COUNT;
+    static const std::string KEY_CHECK_LIMIT;
+    static const std::string KEY_READBACK_INTREVAL;
+
+    static const std::string DEFAULT_GSM_ATCMD;
+    static const std::string DEFAULT_TDSCDMA_ATCMD;
+    static const std::string DEFAULT_WCDMA_ATCMD;
+    static const std::string DEFAULT_LTE_FDD_ATCMD;
+    static const std::string DEFAULT_LTE_TDD_ATCMD;
+    static const std::string DEFAULT_CDMA_EVDO_ATCMD;
+    static const std::string DEFAULT_CDMA_1X_ATCMD;
+    static const std::string DEFAULT_CDMA_EVDO_ATCMD_93before;
+    static const std::vector<std::string> mRatName;
+    static std::vector<std::string> mRatCmdStart;
+    static std::vector<std::string> mRatCmdStop;
+    static std::vector<std::string> mRatCmdSwitch;
+    static std::vector<std::string> mRatCmdPowerRead;
+    static std::vector<std::string> mRatBand;
+    static std::vector<std::string> mRatPowerSet;
+    static std::vector<bool> mRatCheck;
+    static std::vector<bool> mSendState;
+    static long mTestDuration;
+    static long mTestCount;
+    static long mTestDurationSended;
+    static long mTestCountSended;
+    static long mCheckLimit;
+    static long mReadbackInterval;
+    std::vector<std::shared_ptr<RfDesenseRatInfo>> mRatList;
+    std::shared_ptr<RfDesenseRatInfo> mCurrectRatInfo;
+
+    const int MSG_QUERY = 0;
+    const int MSG_SET = 1;
+    int mCurrentFlag = 0;
+    std::vector<std::string> mCurrentSettingsValues;
+    static const int INDEX_GSM = 0;
+    static const int INDEX_TDSCDMA = 1;
+    static const int INDEX_WCDMA = 2;
+    static const int INDEX_LTE_FDD = 3;
+    static const int INDEX_LTE_TDD = 4;
+    static const int INDEX_CDMA_EVDO = 5;
+    static const int INDEX_CDMA_1X = 6;
+
+    static constexpr int INDEX_GSM_SUB_BAND = 0;
+    static constexpr int INDEX_GSM_SUB_CHANNEL = 1;
+    static constexpr int INDEX_GSM_SUB_POWER = 2;
+    static constexpr int INDEX_GSM_SUB_AFC = 3;
+    static constexpr int INDEX_GSM_SUB_TSC = 4 ;
+    static constexpr int INDEX_GSM_SUB_PATTERN = 5;
+
+    static constexpr int INDEX_3G_SUB_BAND = 0;
+    static constexpr int INDEX_3G_SUB_CHANNEL = 1;
+    static constexpr int INDEX_3G_SUB_POWER = 2;
+
+    static constexpr int INDEX_CDMA_SUB_BAND = 0;
+    static constexpr int INDEX_CDMA_SUB_MODULATION = 1;
+    static constexpr int INDEX_CDMA_SUB_CHANNEL = 2;
+    static constexpr int INDEX_CDMA_SUB_POWER = 3;
+
+    static constexpr int INDEX_FDD_SUB_MODE = 0;
+    static constexpr int INDEX_FDD_SUB_BAND = 1;
+    static constexpr int INDEX_FDD_SUB_BANDWITH = 2;
+    static constexpr int INDEX_FDD_SUB_FREQ = 3;
+    static constexpr int INDEX_FDD_SUB_START = 4;
+    static constexpr int INDEX_FDD_SUB_LENGTH = 5;
+    static constexpr int INDEX_FDD_SUB_MCS = 6;
+    static constexpr int INDEX_FDD_SUB_POWER = 7;
+
+    static constexpr int INDEX_TDD_SUB_MODE = 0;
+    static constexpr int INDEX_TDD_SUB_BAND = 1;
+    static constexpr int INDEX_TDD_SUB_BANDWIDTH = 2;
+    static constexpr int INDEX_TDD_SUB_FREQ = 3;
+    static constexpr int INDEX_TDD_SUB_CONFIG = 4;
+    static constexpr int INDEX_TDD_SUB_SPECIAL = 5;
+    static constexpr int INDEX_TDD_SUB_START = 6;
+    static constexpr int INDEX_TDD_SUB_LENGTH = 7;
+    static constexpr int INDEX_TDD_SUB_MCS = 8;
+    static constexpr int INDEX_TDD_SUB_POWER = 9;
+
+    class RequestHandleThread: public Thread {
+    public:
+        RequestHandleThread(RfDesenseTxTest* tx);
+        virtual ~RequestHandleThread();
+        sp<Looper> getLooper();
+
+    protected:
+        RfDesenseTxTest* mTx;
+        virtual bool threadLoop();
+    private:
+        sp<Looper> m_looper;
+    };
+
+    class RfRequestMessage: public RefBase {
+    public:
+        RfRequestMessage(RfDesenseTxTest* tx);
+        virtual ~RfRequestMessage();
+        void sendMessage(int delayms);
+    public:
+        int mMsgType;
+        string response;
+        int responselen;
+        int slot;
+        RIL_Errno e;
+    private:
+        RfDesenseTxTest* mTx;
+    };
+
+    class RfRequestHandler: public MessageHandler {
+    public:
+        RfRequestHandler(RfDesenseTxTest* tx): mTx(tx){}
+        virtual ~RfRequestHandler();
+
+    public:
+        void sendMessage(sp<RfRequestMessage> msg, int delayms);
+        void handleMessage(const Message& message);
+        sp<RfRequestMessage> mMsg;
+        // dummy message that makes handler happy
+        Message m_dummyMsg;
+    private:
+        RfDesenseTxTest* mTx;
+    };
+
+public:
+    void emRfDesenseAtCmdHandle(sp<RfRequestMessage> msg);
+    sp<RequestHandleThread> mRequestHandleThread;
+    sp<RfRequestHandler> mRfRequestHandler;
+    // send message to request handler
+    sp<RfRequestHandler> sendMessage(sp<RfRequestMessage> msg, int delayms);
+    void handle_request(string response,int responselen,int slot, RIL_Errno e);
+
+private:
+    std::shared_ptr<RfDesenseRatInfo> getCurrectRatInfo();
+    void update_rat();
+    void tx_stop();
+    void turnOffRf();
+    void turnOnRf();
+    void emRfDesenseThread(int id);
+    void rf_send_at_cmd(std::string cmd, int flag);
+    void save(int index);
+    void txTestStop(int what);
+    static RfDesenseTxTest* m_instance;
+    static std::mutex mMutex;
+    static bool trm_flag;
+    std::condition_variable m_condVar;
+    bool m_rawUrc = false;
+    void initRatList();
+    void handle_gsm_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_tdscdma_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_wcdma_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_lte_fdd_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_lte_tdd_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_cdma_evdo_para(const std::string& name, int last_pos,const std::string& sub_name);
+    void handle_cdma_1X_para(const std::string& name, int last_pos,const std::string& sub_name);
+    bool handle_show_default(const std::string& standard);
+    bool handle_para(int len, int classid, int propertyid, int operatorid,const std::string& standard, int* item);
+    bool handle_start(const std::string& standard);
+
+    static int mState;
+    static std::string str_msg;
+    static int phone_id;
+    bool mIsModemEnabled = true;
+    bool mIsModemNotEnabled = true;
+private:
+    void init();
+    void deInit();
+};
+
+#endif /* RFDESENSETXTEST_H_ */