[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/dev_api.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/dev_api.c
index 4c9416d..16e728e 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/dev_api.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/dev_api.c
@@ -5993,7 +5993,18 @@
 			sprintf((char *)resImei, "%s", imei);
 		else
 			sprintf((char *)resImei, "%s%c", imei, DEV_GetCD(imei));
-		ATRESP( atHandle, ATCI_RESULT_CODE_OK, 0, (char *)resImei);
+
+#ifdef MBTK_AT_SUPPORT
+        extern mbtk_dev_info dev_infos;
+
+        if(strlen(dev_infos.imei) > 0) {
+            ATRESP( atHandle, ATCI_RESULT_CODE_OK, 0, (char *)resImei);
+        } else {
+            memcpy(dev_infos.imei, resImei, strlen(resImei));
+        }
+#else
+        ATRESP( atHandle, ATCI_RESULT_CODE_OK, 0, (char *)resImei);
+#endif
 	}
 	else
 	{
@@ -12797,11 +12808,18 @@
 			p += sprintf(p, "+EEMLTEINTER: %d, ", index);
 
             //phyCellId, euArfcn, rsrp, rsrq
+#ifdef MBTK_AT_SUPPORT
+			p += sprintf(p, "%d, %u, %d, %d, %d ", pLteEngmodeInterFreqInfoInd->interFreq[index].phyCellId,
+					pLteEngmodeInterFreqInfoInd->interFreq[index].euArfcn,
+					pLteEngmodeInterFreqInfoInd->interFreq[index].rsrp,
+					pLteEngmodeInterFreqInfoInd->interFreq[index].rsrq,
+					pLteEngmodeInterFreqInfoInd->interFreq[index].cellId);
+#else
 			p += sprintf(p, "%u, %u, %u, %u", pLteEngmodeInterFreqInfoInd->interFreq[index].phyCellId,
 					pLteEngmodeInterFreqInfoInd->interFreq[index].euArfcn,
 					pLteEngmodeInterFreqInfoInd->interFreq[index].rsrp,
 					pLteEngmodeInterFreqInfoInd->interFreq[index].rsrq);
-
+#endif
 			//mcc, lenOfMnc, mnc, tac, cellId
 			p += sprintf(p, "%u, %u, %u, %u, %u", pLteEngmodeInterFreqInfoInd->interFreq[index].mcc,
 					pLteEngmodeInterFreqInfoInd->interFreq[index].lenOfMnc,
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/sim_api.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/sim_api.c
index 94355a2..df9f234 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/sim_api.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/sim_api.c
@@ -6227,8 +6227,11 @@
     int size = 0;
     if(dst == NULL)
         return;
-
+#ifdef MBTK_AT_SUPPORT
+	size = snprintf(pBuf + size, sizeof(pBuf) -size, "+ICCID: \"");
+#else
     size = snprintf(pBuf + size, sizeof(pBuf) -size, "*ICCID: \"");
+#endif
     for (i = 0; i < CI_SIM_UDP_ICCID_LEN; i++) {
         low_nibble = data[i] & 0x0f;
         high_nibble = (data[i] & 0xf0) >> 4;
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/telatci.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/telatci.c
index 29df523..ec1904c 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/telatci.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/telatci.c
@@ -143,6 +143,9 @@
 extern int gCurrentCgerepMode[NUM_OF_TEL_ATP];
 extern int gRequestCgerepMode[NUM_OF_TEL_ATP];
 
+#ifdef MBTK_AT_SUPPORT
+extern bool mbtk_urc_enable;
+#endif
 
 extern UINT8 GetMsgWaitCount(void);
 /**********************************************************************
@@ -1358,6 +1361,11 @@
 	if(((atHandle == IND_REQ_HANDLE) ||(atHandle == IND_REQ_HANDLE_1))
 		&&(respString != NULL)){
 
+        #ifdef MBTK_AT_SUPPORT
+        if(!mbtk_urc_enable) {
+            return 0;
+        }
+        #endif
 		//DBGMSG(atRespStr2, "PROXY_DEBUG -atRespStr,%d- received an indication  str %s\n ",
 		//	__LINE__, respString);
 
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;
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/teldev.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/teldev.c
index c05808e..0337fd3 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/teldev.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/teldev.c
@@ -48,6 +48,10 @@
 #include <unistd.h>
 #include <sys/wait.h>
 
+#ifdef MBTK_AT_SUPPORT
+#include "mbtk_device_info.h"
+#endif
+
 extern char * getAsrFlagPath(void);
 extern unsigned char *cp_set_ddr_flag(int offset, unsigned int value);
 char internalRevisionId[MAX_INTERNALREVISION_ID_LENGTH + 1] = "unknown";
@@ -9091,7 +9095,11 @@
 	{
 		case TEL_EXT_ACTION_CMD:	  /* AT+ZVN */
 		{
-			sprintf(respbuf, "%s", VENDOR_SW_VERSION);
+#ifdef MBTK_AT_SUPPORT
+			sprintf(respbuf, "%s", MBTK_DEVICES_REVISION);
+#else
+            sprintf(respbuf, "%s", VENDOR_SW_VERSION);
+#endif
 			ret = ATRESP( atHandle, ATCI_RESULT_CODE_OK, 0, respbuf);
 			break;
 		}
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/telprod.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/telprod.c
index 74b4fe4..d107523 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/telprod.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/telprod.c
@@ -2013,7 +2013,11 @@
 					{
 						case MRD_FILE_NOT_FOUND_ERROR :
 						{
+#ifdef MBTK_AT_SUPPORT
+                            ret = ATRESP( atHandle,ATCI_RESULT_CODE_OK, 0, NULL);
+#else
 							ret = ATRESP( atHandle,ATCI_RESULT_CODE_CME_ERROR,CME_NOT_FOUND, NULL);
+#endif
 							break;
 						}
 						case MRD_NO_ERROR :
@@ -2058,7 +2062,11 @@
 							strncpy(Datebuf,ctime((time_t *)&lDate),24);//ignore '\n'
 						}
 						Datebuf[24] = '\0';
+#ifdef MBTK_AT_SUPPORT
+						sprintf(Buf,"%s:%s,%s,%s\n\r", command_name_p, Version, Datebuf, serial);
+#else
 						sprintf(Buf,"*MRD_SN:%s,%s,%s\n\r", Version, Datebuf, serial);
+#endif
 						ret = ATRESP( atHandle,ATCI_RESULT_CODE_OK,0, Buf);
 					}
 					else// Missing SN
@@ -2094,7 +2102,11 @@
 					break;
 				}
 
-				sprintf(Buf,"*MRD_SN:%s\n\r", serial);
+#ifdef MBTK_AT_SUPPORT
+				sprintf(Buf,"%s:%s\n\r", command_name_p, serial);
+#else
+                sprintf(Buf,"*MRD_SN:%s\n\r", serial);
+#endif
 				ret = ATRESP( atHandle,ATCI_RESULT_CODE_OK, 0, Buf);
 			}
 			else
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/telsim.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/telsim.c
index 04cfc93..9f5e766 100644
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/telsim.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/telsim.c
@@ -3620,7 +3620,11 @@
 
 	switch (op)
 	{
+#ifdef MBTK_AT_SUPPORT	
+	case TEL_EXT_ACTION_CMD:           /* AT+ICCID  */
+#else
 	case TEL_EXT_GET_CMD:           /* AT*ICCID?  */
+#endif	
 	{
         //INFOMSG(ciICCID1, "SIM_GetICCID");
         ret = SIM_GetICCID(atHandle);
@@ -3628,7 +3632,11 @@
 	}
 	case TEL_EXT_SET_CMD:           /* AT*ICCID=*/
 	case TEL_EXT_TEST_CMD:          /* AT*ICCID=? */
+#ifdef MBTK_AT_SUPPORT
+	case TEL_EXT_GET_CMD:           /* AT+ICCID?  */
+#else	
 	case TEL_EXT_ACTION_CMD:        /* AT*ICCID */
+#endif	
 	default:
 	{
 		ret = ATRESP( atHandle, ATCI_RESULT_CODE_CME_ERROR, CME_OPERATION_NOT_SUPPORTED, NULL);