Prechádzať zdrojové kódy

[BT-6710]add function as in BT-6709-MTS

balbekova 2 rokov pred
rodič
commit
8c3a7f9244

+ 38 - 1
config/board_bt6710.h

@@ -71,7 +71,12 @@ WDG_PIN(X)
 /**
   * @brief  Версия прошивки
   */
-#define VERSION                         "1.0"
+#define VERSION                         "1.1a"
+
+/**
+  * brief  Текст сообщения при запуске CLI
+  */
+#define TELNET_CLI_WELCOME_MESSAGE      "BT-6710 command server - connection accepted.\r\nlogin:"
 
 #define RTC_ENABLE                  //RTC clock
 #define LED_ENABLE                  //LED индикация
@@ -80,6 +85,9 @@ WDG_PIN(X)
 #define NET_ENABLE                  //Ethernet сеть
 #define HTTP_SERVER_ENABLE           //Веб сервер
 #define SNMP_ENABLE                 //SNMP протокол
+#define NOTIFICATION_CONTROL_ENABLE //Управление уведомлениями
+#define TELNET_ENABLE               //Telnet сервер
+#define SSH_ENABLE                 //SSH сервер
 #define UPS_ENABLE                  //UPS
 #define PORTGW_ENABLE               //Прозрачный порт
 #define DALLAS_SENSOR_ENABLE        //DS18B20
@@ -92,6 +100,9 @@ XSETTING( SNTP_t,	sSNTP, SETTINGS_SetSntpDef, ALL_DEFAULT ) \
 XSETTING( DIN_Settings_t,	sDINs[INPUTS_TOTAL_COUNT], SETTINGS_SetDINSDef, ALL_DEFAULT ) \
 XSETTING( UPS_Setting_t, UPS_Setting, SETTINGS_SetUPSSettingsDef, ALL_DEFAULT ) \
 XSETTING( ALARM_MNGR_t, sAlarmManager, SETTINGS_SetAlarmManagerDef, ALL_DEFAULT ) \
+XSETTING( TELNET_t, sTelnet, SETTINGS_SetTelnetDef, PART_DEFAULT_1 ) \
+XSETTING( SSH_t, sSSH, SETTINGS_SetSSHDef, PART_DEFAULT_1 ) \
+XSETTING( uint8_t, sFlagNotification[ALL_TRAPS], SETTINGS_SetFlagNotificationDef, ALL_DEFAULT ) \
 XSETTING( PORTGW_t, sPortGw, SETTINGS_SetPortGwDef, ALL_DEFAULT ) \
 XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef, ALL_DEFAULT ) \
 
@@ -117,6 +128,10 @@ XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef
   XJSON_SETTINGS_TAG("gw",                 GetGatewayStr,                             SetGatewayStr) \
   XJSON_SETTINGS_TAG("mask",               GetMaskStr,                                SetMaskStr) \
   XJSON_SETTINGS_TAG("dhcp",               GetDhcpStateStr,                           SetDhcpStateStr) \
+   XJSON_SETTINGS_TAG("tn_port",            GetTelnetPortStr,                         SetTelnetPortStr) \
+  XJSON_SETTINGS_TAG("tn_enabled",         GetTelnetEnableStateStr,                   SetTelnetEnableStateStr) \
+  XJSON_SETTINGS_TAG("ssh_port",           GetSSHPortStr,                             SetSSHPortStr) \
+  XJSON_SETTINGS_TAG("ssh_enabled",        GetSSHEnableStateStr,                      SetSSHEnableStateStr) \
   XJSON_SETTINGS_TAG("pgw_en",             GetPortGwEnabledStr,                       SetPortGwEnabledStr) \
   XJSON_SETTINGS_TAG("pgw_port",           GetPortGwPortnumStr,                       SetPortGwPortnumStr) \
   XJSON_SETTINGS_TAG("pgw_baud",           GetPortGwBaudStr,                          SetPortGwBaudStr) \
@@ -141,6 +156,13 @@ XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef
   XJSON_SETTINGS_TAG("case_temp_high",     GetTemperatureCabinetAlarmHighRangeStr,    SetTemperatureCabinetAlarmHighRangeStr) \
   XJSON_SETTINGS_TAG("case_temp_low",      GetTemperatureCabinetAlarmLowRangeStr,     SetTemperatureCabinetAlarmLowRangeStr) \
   XJSON_SETTINGS_TAG("case_temp_hist",     GetTemperatureCabinetAlarmHisteStr,        SetTemperatureCabinetAlarmHisteStr) \
+  XJSON_SETTINGS_TAG("ups_cell_min",       GetUPSVoltCellMinStr,                      SetUPSVoltCellMinStr) \
+  XJSON_SETTINGS_TAG("ups_cell_max",       GetUPSVoltCellMaxStr,                      SetUPSVoltCellMaxStr) \
+  XJSON_SETTINGS_TAG("bat_prod",           GetDataSetAKBStr,                          SetDataSetAKBStr) \
+  XJSON_SETTINGS_TAG("bat_exp",            GetLifeTimeAKBStr,                         SetLifeTimeAKBStr) \
+  XJSON_SETTINGS_TAG("bat_cap",            GetCapacityNominalAKBStr,                  SetCapacityNominalAKBStr) \
+  XJSON_SETTINGS_TAG("bat_charge",         GetVoltageAKBNominalStr,                   SetVoltageAKBNominalStr) \
+  XJSON_SETTINGS_TAG("ups_max_power",      GetUPSPowerStr,                            SetUPSPowerStr) \
   XJSON_SETTINGS_TAG("netsettings_changed",GetWebReinitFlag,                          SetEmptyFuncStr) \
 
 #define WEB_PARAMS_TAGS_TABLE \
@@ -152,6 +174,11 @@ XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef
   XJSON_PARAMS_TAG("bat_rem_cap",        GetBatCapacityStr) \
   XJSON_PARAMS_TAG("inner_temp",         GetInternalTempStr) \
   XJSON_PARAMS_TAG("bat_time_left",      GetRuntimeStr) \
+  XJSON_PARAMS_TAG("in_cur",             GetInputCurrentStr) \
+  XJSON_PARAMS_TAG("out_cur",            GetOutputCurrentStr) \
+  XJSON_PARAMS_TAG("bat_volt",           GetVoltageAKBtStr) \
+  XJSON_PARAMS_TAG("bat_cap",            GetCapacityNominalAKBStr) \
+  XJSON_PARAMS_TAG("bat_exp",            GetDataNextChangeAKBStrRU) \
   XJSON_PARAMS_TAG("case_temp",          GetTempCaseStr) \
   XJSON_PARAMS_TAG("di1",                GetDIN0StatusStr) \
   XJSON_PARAMS_TAG("di_name1",           GetDIN0NameStr) \
@@ -186,6 +213,8 @@ XSETTING( TEMP_COTROL_t, sTempControl[MAX_T_SENSORS], SETTINGS_SetTempControlDef
   XTRAP(CONNECT_MONITOR_NORM,              17,     true,      GetConnectMonitorStr) \
   XTRAP(BATTERY_CONNECT_ALARM,             15,     true,      GetBatCapacityStr) \
   XTRAP(BATTERY_CONNECT_NORM,              15,     true,      GetBatCapacityStr) \
+  XTRAP(BATTERY_CHANGE_ALARM,              1,     true,      GetDataNextChangeAKBStr) \
+  XTRAP(BATTERY_CHANGE_MORM,               1,     true,      GetDataNextChangeAKBStr) \
 
 typedef enum
 {
@@ -213,6 +242,8 @@ typedef enum
   CONNECT_MONITOR_NORM,
   BATTERY_CONNECT_ALARM,
   BATTERY_CONNECT_NORM,
+  BATTERY_CHANGE_ALARM,
+  BATTERY_CHANGE_MORM,
   ALL_TRAPS
 } TRAP_LIST_t;
 
@@ -223,6 +254,8 @@ typedef enum {
 	LOG_TURN_ON,		//
 	LOG_PSW_CHANGE,		//
 	LOG_SETTING_SAVE,		//
+  LOG_LOGIN_TELNET,		//
+	LOG_LOGIN_SSH,
 	LOG_LOGIN,		//
 	LOG_TEST_UPS,		//
 	LOG_SHUTDOWN_UPS,
@@ -240,6 +273,7 @@ typedef enum {
 	LOG_ALARM_AKB,
   LOG_ALARM_SENSOR_AKB,
   LOG_ALARM_SENSOR_CABINET,
+  LOG_ALARM_CHANGE_AKB,
 	LOG_VALUE,
 	LOG_NONE,
 } log_type_t;
@@ -254,6 +288,7 @@ typedef enum {
 #define BAT_CONNECT_MONITOR
 #define UPS_CONNECT_MONITOR
 #define DIN_MONITOR
+#define AKB_CHANGE_MONITOR
 
 #define MONITOR_TABLE \
   XMONITOR(UPS_TestFinishMonitor,               (UPS.Present == UPS_CONNECTED)) \
@@ -269,6 +304,8 @@ typedef enum {
   XMONITOR(UPS_BatteryConnectMonitor,           (UPS.Present == UPS_CONNECTED)) \
   XMONITOR(UPS_ConnectMonitor,                  1) \
   XMONITOR(UPS_DI0Monitor,                      1) \
+   XMONITOR(AKB_Change_Monitor,                 1) \
+
 
 #define T_SENSOR_TABLE \
   XTSENSOR(T_SENSOR_1,     WDATA1,      DALLAS_SENSOR_1_USART) \

+ 1 - 1
modules/Ethernet/snmp_api.c

@@ -196,7 +196,7 @@ void SNMP_SetObjDescr(void)
 
 #if HARDWARE_BT6711 || HARDWARE_BT6711_V1
     strcpy(sSettings.sSnmp.sysDesc.description, HW_REV);
-#elif HARDWARE_BT6709_MTS
+#elif HARDWARE_BT6709_MTS || HARDWARE_BT6710
     strcat(sSettings.sSnmp.sysDesc.description, UPS.model);
 #else
     strcpy(sSettings.sSnmp.sysDesc.description, HW_REV);

+ 1 - 1
modules/Ethernet/snmp_api.h

@@ -132,7 +132,7 @@ void SNMP_SettingsSave(void);
   * @brief  Установка sysObjectID согласно логике МТС (данное решение согласовано с заказчиком)
   */
 const struct snmp_obj_id* SNMP_GetSysObjectIDforMTS(void);
-#ifdef HARDWARE_BT6709_MTS 
+#ifdef HARDWARE_BT6709_MTS || HARDWARE_BT6710
  #define SNMP_GET_SYSOBJECTID_MTS() SNMP_GetSysObjectIDforMTS();
 #endif
 

+ 5 - 5
modules/Makefile

@@ -113,16 +113,16 @@ INCLUDES += -I../thirdparty/cjson
 ifneq (,$(filter $(HARDWARE),bt6703 bt6703_rt))	
    CSRC += $(wildcard HTTP_Server/my_ssl_server.c)
 endif  
-ifeq ($(HARDWARE), bt6710) 	
-   CSRC += $(wildcard HTTP_Server/http_server.c)
-endif  
-ifneq (,$(filter $(HARDWARE),bt6707 bt6709 bt6709_mts bt6711 bt6711_v1))
+#ifeq ($(HARDWARE), bt6710) 	
+#   CSRC += $(wildcard HTTP_Server/http_server.c)
+#endif  
+ifneq (,$(filter $(HARDWARE),bt6707 bt6709 bt6709_mts bt6711 bt6711_v1 bt6710))
 	INCLUDES += -Icli
 	CSRC += $(wildcard cli/*.c)
 	INCLUDES += -ITelnet_Server
 	CSRC += $(wildcard HTTP_Server/http_server.c)
 	CSRC += $(wildcard Telnet_Server/*.c)
-	ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts))
+	ifneq (,$(filter $(HARDWARE),bt6709 bt6709_mts bt6710))
 		# SSH
 		CSRC += $(wildcard ../thirdparty/wolfssl/wolfcrypt/src/*.c) ../thirdparty/wolfssl/wolfcrypt/src/port/st/stm32.c
 		INCLUDES += -I../thirdparty/wolfssl

+ 1 - 1
modules/MegaTec/megatec.c

@@ -636,7 +636,7 @@ void ups_model_response(char *data)
             }
             else
 #endif
-#if HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709_MTS || HARDWARE_BT6710
             if(UPS.serial[0] == 0) {
                 return;
             }

+ 2 - 2
modules/Telnet_Server/telnet_server.c

@@ -529,7 +529,7 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 	uint16_t port;
 	bool enabled;
 	bool firstrun = true;
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS 
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
 	struct sockaddr_in sa_temp;
 	socklen_t len;
 #endif
@@ -653,7 +653,7 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 						if (new_sd > max_sd) {
 							max_sd = new_sd;
 						}
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS 
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
 						lwip_getpeername(new_sd, &sa_temp, &len);
 #endif
 					//	recv( new_sd, &auth_tlnt_srvr_param[cur_cnt].buf, 27, 0 );

+ 364 - 11
modules/cli/CLI_Commands.c

@@ -82,7 +82,7 @@ const char *akb_args_list[] = {
     "info",
     "voltcellmin",
     "voltcellmax",
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
     "capacity",
     "voltakb",
     "lifetime",
@@ -98,8 +98,13 @@ const char *akb_args_list[] = {
 const char *type_alarm_args_list[] = {
     "info",
     "temp",
+#ifndef HARDWARE_BT6710
     "load",
+#endif
     "vout",
+#ifdef TEMP_CABINET_MONITOR
+    "temp_cabinet"
+#endif
 #ifdef VAC_IN_MONITOR
     "vacin",
 #endif
@@ -340,7 +345,7 @@ static const CLI_Command_Definition_t prvAKBCommandDefinition = {
     ( const int8_t *const ) "\takb info: вывод информации о параметрах АКБ\r\n"
 							"\takb voltcellmin <value>: ввод минимального напряжения на ячейки АКБ (В)\r\n"
 							"\takb voltcellmax <value>: ввод максимального напряжения на ячейки АКБ (В)\r\n"
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
 							"\takb capacity <value>: ввод ёмкости АКБ (Ач)\r\n"
 							"\takb voltakb <value>:  ввод номинального напряжения АКБ (В)\r\n"
 							"\takb lifetime <value>: ввод срока службы АКБ (лет)\r\n"
@@ -364,11 +369,18 @@ static const CLI_Command_Definition_t prvAlarmCommandDefinition = {
 							"\talarm temp low <value>: ввод нижней границы аварии по температуре (С)\r\n"
 							"\talarm temp high <value>: ввод верxней границы аварии по температуре (С)\r\n"
 							"\talarm temp hist <value>: ввод гистерезиса аварии по температуре (С)\r\n"
+#ifndef HARDWARE_BT6710
 							"\talarm load high <value>: ввод верхней границы аварии по нагрузке (%)\r\n"
 							"\talarm load hist <value>: ввод гистерезиса аварии по нагрузке (%)\r\n"
+#endif
 							"\talarm vout low <value>: ввод нижней границы аварии по вых. напряжению (В)\r\n"
 							"\talarm vout high <value>: ввод верxней границы аварии по вых. напряжению (В)\r\n"
 							"\talarm vout hist <value>: ввод гистерезиса аварии по вых. напряжению (В)\r\n"
+#ifdef TEMP_CABINET_MONITOR
+                            "\talarm temp_cabinet low <value>: ввод нижней границы аварии по температуре в шкафу (С)\r\n"
+							"\talarm temp_cabinet high <value>: ввод верxней границы аварии по температуре в шкафу (С)\r\n"
+							"\talarm temp_cabinet hist <value>: ввод гистерезиса аварии по температуре в шкафу (С)\r\n"
+#endif
 #ifdef VAC_IN_MONITOR
 							"\talarm vacin low <value>: ввод нижней границы аварии по вх. напряжению (В)\r\n"
 							"\talarm vacin high <value>: ввод верxней границы аварии по вх. напряжению (В)\r\n"
@@ -451,6 +463,15 @@ static const CLI_Command_Definition_t prvSensorCommandDefinition = {
 							"\tsensor 	setup DI <num> <state>: установка нормального состояния сухого контакта:\r\n"
 							"\t\t\t\t0 - разомкнутое состояние\r\n"
 							"\t\t\t\t1 - замкнутое состояние\r\n"
+#ifdef HARDWARE_BT6710
+                            "\tsensor 	setup DIname <num> <name>: установка названия сухого контакта\r\n"
+#endif                        
+#endif
+#ifdef DALLAS_SENSOR_ENABLE
+                            "\tsensor 	setup TS <num> <function>: установка назначения датчика температуры:\r\n"
+							"\t\t\t\t0 - нет\r\n"
+							"\t\t\t\t1 - Шкаф\r\n"
+                            "\t\t\t\t2 - АКБ\r\n"
 #endif
 #ifdef DOUTS_ENABLE
 							"\tsensor 	setup DO <num> <issue>: установка источника срабатывания реле:\r\n"
@@ -595,6 +616,48 @@ static const CLI_Command_Definition_t prvRADIUSCommandDefinition = {
 };
 #endif
 
+#ifdef PORTGW_ENABLE
+const char *pgw_args_list[] = {
+    "info",
+    "ENA",
+    "DIS",
+    "port",
+    "parity",
+    "odd",
+    "datalen",
+    "stopbit"
+};
+
+typedef enum{
+    ARG_PGW_INFO = 0,
+	ARG_PGW_ENABLE,
+	ARG_PGW_DISABLE,
+    ARG_PGW_PORT,
+    ARG_PGW_RATE,
+    ARG_PGW_PARITY,
+    ARG_PGW_DATALEN,
+    ARG_PGW_STOPBIT,
+	ARG_PGW_ALL
+}pgw_args_t;
+
+static portBASE_TYPE prvTaskPGWCommand(cli_state_t *cli_state, int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
+static const CLI_Command_Definition_t prvPGWCommandDefinition = {
+    (const int8_t *const)"pgw",  /* The command string to type. */
+    (const int8_t *const)"\tpgw info: вывод информации о настройках прозрачного канала\r\n"
+                         "\tpgw ENA|DIS: вкл./выкл. прозрачного канала\r\n"
+                         "\tpgw port <port>: установка сетевого парта\r\n"
+                         "\tpgw boardrate <boardrate>: установка скорости (бит/с) порта RS-485\r\n"
+                         "\tpgw parity <parity>: установка четности порта RS-485:\r\n"
+                         "\t\t\t\t0 - нет\r\n"
+                         "\t\t\t\t1 - четный\r\n"
+                         "\t\t\t\t0 - нечетный\r\n"
+                         "\tpgw datalen <datalen>: установка битов данных порта RS-485\r\n"
+                         "\tpgw stopbit <stopbit>: установка стоповых бит порта RS-485\r\n",
+    prvTaskPGWCommand, /* The function to run. */
+    -1 /* The user can enter any number of commands. */
+};
+#endif
+
 static const CLI_Command_Definition_t prvSetUPSserialCommandDefinition =
 {
 	( const int8_t * const ) "setupsid", /* The command string to type. */
@@ -646,6 +709,9 @@ void vRegisterCLICommands( void )
 #endif
 #ifdef RADIUS_SERVER_ENABLE
     FreeRTOS_CLIRegisterCommand( &prvRADIUSCommandDefinition );
+#endif
+#ifdef PORTGW_ENABLE
+    FreeRTOS_CLIRegisterCommand( &prvPGWCommandDefinition );
 #endif
     FreeRTOS_CLIRegisterCommand( &prvSetUPSserialCommandDefinition );
     FreeRTOS_CLIRegisterCommand( &prvQuitCommandDefinition );
@@ -1551,7 +1617,7 @@ static portBASE_TYPE prvTaskAKBCommand(cli_state_t *cli_state, int8_t *pcWriteBu
         xParameterStringLength = sizeof(str) - 2;
     }
     strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS 
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
 	if (i != ARG_AKB_DATASET)
 #endif
 	{
@@ -1581,7 +1647,7 @@ static portBASE_TYPE prvTaskAKBCommand(cli_state_t *cli_state, int8_t *pcWriteBu
                 strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
             }
             break;
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
         case ARG_AKB_CAPACITY:
             if (value >= CAPACITY_MIN_RANGE && value <= CAPACITY_MAX_RANGE && (value - (int32_t)value) == 0) {
                 SetCapacityNominalAKBStr(str);
@@ -1598,7 +1664,7 @@ static portBASE_TYPE prvTaskAKBCommand(cli_state_t *cli_state, int8_t *pcWriteBu
                 strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
             }
             break;
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
         case ARG_AKB_LIFETIME:
             if (value >= LIFETIME_MIN_RANGE && value <= LIFETIME_MAX_RANGE  && (value - (int32_t)value) == 0) {
                 SetLifeTimeAKBStr(str);
@@ -1812,6 +1878,7 @@ static portBASE_TYPE prvTaskAlarmCommand(cli_state_t *cli_state, int8_t *pcWrite
                     break;
             }
             break;
+#ifndef HARDWARE_BT6710
         case ARG_ALARM_LOAD:
             switch (j) {
                 case ARG_ALARM_LINE_LOW:
@@ -1852,6 +1919,7 @@ static portBASE_TYPE prvTaskAlarmCommand(cli_state_t *cli_state, int8_t *pcWrite
                     break;
             }
             break;
+#endif
         case ARG_ALARM_VOUT:
             switch (j) {
                 case ARG_ALARM_LINE_LOW:
@@ -1904,6 +1972,64 @@ static portBASE_TYPE prvTaskAlarmCommand(cli_state_t *cli_state, int8_t *pcWrite
                     break;
             }
             break;
+#ifdef TEMP_CABINET_MONITOR
+        case ARG_TEMP_CABINAT:
+            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 >= MIN_TEMP_MIN_RANGE && value <= MIN_TEMP_MAX_RANGE) {
+                        SetTemperatureCabinetAlarmLowRangeStr(str);
+                        cli_save_config(cli_state);
+                    } 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 >= MAX_TEMP_MIN_RANGE && value <= MAX_TEMP_MAX_RANGE) {
+                        SetTemperatureCabinetAlarmHighRangeStr(str);
+                        cli_save_config(cli_state);
+                    } 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 >= HIST_TEMP_MIN_RANGE && value <= HIST_TEMP_MAX_RANGE) {
+                        SetTemperatureCabinetAlarmHisteStr(str);
+                        cli_save_config(cli_state);
+                    } else {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    }
+                    break;
+                default:
+                    strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    break;
+            }
+            break;
+#endif
 #ifdef VAC_IN_MONITOR
         case ARG_ALARM_VACIN:
             switch (j) {
@@ -2697,7 +2823,7 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
     static uint8_t config_menu = 0;
     uint8_t MAX_CONFIG_PARAM = 0;
 
-#ifdef DINS_ENABLE || DOUTS_ENABLE
+#ifdef DINS_ENABLE || DOUTS_ENABLE || DALLAS_SENSOR_ENABLE
     MAX_CONFIG_PARAM = 3;
 #else
     MAX_CONFIG_PARAM = 2;
@@ -2750,7 +2876,7 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
                 case 1:
                     ups_sensor_akb_param(pcWriteBuffer);
                     break;
-#ifdef DINS_ENABLE || DOUTS_ENABLE
+#ifdef DINS_ENABLE || DOUTS_ENABLE || DALLAS_SENSOR_ENABLE
                 case 2:
                     inouts_sensor_param(pcWriteBuffer);
                     break;
@@ -2769,7 +2895,7 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
         }
     } else {
         switch (i) {
-#ifdef DINS_ENABLE || DOUTS_ENABLE
+#ifdef DINS_ENABLE || DOUTS_ENABLE || DALLAS_SENSOR_ENABLE
             case ARG_SENSOR_SETUP:
                 if (cli_state->user_id != ADMIN) {
                     strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
@@ -2822,7 +2948,7 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
                     fail = 1;
 #ifdef DINS_ENABLE
                     if (strncmp(str, "DI", 2) == 0) {
-                        if (val != 1) {
+                        if (val < 0 || val > INPUTS_TOTAL_COUNT) {
                             break;
                         }
 
@@ -2834,6 +2960,36 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
                         cli_save_config(cli_state);
                         fail = 0;
                     }
+#ifdef HARDWARE_BT6710
+                    else if (strncmp(str, "DIname", 6) == 0) {
+                        if (val < 0 || val > INPUTS_TOTAL_COUNT) {
+                            break;
+                        }
+
+                        val2 = strlen(temp_str);
+                        if (val2 < 0 || val2 >= 21) {
+                            break;
+                        }
+                        SetDINNameStr(temp_str, (val - 1));
+                        cli_save_config(cli_state);
+                        fail = 0;
+                    }
+#endif                   
+#endif
+#ifdef DALLAS_SENSOR_ENABLE
+                    if (strncmp(str, "TS", 2) == 0) {
+                        if (val < 1 || val > (MAX_T_SENSORS + 1)) {
+                            break;
+                        }
+
+                        val2 = atoi(temp_str);
+                        if (val2 < TS_NONE || val2 > TS_AKB) {
+                            break;
+                        }
+                        SetTSlocationStr(temp_str, (val - 1));
+                        cli_save_config(cli_state);
+                        fail = 0;
+                    }
 #endif
 #ifdef DOUTS_ENABLE 
                     if (strncmp(str, "DO", 2) == 0) {
@@ -2848,9 +3004,9 @@ static portBASE_TYPE prvTaskSensorCommand(cli_state_t *cli_state, int8_t *pcWrit
                         SetROTypeActStr(temp_str, (val - 1));
                         cli_save_config(cli_state);
                         fail = 0;
-                    }
-                }
+                    }              
 #endif 
+                }
                 break;
 #endif
             default:
@@ -3311,6 +3467,203 @@ static portBASE_TYPE  prvTaskRADIUSCommand(cli_state_t *cli_state, int8_t *pcWri
 }
 #endif
 
+#ifdef PORTGW_ENABLE
+static portBASE_TYPE  prvTaskPGWCommand(cli_state_t *cli_state, 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];
+    char str_temp[110];
+    uint8_t len;
+    uint8_t i;
+    bool enable_old_pgw;
+
+    ( 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_PGW_ALL; i ++) {
+        if ( strncmp( ( const char * ) pcParameterString, pgw_args_list[i], strlen(pgw_args_list[i]) ) == 0 
+            && xParameterStringLength == strlen(pgw_args_list[i])) {
+            break;
+        }
+    }
+
+    if (cli_state->user_id != ADMIN && i != ARG_PGW_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) {
+        switch (i) {
+            case ARG_PGW_INFO:
+                /* Return the next command help string, before moving the pointer on to
+                the next command in the list. */
+                pgw_config_param(pcWriteBuffer);
+                break;
+            case ARG_PGW_ENABLE:
+                enable_old_pgw = sSettings.sPortGw.enabled;
+                SetPortGwEnabledStr("on");
+                if (sSettings.sPortGw.enabled != enable_old_pgw) {
+                    cli_save_config(cli_state);
+                }
+                break;
+            case ARG_PGW_DISABLE:
+                enable_old_pgw = sSettings.sPortGw.enabled;
+                SetPortGwEnabledStr("off");
+                if (sSettings.sPortGw.enabled != enable_old_pgw) {
+                    cli_save_config(cli_state);
+                }
+                break;
+            default:
+                strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                break;
+        }
+    } else {
+        memset(str_temp, 0, sizeof(str_temp));
+        if (xParameterStringLength > (int32_t)sizeof(str_temp)) {
+            xParameterStringLength = sizeof(str_temp) - 1;
+        }
+        strncat(str_temp, ( const char * ) pcParameterString, xParameterStringLength);
+        switch (i) {
+            case ARG_PGW_PORT:
+                if (xParameterStringLength <= 5) {
+                    for (uint8_t j = 0; j < xParameterStringLength; j++) {
+                        if (!isdigit_int(str_temp[j])) {
+                            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                            return pdFALSE;
+                        }
+                    }
+                    int temp = atoi(str_temp);
+                    if (temp > 0 && temp < 65535) {
+                        GetPortGwPortnumStr(str, &len);
+                        if (strncmp(str_temp, str, strlen(str_temp)) != 0) {
+                            SetPortGwPortnumStr(str_temp);
+                            cli_save_config(cli_state);
+                        }
+                    } else {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    }
+                } else {
+                    strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                }
+                break;
+            case ARG_PGW_RATE:
+                if (xParameterStringLength <= 6) {
+                    for (uint8_t j = 0; j < xParameterStringLength; j++) {
+                        if (!isdigit_int(str_temp[j])) {
+                            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                            return pdFALSE;
+                        }
+                    }
+                    int temp_rate = atoi(str_temp);
+                    if (temp_rate == 1200 || temp_rate == 2400 || temp_rate == 4800 || temp_rate == 9600
+                        || temp_rate == 19200 || temp_rate == 38400 || temp_rate == 57600 || temp_rate == 115200) {
+                        GetPortGwBaudStr(str, &len);
+                        if (strncmp(str_temp, str, strlen(str_temp)) != 0 || strlen(str_temp) != strlen(str)) {
+                            SetPortGwBaudStr(str_temp);
+                            cli_save_config(cli_state);
+                        }
+                    } else {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    }
+                } else {
+                    strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                }
+                break;
+            case ARG_PGW_PARITY:
+                if (xParameterStringLength == 1) {
+                    for (uint8_t j = 0; j < xParameterStringLength; j++) {
+                        if (!isdigit_int(str_temp[j])) {
+                            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                            return pdFALSE;
+                        }
+                    }
+                    int temp_parity = atoi(str_temp);
+                    if (temp_parity >= GW_NO_PAR || temp_parity < MAX_PARITY_TYPES) {
+                        uint32_t parity;
+                        GetPortGwParityInt(&parity);
+                        if ((int)parity != temp_parity) {
+                            SetPortGwParityInt(temp_parity);
+                            cli_save_config(cli_state);
+                        }
+                    } else {
+                        strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                    }
+                } else {
+                    strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                }
+                break;
+            case ARG_PGW_DATALEN:
+            case ARG_PGW_STOPBIT:
+                if (xParameterStringLength == 1) {
+                    for (uint8_t j = 0; j < xParameterStringLength; j++) {
+                        if (!isdigit_int(str_temp[j])) {
+                            strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
+                            return pdFALSE;
+                        }
+                    }
+                    char limit1, limit2;
+                    if (i == ARG_PGW_DATALEN) {
+                        GetPortGwDatabitsStr(str, &len);
+                        limit1 = 0x37;
+                        limit2 = 0x38;
+                    } else {
+                        GetPortGwStopbitsStr(str, &len);
+                        limit1 = 0x31;
+                        limit2 = 0x32;
+                    }
+                    if (str_temp[0] == limit1 || str_temp[0] == limit2) {
+                        
+                        if (str[0] != str_temp[0]) {
+                            if (i == ARG_PGW_DATALEN) {
+                                SetPortGwDatabitsStr(str_temp);
+                            } else {
+                                SetPortGwStopbitsStr(str_temp);
+                            }
+                            cli_save_config(cli_state);
+                        }
+                    } 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;    
+}
+#endif
+
 #ifdef FTP_ENABLE
 #pragma GCC diagnostic error "-Wall"
 #pragma GCC diagnostic error "-Wextra"

+ 7 - 2
modules/cli/CLI_Commands.h

@@ -49,7 +49,7 @@ typedef enum{
 	ARG_AKB_INFO = 0,
 	ARG_AKB_VOLT_CELL_MIN,
 	ARG_AKB_VOLT_CELL_MAX,
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS 
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
 	ARG_AKB_CAPACITY,
 	ARG_AKB_VOLT,
 	ARG_AKB_LIFETIME,
@@ -66,8 +66,13 @@ typedef enum{
 typedef enum{
 	ARG_ALARM_INFO = 0,
 	ARG_ALARM_TEMP,
+#ifndef HARDWARE_BT6710
 	ARG_ALARM_LOAD,
+#endif
 	ARG_ALARM_VOUT,
+#ifdef TEMP_CABINET_MONITOR
+	ARG_TEMP_CABINAT,
+#endif
 #ifdef VAC_IN_MONITOR
 	ARG_ALARM_VACIN,
 #endif
@@ -143,7 +148,7 @@ typedef enum{
 
 typedef enum{
 	ARG_SENSOR_INFO = 0,
-#ifdef HARDWARE_BT6707
+#ifdef DINS_ENABLE || DOUTS_ENABLE
 	ARG_SENSOR_SETUP,
 #endif
 	ARG_SENSOR_ALL

+ 154 - 25
modules/cli/CLI_Parameters.c

@@ -69,19 +69,29 @@ void snmp_config_param(int8_t *buf)
     strcat(( char * ) buf, "\r\n");
 }
 
-#ifdef DINS_ENABLE || DOUTS_ENABLE
+#ifdef DINS_ENABLE || DOUTS_ENABLE || DALLAS_SENSOR_ENABLE
 //Настройки сухих контактов
 void inouts_config_param(int8_t *buf)
 {
     char str[20];
     char str_temp[20];
     uint8_t len = 0;
-
+#ifdef HARDWARE_BT6710
+    const int8_t *const pcInOutsTableHeader = ( int8_t * )
+        "\r\n***********Настройки Датчиков Контроллера**************\r\n";
+#else
     const int8_t *const pcInOutsTableHeader = ( int8_t * )
         "\r\n*********Настройки сухих контактов Контроллера*********\r\n";
+#endif
     const int8_t *const pcDryInsTableHeader = ( int8_t * ) "Дискретные входы\r\n";
-    const int8_t *const pcDryInsTableHeader2 = ( int8_t * )
-        "\r\n№\t\tНормальное состояние\r\n";
+    
+#ifdef HARDWARE_BT6710
+    const int8_t *const pcDryInsTableHeader2 = ( int8_t * ) "\r\n№ Название\t\tНормальное состояние\r\n";
+#else
+    const int8_t *const pcDryInsTableHeader2 = ( int8_t * ) "\r\n№\t\tНормальное состояние\r\n";
+#endif
+    const int8_t *const pcTempSensorTableHeader = ( int8_t * ) "Датчики температуры\r\n";
+    const int8_t *const pcTempSensorTableHeader2 = ( 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";
@@ -95,15 +105,41 @@ void inouts_config_param(int8_t *buf)
     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;
+    for (uint8_t i = 0; i < INPUTS_TOTAL_COUNT; i ++) {
+        memset(str_temp, 0, strlen(str_temp));
+        sprintf(str_temp, "%d:\t\t", i);
+        strcat(( char * ) buf, str_temp);
+#ifdef HARDWARE_BT6710
+        GetDINNameStr(str, &len, i);
+        strncat(( char * ) buf, str, len);
+#endif
+        strcat(( char * ) buf, "\t\t");
+        GetDINTypeActStr(str, &len, i);
+        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");
+#endif
+#ifdef DALLAS_SENSOR_ENABLE
+    strncat( ( char * ) buf, ( const char * ) pcTempSensorTableHeader, strlen( ( char * ) pcTempSensorTableHeader ) );
+    strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader2, strlen( ( char * ) pcTempSensorTableHeader2 ) );
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+
+    for (uint8_t i =0; i < MAX_T_SENSORS; i ++) {
+        memset(str_temp, 0, strlen(str_temp));
+        sprintf(str_temp, "%d:\t\t", i);
+        strcat(( char * ) buf, str_temp);
+        GetTSlocationStr(str, &len, i);
+        strncat(( char * ) buf, str, len);
+        strcat(( char * ) buf, "\r\n");
     }
     strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
     strcat(( char * ) buf, "\r\n");
@@ -232,6 +268,55 @@ void radius_config_param(int8_t *buf)
 }
 #endif
 
+#ifdef PORTGW_ENABLE
+void pgw_config_param(int8_t *buf)
+{
+    char str[100];
+    uint8_t len = 0;
+
+    const int8_t *const pcInfoTableHeader = ( int8_t * )
+    "\r\n**********Настройки прозрачного канала**********\r\n";
+
+    const int8_t *const pcPGWnetTableHeader = ( int8_t * ) "Сетевые настройки\r\n";
+    const int8_t *const pcRS485TableHeader = ( int8_t * ) "Настройки RS-485 интерфейса\r\n";
+    const int8_t *const pcSharedTableHeader = ( int8_t * ) "\r\n------------------+----------------------------\r\n";
+
+    strncpy( ( char * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
+
+    GetPortGwEnabledRUStr(str, &len);
+    strcat(( char * ) buf, "Работа по прозрачному порту:\t");
+    strncat(( char * ) buf, str, len);
+
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+    strncat( ( char * ) buf, ( const char * ) pcPGWnetTableHeader, strlen( ( char * ) pcPGWnetTableHeader ) );
+
+    strcat(( char * ) buf, "\r\nПорт:\t\t\t\t");
+    GetPortGwPortnumStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
+    strncat( ( char * ) buf, ( const char * ) pcRS485TableHeader, strlen( ( char * ) pcRS485TableHeader ) );
+
+    strcat(( char * ) buf, "\r\nСкорость:\t\t\t");
+    GetPortGwBaudStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\nЧетность:\t\t\t");
+    GetPortGwParityRUStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\nБиты данных:\t\t\t");
+    GetPortGwDatabitsStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\nСтоповые биты:\t\t\t");
+    GetPortGwStopbitsStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\n");
+}
+#endif
+
 //Настройки времени
 void time_config_param(int8_t *buf)
 {
@@ -294,7 +379,7 @@ void akb_config_param(int8_t *buf)
     GetUPSVoltCellMaxStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
 
     GetVoltageAKBNominalStr(str, &len);
     strcat(( char * ) buf, "\r\nНоминальное напряжение (В):\t\t");
@@ -308,7 +393,7 @@ void akb_config_param(int8_t *buf)
     strcat(( char * ) buf, "\r\nПолная мощность ИБП (ВА):\t\t");
     strncat(( char * ) buf, str, len);
 #endif
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
     GetLifeTimeAKBStr(str, &len);
     strcat(( char * ) buf, "\r\nСрок службы (лет):\t\t\t");
     strncat(( char * ) buf, str, len);
@@ -358,7 +443,7 @@ void alarm_config_param(int8_t *buf)
     strncat(( char * ) buf, str, len);
 
     strcat(( char * ) buf, "\r\n");
-
+#ifndef HARDWARE_BT6710
     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. */
@@ -373,7 +458,7 @@ void alarm_config_param(int8_t *buf)
     strncat(( char * ) buf, str, len);
 
     strcat(( char * ) buf, "\r\n");
-
+#endif
     const int8_t *const pcAlarmVoutTableHeader = ( int8_t * )
         "\r\n*********Выходное напряжение (В)*********\r\n";
     /* Return the next command help string, before moving the pointer on to
@@ -394,6 +479,28 @@ void alarm_config_param(int8_t *buf)
 
     strcat(( char * ) buf, "\r\n");
 
+#ifdef TEMP_CABINET_MONITOR
+    const int8_t *const pcAlarmTempCabinetTableHeader = ( 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 * ) pcAlarmTempCabinetTableHeader, strlen( ( char * ) pcAlarmTempCabinetTableHeader ) );
+
+    GetTemperatureCabinetAlarmLowRangeStr(str, &len);
+    strcat(( char * ) buf, name_range_alarm[0]);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, name_range_alarm[1]);
+    GetTemperatureCabinetAlarmHighRangeStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, name_range_alarm[2]);
+    GetTemperatureCabinetAlarmHisteStr(str, &len);
+    strncat(( char * ) buf, str, len);
+
+    strcat(( char * ) buf, "\r\n");
+#endif
+
 #ifdef VAC_IN_MONITOR
    const int8_t *const pcAlarmVinTableHeader = ( int8_t * )
         "\r\n*********Входное напряжение (В)*********\r\n";
@@ -454,8 +561,8 @@ void notification_param(int8_t *buf)
 
     strcat(( char * ) buf, "\r\n");
 }
-
-
+#endif
+#ifdef WHITELIST_ENABLE
 //Белый список IP адресов контроллера
 void whitelist_config_param(int8_t *buf)
 {
@@ -511,7 +618,7 @@ void ups_sensor_param(int8_t *buf)
     GetOutputVoltageStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1 || HARDWARE_BT6710
     GetInputCurrentStr(str, &len);
     strcat(( char * ) buf, "\r\nВходная сила тока (A):\t\t\t");
     strncat(( char * ) buf, str, len);
@@ -529,7 +636,7 @@ void ups_sensor_param(int8_t *buf)
     GetPowerStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6711 || HARDWARE_BT6711_V1
     strcat(( char * ) buf, "\r\nНагрузка (Режим АКБ):\t\t\t");
     GetLoadAKBModeStr(str, &len);
     strncat(( char * ) buf, str, len);
@@ -575,7 +682,7 @@ void ups_sensor_akb_param(int8_t *buf)
     GetRuntimeStr(str, &len);
     strncat(( char * ) buf, str, len);
 
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6711 || HARDWARE_BT6711_V1
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710 || HARDWARE_BT6711 || HARDWARE_BT6711_V1
     GetCapacityNominalAKBStr(str, &len);
     strcat(( char * ) buf, "\r\nЕмкость батареи (Ач):\t\t\t");
     strncat(( char * ) buf, str, len);
@@ -584,7 +691,7 @@ void ups_sensor_akb_param(int8_t *buf)
     GetVoltageAKBtStr(str, &len);
     strncat(( char * ) buf, str, len);
 #endif
-#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS
+#if HARDWARE_BT6709 || HARDWARE_BT6709_MTS || HARDWARE_BT6710
     strcat(( char * ) buf, "\r\nДата следующей замены:\t\t\t");
     GetDataNextChangeAKBStrRU(str, &len);
     strncat(( char * ) buf, str, len);
@@ -603,17 +710,34 @@ void inouts_sensor_param(int8_t *buf)
 {
     char str[20];
     uint8_t len = 0;
-
+#ifdef HARDWARE_BT6710
+    const int8_t *const pcInOutsInfoTableHeader = ( int8_t * )
+        "\r\n****************Датчики Контроллера***************\r\n";
+#else
     const int8_t *const pcInOutsInfoTableHeader = ( int8_t * )
         "\r\n************Параметры сухих контактов************\r\n";
+#endif
     /* 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 ) );
 #ifdef DINS_ENABLE
-    GetDIN0StatusStrRU(str, &len);
+#ifdef HARDWARE_BT6710
+    for(uint8_t i = 0; i < INPUTS_TOTAL_COUNT; i ++)  {
+        GetDINNameStr(str, &len, i);
+        strncat(( char * ) buf, str, len);
+        strcat(( char * ) buf, "\t\t\t\t\t");
+        GetDINStatusStrRU(str, &len, i);
+        strncat(( char * ) buf, str, len);
+        if(i != (INPUTS_TOTAL_COUNT - 1)) {
+            strcat(( char * ) buf, "\r\n");
+        }
+    }
+#else
+    GetDINStatusStrRU(str, &len, 0);
     strcat(( char * ) buf, "Дискретный вход:\t\t\t");
     strncat(( char * ) buf, str, len);
 #endif
+#endif
 #ifdef DOUTS_ENABLE
     strcat(( char * ) buf, "\r\nРелейный выход 1:\t\t\t");
     GetDOUTStatusStrRU(str, &len, 0);
@@ -626,6 +750,11 @@ void inouts_sensor_param(int8_t *buf)
     strcat(( char * ) buf, "\r\nРелейный выход 3:\t\t\t");
     GetDOUTStatusStrRU(str, &len, 2);
     strncat(( char * ) buf, str, len);
+#endif
+#ifdef DALLAS_SENSOR_ENABLE
+    GetTempCaseStr(str, &len);
+    strcat(( char * ) buf, "\r\nТемпература в шкафу (°C):\t\t");
+    strncat(( char * ) buf, str, len);
 #endif
     strcat(( char * ) buf, "\r\n");
 }

+ 4 - 0
modules/cli/CLI_Parameters.h

@@ -31,6 +31,10 @@ void syslog_config_param(int8_t *buf);
 void radius_config_param(int8_t *buf);
 #endif
 
+#ifdef PORTGW_ENABLE
+void pgw_config_param(int8_t *buf);
+#endif
+
 //Настройки АКБ
 void akb_config_param(int8_t *buf);
 

+ 80 - 3
modules/parameters.c

@@ -811,15 +811,16 @@ void GetDIN1StatusStr(char *str, uint8_t *len)
 /**
   * @brief  Состояние сухого контакта
   */
-void GetDIN0StatusStrRU(char *str, uint8_t *len)
+void GetDINStatusStrRU(char *str, uint8_t *len, uint8_t num)
 {
-    if (get_state_din_outs(DIN1) ^ 1) {
+    if (get_state_din_outs(DIN1+num) ^ 1) {
         sprintf(str, "Разомкнут" );
     } else {
         sprintf(str, "Замкнут" );
     }
     *len = strlen(str);
 }
+
 #endif
 #ifdef DOUTS_ENABLE
 /**
@@ -1401,6 +1402,19 @@ void GetPortGwEnabledStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief  Включен/Выключен
+  */
+void GetPortGwEnabledRUStr(char *str, uint8_t *len)
+{
+    if (sSettings.sPortGw.enabled) {
+        sprintf(str, "%s", "Включен");
+    } else {
+        sprintf(str, "%s", "Выключен");
+    }
+    *len = strlen(str);
+}
+
 /**
   * @brief  IP-адрес
   */
@@ -1444,6 +1458,30 @@ void GetPortGwParityStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Четность
+  */
+void GetPortGwParityRUStr(char *str, uint8_t *len)
+{
+    if (sSettings.sPortGw.parity == GW_EVEN_PAR) {
+        sprintf(str, "%s", "Нечетный");
+    } else if (sSettings.sPortGw.parity == GW_ODD_PAR) {
+        sprintf(str, "%s", "Четный");
+    } else {
+        sprintf(str, "%s", "Нет");
+    }
+
+    *len = strlen(str);
+}
+
+/**
+  * @brief Четность
+  */
+void GetPortGwParityInt(uint32_t *value)
+{
+  *value = sSettings.sPortGw.parity;
+}
+
 /**
   * @brief Число бит данных
   */
@@ -1485,6 +1523,28 @@ void GetTS2locationStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief  Размещение датчика температуры
+  */
+void GetTSlocationStr(char *str, uint8_t *len, uint8_t num)
+{
+  switch (sSettings.sTempControl[num].type_sensor)
+  {
+  case TS_NONE:
+    strcat(str, "Нет");
+    break;
+  case TS_CABINET:
+    strcat(str, "Шкаф");
+    break;
+  case TS_AKB:
+    strcat(str, "АКБ");
+    break;
+  default:
+    break;
+  }
+    *len = strlen(str);
+}
+
 #endif
 
 // ************************************************************************** //
@@ -2101,7 +2161,7 @@ void GetTemperatureAlarmHisteInt(float *value)
     *value = sSettings.sAlarmManager.Temprature_range.hyst;
 }
 
-#if !(HARDWARE_BT6709 || HARDWARE_BT6709_MTS)
+#if !(HARDWARE_BT6709 || HARDWARE_BT6709_MTS )
 
 /**
   * @brief Верхняя граница температуры
@@ -2426,6 +2486,14 @@ void SetPortGwParityStr(char *str)
     }
 }
 
+/**
+  * @brief Четность
+  */
+void SetPortGwParityInt(uint32_t value)
+{
+    sSettings.sPortGw.parity = value;
+}
+
 /**
   * @brief Число бит данных
   */
@@ -2463,6 +2531,15 @@ void SetTS2locationStr(char *str)
     sSettings.sTempControl[1].type_sensor = atoi(str);
 }
 
+/**
+  * @brief  Размещение датчика температуры 
+  */
+void SetTSlocationStr(char *str, uint8_t num)
+{
+    sSettings.sTempControl[num].type_sensor = atoi(str);
+}
+
+
 #endif
 
 // ************************************************************************** //

+ 31 - 1
modules/parameters.h

@@ -358,6 +358,21 @@ void GetWhiteListIP(uint32_t *value, uint8_t num);
   */
 void GetPortGwEnabledStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Включен/Выключен
+  */
+void GetPortGwEnabledRUStr(char *str, uint8_t *len);
+
+/**
+  * @brief Четность
+  */
+void GetPortGwParityRUStr(char *str, uint8_t *len);
+
+/**
+  * @brief Четность
+  */
+void GetPortGwParityInt(uint32_t *value);
+
 /**
   * @brief  IP-адрес
   */
@@ -403,6 +418,11 @@ void GetTS1locationStr(char *str, uint8_t *len);
   */
 void GetTS2locationStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Размещение датчика температуры
+  */
+void GetTSlocationStr(char *str, uint8_t *len, uint8_t num);
+
 #endif
 
 // ************************************************************************** //
@@ -534,7 +554,7 @@ void GetDIN1StatusStr(char *str, uint8_t *len);
 /**
   * @brief  Состояние сухого контакта
   */
-void GetDIN0StatusStrRU(char *str, uint8_t *len);
+void GetDINStatusStrRU(char *str, uint8_t *len, uint8_t num);
 #endif
 #ifdef DOUTS_ENABLE
 /**
@@ -978,6 +998,11 @@ void SetPortGwBaudStr(char *str);
   */
 void SetPortGwParityStr(char *str);
 
+/**
+  * @brief Четность
+  */
+void SetPortGwParityInt(uint32_t value);
+
 /**
   * @brief Число бит данных
   */
@@ -1003,6 +1028,11 @@ void SetTS1locationStr(char *str);
   */
 void SetTS2locationStr(char *str);
 
+/**
+  * @brief  Размещение датчика температуры 
+  */
+void SetTSlocationStr(char *str, uint8_t num);
+
 #endif
 
 // ************************************************************************** //

+ 37 - 2
modules/settings_api_bt6710.c

@@ -43,6 +43,8 @@ const char *logsStrShortRu[] = {
     "Включение",
     "Смена пароля",
     "Сохранение настроек",
+    "Авторизация (Telnet)",
+    "Авторизация (SSH)",
     "Авторизация",
     "Тест ИБП",
     "Откл. нагрузки ИБП",
@@ -60,8 +62,35 @@ const char *logsStrShortRu[] = {
     "Авария отключения АКБ",
     "Авария датч. темп. АКБ",
     "Авария датч. темп. Шкафа",
+    "Замена АКБ",
 };
 
+const char* name_traps[] =
+{
+  "",
+	"Начало обновл. ПО",
+  "Успешное обновл. ПО",
+  "Сброс настроек",
+  "Перезагрузка",
+  "Норм. темп. АКБ по верх. границы",
+  "Авария темп. АКБ по верх. границы",
+  "Авария на линии",
+  "Нормализация линии",
+  "Низкий заряд АКБ",
+  "Нормализация заряда АКБ",
+  "Нагрузка в норме",
+  "Авария нагрузки",
+  "Авария соединения с ИБП",
+  "Норм. соединения с ИБП",
+  "Отключение АКБ",
+  "Подключение АКБ",
+  "Норм. темп. АКБ по ниж. границы",
+  "Авария темп. АКБ по ниж. границы",
+  "Предупр. о замене АКБ",
+  "Норм. предупрежд. о замене АКБ",
+};
+
+
 /**
   * @brief  Установить параметры SNMP по умолчанию
   */
@@ -234,7 +263,8 @@ void SETTINGS_SetSSLcrtDef(void)
   */
 void SETTINGS_SetTelnetDef(void)
 {
-
+  sSettings.sTelnet.TelnetEnable = true;
+	sSettings.sTelnet.port = 23;
 }
 
 /**
@@ -242,7 +272,8 @@ void SETTINGS_SetTelnetDef(void)
   */
 void SETTINGS_SetSSHDef(void)
 {
-
+  sSettings.sSSH.SSHEnable = true;
+	sSettings.sSSH.port = 22;
 }
 
 /**
@@ -258,7 +289,11 @@ void SETTINGS_SetWhiteListDef(void)
   */
 void SETTINGS_SetFlagNotificationDef(void)
 {
+  uint8_t i;
 
+  for(i = 0; i < ALL_TRAPS; i++ ) {
+      sSettings.sFlagNotification[i] = 1;
+  }
 }
 
 #endif