Browse Source

[bt-6709 telnet_server]1)add cmd notification
2)akb dataset permit to set empty data

balbekova 5 years ago
parent
commit
7199a1c94d

+ 167 - 15
modules/Telnet_Server/CLI_Commands.c

@@ -107,6 +107,11 @@ const char *alarm_args_list[] = {
     "hist",
     "hist",
 };
 };
 
 
+const char *notification_args_list[] = {
+    "info",
+    "set",
+};
+
 const char *whitelist_args_list[] = {
 const char *whitelist_args_list[] = {
     "info",
     "info",
     "range",
     "range",
@@ -195,6 +200,12 @@ static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBu
     const int8_t *pcCommandString );
     const int8_t *pcCommandString );
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
+/*
+ * Implements the notification command.
+ */
+static portBASE_TYPE prvTaskNotificationCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
+    const int8_t *pcCommandString );
+
 /*
 /*
  * Implements the whitelist command.
  * Implements the whitelist command.
  */
  */
@@ -350,6 +361,16 @@ static const CLI_Command_Definition_t prvAlarmCommandDefinition = {
 };
 };
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
+/* Structure that defines the "notification" command line command.   This
+generates a table that shows how much run time each task has */
+static const CLI_Command_Definition_t prvNotificationCommandDefinition = {
+    ( const int8_t *const ) "notification",  /* The command string to type. */
+    ( const int8_t *const ) "\tnotification info: вывод списка уведомлений\r\n"
+    						"\tnotification set <NUM> ENA|DIS: вкл/выкл уведомления\r\n",
+    prvTaskNotificationCommand, /* The function to run. */
+    -1 /* The user can enter any number of commands. */
+};
+
 /* Structure that defines the "whitelist" command line command.   This
 /* Structure that defines the "whitelist" command line command.   This
 generates a table that shows how much run time each task has */
 generates a table that shows how much run time each task has */
 static const CLI_Command_Definition_t prvWhiteListCommandDefinition = {
 static const CLI_Command_Definition_t prvWhiteListCommandDefinition = {
@@ -469,6 +490,7 @@ void vRegisterCLICommands( void )
     FreeRTOS_CLIRegisterCommand( &prvAKBCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvAKBCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvAlarmCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvAlarmCommandDefinition );
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
+    FreeRTOS_CLIRegisterCommand( &prvNotificationCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvWhiteListCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvWhiteListCommandDefinition );
 #endif
 #endif
     FreeRTOS_CLIRegisterCommand( &prvUserCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvUserCommandDefinition );
@@ -584,7 +606,8 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
                 &xParameterStringLength /* Store the parameter string length. */
                 &xParameterStringLength /* Store the parameter string length. */
             );
             );
         for (i = 0; i < INFO_ALL_ARGS; i ++) {
         for (i = 0; i < INFO_ALL_ARGS; i ++) {
-            if ( strncmp( ( const char * ) pcParameterString, info_args_list[i], strlen(info_args_list[i]) ) == 0 ) {
+            if ( strncmp( ( const char * ) pcParameterString, info_args_list[i], strlen(info_args_list[i]) ) == 0 
+                && xParameterStringLength == strlen(info_args_list[i])) {
                 break;
                 break;
             }
             }
         }
         }
@@ -731,7 +754,8 @@ static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWrite
             return pdFALSE;
             return pdFALSE;
         }
         }
         for (i = 0; i < ARG_SYSTIME_ALL; i ++) {
         for (i = 0; i < ARG_SYSTIME_ALL; i ++) {
-            if ( strncmp( ( const char * ) pcParameterString, systime_args_list[i], strlen(systime_args_list[i]) ) == 0 ) {
+            if ( strncmp( ( const char * ) pcParameterString, systime_args_list[i], strlen(systime_args_list[i]) ) == 0 
+                && xParameterStringLength == strlen(systime_args_list[i])) {
                 break;
                 break;
             }
             }
         }
         }
@@ -881,7 +905,8 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
     }
     }
 
 
     for (i = 0; i < ARG_NTP_ALL; i ++) {
     for (i = 0; i < ARG_NTP_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], strlen(ntp_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], strlen(ntp_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(ntp_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -1063,7 +1088,8 @@ static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWrite
     }
     }
 
 
     for (i = 0; i < ARG_NETWORK_ALL; i ++) {
     for (i = 0; i < ARG_NETWORK_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, network_args_list[i], strlen(network_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, network_args_list[i], strlen(network_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(network_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -1192,7 +1218,8 @@ static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
     }
     }
 
 
     for (i = 0; i < ARG_SNMP_ALL; i ++) {
     for (i = 0; i < ARG_SNMP_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], strlen(snmp_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], strlen(snmp_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(snmp_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -1355,7 +1382,8 @@ static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
     }
     }
 
 
     for (i = 0; i < ARG_AKB_ALL; i ++) {
     for (i = 0; i < ARG_AKB_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, akb_args_list[i], strlen(akb_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, akb_args_list[i], strlen(akb_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(akb_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -1448,6 +1476,13 @@ static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
             break;
             break;
 		case ARG_AKB_DATASET:
 		case ARG_AKB_DATASET:
                 if (xParameterStringLength == 10) {
                 if (xParameterStringLength == 10) {
+                    if (strncmp( str, "0000-00-00", 10) == 0) {
+                        memset(str, 0, sizeof(str));
+                        SetDataSetAKBStr(str);
+                        SETTINGS_Save();
+                        xReturn = pdFALSE;
+                        return xReturn;
+                    }
                     for (uint8_t j = 0; j < xParameterStringLength; j++) {
                     for (uint8_t j = 0; j < xParameterStringLength; j++) {
                         if (j != 4 && j != 7) {
                         if (j != 4 && j != 7) {
                             if (str[j] > 0x39 || str[j] < 0x30) {
                             if (str[j] > 0x39 || str[j] < 0x30) {
@@ -1501,8 +1536,6 @@ static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
             break;
             break;
     }
     }
     xReturn = pdFALSE;
     xReturn = pdFALSE;
-
-
     return xReturn;
     return xReturn;
 }
 }
 
 
@@ -1537,7 +1570,8 @@ static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBu
     }
     }
 
 
     for (i = 0; i < ARG_ALARM_TYPE_ALL; i ++) {
     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 ) {
+        if ( strncmp( ( const char * ) pcParameterString, type_alarm_args_list[i], strlen(type_alarm_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(type_alarm_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -1757,6 +1791,118 @@ static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBu
 }
 }
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
+/*
+ * Implements the notification command.
+ */
+static portBASE_TYPE prvTaskNotificationCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
+    const int8_t *pcCommandString )
+{
+    int8_t *pcParameterString;
+    signed portBASE_TYPE xParameterStringLength, xReturn;
+    portBASE_TYPE xParameterNumber = 1;
+    char str[20];
+    char temp_str[20];
+    uint8_t i;
+    char *beginValue;
+    uint8_t len;
+
+    ( 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_NOTIFICATION_ALL; i ++) {
+        if ( strncmp( ( const char * ) pcParameterString, notification_args_list[i], strlen(notification_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(notification_args_list[i])) {
+            break;
+        }
+    }
+
+    if (telnet_code_auth != ADMIN && i != ARG_NOTIFICATION_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. */
+        );
+    xParameterNumber ++;
+    if (pcParameterString == NULL) {
+        if (i == ARG_NOTIFICATION_INFO) {
+            notification_param(pcWriteBuffer);
+        } else {
+            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+        }
+        return pdFALSE;
+    }
+    memset(str, 0, sizeof(str));
+    if (xParameterStringLength > (int32_t)sizeof(str)) {
+        xParameterStringLength = sizeof(str) - 1;
+    }
+    strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
+    switch (i) {
+        case ARG_NOTIFICATION_SET:
+            if (xParameterStringLength >= 1) {
+                for(uint32_t k = 0; k < xParameterStringLength; k ++) {
+                    if (!isdigit_int(str[k])) {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                         return pdFALSE;
+                    }
+                }
+                int32_t temp = atoi(str);
+                uint8_t value_notification = 0;
+                if (temp > 0 && temp < ALL_TRAPS) {
+                    pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
+                        (
+                            pcCommandString,        /* The command string itself. */
+                            xParameterNumber,       /* Return the next parameter. */
+                            &xParameterStringLength /* Store the parameter string length. */
+                        );
+                    if (pcParameterString != NULL && xParameterStringLength == 3) {
+                        if (strncmp(pcParameterString, "ENA", 3) == 0) {
+                            value_notification = 1;
+                            SetNotificationFlagsStr(&value_notification, (uint8_t)temp);
+                            SETTINGS_Save();
+                        } else if (strncmp(pcParameterString, "DIS", 3) == 0) {
+                            SetNotificationFlagsStr(&value_notification, (uint8_t)temp);
+                            SETTINGS_Save();
+                        } else {
+                            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                        }
+                    } else {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    }
+                } else {
+                    strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                }
+            } 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 whitelist command.
  * Implements the whitelist command.
  */
  */
@@ -1790,7 +1936,8 @@ static portBASE_TYPE prvTaskWhiteListCommand( int8_t *pcWriteBuffer, size_t xWri
     }
     }
 
 
     for (i = 0; i < ARG_WHITELIST_ALL; i ++) {
     for (i = 0; i < ARG_WHITELIST_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, whitelist_args_list[i], strlen(whitelist_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, whitelist_args_list[i], strlen(whitelist_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(whitelist_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -2005,7 +2152,8 @@ static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteB
     }
     }
 
 
     for (i = 0; i < ARG_CONFIG_ALL; i ++) {
     for (i = 0; i < ARG_CONFIG_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, config_args_list[i], strlen(config_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, config_args_list[i], strlen(config_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(config_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -2130,7 +2278,8 @@ static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWri
         );
         );
 
 
     for (i = 0; i < ARG_NETCONFIG_ALL; i ++) {
     for (i = 0; i < ARG_NETCONFIG_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, netconfig_args_list[i], strlen(netconfig_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, netconfig_args_list[i], strlen(netconfig_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(netconfig_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -2228,7 +2377,8 @@ static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWrite
         );
         );
 
 
     for (i = 0; i < ARG_HISTORY_ALL; i ++) {
     for (i = 0; i < ARG_HISTORY_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, history_args_list[i], strlen(history_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, history_args_list[i], strlen(history_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(history_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -2370,7 +2520,8 @@ static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteB
     }
     }
 
 
     for (i = 0; i < ARG_SENSOR_ALL; i ++) {
     for (i = 0; i < ARG_SENSOR_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], strlen(sensor_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], strlen(sensor_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(sensor_args_list[i])) {
             break;
             break;
         }
         }
     }
     }
@@ -2578,7 +2729,8 @@ static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
             &xParameterStringLength /* Store the parameter string length. */
             &xParameterStringLength /* Store the parameter string length. */
         );
         );
     for (i = 0; i < ARG_UPS_ALL; i ++) {
     for (i = 0; i < ARG_UPS_ALL; i ++) {
-        if ( strncmp( ( const char * ) pcParameterString, ups_args_list[i], strlen(ups_args_list[i]) ) == 0 ) {
+        if ( strncmp( ( const char * ) pcParameterString, ups_args_list[i], strlen(ups_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(ups_args_list[i])) {
             break;
             break;
         }
         }
     }
     }

+ 6 - 0
modules/Telnet_Server/CLI_Commands.h

@@ -74,6 +74,12 @@ typedef enum{
 	ARG_ALARM_ALL
 	ARG_ALARM_ALL
 }alarm_args_t;
 }alarm_args_t;
 
 
+typedef enum{
+	ARG_NOTIFICATION_INFO = 0,
+	ARG_NOTIFICATION_SET,
+	ARG_NOTIFICATION_ALL
+}notification_args_t;
+
 typedef enum{
 typedef enum{
 	ARG_WHITELIST_INFO = 0,
 	ARG_WHITELIST_INFO = 0,
 	ARG_WHITELIST_RANGE,
 	ARG_WHITELIST_RANGE,

+ 393 - 344
modules/Telnet_Server/CLI_Parameters.c

@@ -28,460 +28,509 @@ extern SETTINGS_t sSettings;
 //Настройки SNMP
 //Настройки SNMP
 void snmp_config_param(int8_t *buf)
 void snmp_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
+    char str[20];
+    uint8_t len = 0;
 
 
 
 
-	const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n***********SNMP настройки Контроллера***********\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 * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
+    const int8_t *const pcInfoTableHeader = ( int8_t * )
+        "\r\n***********SNMP настройки Контроллера***********\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 * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
 
 
-	GetManagerIp(str, &len);
-	strcat(( char * ) buf, "Ceрвер 1:\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetManagerIp(str, &len);
+    strcat(( char * ) buf, "Ceрвер 1:\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nСервер 2:\t\t\t");
-	GetManagerIp2(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nСервер 2:\t\t\t");
+    GetManagerIp2(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nСервер 3:\t\t\t");
-	GetManagerIp3(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nСервер 3:\t\t\t");
+    GetManagerIp3(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nСервер 4:\t\t\t");
-	GetManagerIp4(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nСервер 4:\t\t\t");
+    GetManagerIp4(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nСервер 5:\t\t\t");
-	GetManagerIp5(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nСервер 5:\t\t\t");
+    GetManagerIp5(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nRead community:\t\t\t");
-	GetReadCommunity(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nRead community:\t\t\t");
+    GetReadCommunity(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nWrite community:\t\t");
-	GetWriteCommunity(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nWrite community:\t\t");
+    GetWriteCommunity(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 #ifndef HARDWARE_BT6709
 #ifndef HARDWARE_BT6709
 //Настройки сухих контактов
 //Настройки сухих контактов
 void inouts_config_param(int8_t *buf)
 void inouts_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	char str_temp[20];
-	uint8_t len = 0;
-
-	const int8_t * const pcInOutsTableHeader = ( int8_t * ) "\r\n*********Настройки сухих контактов Контроллера*********\r\n";
-	const int8_t * const pcDryInsTableHeader = ( int8_t * ) "Дискретные входы\r\n";
-	const int8_t * const pcDryInsTableHeader2 = ( int8_t * ) "\r\nКонтакт\t\tНормальное состояние\r\n";
-	const int8_t * const pcRelaysTableHeader = ( int8_t * ) "Релейные выходы\r\n";
-	const int8_t * const pcRelaysTableHeader2 = ( int8_t * ) "\r\nКонтакт\t\tИсточник\r\n";
-	const int8_t * const pcSharedTableHeader = ( int8_t * ) "------------+--------------------------------------------\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 * ) pcInOutsTableHeader, strlen( ( char * ) pcInOutsTableHeader ) );
-
-	strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader, strlen( ( char * ) pcDryInsTableHeader ) );
-	strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader2, strlen( ( char * ) pcDryInsTableHeader2 ) );
-	strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
-
-	GetDINTypeActStr(str, &len, 0);
-	strcat(( char * ) buf, "1:\t\t");
-	switch(str[0]){
-	case '0':
-		strcat(( char * ) buf, "Разомкнут\r\n");
-		break;
-	case '1':
-		strcat(( char * ) buf, "Замкнут\r\n");
-		break;
-	}
-	strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
-	strcat(( char * ) buf, "\r\n");
-
-	strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader, strlen( ( char * ) pcRelaysTableHeader ) );
-	strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader2, strlen( ( char * ) pcRelaysTableHeader2 ) );
-	strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
-
-	for(uint8_t i = 0; i < OUTPUTS_TOTAL_COUNT; i++){
-		GetROTypeActStr(str, &len, i);
-		memset(str_temp, 0, strlen(str_temp));
-		sprintf(str_temp, "%d:\t\t", i);
-		strncat(( char * ) buf, str_temp, strlen(str_temp));
-		switch(str[0]){
-		case '0':
-			strcat(( char * ) buf, "Наличие сети\r\n");
-			break;
-		case '1':
-			strcat(( char * ) buf, "Наличие выходного напряжения\r\n");
-			break;
-		case '2':
-			strcat(( char * ) buf, "Разряд АКБ\r\n");
-			break;
-		case '3':
-			strcat(( char * ) buf, "Отключение АКБ\r\n");
-			break;
-		case '4':
-			strcat(( char * ) buf, "SNMP SET\r\n");
-			break;
-		}
-		strcat(( char * ) buf, "\r\n");
-	}
-	strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+    char str[20];
+    char str_temp[20];
+    uint8_t len = 0;
+
+    const int8_t *const pcInOutsTableHeader = ( int8_t * )
+        "\r\n*********Настройки сухих контактов Контроллера*********\r\n";
+    const int8_t *const pcDryInsTableHeader = ( int8_t * ) "Дискретные входы\r\n";
+    const int8_t *const pcDryInsTableHeader2 = ( int8_t * )
+        "\r\nКонтакт\t\tНормальное состояние\r\n";
+    const int8_t *const pcRelaysTableHeader = ( int8_t * ) "Релейные выходы\r\n";
+    const int8_t *const pcRelaysTableHeader2 = ( int8_t * ) "\r\nКонтакт\t\tИсточник\r\n";
+    const int8_t *const pcSharedTableHeader = ( int8_t * ) "------------+--------------------------------------------\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 * ) pcInOutsTableHeader, strlen( ( char * ) pcInOutsTableHeader ) );
+
+    strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader, strlen( ( char * ) pcDryInsTableHeader ) );
+    strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader2, strlen( ( char * ) pcDryInsTableHeader2 ) );
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+
+    GetDINTypeActStr(str, &len, 0);
+    strcat(( char * ) buf, "1:\t\t");
+    switch (str[0]) {
+        case '0':
+            strcat(( char * ) buf, "Разомкнут\r\n");
+            break;
+        case '1':
+            strcat(( char * ) buf, "Замкнут\r\n");
+            break;
+    }
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+    strcat(( char * ) buf, "\r\n");
+
+    strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader, strlen( ( char * ) pcRelaysTableHeader ) );
+    strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader2, strlen( ( char * ) pcRelaysTableHeader2 ) );
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+
+    for (uint8_t i = 0; i < OUTPUTS_TOTAL_COUNT; i++) {
+        GetROTypeActStr(str, &len, i);
+        memset(str_temp, 0, strlen(str_temp));
+        sprintf(str_temp, "%d:\t\t", i);
+        strncat(( char * ) buf, str_temp, strlen(str_temp));
+        switch (str[0]) {
+            case '0':
+                strcat(( char * ) buf, "Наличие сети\r\n");
+                break;
+            case '1':
+                strcat(( char * ) buf, "Наличие выходного напряжения\r\n");
+                break;
+            case '2':
+                strcat(( char * ) buf, "Разряд АКБ\r\n");
+                break;
+            case '3':
+                strcat(( char * ) buf, "Отключение АКБ\r\n");
+                break;
+            case '4':
+                strcat(( char * ) buf, "SNMP SET\r\n");
+                break;
+        }
+        strcat(( char * ) buf, "\r\n");
+    }
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
 }
 }
 #endif
 #endif
 
 
 //Сетевые настройки
 //Сетевые настройки
 void net_config_param(int8_t *buf)
 void net_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
+    char str[20];
+    uint8_t len = 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 * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
+    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 * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
 
 
-	GetDhcpStateStrRu(str, &len);
-	strcat(( char * ) buf, "DHCP:\t\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetDhcpStateStrRu(str, &len);
+    strcat(( char * ) buf, "DHCP:\t\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nIP адрес:\t\t\t");
-	GetIpStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nIP адрес:\t\t\t");
+    GetIpStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nАдрес шлюза:\t\t\t");
-	GetGatewayStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nАдрес шлюза:\t\t\t");
+    GetGatewayStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nАдрес маски подсети:\t\t");
-	GetMaskStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nАдрес маски подсети:\t\t");
+    GetMaskStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 //Настройки времени
 //Настройки времени
 void time_config_param(int8_t *buf)
 void time_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
-
-	const int8_t * const pcTimeTableHeader = ( 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 * ) pcTimeTableHeader, strlen( ( char * ) pcTimeTableHeader ) );
-
-	GetSntpStateStrRU(str, &len);
-	strcat(( char * ) buf, "Режим установки времени:\t");
-	strncat(( char * ) buf, str, len);
-
-	strcat(( char * ) buf, "\r\nЧасовой пояс:\t\t\t");
-	GetSntpTimeZoneStr(str, &len);
-	strncat(( char * ) buf, str, len);
-
-	if(sSettings.sSNTP.sntpEnable){
-		strcat(( char * ) buf, "\r\nIP адрес NTP сервера:\t\t");
-		GetSntpServerIpStr(str, &len);
-		strncat(( char * ) buf, str, len);
-
-		strcat(( char * ) buf, "\r\nПоследняя дата синхронизации:\t");
-		GetSntpLastDataStr(str, &len);
-		strncat(( char * ) buf, str, len);
-
-	}
-	else{
-		GetDateStr(str, &len);
-		strcat(( char * ) buf, "\r\nДата:\t\t\t");
-		strncat(( char * ) buf, str, len);
-
-		strcat(( char * ) buf, "\r\nВремя:\t\t\t");
-		GetTimeStr(str, &len);
-		strncat(( char * ) buf, str, len);
-	}
-
-	strcat(( char * ) buf, "\r\n");
+    char str[20];
+    uint8_t len = 0;
+
+    const int8_t *const pcTimeTableHeader = ( 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 * ) pcTimeTableHeader, strlen( ( char * ) pcTimeTableHeader ) );
+
+    GetSntpStateStrRU(str, &len);
+    strcat(( char * ) buf, "Режим установки времени:\t");
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\nЧасовой пояс:\t\t\t");
+    GetSntpTimeZoneStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    if (sSettings.sSNTP.sntpEnable) {
+        strcat(( char * ) buf, "\r\nIP адрес NTP сервера:\t\t");
+        GetSntpServerIpStr(str, &len);
+        strncat(( char * ) buf, str, len);
+
+        strcat(( char * ) buf, "\r\nПоследняя дата синхронизации:\t");
+        GetSntpLastDataStr(str, &len);
+        strncat(( char * ) buf, str, len);
+
+    } else {
+        GetDateStr(str, &len);
+        strcat(( char * ) buf, "\r\nДата:\t\t\t");
+        strncat(( char * ) buf, str, len);
+
+        strcat(( char * ) buf, "\r\nВремя:\t\t\t");
+        GetTimeStr(str, &len);
+        strncat(( char * ) buf, str, len);
+    }
+
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 //Настройки АКБ
 //Настройки АКБ
 void akb_config_param(int8_t *buf)
 void akb_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
+    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 ) );
+    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\t");
-	strncat(( char * ) buf, str, len);
+    GetUPSVoltCellMinStr(str, &len);
+    strcat(( char * ) buf, "Мин. напряжение ячейки (В):\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nМакс. напряжение ячейки (В):\t\t");
-	GetUPSVoltCellMaxStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nМакс. напряжение ячейки (В):\t\t");
+    GetUPSVoltCellMaxStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
 
 
-	GetVoltageAKBNominalStr(str, &len);
-	strcat(( char * ) buf, "\r\nНоминальное напряжение (В):\t\t");
-	strncat(( char * ) buf, str, len);
+    GetVoltageAKBNominalStr(str, &len);
+    strcat(( char * ) buf, "\r\nНоминальное напряжение (В):\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nЁмкость (Ач):\t\t\t\t");
-	GetCapacityNominalAKBStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nЁмкость (Ач):\t\t\t\t");
+    GetCapacityNominalAKBStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	GetLifeTimeAKBStr(str, &len);
-	strcat(( char * ) buf, "\r\nСрок службы (лет):\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetLifeTimeAKBStr(str, &len);
+    strcat(( char * ) buf, "\r\nСрок службы (лет):\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nДата установки:\t\t\t\t");
-	GetDataSetAKBStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nДата установки:\t\t\t\t");
+    GetDataSetAKBStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	GetUPSPowerStr(str, &len);
-	strcat(( char * ) buf, "\r\nПолная мощность ИБП (ВА):\t\t");
-	strncat(( char * ) buf, str, len);
+    GetUPSPowerStr(str, &len);
+    strcat(( char * ) buf, "\r\nПолная мощность ИБП (ВА):\t\t");
+    strncat(( char * ) buf, str, len);
 
 
 #endif
 #endif
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 //Настройки Аварий
 //Настройки Аварий
 void alarm_config_param(int8_t *buf)
 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);
+    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");
+}
 
 
-	strcat(( char * ) buf, name_range_alarm[2]);
-	GetVACAlarmHisteStr(str, &len);
-	strncat(( char * ) buf, str, len);
+#ifdef HARDWARE_BT6709
+//Список уведомлений и их состояние
+void notification_param(int8_t *buf)
+{
+    char str[100];
+    uint8_t len = 0;
+    uint8_t i;
+
+    const int8_t *const pcNotificationTableHeader = ( 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 * ) pcNotificationTableHeader, strlen( ( char * ) pcNotificationTableHeader ) );
+
+    for (i = 1; i < ALL_TRAPS; i++) {
+        sprintf(str, "%d. ", i);
+        len = strlen(str);
+		strncat(buf, str, len);
+        GetTrapLongNameStr(str, &len, i);
+        strncat(buf, str, len);
+		if ( len < 25 ) {
+			strcat(buf, "\t\t\t\t\t");
+		} else if (len > 37 && len <= 47) {
+			strcat(buf, "\t\t\t");
+		} else if (len > 47) {
+			strcat(buf, "\t\t");
+		} else {
+			strcat(buf, "\t\t\t\t");
+		}
+		GetNotificationTrapsStateStr2(str, &len, i);
+        strncat(buf, str, len);
+		strcat(( char * ) buf, "\r\n");
+    }
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
-#ifdef HARDWARE_BT6709
+
 //Белый список IP адресов контроллера
 //Белый список IP адресов контроллера
 void whitelist_config_param(int8_t *buf)
 void whitelist_config_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
-	uint8_t i;
-
-	const char *name_range_ip[] = {
-			"IP-адрес 1:\t\t\t",
-			"\r\nIP-адрес 2:\t\t\t",
-			"\r\nIP-адрес 3:\t\t\t",
-			"\r\nIP-адрес 4:\t\t\t",
-			"\r\nIP-адрес 5:\t\t\t",
-	};
-
-	const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n*******Белый список IP адресов Контроллера*******\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 * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
-
-	for(uint8_t i = 0; i < MAX_WHITE_LIST; i++){
-		GetWhiteListSTR(str, &len, i);
-		strcat(( char * ) buf, name_range_ip[i]);
-		strncat(( char * ) buf, str, len);
-	}
-
-	strcat(( char * ) buf, "\r\n");
+    char str[20];
+    uint8_t len = 0;
+    uint8_t i;
+
+    const char *name_range_ip[] = {
+        "IP-адрес 1:\t\t\t",
+        "\r\nIP-адрес 2:\t\t\t",
+        "\r\nIP-адрес 3:\t\t\t",
+        "\r\nIP-адрес 4:\t\t\t",
+        "\r\nIP-адрес 5:\t\t\t",
+    };
+
+    const int8_t *const pcInfoTableHeader = ( int8_t * )
+        "\r\n*******Белый список IP адресов Контроллера*******\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 * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
+
+    for (uint8_t i = 0; i < MAX_WHITE_LIST; i++) {
+        GetWhiteListSTR(str, &len, i);
+        strcat(( char * ) buf, name_range_ip[i]);
+        strncat(( char * ) buf, str, len);
+    }
+
+    strcat(( char * ) buf, "\r\n");
 }
 }
 #endif
 #endif
 
 
 //Параметры ИБП
 //Параметры ИБП
 void ups_sensor_param(int8_t *buf)
 void ups_sensor_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
+    char str[20];
+    uint8_t len = 0;
 
 
-	GetConnectUPSAlarmStr(str, &len);
-	strcat(( char * ) buf, "\r\nСвязь с ИБП:\t\t\t\t");
-	strncat(( char * ) buf, str, len);
+    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***********Параметры источника питания***********\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 ) );
+    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 ) );
 
 
-	GetInputVoltageStr(str, &len);
-	strcat(( char * ) buf, "Входное напряжение (VAC):\t\t");
-	strncat(( char * ) buf, str, len);
+    GetInputVoltageStr(str, &len);
+    strcat(( char * ) buf, "Входное напряжение (VAC):\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nВыходное напряжение (VAC):\t\t");
-	GetOutputVoltageStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nВыходное напряжение (VAC):\t\t");
+    GetOutputVoltageStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
-	GetInputCurrentStr(str, &len);
-	strcat(( char * ) buf, "\r\nВходная сила тока (A):\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetInputCurrentStr(str, &len);
+    strcat(( char * ) buf, "\r\nВходная сила тока (A):\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nВыходная сила тока (A):\t\t\t");
-	GetOutputCurrentStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nВыходная сила тока (A):\t\t\t");
+    GetOutputCurrentStr(str, &len);
+    strncat(( char * ) buf, str, len);
 #endif
 #endif
 
 
-	strcat(( char * ) buf, "\r\nВходная частота:\t\t\t");
-	GetInputFreqStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nВходная частота:\t\t\t");
+    GetInputFreqStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nНагрузка:\t\t\t\t");
-	GetPowerStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nНагрузка:\t\t\t\t");
+    GetPowerStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nТекущий режим:\t\t\t\t");
-	GetUPSModeStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nТекущий режим:\t\t\t\t");
+    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Статус:\t\t\t\t\t");
+    GetUPSAlarmStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 //Параметры аккумуляторных батарей
 //Параметры аккумуляторных батарей
 void ups_sensor_akb_param(int8_t *buf)
 void ups_sensor_akb_param(int8_t *buf)
 {
 {
-	char str[40];
-	uint8_t len = 0;
+    char str[40];
+    uint8_t len = 0;
 
 
-	const int8_t * const pcAKBInfoTableHeader = ( 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 * ) pcAKBInfoTableHeader, strlen( ( char * ) pcAKBInfoTableHeader ) );
+    const int8_t *const pcAKBInfoTableHeader = ( 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 * ) pcAKBInfoTableHeader, strlen( ( char * ) pcAKBInfoTableHeader ) );
 
 
-	GetBatCapacityStr(str, &len);
-	strcat(( char * ) buf, "Оставшаяся емкость батареи (%):\t\t");
-	strncat(( char * ) buf, str, len);
+    GetBatCapacityStr(str, &len);
+    strcat(( char * ) buf, "Оставшаяся емкость батареи (%):\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nВнутренняя температура (°C):\t\t");
-	GetInternalTempStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nВнутренняя температура (°C):\t\t");
+    GetInternalTempStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nОставшееся время работы (мин):\t\t");
-	GetRuntimeStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nОставшееся время работы (мин):\t\t");
+    GetRuntimeStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
-	GetCapacityNominalAKBStr(str, &len);
-	strcat(( char * ) buf, "\r\nЕмкость батареи (Ач):\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetCapacityNominalAKBStr(str, &len);
+    strcat(( char * ) buf, "\r\nЕмкость батареи (Ач):\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nНапряжение батареи (В):\t\t\t");
-	GetVoltageAKBtStr(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nНапряжение батареи (В):\t\t\t");
+    GetVoltageAKBtStr(str, &len);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nДата следующей замены:\t\t\t");
-	GetDataNextChangeAKBStrRU(str, &len);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nДата следующей замены:\t\t\t");
+    GetDataNextChangeAKBStrRU(str, &len);
+    strncat(( char * ) buf, str, len);
 #endif
 #endif
 
 
-	strcat(( char * ) buf, "\r\nСтатус:\t\t\t\t\t");
-	GetAKBAlarmStr(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");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 
 
 #ifndef HARDWARE_BT6709
 #ifndef HARDWARE_BT6709
 //Параметры сухих контактов
 //Параметры сухих контактов
 void inouts_sensor_param(int8_t *buf)
 void inouts_sensor_param(int8_t *buf)
 {
 {
-	char str[20];
-	uint8_t len = 0;
+    char str[20];
+    uint8_t len = 0;
 
 
-	const int8_t * const pcInOutsInfoTableHeader = ( 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 * ) pcInOutsInfoTableHeader, strlen( ( char * ) pcInOutsInfoTableHeader ) );
+    const int8_t *const pcInOutsInfoTableHeader = ( 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 * ) pcInOutsInfoTableHeader, strlen( ( char * ) pcInOutsInfoTableHeader ) );
 
 
-	GetDIN0StatusStrRU(str, &len);
-	strcat(( char * ) buf, "Дискретный вход:\t\t\t");
-	strncat(( char * ) buf, str, len);
+    GetDIN0StatusStrRU(str, &len);
+    strcat(( char * ) buf, "Дискретный вход:\t\t\t");
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nРелейный выход 1:\t\t\t");
-	GetDOUTStatusStrRU(str, &len, 0);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nРелейный выход 1:\t\t\t");
+    GetDOUTStatusStrRU(str, &len, 0);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nРелейный выход 2:\t\t\t");
-	GetDOUTStatusStrRU(str, &len, 1);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nРелейный выход 2:\t\t\t");
+    GetDOUTStatusStrRU(str, &len, 1);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\nРелейный выход 3:\t\t\t");
-	GetDOUTStatusStrRU(str, &len, 2);
-	strncat(( char * ) buf, str, len);
+    strcat(( char * ) buf, "\r\nРелейный выход 3:\t\t\t");
+    GetDOUTStatusStrRU(str, &len, 2);
+    strncat(( char * ) buf, str, len);
 
 
-	strcat(( char * ) buf, "\r\n");
+    strcat(( char * ) buf, "\r\n");
 }
 }
 #endif
 #endif

+ 3 - 0
modules/Telnet_Server/CLI_Parameters.h

@@ -33,6 +33,9 @@ void alarm_config_param(int8_t *buf);
 void alarm_config_param(int8_t *buf);
 void alarm_config_param(int8_t *buf);
 
 
 #ifdef HARDWARE_BT6709
 #ifdef HARDWARE_BT6709
+//Список уведомлений и их состояние
+void notification_param(int8_t *buf);
+
 //Белый список IP адресов контроллера
 //Белый список IP адресов контроллера
 void whitelist_config_param(int8_t *buf);
 void whitelist_config_param(int8_t *buf);
 #endif
 #endif

+ 14 - 0
modules/parameters.c

@@ -683,6 +683,20 @@ void GetNotificationTrapsStateStr(char *str, uint8_t *len, uint8_t num)
     }
     }
 }
 }
 
 
+/**
+  * @brief  Параметр разрешения отправки трапа
+  */
+void GetNotificationTrapsStateStr2(char *str, uint8_t *len, uint8_t num)
+{
+    if ( sSettings.sFlagNotification[num] ) {
+        sprintf(str, "%s", "ENA");
+        *len = strlen(str);
+    } else {
+        sprintf(str, "%s", "DIS");
+        *len = strlen(str);
+    }
+}
+
 /**
 /**
   * @brief Длинное имя трапа
   * @brief Длинное имя трапа
   */
   */

+ 5 - 0
modules/parameters.h

@@ -228,6 +228,11 @@ void GetUPSVersionStr(char *str, uint8_t *len);
   */
   */
 void GetNotificationTrapsStateStr(char *str, uint8_t *len, uint8_t num);
 void GetNotificationTrapsStateStr(char *str, uint8_t *len, uint8_t num);
 
 
+/**
+  * @brief  Параметр разрешения отправки трапа
+  */
+void GetNotificationTrapsStateStr2(char *str, uint8_t *len, uint8_t num);
+
 /**
 /**
   * @brief Длинное имя трапа
   * @brief Длинное имя трапа
   */
   */