[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTestCdma.cpp b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTestCdma.cpp
new file mode 100644
index 0000000..b9fc283
--- /dev/null
+++ b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/rfdesense/RfDesenseTxTestCdma.cpp
@@ -0,0 +1,225 @@
+/* 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.
+ */
+
+#include <algorithm>
+#include <iterator>
+#include <stdexcept>
+
+#include "rfdesense/RfDesenseTxTestCdma.h"
+#include "rfdesense/RfDesenseTxTestBase.h"
+#include "util/log_extra.h"
+#include "em.h"
+
+#undef LOG_TAG
+#define LOG_TAG "EM_RfDesenseTxTestCdma"
+
+const int RfDesenseTxTestCdma::INDEX_BAND = 0;
+const int RfDesenseTxTestCdma::INDEX_CHANNEL = 1;
+const int RfDesenseTxTestCdma::INDEX_POWER = 2;
+const int RfDesenseTxTestCdma::INDEX_MODULATION = 3;
+std::string RfDesenseTxTestCdma::band = "";
+std::string RfDesenseTxTestCdma::channel = "";
+std::string RfDesenseTxTestCdma::power = "";
+std::string RfDesenseTxTestCdma::modulation = "";
+std::map<int, std::string> RfDesenseTxTestCdma::evdo_values = {{INDEX_BAND, "0"},{INDEX_CHANNEL, "384"},{INDEX_POWER, "23"}, {INDEX_MODULATION, "1"}};
+std::map<int, std::string> RfDesenseTxTestCdma::cdma_1x_values = {{INDEX_BAND, "0"},{INDEX_CHANNEL, "384"},{INDEX_POWER, "23"}, {INDEX_MODULATION, "0"}};
+
+RfDesenseTxTestCdma::RfDesenseTxTestCdma(int type) {
+ modem_type = type;
+ std::map<int, std::string> tmp;
+ switch(modem_type){
+ case utils::MODEM_CDMA_EVDO:{
+ tmp = evdo_values;
+ break;
+ }
+ case utils::MODEM_CDMA_1X:{
+ tmp = cdma_1x_values;
+ break;
+ }
+ default:
+ break;
+ }
+ if(!tmp.empty()) {
+ band = tmp[INDEX_BAND];
+ channel = tmp[INDEX_CHANNEL];
+ power = tmp [INDEX_POWER];
+ modulation = tmp[INDEX_MODULATION];
+ }
+
+}
+
+void RfDesenseTxTestCdma::show_default() {
+ std::string str;
+ int index = std::stoi(band);
+ std::string modem;
+ if(modem_type == utils::MODEM_CDMA_EVDO) {
+ modem = "CDMA(EVDO) ";
+ } else if(modem_type == utils::MODEM_CDMA_1X){
+ modem = "CDMA(1X) ";
+ }
+ str = modem + "parameters: Band: "
+ + std::string(rfdesense_cdma_band[index].name)
+ + ", modulation: "
+ + (std::stoi(modulation) == 0 ?
+ std::string("1x") : std::string("EVDO"))
+ + ", Channel(ARFCN): " + channel + ", Power Level(dBm): " + power;
+ emResultNotifyWithDone(str);
+}
+
+RfDesenseTxTestCdma::~RfDesenseTxTestCdma() {
+ // TODO Auto-generated destructor stub
+}
+std::string RfDesenseTxTestCdma::modemTypeToString(int type) {
+ switch(modem_type){
+ case utils::MODEM_CDMA_EVDO:
+ return "CDMA(EVD)";
+ case utils::MODEM_CDMA_1X:
+ return "CDMA(1X)";
+ default:
+ return "UNKNOWN";
+ }
+}
+
+std::string RfDesenseTxTestCdma::get_command(){
+ int tx_power = 0;
+ if (!power.empty()) {
+ tx_power = std::stoi(power) + 60;
+ }
+
+ if (modem_type == utils::MODEM_CDMA_1X) {
+ command = "AT+ECRFTX=1," + channel + "," + band + ","
+ + std::to_string(tx_power)
+ + ","
+ + (modulation == "1" ? "0" : "1");
+ } else if(modem_type == utils::MODEM_CDMA_EVDO) {
+ command = "AT+ERFTX=13,4," + channel + "," + band + ","
+ + std::to_string(tx_power);
+ }
+ return command;
+}
+
+std::string RfDesenseTxTestCdma::get_band(){
+ return band;
+}
+
+std::string RfDesenseTxTestCdma::get_power(){
+ return power;
+}
+
+bool RfDesenseTxTestCdma::set_band(int value){
+ std::string s;
+ if(value < 0 || value > 15) {
+ s = utils::format("band(%d) is out of range", value);
+ em_result_notify_fail(s);
+ LOG_D(LOG_TAG, "band(%d) is out of range", value);
+ return false;
+ }
+ band = std::to_string(value);
+ if(modem_type == utils::MODEM_CDMA_EVDO) {
+ evdo_values[INDEX_BAND] = band;
+ } else if(modem_type == utils::MODEM_CDMA_1X) {
+ cdma_1x_values[INDEX_BAND] = band;
+ } else {
+ s = utils::format("modem(%s) is invalid", modemTypeToString(modem_type));
+ em_result_notify_fail(s);
+ LOG_D(LOG_TAG, "modem(%s) is invalid", modemTypeToString(modem_type));
+ return false;
+ }
+ em_result_notify_ok("band: " + std::string(rfdesense_cdma_band[value].name));
+ return true;
+}
+
+bool RfDesenseTxTestCdma::set_modulation(int value){
+ if (value != 0 && value != 1) {
+ LOG_D(LOG_TAG, "set_modulation value(%d) is out of range",value);
+ return false;
+ }
+ modulation = std::to_string(value);
+ if(modem_type == utils::MODEM_CDMA_EVDO) {
+ evdo_values[INDEX_MODULATION] = modulation;
+ } else if(modem_type == utils::MODEM_CDMA_1X) {
+ cdma_1x_values[INDEX_MODULATION] = modulation;
+ } else {
+ std::string s;
+ s = utils::format("modem(%s) is invalid", modemTypeToString(modem_type));
+ em_result_notify_fail(s);
+ LOG_D(LOG_TAG, "modem(%s) is invalid", modemTypeToString(modem_type));
+ return false;
+ }
+ em_result_notify_ok("modulation: " + (value == 0 ?std::string("1x") : std::string("EVDO")));
+ return true;
+}
+
+bool RfDesenseTxTestCdma::set_channel(std::string str){
+ channel = str;
+ if(modem_type == utils::MODEM_CDMA_EVDO) {
+ evdo_values[INDEX_CHANNEL] = channel;
+ } else if(modem_type == utils::MODEM_CDMA_1X) {
+ cdma_1x_values[INDEX_CHANNEL] = channel;
+ } else {
+ std::string s;
+ s = utils::format("modem(%s) is invalid", modemTypeToString(modem_type));
+ em_result_notify_fail(s);
+ LOG_D(LOG_TAG, "modem(%s) is invalid", modemTypeToString(modem_type));
+ return false;
+ }
+ em_result_notify_ok("channel: " + channel);
+ return true;
+}
+
+bool RfDesenseTxTestCdma::set_power(std::string str){
+ power = str;
+ if(modem_type == utils::MODEM_CDMA_EVDO) {
+ evdo_values[INDEX_POWER] = power;
+ } else if(modem_type == utils::MODEM_CDMA_1X) {
+ cdma_1x_values[INDEX_POWER] = power;
+ } else {
+ std::string s;
+ s = utils::format("modem(%s) is invalid", modemTypeToString(modem_type));
+ em_result_notify_fail(s);
+ LOG_D(LOG_TAG, "modem(%s) is invalid", modemTypeToString(modem_type));
+ return false;
+ }
+ em_result_notify_ok("power: " + power);
+ return true;
+}
+
+void RfDesenseTxTestCdma::show_channel(){
+ emResultNotifyWithDone("Channel(ARFCN): " + channel);
+}
+
+void RfDesenseTxTestCdma::show_power(){
+ emResultNotifyWithDone("Power level(dBm): " + power);
+}