[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/em.cpp b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/em.cpp
new file mode 100644
index 0000000..7e9609f
--- /dev/null
+++ b/src/lynq/lib/liblynq-tele-ril/lynq-riltel/em/em.cpp
@@ -0,0 +1,734 @@
+/* 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) 2010. 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 "em/em.h"
+
+#include <vendor-ril/telephony/ril.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <cutils/jstring.h>
+#include <log/log.h>
+#include <unistd.h>
+#include <math.h>
+#include "common.h"
+
+#if EM_MODE_SUPPORT
+
+#undef LOG_TAG
+#define LOG_TAG "EM_ENTRY"
+
+#define NUM_ITEMS(a) (sizeof (a) / sizeof (a)[0])
+em_arry_t lte_info[] = {
+ //{"4G ERRC Misc Info",0,NULL,1,1},
+ //{"4G LTE Support Band",0,NULL,1,1},
+ //{"4G Active Intra-RAT Meas (LTE)",0,NULL,1,1},
+ //{"4G Active Inter-RAT Meas (UMTS)",0,NULL,1,1},
+ //{"4G Active Inter-RAT Meas (GSM)",0,NULL,1,1},
+ //{"4G SIB Receive Status",0,NULL,1,1},
+ //{"4G CSG Autonomous Search",0,NULL,1,1},
+ //{"4G Config Info",0,NULL,1,1},
+ //{"ESM",0,NULL,1,1},
+ //{"EMM",0,NULL,1,1},
+ //{"MMDC",0,NULL,1,1},
+ {"EL1",0,NULL,1,1},
+ //{"Timer Information",0,NULL,1,1},
+ //{"TDD TAS",0,NULL,1,1},
+ //{"GSM TAS",0,NULL,1,1},
+ //{"WCDMA TAS",0,NULL,1,1},
+ //{"LTE TAS",0,NULL,1,1},
+};
+em_arry_t ims_setting[] = {
+ {"get",0,NULL,0,0},
+ {"set",0,NULL,0,0},
+};
+em_arry_t ims_common[] = {
+ {"operator_code",2,ims_setting,0,0},
+ {"sms_support",2,ims_setting,0,0},
+ {"voice_support",2,ims_setting,0,0}
+};
+em_arry_t ims_call[] = {
+ {"UA_call_codec_order1",2,ims_setting,0,0},
+ {"UA_call_codec_order2",2,ims_setting,0,0},
+ {"UA_call_codec_order3",2,ims_setting,0,0},
+ {"silence_dropcall_threshold",2,ims_setting,0,0},
+ {"jbm_load_params_enable",2,ims_setting,0,0},
+ {"jbm_prebuf_len",2,ims_setting,0,0},
+};
+em_arry_t ims_registration[] = {
+ {"emergency_reg_retain_timer",2,ims_setting,0,0},
+ {"UA_reg_auth_password",2,ims_setting,0,0},
+ {"UA_reg_auth_name",2,ims_setting,0,0},
+ {"VoLTE_Setting_SIP_TCP_On_Demand",2,ims_setting,0,0},
+};
+em_arry_t ims[] = {
+ {"Common",NUM_ITEMS(ims_common),ims_common,1,1},
+ {"Call",NUM_ITEMS(ims_call),ims_call,1,1},
+ {"Registration",NUM_ITEMS(ims_registration),ims_registration,1,1},
+};
+em_arry_t gprs[] = {
+ {"ATTACH",0,NULL,1,1},
+ {"DETACH",0,NULL,1,1},
+ {"ATTACH_CONTINUE",0,NULL,1,1},
+ {"DETACH_CONTINUE",0,NULL,1,1},
+ {"SELECT_ATTACH_TYPE_1",0,NULL,1,1},
+ {"SELECT_ATTACH_TYPE_0",0,NULL,1,1},
+};
+em_arry_t networkselection[] = {
+ {"GSM/WCDMA (WCDMA preferred)",0,NULL,1,1},
+ {"GSM only",0,NULL,1,1},
+ {"WCDMA only",0,NULL,1,1},
+ {"GSM/WCDMA (auto)",0,NULL,1,1},
+ {"LTE only",0,NULL,1,1},
+ {"4G/3G/2G(auto)",0,NULL,1,1},
+ {"4G/3G",0,NULL,1,1},
+};
+em_arry_t modem_cta[] = {
+ {"Integrity Check",0,NULL,1,1},
+ {"RLC TL1",0,NULL,1,1},
+ {"K1297",0,NULL,1,1},
+ {"SN Conflict",0,NULL,1,1},
+ {"CF query",0,NULL,1,1},
+ {"DLMN lock",0,NULL,1,1},
+ {"Measurement open",0,NULL,1,1},
+ {"Disable DPA",0,NULL,1,1},
+ {"Intra CMR",0,NULL,1,1},
+};
+em_arry_t modem_fta[] = {
+ {"ANITE",0,NULL,1,1},
+ {"CRTUG",0,NULL,1,1},
+ {"CRTUW",0,NULL,1,1},
+ {"ANRITSU",0,NULL,1,1},
+ {"CMW500",0,NULL,1,1},
+};
+em_arry_t modem_C2K_Test_MODEM[] = {
+ { "NONE", 0, NULL, 1, 1 },
+ { "SPIRENT", 0,NULL, 1, 1 },
+};
+em_arry_t modemtest[] = {
+ {"NONE",0,NULL,1,1},
+ {"CTA",NUM_ITEMS(modem_cta),modem_cta,1,1},
+ {"FTA",NUM_ITEMS(modem_fta),modem_fta,1,1},
+ {"IOT",0,NULL,1,1},
+ {"OPERATOR",0,NULL,1,1},
+ {"FACTORY",0,NULL,1,1},
+ {"CDMA Test Mode", NUM_ITEMS(modem_C2K_Test_MODEM),modem_C2K_Test_MODEM,1,1},
+};
+em_arry_t hspa[] = {
+ {"QUERY",0,NULL,1,1},
+};
+em_arry_t cfu[] = {
+ {"Default",0,NULL,1,1},
+ {"Always query",0,NULL,1,1},
+ {"Always not query",0,NULL,1,1},
+};
+em_arry_t bandmode[] = {
+ {"getcurrentband",0,NULL,1,1},
+ {"setBand(eg: 1.1=1 add band, 1.1=0 remove band) or getSupportBand",0,NULL,1,1},
+};
+em_arry_t networkinfo[] = {
+ {"RR Cell Sel",0,NULL,1,1},
+ {"RR Ch Dscr",0,NULL,1,1},
+ {"RR Ctrl chan",0,NULL,1,1},
+ {"RR RACH Ctrl",0,NULL,1,1},
+ {"RR LAI Info",0,NULL,1,1},
+ {"RR Radio Link",0,NULL,1,1},
+ {"RR Meas Rep",0,NULL,1,1},
+ {"RR Ca List",0,NULL,1,1},
+ {"RR Control Msg",0,NULL,1,1},
+ {"RR SI2Q Info",0,NULL,1,1},
+ {"RR MI Info",0,NULL,1,1},
+ {"RR BLK Info",0,NULL,1,1},
+ {"RR TBF Info",0,NULL,1,1},
+ {"RR GPRS Gen",0,NULL,1,1},
+ {"SMEmInfo",0,NULL,1,1},
+ {"3GMmEmInfo",0,NULL,1,1},
+ {"GmmEmInfo",0,NULL,1,1},
+#if 1
+ {"3GTcmMmiEmInfo",0,NULL,1,1},
+ {"3GGeneralStatusInd",0,NULL,1,1},
+ {"xGCsceEMNeighCellSStatusInd",0,NULL,1,1},
+ {"3GCsceEMServCellSStatusInd",0,NULL,1,1},
+ {"3GCsceEmInfoMultiPlmn",0,NULL,1,1},
+ {"3GMemeEmPeriodicBlerReportInd",0,NULL,1,1},
+ {"3GUrrUmtsSrncId",0,NULL,1,1},
+ {"3GMemeEmInfoHServCellInd",0,NULL,1,1},
+#endif
+#if 1//fdd
+ {"3GMemeEmInfoUmtsCellStatus",0,NULL,1,1},
+ {"3GSlceEmPsDataRateStatusInd",0,NULL,1,1},
+#endif
+#if 0//tdd
+ {"3GHandoverSequenceIndStuct",0,NULL,1,1},
+ {"3GUl2EmAdmPoolStatusIndStruct",0,NULL,1,1},
+ {"3GUl2EmPsDataRateStatusIndStruct",0,NULL,1,1},
+ {"3GUl2EmHsdschReconfigStatusIndStruct",0,NULL,1,1},
+ {"3GUl2EmUrlcEventStatusIndStruct",0,NULL,1,1},
+ {"3G Ul2EmPeriodicBlerReportInd",0,NULL,1,1},
+#endif
+#if 0 //lte
+ {"3G speech codec",0,NULL,1,1},//lte
+ {"Security Configuration",0,NULL,1,1},//lte
+#endif
+};
+
+em_arry_t antenna_setmodes_4g[] {
+ {"RX1&RX2", 0, NULL, 1, 1},
+ {"RX1", 0, NULL, 1, 1},
+ {"RX2", 0, NULL, 1, 1},
+};
+
+em_arry_t antenna_setmodes_3g[] {
+ {"RX1", 0, NULL, 1, 1},
+ {"RX2", 0, NULL, 1, 1},
+ {"RX1&RX2", 0, NULL, 1, 1},
+ {"Resume default setting", 0, NULL, 1, 1},
+};
+
+em_arry_t antenna_setmodes_c2k[] {
+ {"Resume default setting", 0, NULL, 1, 1},
+ {"RX1", 0, NULL, 1, 1},
+ {"RX2", 0, NULL, 1, 1},
+ {"RX1&RX2", 0, NULL, 1, 1},
+};
+
+em_arry_t antenna_4Gmode[] = {
+ {"getmode",0,NULL,1,1},
+ {"setmode",NUM_ITEMS(antenna_setmodes_4g),antenna_setmodes_4g,1,1},
+};
+
+em_arry_t antenna_3Gmode[] = {
+ {"getmode",0,NULL,1,1},
+ {"setmode",NUM_ITEMS(antenna_setmodes_3g),antenna_setmodes_3g,1,1},
+};
+
+em_arry_t antenna_c2kmode[] = {
+ {"getmode",0,NULL,1,1},
+ {"setmode",NUM_ITEMS(antenna_setmodes_c2k),antenna_setmodes_c2k,1,1},
+};
+
+em_arry_t antennatest[] = {
+ {"4G",NUM_ITEMS(antenna_4Gmode),antenna_4Gmode,1,1},
+ {"3G",NUM_ITEMS(antenna_3Gmode),antenna_3Gmode,1,1},
+ {"CDMA",NUM_ITEMS(antenna_c2kmode),antenna_c2kmode,1,1},
+};
+
+em_arry_t time_reg[] = {
+ { "disable", 0,NULL, 1, 1 },
+ { "enable", 0, NULL, 1, 1 },
+};
+
+em_arry_t c2k_modem_setting[] {
+ {"TIME REG",NUM_ITEMS(time_reg),time_reg,1,1},
+};
+
+em_arry_t rfdesense_setting[] = {
+ {"start",0,NULL,0,0},
+ {"set",0,NULL,0,0},
+// {"set_check_Limit",0,NULL,0,0},
+// {"get_check_Limit",0,NULL,0,0},
+};
+
+em_arry_t set_get[] = {
+ {"get",0,NULL,0,0},
+ {"set",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_gsm_band[] = {
+ {"GSM 850",0,NULL,0,0},
+ {"P-GSM 900",0,NULL,0,0},
+ {"E-GSM 900",0,NULL,0,0},
+ {"R-GSM 900",0,NULL,0,0},
+ {"DCS 1800",0,NULL,0,0},
+ {"PCS 1900",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_gsm_pattern[] = {
+ {"RFTOOL_NB_TX_RANDOM_WITH_TSC",0,NULL,0,0},
+ {"RFTOOL_NB_TX_ALL_ONES_WITHOUT_TSC",0,NULL,0,0},
+ {"RFTOOL_AB_TX_RANDOM_WITH_SYNC_SEQ",0,NULL,0,0},
+ {"RFTOOL_CONT_TX_ALL_ZEROS",0,NULL,0,0},
+ {"RFTOOL_CONT_TX_ALL_ONES",0,NULL,0,0},
+ {"RFTOOL_CONT_TX_ALTERNATE_BITS",0,NULL,0,0},
+ {"RFTOOL_CONT_TX_PSEUDO_RANDOM",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_gsm_sub[] = {
+ {"Band",NUM_ITEMS(rfdesense_gsm_band),rfdesense_gsm_band,0,0},
+ {"Channel(ARFCN)",NUM_ITEMS(set_get),set_get,0,0},
+ {"Power Level",NUM_ITEMS(set_get),set_get,0,0},
+ {"AFC",NUM_ITEMS(set_get),set_get,0,0},
+ {"TSC",NUM_ITEMS(set_get),set_get,0,0},
+ {"PATTERN",NUM_ITEMS(rfdesense_gsm_pattern),rfdesense_gsm_pattern,0,0},
+};
+
+em_arry_t rfdesense_gsm[] = {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_gsm_sub),rfdesense_gsm_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdscdma_band[] = {
+ {"Band A",0,NULL,0,0},
+ {"Band F",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdscdma_sub[] = {
+ {"Band",NUM_ITEMS(rfdesense_tdscdma_band),rfdesense_tdscdma_band,0,0},
+ {"Channel(ARFCN)",NUM_ITEMS(set_get),set_get,0,0},
+ {"Power Level(dBm)",NUM_ITEMS(set_get),set_get,0,0},
+};
+
+em_arry_t rfdesense_tdscdma[] = {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_tdscdma_sub),rfdesense_tdscdma_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_wcdma_band[] = {
+ {"Band 1",0,NULL,0,0},
+ {"Band 2",0,NULL,0,0},
+ {"Band 3",0,NULL,0,0},
+ {"Band 4",0,NULL,0,0},
+ {"Band 5",0,NULL,0,0},
+ {"Band 6",0,NULL,0,0},
+ {"Band 7",0,NULL,0,0},
+ {"Band 8",0,NULL,0,0},
+ {"Band 9",0,NULL,0,0},
+ {"Band 10",0,NULL,0,0},
+ {"Band 11",0,NULL,0,0},
+ {"Band 12",0,NULL,0,0},
+ {"Band 13",0,NULL,0,0},
+ {"Band 14",0,NULL,0,0},
+ {"Band 19",0,NULL,0,0},
+ {"Band 20",0,NULL,0,0},
+ {"Band 21",0,NULL,0,0},
+ {"Band 22",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_wcdma_sub[] = {
+ {"Band",NUM_ITEMS(rfdesense_wcdma_band),rfdesense_wcdma_band,0,0},
+ {"Channel(ARFCN)",NUM_ITEMS(set_get),set_get,0,0},
+ {"Power Level(dBm)",NUM_ITEMS(set_get),set_get,0,0},
+};
+
+em_arry_t rfdesense_wcdma[] {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_wcdma_sub),rfdesense_wcdma_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_lte_mode[] = {
+ {"single tone",0,NULL,0,0},
+ {"modulation signal",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_fdd_band[] = {
+ {"1",0,NULL,0,0},
+ {"2",0,NULL,0,0},
+ {"3",0,NULL,0,0},
+ {"4",0,NULL,0,0},
+ {"5",0,NULL,0,0},
+ {"6",0,NULL,0,0},
+ {"7",0,NULL,0,0},
+ {"8",0,NULL,0,0},
+ {"9",0,NULL,0,0},
+ {"10",0,NULL,0,0},
+ {"11",0,NULL,0,0},
+ {"12",0,NULL,0,0},
+ {"13",0,NULL,0,0},
+ {"14",0,NULL,0,0},
+ {"15",0,NULL,0,0},
+ {"16",0,NULL,0,0},
+ {"17",0,NULL,0,0},
+ {"18",0,NULL,0,0},
+ {"19",0,NULL,0,0},
+ {"20",0,NULL,0,0},
+ {"21",0,NULL,0,0},
+ {"22",0,NULL,0,0},
+ {"23",0,NULL,0,0},
+ {"24",0,NULL,0,0},
+ {"25",0,NULL,0,0},
+ {"26",0,NULL,0,0},
+ {"27",0,NULL,0,0},
+ {"28",0,NULL,0,0},
+ {"29",0,NULL,0,0},
+ {"30",0,NULL,0,0},
+ {"31",0,NULL,0,0},
+ {"66",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_lte_bandwidth[] = {
+ {"1.4M",0,NULL,0,0},
+ {"3M",0,NULL,0,0},
+ {"5M",0,NULL,0,0},
+ {"10M",0,NULL,0,0},
+ {"15M",0,NULL,0,0},
+ {"20M",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_lte_mcs[] = {
+ {"QPSK",0,NULL,0,0},
+ {"16QAM",0,NULL,0,0},
+ {"64QAM",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_fdd_sub[] = {
+ {"mode",NUM_ITEMS(rfdesense_lte_mode),rfdesense_lte_mode,0,0},
+ {"band",NUM_ITEMS(rfdesense_fdd_band),rfdesense_fdd_band,0,0},
+ {"UL Bandwidth",NUM_ITEMS(rfdesense_lte_bandwidth),rfdesense_lte_bandwidth,0,0},
+ {"UL Freq(100kHz)",NUM_ITEMS(set_get),set_get,0,0},
+ {"VRB Start(0-99)",NUM_ITEMS(set_get),set_get,0,0},
+ {"VRB Length(1-100)",NUM_ITEMS(set_get),set_get,0,0},
+ {"MCS",NUM_ITEMS(rfdesense_lte_mcs),rfdesense_lte_mcs,0,0},
+ {"Power Level(dbm)(-50_23)",NUM_ITEMS(set_get),set_get,0,0},
+};
+
+em_arry_t rfdesense_lte_fdd[] = {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_fdd_sub),rfdesense_fdd_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdd_band[] = {
+ {"33",0,NULL,0,0},
+ {"34",0,NULL,0,0},
+ {"35",0,NULL,0,0},
+ {"36",0,NULL,0,0},
+ {"37",0,NULL,0,0},
+ {"38",0,NULL,0,0},
+ {"39",0,NULL,0,0},
+ {"40",0,NULL,0,0},
+ {"41",0,NULL,0,0},
+ {"42",0,NULL,0,0},
+ {"43",0,NULL,0,0},
+ {"44",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdd_config[] = {
+ {"0",0,NULL,0,0},
+ {"1",0,NULL,0,0},
+ {"2",0,NULL,0,0},
+ {"3",0,NULL,0,0},
+ {"4",0,NULL,0,0},
+ {"5",0,NULL,0,0},
+ {"6",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdd_special[] = {
+ {"0",0,NULL,0,0},
+ {"1",0,NULL,0,0},
+ {"2",0,NULL,0,0},
+ {"3",0,NULL,0,0},
+ {"4",0,NULL,0,0},
+ {"5",0,NULL,0,0},
+ {"6",0,NULL,0,0},
+ {"7",0,NULL,0,0},
+ {"8",0,NULL,0,0},
+ {"9",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_tdd_sub[] = {
+ {"mode",NUM_ITEMS(rfdesense_lte_mode),rfdesense_lte_mode,0,0},
+ {"band",NUM_ITEMS(rfdesense_tdd_band),rfdesense_tdd_band,0,0},
+ {"UL Bandwidth",NUM_ITEMS(rfdesense_lte_bandwidth),rfdesense_lte_bandwidth,0,0},
+ {"UL Freq(100kHz)",NUM_ITEMS(set_get),set_get,0,0},
+ {"TDD Config Index",NUM_ITEMS(rfdesense_tdd_config),rfdesense_tdd_config,0,0},
+ {"TDD Special SF Config Index",NUM_ITEMS(rfdesense_tdd_special),rfdesense_tdd_special,0,0},
+ {"VRB Start(0-99)",NUM_ITEMS(set_get),set_get,0,0},
+ {"VRB Length(1-100)",NUM_ITEMS(set_get),set_get,0,0},
+ {"MCS",NUM_ITEMS(rfdesense_lte_mcs),rfdesense_lte_mcs,0,0},
+ {"Power Level(dbm)(-50_23)",NUM_ITEMS(set_get),set_get,0,0},
+};
+
+em_arry_t rfdesense_lte_tdd[] = {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_tdd_sub),rfdesense_tdd_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_cdma_band[] = {
+ {"Band 0",0,NULL,0,0},
+ {"Band 1",0,NULL,0,0},
+ {"Band 2",0,NULL,0,0},
+ {"Band 3",0,NULL,0,0},
+ {"Band 4",0,NULL,0,0},
+ {"Band 5",0,NULL,0,0},
+ {"Band 6",0,NULL,0,0},
+ {"Band 7",0,NULL,0,0},
+ {"Band 8",0,NULL,0,0},
+ {"Band 9",0,NULL,0,0},
+ {"Band 10",0,NULL,0,0},
+ {"Band 11",0,NULL,0,0},
+ {"Band 12",0,NULL,0,0},
+ {"Band 13",0,NULL,0,0},
+ {"Band 14",0,NULL,0,0},
+ {"Band 15",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_cdma_modulation[] = {
+ {"1X",0,NULL,0,0},
+ {"EVDO",0,NULL,0,0},
+};
+
+em_arry_t rfdesense_cdma_sub[] = {
+ {"Band",NUM_ITEMS(rfdesense_cdma_band),rfdesense_cdma_band,0,0},
+ {"modulation",NUM_ITEMS(rfdesense_cdma_modulation),rfdesense_cdma_modulation,0,0},
+ {"Channel(ARFCN)",NUM_ITEMS(set_get),set_get,0,0},
+ {"Power Level(dBm)",NUM_ITEMS(set_get),set_get,0,0},
+};
+
+em_arry_t rfdesense_cdma[] = {
+ {"start",0,NULL,0,0},
+ {"Parameters_set",NUM_ITEMS(rfdesense_cdma_sub),rfdesense_cdma_sub,0,0},
+ {"show default",0,NULL,0,0},
+};
+
+em_arry_t sub_tx_test[] = {
+ { "GSM", NUM_ITEMS(rfdesense_gsm),rfdesense_gsm, 1, 1 },
+ { "TDSCDMA", NUM_ITEMS(rfdesense_tdscdma), rfdesense_tdscdma, 1, 1 },
+ { "WCDMA", NUM_ITEMS(rfdesense_wcdma), rfdesense_wcdma, 1, 1 },
+ { "LTE(FDD)", NUM_ITEMS(rfdesense_lte_fdd), rfdesense_lte_fdd, 1, 1 },
+ { "LTE(TDD)", NUM_ITEMS(rfdesense_lte_tdd), rfdesense_lte_tdd, 1, 1 },
+#ifdef C2K_SUPPORT
+ { "CDMA(EVDO)", NUM_ITEMS(rfdesense_cdma), rfdesense_cdma, 1, 1 },
+ { "CDMA(1x)", NUM_ITEMS(rfdesense_cdma), rfdesense_cdma, 1, 1 },
+#endif/*C2K_SUPPORT*/
+};
+
+em_arry_t desense_test[] {
+ {"Tx Test",NUM_ITEMS(sub_tx_test),sub_tx_test,1,1},
+};
+
+em_arry_t no_support[] {
+ {"NO SUPPORT",0,NULL,0,0},
+};
+
+em_arry_t emmain[] = {
+ {"CDMA modem setting",NUM_ITEMS(c2k_modem_setting),c2k_modem_setting,0,0},
+ {"RF Desense Test ",NUM_ITEMS(desense_test),desense_test,0,0},
+ {"Modem Test",NUM_ITEMS(modemtest),modemtest,0,0},
+ {"HSPA",NUM_ITEMS(hspa),hspa,0,0},
+ {"CFU",NUM_ITEMS(cfu),cfu,0,0},
+ {"Antenna Test",NUM_ITEMS(antennatest),antennatest,0,0},
+ {"Band Mode",NUM_ITEMS(bandmode),bandmode,0,0},
+ {"IMS",NUM_ITEMS(ims),ims,0,0},
+ //{"Network Info",NUM_ITEMS(networkinfo),networkinfo,0,0},
+ {"Network Info",NUM_ITEMS(no_support),no_support,0,0},
+ {"LTE",NUM_ITEMS(lte_info),lte_info,0,0},
+ //{"GPRS Attach",NUM_ITEMS(gprs),gprs,0,0}, // replace data allow script
+ //{"NetworkSelection",NUM_ITEMS(networkselection),networkselection,0,0}, // repplace with script
+};
+typedef enum {
+ C2K_MODEM_SETTING = 0,
+ RF_DESENSE_TEST,
+ MODEM_TEST_ITEM,
+ HSPA_ITEM,
+ CFU_ITEM,
+ ANTENNATEST_ITEM,
+ BANDMODE_ITEM,
+ IMS_ITEM,
+ NO_SUPPORT,
+ //NETWORKINFO_ITEM,
+ LTE_ITEM,
+}EM_MAIN_ITEM;
+em_arry_t em = {"Telephony",NUM_ITEMS(emmain),emmain,0,0};
+int em_main(int len, int *item, int multilen, char *value[]) {
+ int testclass = item[0];
+ RLOGD("em_main testclase %d", testclass);
+ switch (testclass) {
+ case C2K_MODEM_SETTING:
+ emC2kModemSettingStart(len - 1, multilen, &item[1]);
+ break;
+ case RF_DESENSE_TEST:
+ emRfDesenseStart(len - 1, &item[1], multilen, value);
+ break;
+ case MODEM_TEST_ITEM:
+ emModemtestStart(len - 1, multilen, &item[1]);
+ break;
+ case HSPA_ITEM:
+ emHspaStart(len - 1, &item[1]);
+ break;
+ case CFU_ITEM:
+ emCfuStart(len - 1, &item[1]);
+ break;
+ case ANTENNATEST_ITEM:
+ emAntennaTestStart(len - 1, &item[1],(value != NULL ? value[0] : NULL));
+ break;
+ case BANDMODE_ITEM:
+ emBandmodeStart(len - 1, &item[1], multilen, value);
+ break;
+ case IMS_ITEM:
+ emImsStart(len - 1, &item[1], (value != NULL ? value[0] : NULL));
+ break;
+// case NETWORKINFO_ITEM:
+// emNwInfoStart(len - 1, multilen, &item[1]);
+// break;
+ case LTE_ITEM:
+ //lte_em_start(len - 1, multilen, &item[1]);
+ em_el1_start(len - 1, multilen, &item[1]);
+ break;
+ case NO_SUPPORT:
+ android::emResultNotify("don't support\n");
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+int em_start(int argc, char *argv[], RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+ RLOGD("em_start called");
+ int i = 0;
+ em_arry_t *em_test = &em;
+ em_arry_t *em_sub = NULL;
+ RLOGD("Welcome to EM %s",em_test->name);
+ char output[2048] = {0};
+ int len = 0;
+
+ if(argc < 2){
+ for(i = 0; i < em_test->subcnt; i++){
+ sprintf(output+len,"%d:%s\n",i+1,em_test->subarray[i].name);
+ len = strlen(output);
+ }
+ RLOGD("%s",output);
+ android::emResultNotify(output);
+ return 0;
+ }
+ int itemlevel = 0;
+ int select_argvi[32] = {0};
+ int current_argvi = -1;
+ for(itemlevel = 1; itemlevel < argc; itemlevel++){
+ select_argvi[itemlevel-1] = atoi(argv[itemlevel]) - 1;
+ current_argvi = select_argvi[itemlevel-1];
+ if (em_test->subcnt < current_argvi + 1) {
+ sprintf(output, "the select index %d is out of bounds, please reselect.\nfail\n",current_argvi + 1);
+ android::emResultNotify(output);
+ return -1;
+ }
+ if(em_test->subarray[current_argvi].subarray == NULL){
+ for(i = 0 ; i < (argc - itemlevel - 1); i++){
+ select_argvi[itemlevel + i] = atoi(argv[itemlevel+1+i]) - 1;
+ }
+ RLOGD("em_test->subarray[%d].name: %s",current_argvi, em_test->subarray[current_argvi].name);
+ if(strncmp(em_test->subarray[current_argvi].name,"set",3) == 0){
+ em_main(itemlevel,&select_argvi[0],(argc - itemlevel - 1),&argv[itemlevel+1]);
+ }
+ else{
+ RLOGD("item level %d",itemlevel);
+ em_main(itemlevel,&select_argvi[0],(argc - itemlevel - 1),NULL);
+ }
+ //android::emResultNotify("done\n");
+ break;
+ }else{
+ RLOGD("em_sub[%d].name: %s, itemlevel: %d, argc: %d ",current_argvi, (em_test->subarray[current_argvi].name), itemlevel, argc);
+ em_sub = &em_test->subarray[current_argvi];
+ if(itemlevel == (argc - 1)){
+ memset(output,0,2048);
+ len = 0;
+
+ for(i = 0; i < em_sub->subcnt; i++){
+ //RLOGD("%d:%s",i+1,em_sub->subarray[i].name);
+ sprintf(output+len,"%d:%s\n",i+1,em_sub->subarray[i].name);
+ len = strlen(output);
+ }
+ RLOGD("%s",output);
+ android::emResultNotify(output);
+ }
+ em_test = em_sub;
+ }
+ }
+ return 0;
+}
+
+extern void ARspRequestWithArg(int request, const char* arg, RIL_SOCKET_ID soc_id);
+
+void emSendATCommand(const char *cmd, int soc_id)
+{
+ ARspRequestWithArg(RIL_REQUEST_OEM_HOOK_RAW, cmd, (RIL_SOCKET_ID)soc_id);
+}
+
+void emEnableRadio(bool isEnable, int soc_id) {
+ //check main phone
+ ARspRequestWithArg(RIL_REQUEST_RADIO_POWER, (isEnable ? "1" : "0"), (RIL_SOCKET_ID)soc_id);
+}
+
+std::vector<std::string> getCdmaCmdArr(std::vector<std::string> cmdArray) {
+#ifndef MD_93_SUPPORT
+ return cmdArray;
+#else
+ std::vector<std::string> cmdArrayNew(2);
+ cmdArrayNew[0] = cmdArray[0];
+ cmdArrayNew[1] = cmdArray[1];
+ return cmdArrayNew;
+#endif /*MD_93_SUPPORT*/
+}
+
+int emResultNotifyWithDone(std::string str) {
+ std::string tmp = str + std::string("\ndone\n");
+ android::emResultNotify(tmp.c_str());
+ return 0;
+}
+
+int emResultNotifyEx(std::string str) {
+ std::string tmp = str + std::string("\n");
+ android::emResultNotify(tmp.c_str());
+ return 0;
+}
+
+int em_result_only_msg(std::string str) {
+ std::string tmp = str + std::string("\nonly_em_message\n");
+ android::emResultNotify(tmp.c_str());
+ return 0;
+}
+
+int em_result_notify_fail(std::string str) {
+ std::string tmp = "fail, " + str;
+ emResultNotifyWithDone(tmp);
+ return 0;
+}
+
+int em_result_notify_ok(std::string str) {
+ std::string tmp = "OK, " + str;
+ emResultNotifyWithDone(tmp);
+ return 0;
+}
+
+int em_result_notify_error(std::string str) {
+ std::string tmp = "error, " + str;
+ emResultNotifyWithDone(tmp);
+ return 0;
+}
+#endif
+