[Bugfix][T108][bug-view-2106] Add AT CMD *DIAGSWITCH=diag_media,saveflag;diag_media type{USB,SD,TCP,FS}save flag{0,1} to fix RF test error.
Only Configure: No
Affected branch: GSW_V1453
Affected module: log
Self-test: yes
Doc Update: no
Change-Id: I6fd4d521a7d0d19ee89bf16a2586366fd557b4d7
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/inc/teldbg.h b/marvell/lte-telephony/apps/atcmd_server_ss/inc/teldbg.h
index ea76e32..c7299cf 100755
--- a/marvell/lte-telephony/apps/atcmd_server_ss/inc/teldbg.h
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/inc/teldbg.h
@@ -66,6 +66,6 @@
RETURNCODE_T mbtk_GPSFwdl(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
#endif
RETURNCODE_T ciCMTLRA(const utlAtParameterOp_T op,const char *command_name_p,const utlAtParameterValue_P2c parameter_values_p,const size_t num_parameters,const char *info_text_p,unsigned int *xid_p,void *arg_p);
-
+RETURNCODE_T diagMediaSwitch(const utlAtParameterOp_T op,const char *command_name_p,const utlAtParameterValue_P2c parameter_values_p,const size_t num_parameters,const char *info_text_p,unsigned int *xid_p,void *arg_p);
#endif
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 28f02a0..7650364 100755
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/telcontroller.c
@@ -822,6 +822,8 @@
utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL),};
static utlAtParameter_T plusAPLOG_params[] = { utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_REQUIRED) };
+
+static utlAtParameter_T starDIAGSWITCH_params[] = { utlDEFINE_STRING_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_REQUIRED), utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_OPTIONAL)};
static utlAtParameter_T plusRDUP_params[] = { utlDEFINE_DECIMAL_AT_PARAMETER( utlAT_PARAMETER_ACCESS_READ_WRITE, utlAT_PARAMETER_PRESENCE_REQUIRED) };
// support AT+VPDUS
@@ -2951,7 +2953,9 @@
utlDEFINE_EXTENDED_AT_COMMAND("+VHDL", NULL, "+VHDL: (Show Handle)", vHDL, vHDL),
utlDEFINE_EXTENDED_AT_COMMAND("+VECHO", plusVECHO_params, "+VECHO: ", vECHO, vECHO),
utlDEFINE_EXTENDED_AT_COMMAND("+APLOG", plusAPLOG_params, "+APLOG: (0-255)", apLog, apLog),
-
+
+ utlDEFINE_EXTENDED_AT_COMMAND("*DIAGSWITCH", starDIAGSWITCH_params, "*DIAGSWITCH: <diag_media>[,0-1]", diagMediaSwitch, diagMediaSwitch),
+
utlDEFINE_EXTENDED_AT_COMMAND("+RDUP", plusRDUP_params, "+RDUP: (0-1)", ciRdup, ciRdup),
// debug atcommand for +cgsend *tgsink.
diff --git a/marvell/lte-telephony/apps/atcmd_server_ss/src/teldbg.c b/marvell/lte-telephony/apps/atcmd_server_ss/src/teldbg.c
index 631470c..cf35bcb 100755
--- a/marvell/lte-telephony/apps/atcmd_server_ss/src/teldbg.c
+++ b/marvell/lte-telephony/apps/atcmd_server_ss/src/teldbg.c
@@ -1196,6 +1196,93 @@
return(rc);
}
+/*******************************************************************
+* FUNCTION: diagMediaSwitch
+*
+* DESCRIPTION: Used to control the diag media
+*
+* PARAMETERS:
+*
+* RETURNS:
+*
+*******************************************************************/
+utlReturnCode_T diagMediaSwitch( const utlAtParameterOp_T op,
+ const char *command_name_p,
+ const utlAtParameterValue_P2c parameter_values_p,
+ const size_t num_parameters,
+ const char *info_text_p,
+ unsigned int *xid_p,
+ void *arg_p)
+{
+ UNUSEDPARAM(command_name_p)
+ UNUSEDPARAM(parameter_values_p)
+ UNUSEDPARAM(num_parameters)
+ UNUSEDPARAM(info_text_p)
+
+ TelAtParserID sAtpIndex;
+ int save = 0, err = 0;
+ CHAR diag_media[8] = {0};
+ INT16 strLen = 0;
+ CHAR returnStr[32] = {0};
+ CHAR cmdStr[32] = {0};
+ sAtpIndex = *(TelAtParserID *)arg_p;
+ *xid_p = MAKE_AT_HANDLE(sAtpIndex);
+ CiReturnCode ret = CIRC_FAIL;
+ RETURNCODE_T rc = INITIAL_RETURN_CODE;
+
+ memset(diag_media, '\0', sizeof(diag_media));
+
+ switch ( op )
+ {
+ case TEL_EXT_SET_CMD: /* AT*DIAGSWITCH= */
+ {
+
+ if( getExtString( parameter_values_p, 0, (CHAR *)diag_media, 8, &strLen, NULL ) == TRUE )
+ {
+ if ( getExtValue( parameter_values_p, 1, &save, 0, 1, 0) == TRUE )
+ {
+ ERRMSG(diagMediaSwitch001, "%s: diag_media=%s, save=%u\n", __FUNCTION__, diag_media, save);
+ if (strLen > 0)
+ {
+ if (save > 0)
+ {
+ memset(returnStr, 0x00, sizeof(returnStr));
+ memset(cmdStr, 0x00, sizeof(cmdStr));
+ snprintf(cmdStr, sizeof(cmdStr), "/bin/diagcmd save %s", diag_media);
+ err = executeShellCMD(cmdStr, returnStr);
+ ERRMSG(diagMediaSwitch002, "%s: err=%d, returnStr=%s\n", __FUNCTION__, err, returnStr);
+ }
+
+ memset(returnStr, 0x00, sizeof(returnStr));
+ memset(cmdStr, 0x00, sizeof(cmdStr));
+ snprintf(cmdStr, sizeof(cmdStr), "/bin/diagcmd switch %s", diag_media);
+ err = executeShellCMD(cmdStr, returnStr);
+ ERRMSG(diagMediaSwitch003, "%s: err=%d, returnStr=%s\n", __FUNCTION__, err, returnStr);
+ }
+
+ ret = ATRESP(*xid_p, ATCI_RESULT_CODE_OK, 0, NULL);
+ }
+ }
+ else
+ {
+ ret = ATRESP( *xid_p, ATCI_RESULT_CODE_CME_ERROR, CME_INVALID_PARAM, NULL );
+ }
+ break;
+ }
+
+ case TEL_EXT_GET_CMD: /* AT*DIAGSWITCH? */
+ default:
+ {
+ ret = ATRESP( *xid_p, ATCI_RESULT_CODE_CME_ERROR, CME_OPERATION_NOT_SUPPORTED, NULL );
+ break;
+ }
+ }
+
+ /* handle the return value */
+ rc = HANDLE_RETURN_VALUE(ret);
+
+ return(rc);
+}
/*******************************************************************
* FUNCTION: ciRdup
diff --git a/marvell/lte-telephony/apps/diag/command_api.c b/marvell/lte-telephony/apps/diag/command_api.c
index 3a541fe..1e54ea2 100644
--- a/marvell/lte-telephony/apps/diag/command_api.c
+++ b/marvell/lte-telephony/apps/diag/command_api.c
@@ -223,7 +223,19 @@
sleep(3); // wait for CP to disconnect
exit(0);
}
-
+ else if (strcasecmp(command,"save") == 0) /* save default media */
+ {
+ ret = getMediaByName(arg);
+ if(ret >= 0)
+ {
+ save_diag_default_media_config(ret);
+ reply = response_success;
+ }
+ else
+ {
+ reply = response_error;
+ }
+ }
(void)sendReply(clients[client_id].fd, reply, reply_arg);
}
diff --git a/marvell/lte-telephony/apps/diag/diag_config.c b/marvell/lte-telephony/apps/diag/diag_config.c
index 569ede1..ef00c93 100644
--- a/marvell/lte-telephony/apps/diag/diag_config.c
+++ b/marvell/lte-telephony/apps/diag/diag_config.c
@@ -366,3 +366,37 @@
return 0;
}
+int save_diag_default_media_config(int default_media)
+{
+ void * pRoot = NULL;
+ int ret;
+ int tmpVal = 0;
+
+ if ((default_media >= diagNoConnection) && (default_media <= diagFSConnection))
+ {
+ pRoot = mrvl_open_tel_cfg(file_name,FILE_FORMAT);
+ if (pRoot)
+ {
+ ret = mrvl_set_int_value(pRoot, "SystemSettings/default_media", default_media);
+ //ERRMSG("%s: default_media=%d", __FUNCTION__, default_media);
+ if (ret == 0)
+ {
+ diagConfig.sys_settings.default_media = default_media;
+ ret = mrvl_save_tel_cfg(file_name, &pRoot);
+ }
+
+ if(ret < 0)
+ {
+ ERRMSG("failed to save diag config");
+ if (pRoot)
+ {
+ free(pRoot);
+ pRoot = NULL;
+ }
+ return -1;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/marvell/lte-telephony/apps/diag/diag_config.h b/marvell/lte-telephony/apps/diag/diag_config.h
index 9e237f9..445d4ce 100755
--- a/marvell/lte-telephony/apps/diag/diag_config.h
+++ b/marvell/lte-telephony/apps/diag/diag_config.h
@@ -105,7 +105,7 @@
void LogcatTaskResume(ActiveConnectionType type);
void LogcatTaskSuspend(ActiveConnectionType type);
int change_sdlogfolderNum(void);
-
+int save_diag_default_media_config(int default_media);
extern unsigned int DiagProdMode;
extern struct diagConfiguration_tag diagConfig;