فهرست منبع

BT6706: 1)add new cmd netconfig (telnet)
2)add info about UPS in info cmd (telnet)
3)add status in sensor info (telnet)

balbekova 7 سال پیش
والد
کامیت
50655d1ad9
5فایلهای تغییر یافته به همراه363 افزوده شده و 90 حذف شده
  1. 276 85
      modules/Telnet_Server/CLI_Commands.c
  2. 7 2
      modules/Telnet_Server/CLI_Commands.h
  3. 12 1
      modules/Telnet_Server/CLI_Parameters.c
  4. 53 2
      modules/parameters.c
  5. 15 0
      modules/parameters.h

+ 276 - 85
modules/Telnet_Server/CLI_Commands.c

@@ -48,8 +48,9 @@ extern state_telnet_server_t telnetState;
 extern uint8_t id_change_pwd;
 
 
-const int8_t * const pcInvalidCommand = ( int8_t * ) "Command invalid.  Enter \"help\" to view a list of available commands.\r\n\r\n";
-const int8_t * const pcPermissionDenied = ( int8_t * ) "Permission denied!\r\n\r\n";
+const int8_t * const pcInvalidCommand = ( int8_t * ) "Неправильно введены параметры команды.  Введите \"help\" для просмотра списка поддерживаемых команд.\r\n\r\n";
+const int8_t * const pcPermissionDenied = ( int8_t * ) "Отказ в доступе!\r\n\r\n";
+
 
 const char* info_args_list[] =
 {
@@ -98,6 +99,10 @@ const char* config_args_list[] =
 {
 	"info",
 	"load",
+};
+
+const char* netconfig_args_list[] =
+{
 	"apply",
 	"confirm",
 };
@@ -111,6 +116,7 @@ const char* history_args_list[] =
 const char* sensor_args_list[] =
 {
 	"info",
+	"setup",
 };
 
 const char* user_args_list[] =
@@ -165,6 +171,11 @@ static portBASE_TYPE prvTaskUserCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
  */
 static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
 
+/*
+ * Implements the netconfig command.
+ */
+static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
+
 /*
  * Implements the history command.
  */
@@ -277,13 +288,22 @@ static const CLI_Command_Definition_t prvConfigCommandDefinition =
 {
 	( const int8_t * const ) "config", /* The command string to type. */
 	( const int8_t * const ) "\tconfig info: вывод информации о состоянии конфигураций\r\n"
-	 	 	 	 	 	 	 "\tconfig load default: загрузка конфигурации по умолчанию\r\n"
-	 	 	 	 	 	 	 "\tconfig apply: применение конфигурации\r\n"
-	 	 	 	 	 	 	 "\tconfig confirm: подтверждение конфигурации\r\n",
+	 	 	 	 	 	 	 "\tconfig load default: загрузка конфигурации по умолчанию\r\n",
 	prvTaskConfigCommand, /* The function to run. */
 	-1 /* Two parameters are expected, which can take any value. */
 };
 
+/* Structure that defines the "config" command line command.   This
+generates a table that shows how much run time each task has */
+static const CLI_Command_Definition_t prvNetConfigCommandDefinition =
+{
+	( const int8_t * const ) "netconfig", /* The command string to type. */
+	( const int8_t * const ) "\tnetconfig apply: применение конфигурации сетевых настроек\r\n"
+	 	 	 	 	 	 	 "\tnetconfig confirm: подтверждение конфигурации сетевых настроек\r\n",
+	prvTaskNetConfigCommand, /* The function to run. */
+	1 /* Two parameters are expected, which can take any value. */
+};
+
 /* Structure that defines the "history" command line command.   This
 generates a table that shows how much run time each task has */
 static const CLI_Command_Definition_t prvHistoryCommandDefinition =
@@ -298,10 +318,19 @@ static const CLI_Command_Definition_t prvHistoryCommandDefinition =
 generates a table that shows how much run time each task has */
 static const CLI_Command_Definition_t prvSensorCommandDefinition =
 {
-	( const int8_t * const ) "sensor info", /* The command string to type. */
-	( const int8_t * const ) "\tsensor info: вывод параметров системы\r\n",
+	( const int8_t * const ) "sensor", /* The command string to type. */
+	( const int8_t * const ) "\tsensor info: вывод параметров системы\r\n"
+								"\tsensor 	setup DI <num> <state>: установка нормального состояния сухого контакта:\r\n"
+								"\t\t\t\t0 - разомкнутое состояние\r\n"
+								"\t\t\t\t1 - замкнутое состояние\r\n"
+								"\tsensor 	setup DO <num> <issue>: установка источника срабатывания реле:\r\n"
+								"\t\t\t\t1 - Наличие сети\r\n"
+								"\t\t\t\t2 - Наличие выходного напряжения\r\n"
+								"\t\t\t\t3 - Разряд АКБ\r\n"
+								"\t\t\t\t4 - Отклбчение АКБ\r\n"
+								"\t\t\t\t5 - SNMP SET\r\n",
 	prvTaskSensorCommand, /* The function to run. */
-	1 /* No parameters are expected. */
+	-1 /* No parameters are expected. */
 };
 
 /* Structure that defines the "firmware dowmload http" command line command.   This
@@ -345,6 +374,7 @@ void vRegisterCLICommands( void )
 	FreeRTOS_CLIRegisterCommand( &prvSNMPCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvUserCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvConfigCommandDefinition );
+	FreeRTOS_CLIRegisterCommand( &prvNetConfigCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvHistoryCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvSensorCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvUploadCommandDefinition );
@@ -361,6 +391,7 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 	uint8_t len;
 	int8_t num_arg = 0;
 	uint8_t i;
+	static uint8_t page = 0;
 
 	( void ) pcCommandString;
 	( void ) xWriteBufferLen;
@@ -370,51 +401,72 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 	memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
 	if(num_arg == 0){
 		const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n**************Информация о Контроллере**************\r\n";
-		/* Return the next command help string, before moving the pointer on to
-		the next command in the list. */
-		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
+		const int8_t * const pcUPSInfoTableHeader = ( int8_t * ) "\r\n*****************Информация об ИБП******************\r\n";
+		if(!page){
+			/* Return the next command help string, before moving the pointer on to
+			the next command in the list. */
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
 
-		GetWorkTimeStr(str, &len);
-		strcat(( char * ) pcWriteBuffer, "Время работы:\t\t\t");
-		strncat(( char * ) pcWriteBuffer, str, len);
+			GetWorkTimeStr(str, &len);
+			strcat(( char * ) pcWriteBuffer, "Время работы:\t\t\t");
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
-		GetModelStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
+			GetModelStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nДата производства:\t\t");
-		GetProductionDataStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nДата производства:\t\t");
+			GetProductionDataStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
-		GetVersionStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
+			GetVersionStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nMAC адрес:\t\t\t");
-		GetMacStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nMAC адрес:\t\t\t");
+			GetMacStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nСерийный номер:\t\t\t");
-		GetSerialNumberStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nСерийный номер:\t\t\t");
+			GetSerialNumberStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nВладелец:\t\t\t");
-		GetOwnerStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nВладелец:\t\t\t");
+			GetOwnerStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nМестоположение:\t\t\t");
-		GetLocationStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nМестоположение:\t\t\t");
+			GetLocationStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\nКомментарии:\t\t\t");
-		GetCommentsStr(str, &len);
-		strncat(( char * ) pcWriteBuffer, str, len);
+			strcat(( char * ) pcWriteBuffer, "\r\nКомментарии:\t\t\t");
+			GetCommentsStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
 
-		strcat(( char * ) pcWriteBuffer, "\r\n");
+			page = 1;
+			xReturn = pdTRUE;
+		}
+		else{
 
-		/* There are no more commands in the list, so there will be no more
-		strings to return after this one and pdFALSE should be returned. */
-		xReturn = pdFALSE;
+			strncat( ( char * ) pcWriteBuffer, ( const char * ) pcUPSInfoTableHeader, strlen( ( char * ) pcUPSInfoTableHeader ) );
+
+			strcat(( char * ) pcWriteBuffer, "\r\nКомпания:\t\t\tАО\"НПК РоТеК\"");
+
+			strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
+			GetUPSModelStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
+
+			strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
+			GetUPSVersionStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
+
+			strcat(( char * ) pcWriteBuffer, "\r\n");
+
+			page = 0;
+			/* There are no more commands in the list, so there will be no more
+			strings to return after this one and pdFALSE should be returned. */
+			xReturn = pdFALSE;
+		}
 	}
 	else if(num_arg == 1)
 	{
@@ -430,7 +482,7 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 																	&xParameterStringLength	/* Store the parameter string length. */
 																);
 		for(i = 0; i < INFO_ALL_ARGS; i ++){
-			if( strncmp( ( const char * ) pcParameterString, info_args_list[i], xParameterStringLength ) == 0 ){
+			if( strncmp( ( const char * ) pcParameterString, info_args_list[i], strlen(info_args_list[i]) ) == 0 ){
 				break;
 			}
 		}
@@ -559,7 +611,7 @@ static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWrite
 			return pdFALSE;
 		}
 		for(i = 0; i < ARG_SYSTIME_ALL; i ++){
-			if( strncmp( ( const char * ) pcParameterString, systime_args_list[i], xParameterStringLength ) == 0 ){
+			if( strncmp( ( const char * ) pcParameterString, systime_args_list[i], strlen(systime_args_list[i]) ) == 0 ){
 				break;
 			}
 		}
@@ -708,7 +760,7 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
 	}
 
 	for(i = 0; i < ARG_NTP_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], strlen(ntp_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -890,7 +942,7 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
 	}
 
 	for(i = 0; i < ARG_NETWORK_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, network_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, network_args_list[i], strlen(network_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1018,7 +1070,7 @@ static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 	}
 
 	for(i = 0; i < ARG_SNMP_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], strlen(snmp_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1192,7 +1244,7 @@ static portBASE_TYPE prvTaskUserCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 	}
 
 	for(i = 0; i < ARG_USER_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, user_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, user_args_list[i], strlen(user_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1252,7 +1304,6 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
 	char str[110];
 	uint8_t i;
 	static uint8_t config_menu = 0;
-	static start = 0;
 
 	const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n*********Конфигурация Контроллера*********\r\n";
 
@@ -1274,7 +1325,7 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
 	}
 
 	for(i = 0; i < ARG_CONFIG_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, config_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, config_args_list[i], strlen(config_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1322,37 +1373,6 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
 				return pdTRUE;
 			}
 			break;
-		case ARG_CONFIG_APPLY:
-			if(!start){
-			  /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */
-			  if (GetStateWebReinit() == true)
-			  {
-				  start = 1;
-#ifdef HARDWARE_BT6706
-			  telnet_act = true;
-#endif
-				SetWebReinitFlag(true);
-				HTTP_SaveSettings();
-				strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сохранены! Контроллер будет перезагружен\r\n\tПосле перезагрузки подтвердите изменения сетевых настроек\r\n");
-				return pdTRUE;
-
-			  }
-			}
-			else{
-#ifdef HARDWARE_BT6706
-			  telnet_act = true;
-#endif
-				start = 0;
-				vTaskDelay(1010);
-				Reboot();
-			}
-			break;
-		case ARG_CONFIG_CONFIRM:
-			telnet_act = true;
-			SetWebReinitFlag(false);
-			SetConfirmWebParamsFlag();
-			strcpy( ( char * ) pcWriteBuffer, "\t\tСетевые настройки подтверждены!\r\n");
-			break;
 		default:
 			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
 			break;
@@ -1393,6 +1413,81 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
 	return xReturn;
 }
 
+/*
+ * Implements the config command.
+ */
+static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
+	int8_t *pcParameterString;
+	portBASE_TYPE xParameterNumber = 1;
+	signed portBASE_TYPE xParameterStringLength;
+	uint8_t i;
+	static start = 0;
+
+	( void ) pcCommandString;
+	( void ) xWriteBufferLen;
+	configASSERT( pcWriteBuffer );
+
+	memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
+	/* Obtain the parameter string. */
+	pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
+															(
+																pcCommandString,		/* The command string itself. */
+																xParameterNumber,		/* Return the next parameter. */
+																&xParameterStringLength	/* Store the parameter string length. */
+															);
+
+	for(i = 0; i < ARG_NETCONFIG_ALL; i ++){
+		if( strncmp( ( const char * ) pcParameterString, netconfig_args_list[i], strlen(netconfig_args_list[i]) ) == 0 ){
+			break;
+		}
+	}
+
+	if(telnet_code_auth != ADMIN){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
+		return pdFALSE;
+	}
+
+	switch(i){
+	case ARG_NETCONFIG_APPLY:
+		if(!start){
+		  /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */
+		  if (GetStateWebReinit() == true)
+		  {
+			  start = 1;
+#ifdef HARDWARE_BT6706
+		  telnet_act = true;
+#endif
+			SetWebReinitFlag(true);
+			HTTP_SaveSettings();
+			strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сохранены! Контроллер будет перезагружен\r\n\tПосле перезагрузки подтвердите изменения сетевых настроек\r\n");
+			return pdTRUE;
+
+		  }
+		}
+		else{
+#ifdef HARDWARE_BT6706
+		  telnet_act = true;
+#endif
+			start = 0;
+			vTaskDelay(1010);
+			Reboot();
+		}
+		break;
+	case ARG_NETCONFIG_CONFIRM:
+		telnet_act = true;
+		SetWebReinitFlag(false);
+		SetConfirmWebParamsFlag();
+		strcpy( ( char * ) pcWriteBuffer, "\t\tСетевые настройки подтверждены!\r\n");
+		break;
+	default:
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		break;
+	}
+
+	return pdFALSE;
+
+}
+
 /*
  * Implements the history command.
  */
@@ -1441,7 +1536,7 @@ static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWrite
 															);
 
 	for(i = 0; i < ARG_HISTORY_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, history_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, history_args_list[i], strlen(history_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1545,6 +1640,10 @@ static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteB
 	signed portBASE_TYPE xParameterStringLength, xReturn;
 	portBASE_TYPE xParameterNumber = 1;
 	uint8_t i;
+	char str[10];
+	char temp_str[10];
+	int32_t val = 0, val2 = 0;
+	uint8_t fail = 0;
 	static uint8_t config_menu = 0;
 
 	const int8_t * const pcSensorTableHeader = ( int8_t * ) "\r\n*********Параметры Контроллера*********\r\n";
@@ -1567,7 +1666,7 @@ static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteB
 	}
 
 	for(i = 0; i < ARG_SENSOR_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], strlen(sensor_args_list[i]) ) == 0 ){
 			break;
 		}
 	}
@@ -1611,9 +1710,101 @@ static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteB
 		}
 	}
 	else{
-		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		switch(i){
+		case ARG_SENSOR_SETUP:
+			if(telnet_code_auth != ADMIN){
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
+				return pdFALSE;
+			}
+			memset(str, 0, sizeof(str));
+			if(xParameterStringLength > (int32_t)sizeof(str))
+				xParameterStringLength = sizeof(str) - 1;
+			strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
+			if(xParameterStringLength < 3){
+				xParameterNumber ++;
+				/* Obtain the parameter string. */
+				pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
+																		(
+																			pcCommandString,		/* The command string itself. */
+																			xParameterNumber,		/* Return the next parameter. */
+																			&xParameterStringLength	/* Store the parameter string length. */
+																		);
+				memset(temp_str, 0, sizeof(str));
+				if(xParameterStringLength > 1){
+					fail = 1;
+					break;
+				}
+				strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
+				if(!isdigit_int(temp_str[0])){
+					fail = 1;
+					break;
+				}
+				val = atoi(temp_str);
+
+				xParameterNumber ++;
+				/* Obtain the parameter string. */
+				pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
+																		(
+																			pcCommandString,		/* The command string itself. */
+																			xParameterNumber,		/* Return the next parameter. */
+																			&xParameterStringLength	/* Store the parameter string length. */
+																		);
+				memset(temp_str, 0, sizeof(str));
+				if(xParameterStringLength > 1){
+					fail = 1;
+					break;
+				}
+				strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
+				if(!isdigit_int(temp_str[0])){
+					fail = 1;
+					break;
+				}
+				if(strncmp(str, "DI", 2) == 0){
+					if(val != 1){
+						fail = 1;
+						break;
+					}
+
+					val2 = atoi(temp_str);
+					if(val2 < 0 || val2 > 1){
+						fail = 1;
+						break;
+					}
+					SetDINTypeActStr(temp_str, (val - 1));
+					SETTINGS_Save();
+					log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+
+				}
+				else if(strncmp(str, "DO", 2) == 0){
+					if(val < 1 || val > 3){
+						fail = 1;
+						break;
+					}
+
+					val2 = atoi(temp_str);
+					if(val2 < 1 || val2 > 5){
+						fail = 1;
+						break;
+					}
+					SetROTypeActStr(temp_str, (val - 1));
+					SETTINGS_Save();
+					log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+				}
+			}
+			else{
+				fail = 1;
+			}
+
+		break;
+		default:
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		break;
+		}
 	}
 
+	if(fail)
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+
 	xReturn = pdFALSE;
 
 
@@ -1679,7 +1870,7 @@ static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
 																&xParameterStringLength	/* Store the parameter string length. */
 															);
 	for(i = 0; i < ARG_UPS_ALL; i ++){
-		if( strncmp( ( const char * ) pcParameterString, ups_args_list[i], xParameterStringLength ) == 0 ){
+		if( strncmp( ( const char * ) pcParameterString, ups_args_list[i], strlen(ups_args_list[i]) ) == 0 ){
 			break;
 		}
 	}

+ 7 - 2
modules/Telnet_Server/CLI_Commands.h

@@ -55,11 +55,15 @@ typedef enum{
 typedef enum{
 	ARG_CONFIG_INFO = 0,
 	ARG_CONFIG_LOAD,
-	ARG_CONFIG_APPLY,
-	ARG_CONFIG_CONFIRM,
 	ARG_CONFIG_ALL
 }config_args_t;
 
+typedef enum{
+	ARG_NETCONFIG_APPLY = 0,
+	ARG_NETCONFIG_CONFIRM,
+	ARG_NETCONFIG_ALL
+}netconfig_args_t;
+
 typedef enum{
 	ARG_HISTORY_EVENTS = 0,
 	ARG_HISTORY_UPS,
@@ -68,6 +72,7 @@ typedef enum{
 
 typedef enum{
 	ARG_SENSOR_INFO = 0,
+	ARG_SENSOR_SETUP,
 	ARG_SENSOR_ALL
 }sensor_args_t;
 

+ 12 - 1
modules/Telnet_Server/CLI_Parameters.c

@@ -214,8 +214,11 @@ void ups_sensor_param(int8_t *buf)
 	char str[20];
 	uint8_t len = 0;
 
+	GetConnectUPSAlarmStr(str, &len);
+	strcat(( char * ) buf, "\r\nСвязь с ИБП:\t\t\t\t");
+	strncat(( char * ) buf, str, len);
 
-	const int8_t * const pcUPSInfoTableHeader = ( int8_t * ) "\r\n***********Параметры источника питания***********\r\n";
+	const int8_t * const pcUPSInfoTableHeader = ( int8_t * ) "\r\n\r\n***********Параметры источника питания***********\r\n";
 	/* Return the next command help string, before moving the pointer on to
 	the next command in the list. */
 	strncat( ( char * ) buf, ( const char * ) pcUPSInfoTableHeader, strlen( ( char * ) pcUPSInfoTableHeader ) );
@@ -240,6 +243,10 @@ void ups_sensor_param(int8_t *buf)
 	GetUPSModeStr(str, &len);
 	strncat(( char * ) buf, str, len);
 
+	strcat(( char * ) buf, "\r\nСтатус:\t\t\t\t\t");
+	GetUPSAlarmStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
 	strcat(( char * ) buf, "\r\n");
 }
 
@@ -266,6 +273,10 @@ void ups_sensor_akb_param(int8_t *buf)
 	GetRuntimeStr(str, &len);
 	strncat(( char * ) buf, str, len);
 
+	strcat(( char * ) buf, "\r\nСтатус:\t\t\t\t\t");
+	GetAKBAlarmStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
 	strcat(( char * ) buf, "\r\n");
 }
 

+ 53 - 2
modules/parameters.c

@@ -19,6 +19,9 @@
 #include "snmp_api.h"
 #include "snmp.h"
 #include "megatec.h"
+#ifdef HARDWARE_BT6706
+#include "telnet_server.h"
+#endif
 #endif
 #include "sntp.h"
 #include "lwip/snmp.h"
@@ -36,6 +39,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <math.h>   
+
 //#endif
 /**
   * @brief  Структура для хранения состояний дискретных входов
@@ -167,6 +171,52 @@ void GetAlarmStr(char *str, uint8_t *len)
 
 }
 
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetUPSAlarmStr(char *str, uint8_t *len)
+{
+	if(((UPS.Status>>7)&0x01) || ((UPS.Status>>4)&0x01) || (UPS.Alarm & 0x01))
+		strcpy(str, "Авария");
+	else if(!((UPS.Status>>7)&0x01) && !((UPS.Status>>4)&0x01) && !(UPS.Alarm & 0x01))
+		strcpy(str, "Норма");
+	else if(((UPS.Status>>1)&0x01))
+		strcat(str, "/Отключение нагрузки");
+
+	*len = strlen(str);
+
+}
+
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetAKBAlarmStr(char *str, uint8_t *len)
+{
+	if(((UPS.Status>>6)&0x01) || ((UPS.Alarm>>1) & 0x01))
+		strcpy(str, "Авария");
+	else if(!((UPS.Status>>6)&0x01) && !((UPS.Alarm>>1) & 0x01))
+		strcpy(str, "Норма");
+	else if(((UPS.Status>>2)&0x01))
+		strcat(str, "/Тестирование");
+
+	*len = strlen(str);
+}
+
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetConnectUPSAlarmStr(char *str, uint8_t *len)
+{
+
+	if(((UPS.Alarm>>2) & 0x01))
+		strcpy(str, "Авария");
+	else if(!((UPS.Alarm>>2) & 0x01))
+		strcpy(str, "Норма");
+
+	*len = strlen(str);
+
+}
+
 /**
   * @brief  Индикация аварийных ситуаций
   */
@@ -1077,7 +1127,7 @@ void SetAuthEnableStateStr(char *str)
 #ifdef HARDWARE_BT6706
 // ************************************************************************** //
 //                             Параметры Telnet
-
+#ifndef BT6702_SERVICE
 /**
   * @brief Текущий Порт
   */
@@ -1095,8 +1145,9 @@ void SetTelnetEnableStateStr(char *str)
 		  sSettings.sTelnet.TelnetEnable = 1;
 	  else
 		  sSettings.sTelnet.TelnetEnable = 0;
-}
 
+}
+#endif
 #endif
 // ************************************************************************** //
 //                             Параметры даты и времени

+ 15 - 0
modules/parameters.h

@@ -49,6 +49,21 @@ void GetModeEn(char *str, uint8_t *len);
   */
 void GetAlarmStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetUPSAlarmStr(char *str, uint8_t *len);
+
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetAKBAlarmStr(char *str, uint8_t *len);
+
+/**
+  * @brief  Индикация аварийных ситуаций
+  */
+void GetConnectUPSAlarmStr(char *str, uint8_t *len);
+
 /**
   * @brief  Индикация аварийных ситуаций
   */