Quellcode durchsuchen

[telnet server]add cmd: akb & alarm

balbekova vor 6 Jahren
Ursprung
Commit
c9ebd03e82

+ 451 - 3
modules/Telnet_Server/CLI_Commands.c

@@ -55,6 +55,7 @@ const int8_t * const pcSystymeDenied = ( int8_t * ) "Ручной ввод вр
 
 const char* info_args_list[] =
 {
+	"name",
 	"address",
     "owner",
     "comments",
@@ -88,6 +89,28 @@ const char* snmp_args_list[] =
     "community",
 };
 
+const char* akb_args_list[] =
+{
+	"info",
+	"voltcellmin",
+	"voltcellmax",
+};
+
+const char* type_alarm_args_list[] =
+{
+	"info",
+	"temp",
+	"load",
+	"vout",
+};
+
+const char* alarm_args_list[] =
+{
+	"low",
+	"high",
+	"hist",
+};
+
 const char* whitelist_args_list[] =
 {
 	"info",
@@ -168,6 +191,16 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
  */
 static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
 
+/*
+ * Implements the AKB command.
+ */
+static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
+
+/*
+ * Implements the alarm command.
+ */
+static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
+
 #ifdef HARDWARE_BT6708
 /*
  * Implements the whitelist command.
@@ -217,6 +250,7 @@ static const CLI_Command_Definition_t prvInfoCommandDefinition =
 {
 	( const int8_t * const ) "info", /* The command string to type. */
 	( const int8_t * const ) "\tinfo: вывод информации о контроллере\r\n"
+							"\tinfo name <name>: установка поля \"название устройства\"\r\n"
 	 	 	 	 	 	 	 "\tinfo address <adrr>: установка поля \"адрес расположения контролируемого объекта\"\r\n"
 	 	 	 	 	 	 	 "\tinfo owner <owner>: установка поля \"организация (собственник)\"\r\n"
 	 	 	 	 	 	 	 "\tinfo comments <comment>: установка поля \"комментарии\"\r\n",
@@ -286,6 +320,36 @@ static const CLI_Command_Definition_t prvSNMPCommandDefinition =
 	-1 /* The user can enter any number of commands. */
 };
 
+/* Structure that defines the "akb" command line command.   This
+generates a table that shows how much run time each task has */
+static const CLI_Command_Definition_t prvAKBCommandDefinition =
+{
+	( const int8_t * const ) "akb", /* The command string to type. */
+	( const int8_t * const ) "\takb info: вывод информации о параметрах АКБ\r\n"
+	 	 	 	 	 	 	 "\takb voltcellmin <value>: ввод минимального напряжения на ячейки АКБ (В)\r\n"
+	 	 	 	 	 	 	 "\takb voltcellmax <value>: ввод максимального напряжения на ячейки АКБ (В)\r\n",
+	prvTaskAKBCommand, /* The function to run. */
+	-1 /* The user can enter any number of commands. */
+};
+
+/* Structure that defines the "alarm" command line command.   This
+generates a table that shows how much run time each task has */
+static const CLI_Command_Definition_t prvAlarmCommandDefinition =
+{
+	( const int8_t * const ) "alarm", /* The command string to type. */
+	( const int8_t * const ) "\talarm info: вывод информации о параметрах АКБ\r\n"
+	 	 	 	 	 	 	 "\talarm temp low <value>: ввод нижней границы аварии по температуре (С)\r\n"
+	 	 	 	 	 	 	 "\talarm temp high <value>: ввод верxней границы аварии по температуре (С)\r\n"
+	 	 	 	 	 	 	 "\talarm temp hist <value>: ввод гистерезиса аварии по температуре (С)\r\n"
+							 "\talarm load high <value>: ввод верхней границы аварии по нагрузке (%)\r\n"
+							 "\talarm load hist <value>: ввод гистерезиса аварии по нагрузке (%)\r\n"
+	 	 	 	 	 	 	 "\talarm vout low <value>: ввод нижней границы аварии по вых. напряжению (В)\r\n"
+							 "\talarm vout high <value>: ввод верxней границы аварии по вых. напряжению (В)\r\n"
+							 "\talarm vout hist <value>: ввод гистерезиса аварии по вых. напряжению (В)\r\n",
+	prvTaskAlarmCommand, /* The function to run. */
+	-1 /* The user can enter any number of commands. */
+};
+
 #ifdef HARDWARE_BT6708
 /* Structure that defines the "whitelist" command line command.   This
 generates a table that shows how much run time each task has */
@@ -378,7 +442,7 @@ generates a table that shows how much run time each task has */
 static const CLI_Command_Definition_t prvUPSCommandDefinition =
 {
 	( const int8_t * const ) "ups", /* The command string to type. */
-	( const int8_t * const ) "\tups battest <num>: управление процедурой тестирония АКБ:\r\n"
+	( const int8_t * const ) "\tups battest <num>: управление процедурой тестирования АКБ:\r\n"
 	 	 	 	 	 	 	 "\t\t\t\t0 - Остановить тестирование\r\n"
 	 	 	 	 	 	 	 "\t\t\t\t1-99 - Запустить тест на x минут\r\n"
 	 	 	 	 	 	 	 "\t\t\t\t100 - Тестирование в течение 10 секунд\r\n"
@@ -412,6 +476,8 @@ void vRegisterCLICommands( void )
 	FreeRTOS_CLIRegisterCommand( &prvNTPCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvNetworkCommandDefinition );
 	FreeRTOS_CLIRegisterCommand( &prvSNMPCommandDefinition );
+	FreeRTOS_CLIRegisterCommand( &prvAKBCommandDefinition );
+	FreeRTOS_CLIRegisterCommand( &prvAlarmCommandDefinition );
 #ifdef HARDWARE_BT6708
 	FreeRTOS_CLIRegisterCommand( &prvWhiteListCommandDefinition );
 #endif
@@ -475,6 +541,10 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 			GetSerialNumberStr(str, &len);
 			strncat(( char * ) pcWriteBuffer, str, len);
 
+			strcat(( char * ) pcWriteBuffer, "\r\nНазвание устройства:\t\t");
+			GetNameDeviceStr(str, &len);
+			strncat(( char * ) pcWriteBuffer, str, len);
+
 			strcat(( char * ) pcWriteBuffer, "\r\nВладелец:\t\t\t");
 			GetOwnerStr(str, &len);
 			strncat(( char * ) pcWriteBuffer, str, len);
@@ -546,21 +616,36 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 		strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
 		if(control_string_en_digit(str, strlen(str))){
 			switch(i){
+			case INFO_DEV_NAME:
+				if(telnet_code_auth == ADMIN){
+					str[19] = 0;
+					SetNameDeviceStr(str);
+				}
+				else
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
+				break;
 			case INFO_ADDRESS:
 				if(telnet_code_auth == ADMIN)
+				{
+					str[109] = 0;
 					SetLocation(str);
+				}
 				else
 					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
 				break;
 			case INFO_OWNER:
-				if(telnet_code_auth == ADMIN)
+				if(telnet_code_auth == ADMIN){
+					str[49] = 0;
 					SetOwner(str);
+				}
 				else
 					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
 				break;
 			case INFO_COMMENTS:
-				if(telnet_code_auth == ADMIN)
+				if(telnet_code_auth == ADMIN){
+					str[109] = 0;
 					SetComment(str);
+				}
 				else
 					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
 				break;
@@ -1251,6 +1336,363 @@ static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
 	return xReturn;
 }
 
+/*
+ * Implements the akb command.
+ */
+static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
+	int8_t *pcParameterString;
+	signed portBASE_TYPE xParameterStringLength, xReturn;
+	portBASE_TYPE xParameterNumber = 1;
+	char str[110];
+	uint8_t i;
+	float value = 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. */
+															);
+	if(pcParameterString == NULL){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		return pdFALSE;
+	}
+
+	for(i = 0; i < ARG_AKB_ALL; i ++){
+		if( strncmp( ( const char * ) pcParameterString, akb_args_list[i], strlen(akb_args_list[i]) ) == 0 ){
+			break;
+		}
+	}
+	if(telnet_code_auth != ADMIN && i !=ARG_AKB_INFO){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
+		return pdFALSE;
+	}
+
+	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. */
+															);
+	if(pcParameterString == NULL){
+		if(i == ARG_AKB_INFO){
+			akb_config_param(pcWriteBuffer);
+		}
+		else{
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		}
+		return pdFALSE;
+	}
+	memset(str, 0, sizeof(str));
+	xParameterStringLength = strlen(( const char * ) pcParameterString);
+	if(xParameterStringLength > (int32_t)sizeof(str))
+		xParameterStringLength = sizeof(str) - 2;
+	strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
+	for(uint8_t j = 0; j < xParameterStringLength; j ++){
+		if(!isfloatdigit(str[j])){
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			return pdFALSE;
+		}
+	}
+	value = atof(str);
+
+	switch(i){
+	case ARG_AKB_VOLT_CELL_MIN:
+		if(value < sSettings.UPS_Setting.Ucellmax && value > 0){
+			SetUPSVoltCellMinStr(str);
+			SETTINGS_Save();
+			log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+		}
+		else
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		break;
+	case ARG_AKB_VOLT_CELL_MAX:
+		if(value > sSettings.UPS_Setting.Ucellmin && value <= 3.0){
+			SetUPSVoltCellMaxStr(str);
+			SETTINGS_Save();
+			log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+		}
+		else
+		{
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		}
+		break;
+	default:
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		break;
+	}
+	xReturn = pdFALSE;
+
+
+	return xReturn;
+}
+
+/*
+ * Implements the alarm command.
+ */
+static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
+	int8_t *pcParameterString;
+	signed portBASE_TYPE xParameterStringLength, xReturn;
+	portBASE_TYPE xParameterNumber = 1;
+	char str[110];
+	uint8_t i, j;
+	float value = 0;
+	uint8_t k;
+
+	( 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. */
+															);
+	if(pcParameterString == NULL){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		return pdFALSE;
+	}
+
+	for(i = 0; i < ARG_ALARM_TYPE_ALL; i ++){
+		if( strncmp( ( const char * ) pcParameterString, type_alarm_args_list[i], strlen(type_alarm_args_list[i]) ) == 0 ){
+			break;
+		}
+	}
+	if(telnet_code_auth != ADMIN && i != ARG_ALARM_INFO){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
+		return pdFALSE;
+	}
+
+	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. */
+															);
+	if(pcParameterString == NULL){
+		if(i == ARG_ALARM_INFO){
+			alarm_config_param(pcWriteBuffer);
+		}
+		else{
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		}
+		return pdFALSE;
+	}
+
+	for(j = 0; j < ARG_ALARM_ALL; j ++){
+		if( strncmp( ( const char * ) pcParameterString, alarm_args_list[j], strlen(alarm_args_list[j]) ) == 0 ){
+			break;
+		}
+	}
+
+
+	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. */
+															);
+	if(pcParameterString == NULL){
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		return pdFALSE;
+	}
+
+	memset(str, 0, sizeof(str));
+	xParameterStringLength = strlen(( const char * ) pcParameterString);
+	if(xParameterStringLength > (int32_t)sizeof(str))
+		xParameterStringLength = sizeof(str) - 2;
+	strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
+	switch(i){
+	case ARG_ALARM_TEMP:
+		switch(j){
+		case ARG_ALARM_LINE_LOW:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					if(k == 0 && str[k] == '-'){
+						continue;
+					}
+					else{
+						strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+						return pdFALSE;
+					}
+				}
+			}
+			value = atof(str);
+			if(value >= -40 && value <= 0){
+				SetTemperatureAlarmLowRangeStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		case ARG_ALARM_LINE_HIGH:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 40 && value <= 80){
+				SetTemperatureAlarmHighRangeStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		case ARG_ALARM_LINE_HIST:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isfloatdigit(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 0.5 && value <= 2){
+				SetTemperatureAlarmHisteStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		default:
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			break;
+		}
+		break;
+	case ARG_ALARM_LOAD:
+		switch(j){
+		case ARG_ALARM_LINE_LOW:
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			break;
+		case ARG_ALARM_LINE_HIGH:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 60 && value <= 120){
+				SetLoadAlarmHighRangeStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		case ARG_ALARM_LINE_HIST:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isfloatdigit(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 0.5 && value <= 2){
+				SetLoadAlarmHistStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		default:
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			break;
+		}
+		break;
+	case ARG_ALARM_VOUT:
+		switch(j){
+		case ARG_ALARM_LINE_LOW:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 110 && value <= 200){
+				SetVACAlarmLowRangeStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		case ARG_ALARM_LINE_HIGH:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 220 && value <= 250){
+				SetVACAlarmHighRangeStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		case ARG_ALARM_LINE_HIST:
+			for(k = 0; k < xParameterStringLength; k ++){
+				if(!isdigit_int(str[k])){
+					strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+					return pdFALSE;
+				}
+			}
+			value = atof(str);
+			if(value >= 10 && value <= 30){
+				SetVACAlarmHisteStr(str);
+				SETTINGS_Save();
+				log_event_data(LOG_SETTING_SAVE, name_login_telnet);
+			}
+			else{
+				strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			}
+			break;
+		default:
+			strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+			break;
+		}
+		break;
+	default:
+		strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+		break;
+	}
+	xReturn = pdFALSE;
+
+
+	return xReturn;
+}
+
 #ifdef HARDWARE_BT6708
 /*
  * Implements the whitelist command.
@@ -1532,6 +1974,12 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
 				inouts_config_param(pcWriteBuffer);
 				break;
 #endif
+			case PARAM_CONFIG_AKB:
+				akb_config_param(pcWriteBuffer);
+				break;
+			case PARAM_CONFIG_ALARM:
+				alarm_config_param(pcWriteBuffer);
+				break;
 #ifdef HARDWARE_BT6708
 			case PARAM_CONFIG_WHITELIST:
 				whitelist_config_param(pcWriteBuffer);

+ 26 - 1
modules/Telnet_Server/CLI_Commands.h

@@ -10,7 +10,8 @@
 
 
 typedef enum{
-	INFO_ADDRESS = 0,
+	INFO_DEV_NAME = 0,
+	INFO_ADDRESS,
 	INFO_OWNER,
 	INFO_COMMENTS,
 	INFO_ALL_ARGS
@@ -44,6 +45,28 @@ typedef enum{
 	ARG_SNMP_ALL
 }snmp_args_t;
 
+typedef enum{
+	ARG_AKB_INFO = 0,
+	ARG_AKB_VOLT_CELL_MIN,
+	ARG_AKB_VOLT_CELL_MAX,
+	ARG_AKB_ALL
+}akb_args_t;
+
+typedef enum{
+	ARG_ALARM_INFO = 0,
+	ARG_ALARM_TEMP,
+	ARG_ALARM_LOAD,
+	ARG_ALARM_VOUT,
+	ARG_ALARM_TYPE_ALL
+}type_alarm_args_t;
+
+typedef enum{
+	ARG_ALARM_LINE_LOW = 0,
+	ARG_ALARM_LINE_HIGH,
+	ARG_ALARM_LINE_HIST,
+	ARG_ALARM_ALL
+}alarm_args_t;
+
 typedef enum{
 	ARG_WHITELIST_INFO = 0,
 	ARG_WHITELIST_RANGE,
@@ -69,6 +92,8 @@ typedef enum{
 #ifdef HARDWARE_BT6706
 	PARAM_CONFIG_INOUTS,
 #endif
+	PARAM_CONFIG_AKB,
+	PARAM_CONFIG_ALARM,
 #ifdef HARDWARE_BT6708
 	PARAM_CONFIG_WHITELIST,
 #endif

+ 93 - 0
modules/Telnet_Server/CLI_Parameters.c

@@ -210,6 +210,99 @@ void time_config_param(int8_t *buf)
 	strcat(( char * ) buf, "\r\n");
 }
 
+//Настройки АКБ
+void akb_config_param(int8_t *buf)
+{
+	char str[20];
+	uint8_t len = 0;
+
+	const int8_t * const pcAKBTableHeader = ( 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 * ) buf, ( const char * ) pcAKBTableHeader, strlen( ( char * ) pcAKBTableHeader ) );
+
+	GetUPSVoltCellMinStr(str, &len);
+	strcat(( char * ) buf, "Мин. напряжение ячейки (В):\t");
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, "\r\nМакс. напряжение ячейки (В):\t");
+	GetUPSVoltCellMaxStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, "\r\n");
+}
+
+//Настройки Аварий
+void alarm_config_param(int8_t *buf)
+{
+	char str[20];
+	uint8_t len = 0;
+
+	const char *name_range_alarm[] = {
+			"Нижняя граница:\t\t\t",
+			"\r\nВерхняя граница:\t\t",
+			"\r\nГистерезис:\t\t\t",
+	};
+
+	const int8_t * const pcAlarmTableHeader = ( 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 * ) buf, ( const char * ) pcAlarmTableHeader, strlen( ( char * ) pcAlarmTableHeader ) );
+
+	const int8_t * const pcAlarmTempTableHeader = ( int8_t * ) "\r\n*************Температура (°C)************\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 * ) pcAlarmTempTableHeader, strlen( ( char * ) pcAlarmTempTableHeader ) );
+
+	GetTemperatureAlarmLowRangeStr(str, &len);
+	strcat(( char * ) buf, name_range_alarm[0]);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, name_range_alarm[1]);
+	GetTemperatureAlarmHighRangeStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, name_range_alarm[2]);
+	GetTemperatureAlarmHisteStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, "\r\n");
+
+	const int8_t * const pcAlarmLoadTableHeader = ( int8_t * ) "\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 * ) pcAlarmLoadTableHeader, strlen( ( char * ) pcAlarmLoadTableHeader ) );
+
+	strcat(( char * ) buf, name_range_alarm[1]);
+	GetLoadAlarmHighRangeStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, name_range_alarm[2]);
+	GetLoadAlarmHisteStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, "\r\n");
+
+	const int8_t * const pcAlarmVoutTableHeader = ( int8_t * ) "\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 * ) pcAlarmVoutTableHeader, strlen( ( char * ) pcAlarmVoutTableHeader ) );
+
+	GetVACAlarmLowRangeStr(str, &len);
+	strcat(( char * ) buf, name_range_alarm[0]);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, name_range_alarm[1]);
+	GetVACAlarmHighRangeStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, name_range_alarm[2]);
+	GetVACAlarmHisteStr(str, &len);
+	strncat(( char * ) buf, str, len);
+
+	strcat(( char * ) buf, "\r\n");
+}
+
 #ifdef HARDWARE_BT6708
 //Белый список IP адресов контроллера
 void whitelist_config_param(int8_t *buf)

+ 9 - 0
modules/Telnet_Server/CLI_Parameters.h

@@ -23,6 +23,15 @@ void net_config_param(int8_t *buf);
 //Настройки времени
 void time_config_param(int8_t *buf);
 
+//Настройки АКБ
+void akb_config_param(int8_t *buf);
+
+//Настройки Аварий
+void alarm_config_param(int8_t *buf);
+
+//Настройки Аварий
+void alarm_config_param(int8_t *buf);
+
 #ifdef HARDWARE_BT6708
 //Белый список IP адресов контроллера
 void whitelist_config_param(int8_t *buf);