[Feature][T108][task-view-1550] GSW base code update v1453 --2 <merged ext_at>

Only Configure: No
Affected branch: GSW_V1453
Affected module: ALL
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: I742016ab3dbd47244334881dda29e9d341315b9f
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c
index 2893280..33b828b 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c
@@ -90,6 +90,9 @@
 #include "ursp.h"
 #endif
 
+#ifdef MBTK_AT_SUPPORT
+#include "mbtk_device_info.h"
+#endif
 /******************************************************************************
 *   Define
 ******************************************************************************/
@@ -1064,7 +1067,7 @@
 	utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL),
 	utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL),	
 	utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL),	
-#if defined(ATCMD_1901_CI) || defined(ATCMD_1903_CI)
+#if defined(ATCMD_1901_CI) || defined(ATCMD_1903_CI) || defined(MBTK_AT_SUPPORT)
 	utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL),
 #endif	
 };
@@ -2645,6 +2648,17 @@
 #endif
 #endif
 
+#ifdef MBTK_AT_SUPPORT
+    #define MBTK_AT_COMMAND_PARAM
+    #include "mbtk_at_tables.h"
+    #undef MBTK_AT_COMMAND_PARAM
+#endif
+
+#ifdef MBTK_AT_SUPPORT
+    #define MBTK_AT_COMMAND_FUNCTION
+    #include "mbtk_at_tables.h"
+    #undef MBTK_AT_COMMAND_FUNCTION
+#endif
 
 static utlAtCommand_T shell_commands[] = {
 	utlDEFINE_BASIC_AT_COMMAND("E",			   E_params,		atParserShellSetFunction),
@@ -3013,7 +3027,11 @@
 	utlDEFINE_EXTENDED_AT_COMMAND("*CP_MIPS", starMRD_MIPS_params, "*CP_MIPS=<a>,<f>[,<v>,<d>]", AtMrdMips, AtMrdMips),  // store or delete a communication data file (CDF) to the MRD
 	utlDEFINE_EXTENDED_AT_COMMAND("*MRD_ADF", starMRD_ADF_params, "*MRD_ADF=<a>,<f>[,<v>,<d>]", AtMrdAdf, AtMrdAdf),  // store or delete a communication data file (CDF) to the MRD
 	utlDEFINE_EXTENDED_AT_COMMAND("*MRD_CDF", starMRD_CDF_params, "*MRD_CDF=<a>,<f>[,<v>,<d>]", AtMrdCdf, AtMrdCdf),  // store or delete a communication data file (CDF) to the MRD
+#ifdef MBTK_AT_SUPPORT
+    utlDEFINE_EXTENDED_AT_COMMAND("+MRD_SN", starMRD_SN_params, "+MRD_SN=<a>,[<v>,<d>,<s>]", AtMrdSn, AtMrdSn),  // write, read or  delete the serial number to/from the MRD
+#else
 	utlDEFINE_EXTENDED_AT_COMMAND("*MRD_SN", starMRD_SN_params, "*MRD_SN=<a>,[<v>,<d>,<s>]", AtMrdSn, AtMrdSn),  // write, read or  delete the serial number to/from the MRD
+#endif
 	utlDEFINE_EXTENDED_AT_COMMAND("*MRD_IMEI", starMRD_IMEI_params, "*MRD_IMEI=<a>[,<v>,<d>,<s>,<n>]", AtMrdImei, AtMrdImei), // write, read or delete the IMEI number.
 	utlDEFINE_EXTENDED_AT_COMMAND("*CALINFO", starCALINFO_params, "*CALINFO=<a>,[<type>,<value>]", AtCalInfo, AtCalInfo),
 	utlDEFINE_EXTENDED_AT_COMMAND("*MRD_MEP", starMRD_MEP_params, "*MRD_MEP=<a>[,<v>,<d>,<cat>,<s1>[,<s2>[,<s3>,<s4>[,<s5>,<s6>,<s7>[,<s8>,<s9>[,<n>]]]]]]", AtMrdMep, AtMrdMep), // write, read or delete the MEP data.
@@ -3321,7 +3339,11 @@
 	utlDEFINE_EXTENDED_AT_COMMAND("*BTSTP", starBTSTP_params, "*BTSTP:(0,1)", ciBTSTransportProtocol, ciBTSTransportProtocol),
 #endif
 	utlDEFINE_EXTENDED_AT_COMMAND("+OPERCFG", opercfg_params, "+OPERCFG=<feature1>,<value1>[,<feature2>,<value2>,....]", ciSetOperCfg, ciSetOperCfg),
-	utlDEFINE_EXTENDED_AT_COMMAND("*ICCID", NULL,   "*ICCID:",	ciICCID,	ciICCID),
+#ifdef MBTK_AT_SUPPORT
+	utlDEFINE_EXTENDED_MBTK_AT_COMMAND("+ICCID", NULL,   "+ICCID:",	NULL,	ciICCID),
+#else
+    utlDEFINE_EXTENDED_AT_COMMAND("*ICCID", NULL,   "*ICCID:",	ciICCID,	ciICCID),
+#endif
 	utlDEFINE_EXTENDED_AT_COMMAND("*PARK", starPARK_params,   "*PARK:",	ciPARK,	ciPARK),
 	utlDEFINE_EXTENDED_AT_COMMAND("*CHECKEMER", startCheckEmer_params, "*CHECKEMER: <Emergency Call Number>", CheckEmergNumber, CheckEmergNumber),
 
@@ -3489,7 +3511,12 @@
 #endif
 #endif
 #endif
-
+	
+#ifdef MBTK_AT_SUPPORT
+    #define MBTK_AT_COMMAND_SHELL
+    #include "mbtk_at_tables.h"
+    #undef MBTK_AT_COMMAND_SHELL
+#endif
 };
 
 const utlAtCommand_T * const pshell_commands = shell_commands;
@@ -3532,6 +3559,8 @@
 pthread_mutex_t gTimeoutTableLock = PTHREAD_MUTEX_INITIALIZER;
 #ifdef MBTK_AT_SUPPORT
 
+mbtk_dev_info dev_infos = {.inited = FALSE};
+void dev_info_set(mbtk_dev_info *info);
 #define EXT_SOCKET_NAME "/tmp/atcmdext"  //LYNQ_MODFIY for gsw ext_at
 //LYNQ_MODFIY_START for gsw ext_at
 #define SOCKET_ZERO   0
@@ -3835,6 +3864,26 @@
     pthread_mutex_unlock(&s_startupMutex);
 }
 //LYNQ_MODFIY_END for gsw ext_at
+static void mbtk_at_init_complete(TelAtParserID atpIndex)
+{
+    if(dev_infos.inited)
+        return;
+
+    memset(&dev_infos, 0x0, sizeof(mbtk_dev_info));
+    CiReturnCode ret = CIRC_FAIL;
+
+    UINT32 atHandle = MAKE_AT_HANDLE(atpIndex);
+	ret = DEV_GetSerialNumId(atHandle);
+	if(ret != CIRC_SUCCESS) {
+        ERRMSG(MBKT_AT, "GET IMEI fail.");
+        return;
+	}
+
+    DBGMSG(MBKT_AT, "GET IMEI : %s.", dev_infos.imei);
+
+    dev_info_set(&dev_infos);
+	dev_infos.inited = TRUE;
+}
 #endif
 
 
@@ -4007,6 +4056,9 @@
 		{
 			unsigned char null_buf[1];
 
+#ifdef MBTK_AT_SUPPORT
+			mbtk_at_init_complete(sAtpIndex);
+#endif
 			//DBGMSG(ProcessAtChanThread3, "ProcessAtChanThread: parser_p %d run atparser to process next command\n", sAtpIndex);
 			utlAtParse(aParser_p[sAtpIndex], null_buf, 0);
 			continue;
@@ -4205,6 +4257,7 @@
 				writeATcmd2file(buffer);
 				ERRMSG(ProcessAtChanThread8, "[ProcessAtChanThread](length=%d):%s\n", received, buffer);
 #ifdef MBTK_AT_SUPPORT
+				mbtk_at_init_complete(sAtpIndex);
 //LYNQ_MODFIY_START for gsw ext_at
 				extID = sAtpIndex;
 				if(mbtk_check_extension_atcmd(buffer) == 0)
@@ -4519,6 +4572,9 @@
 #ifdef LPA_SUPPORT
                 DEFINE_SIM1_NO_INDICATION_CHANEL_DESC(TEL_SOCKET_AT_CMD_ATP_BEGIN, "atcmdLpa", FALSE),
 #endif
+#ifdef MBTK_AT_SUPPORT
+		DEFINE_MASTER_SIM_CHANEL_DESC(TEL_SOCKET_AT_CMD_ATP_BEGIN, "atcmdmbtk", FALSE),
+#endif
 	};
 
 	unsigned int i;
@@ -4747,7 +4803,11 @@
 	//
 	// Set the Manufacturer ID
 	//
-	if (utlAtParserOp(aParser_p[index], utlAT_PARSER_OP_SET_MANUFACTURER, ATM_MANUFACTURER_ID) != utlSUCCESS)
+#ifdef MBTK_AT_SUPPORT
+	if (utlAtParserOp(aParser_p[index], utlAT_PARSER_OP_SET_MANUFACTURER, MBTK_DEVICES_MANUFACTURER) != utlSUCCESS)
+#else
+    if (utlAtParserOp(aParser_p[index], utlAT_PARSER_OP_SET_MANUFACTURER, ATM_MANUFACTURER_ID) != utlSUCCESS)
+#endif
 	{
 		ERRMSG(tcInitAtParser9, "Set Manufacturer ID Error\n");
 		return FALSE;
@@ -4756,7 +4816,11 @@
 	//
 	// Set Model ID
 	//
+#ifdef MBTK_AT_SUPPORT
+    if (utlAtParserOp(aParser_p[index], utlAT_PARSER_OP_SET_MODEL, MBTK_DEVICES_MODEL) != utlSUCCESS)
+#else
 	if (utlAtParserOp(aParser_p[index], utlAT_PARSER_OP_SET_MODEL, ATM_MODEL_ID) != utlSUCCESS)
+#endif
 	{
 		ERRMSG(tcInitAtParser10, "Set Model ID Error\n");
 		return FALSE;