Bläddra i källkod

[bt_6709]MIB change type value OCTET STRING -> INTENGER

balbekova 5 år sedan
förälder
incheckning
69380ad091
4 ändrade filer med 613 tillägg och 212 borttagningar
  1. 22 22
      docs/bt6709/BT6709.MIB
  2. 195 190
      modules/Ethernet/private_mib_bt6709.c
  3. 268 0
      modules/parameters.c
  4. 128 0
      modules/parameters.h

+ 22 - 22
docs/bt6709/BT6709.MIB

@@ -84,7 +84,7 @@ IMPORTS
     ::= { signals 8 }
 	
     intTemp OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -92,7 +92,7 @@ IMPORTS
     ::= { signals 9 }
 	
     inFreq OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -100,7 +100,7 @@ IMPORTS
     ::= { signals 10 }
 	
     inVoltVAC OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -108,7 +108,7 @@ IMPORTS
     ::= { signals 11 }
 	
     outVoltVAC OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -116,7 +116,7 @@ IMPORTS
     ::= { signals 12 }
 	
     power OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -124,7 +124,7 @@ IMPORTS
     ::= { signals 13 }
 	
     batCap OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -132,7 +132,7 @@ IMPORTS
     ::= { signals 14 }
     
     batTime OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -245,7 +245,7 @@ IMPORTS
     ::= { signals 27 }
     
     upsVoltCellMin OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -253,7 +253,7 @@ IMPORTS
     ::= { signals 28 }
     
     upsVoltCellMax OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -261,7 +261,7 @@ IMPORTS
     ::= { signals 29 }
     
     vacAlarmHighRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -269,7 +269,7 @@ IMPORTS
     ::= { signals 30 }
     
     vacAlarmLowRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -277,7 +277,7 @@ IMPORTS
     ::= { signals 31 }
     
     vacAlarmHistRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -285,7 +285,7 @@ IMPORTS
     ::= { signals 32 }
     
     tempAlarmHighRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -293,7 +293,7 @@ IMPORTS
     ::= { signals 33 }
     
     tempAlarmLowRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -301,7 +301,7 @@ IMPORTS
     ::= { signals 34 }
     
     tempAlarmHistRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -309,7 +309,7 @@ IMPORTS
     ::= { signals 35 }
     
     loadAlarmHighRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -317,7 +317,7 @@ IMPORTS
     ::= { signals 36 }
     
     loadAlarmHistRange OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-write
     STATUS  current
     DESCRIPTION
@@ -375,7 +375,7 @@ IMPORTS
     ::= { signals 43 }
     
     akbWorkTime OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -383,7 +383,7 @@ IMPORTS
     ::= { signals 44 }
 
     currInput OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -391,7 +391,7 @@ IMPORTS
     ::= { signals 45 }
 
     currOutput OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -399,7 +399,7 @@ IMPORTS
     ::= { signals 46 }
 
     voltAKB OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION
@@ -407,7 +407,7 @@ IMPORTS
     ::= { signals 47 }
 
     normCapacityAKB OBJECT-TYPE
-    SYNTAX  OCTET STRING
+    SYNTAX  INTEGER
     MAX-ACCESS  read-only
     STATUS  current
     DESCRIPTION

+ 195 - 190
modules/Ethernet/private_mib_bt6709.c

@@ -35,6 +35,9 @@
 #include "lwip/apps/snmp.h"
 //#include "snmp_core.h"
 
+#define MUL100          100
+#define MUL10           10
+
 extern struct snmp_mib mib2;
 
 /**
@@ -52,23 +55,23 @@ static const struct snmp_scalar_node signal49 = SNMP_SCALAR_CREATE_NODE_READONLY
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.48  */
-static const struct snmp_scalar_node signal48 = SNMP_SCALAR_CREATE_NODE_READONLY(48, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal48 = SNMP_SCALAR_CREATE_NODE_READONLY(48, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.47  */
-static const struct snmp_scalar_node signal47 = SNMP_SCALAR_CREATE_NODE_READONLY(47, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal47 = SNMP_SCALAR_CREATE_NODE_READONLY(47, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.46  */
-static const struct snmp_scalar_node signal46 = SNMP_SCALAR_CREATE_NODE_READONLY(46, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal46 = SNMP_SCALAR_CREATE_NODE_READONLY(46, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.45  */
-static const struct snmp_scalar_node signal45 = SNMP_SCALAR_CREATE_NODE_READONLY(45, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal45 = SNMP_SCALAR_CREATE_NODE_READONLY(45, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.44  */
-static const struct snmp_scalar_node signal44 = SNMP_SCALAR_CREATE_NODE_READONLY(44, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal44 = SNMP_SCALAR_CREATE_NODE_READONLY(44, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.43  */
@@ -97,43 +100,43 @@ static const struct snmp_scalar_node signal38 = SNMP_SCALAR_CREATE_NODE(38, SNMP
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.37  */
 static const struct snmp_scalar_node signal37 = SNMP_SCALAR_CREATE_NODE(37, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.36  */
 static const struct snmp_scalar_node signal36 = SNMP_SCALAR_CREATE_NODE(36, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
-/* signal .1.3.6.1.4.1.41752.911.8.1.22  */
+/* signal .1.3.6.1.4.1.41752.911.8.1.35  */
 static const struct snmp_scalar_node signal35 = SNMP_SCALAR_CREATE_NODE(35, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.34  */
 static const struct snmp_scalar_node signal34 = SNMP_SCALAR_CREATE_NODE(34, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.33  */
 static const struct snmp_scalar_node signal33 = SNMP_SCALAR_CREATE_NODE(33, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.32  */
 static const struct snmp_scalar_node signal32 = SNMP_SCALAR_CREATE_NODE(32, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.31  */
 static const struct snmp_scalar_node signal31 = SNMP_SCALAR_CREATE_NODE(31, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
-/* signal .1.3.6.1.4.1.41752.911.8.1.22  */
+/* signal .1.3.6.1.4.1.41752.911.8.1.30  */
 static const struct snmp_scalar_node signal30 = SNMP_SCALAR_CREATE_NODE(30, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.29  */
 static const struct snmp_scalar_node signal29 = SNMP_SCALAR_CREATE_NODE(29, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.28  */
 static const struct snmp_scalar_node signal28 = SNMP_SCALAR_CREATE_NODE(28, SNMP_NODE_INSTANCE_READ_WRITE,
-        SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
+        SNMP_ASN1_TYPE_INTEGER, signal_get_value, signal_set_test, signal_set_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.27  */
 static const struct snmp_scalar_node signal27 = SNMP_SCALAR_CREATE_NODE_READONLY(27, SNMP_ASN1_TYPE_OCTET_STRING,
@@ -184,31 +187,31 @@ static const struct snmp_scalar_node signal16 = SNMP_SCALAR_CREATE_NODE_READONLY
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.15  */
-static const struct snmp_scalar_node signal15 = SNMP_SCALAR_CREATE_NODE_READONLY(15, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal15 = SNMP_SCALAR_CREATE_NODE_READONLY(15, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.14  */
-static const struct snmp_scalar_node signal14 = SNMP_SCALAR_CREATE_NODE_READONLY(14, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal14 = SNMP_SCALAR_CREATE_NODE_READONLY(14, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.13  */
-static const struct snmp_scalar_node signal13 = SNMP_SCALAR_CREATE_NODE_READONLY(13, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal13 = SNMP_SCALAR_CREATE_NODE_READONLY(13, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.12  */
-static const struct snmp_scalar_node signal12 = SNMP_SCALAR_CREATE_NODE_READONLY(12, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal12 = SNMP_SCALAR_CREATE_NODE_READONLY(12, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.11  */
-static const struct snmp_scalar_node signal11 = SNMP_SCALAR_CREATE_NODE_READONLY(11, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal11 = SNMP_SCALAR_CREATE_NODE_READONLY(11, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.10  */
-static const struct snmp_scalar_node signal10 = SNMP_SCALAR_CREATE_NODE_READONLY(10, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal10 = SNMP_SCALAR_CREATE_NODE_READONLY(10, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.9  */
-static const struct snmp_scalar_node signal9 = SNMP_SCALAR_CREATE_NODE_READONLY(9, SNMP_ASN1_TYPE_OCTET_STRING,
+static const struct snmp_scalar_node signal9 = SNMP_SCALAR_CREATE_NODE_READONLY(9, SNMP_ASN1_TYPE_INTEGER,
         signal_get_value);
 
 /* signal .1.3.6.1.4.1.41752.911.8.1.8  */
@@ -345,40 +348,41 @@ void lwip_privmib_init(void)
 
 uint32_t check_netsettings(char *addr, uint8_t len)
 {
-	uint32_t val = 0;
-	uint8_t i, j;
-	uint8_t cnt_dot = 0;
-	uint8_t digit = 0;
-
-	uint8_t c = *addr;
-
-	for(j = 0; j <= len; j ++){
-		if (isdigit(c)) {
-			val = (val * 10) + (int)(c - '0');
-		}
-		else if (c == '.' || c == 0) {
-			if(val > 0xff){
-				return 0;
-			}
-			cnt_dot ++;
-			val = 0;
-		}
-		else{
-			return 0;
-		}
-		c = *++addr;
-	}
-
-	if(cnt_dot != 4){
-		return 0;
-	}
-	return 1;
+    uint32_t val = 0;
+    uint8_t i, j;
+    uint8_t cnt_dot = 0;
+    uint8_t digit = 0;
+
+    uint8_t c = *addr;
+
+    for (j = 0; j <= len; j ++) {
+        if (isdigit(c)) {
+            val = (val * 10) + (int)(c - '0');
+        } else if (c == '.' || c == 0) {
+            if (val > 0xff) {
+                return 0;
+            }
+            cnt_dot ++;
+            val = 0;
+        } else {
+            return 0;
+        }
+        c = *++addr;
+    }
+
+    if (cnt_dot != 4) {
+        return 0;
+    }
+    return 1;
 }
 
 static s16_t signal_get_value(struct snmp_node_instance *instance, void *value)
 {
     u8_t *paramStr = (u8_t *)value;
+    s32_t *paramInt = (u8_t*)value;
     u8_t paramLength = 0;
+    float val = 0;
+    int32_t int_val = 0;
     u32_t oid = instance->node->oid; // id сигнала
 
     switch (oid) {
@@ -395,25 +399,39 @@ static s16_t signal_get_value(struct snmp_node_instance *instance, void *value)
             GetUPSVersionStr((char *)paramStr, &paramLength);
             break;
         case 9: /* IntTemp */
-            GetInternalTempStr((char *)paramStr, &paramLength);
+            GetInternalTempInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 10: /* InFreq */
-            GetInputFreqStr((char *)paramStr, &paramLength);
+            GetInputFreqInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 11: /* InVoltVAC */
-            GetInputVoltageStr((char *)paramStr, &paramLength);
+            GetInputVoltageInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 12: /* OutVoltVAC */
-            GetOutputVoltageStr((char *)paramStr, &paramLength);
+            GetOutputVoltageInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 13: /* Power */
-            GetPowerStr((char *)paramStr, &paramLength);
+            GetPowerInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 14: /* BatCap */
-            GetBatCapacityStr((char *)paramStr, &paramLength);
+            GetBatCapacityInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 15: /* BatTime */
-            GetRuntimeStr((char *)paramStr, &paramLength);
+            GetRuntimeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 16: /* ConnectMonitor */
             GetConnectMonitorStr((char *)paramStr, &paramLength);
@@ -452,34 +470,54 @@ static s16_t signal_get_value(struct snmp_node_instance *instance, void *value)
             GetWhiteListSTR((char *)paramStr, &paramLength, 4);
             break;
         case 28: /* UPSVoltCellMin */
-            GetUPSVoltCellMinStr((char *)paramStr, &paramLength);
+            GetUPSVoltCellMinInt(&val);
+            *paramInt = val * MUL100;
+            paramLength = sizeof(s32_t);
             break;
         case 29: /* UPSVoltCellMax */
-            GetUPSVoltCellMaxStr((char *)paramStr, &paramLength);
+            GetUPSVoltCellMaxInt(&val);
+            *paramInt = val * MUL100;
+            paramLength = sizeof(s32_t);
             break;
         case 30: /* VACAlarmHighRange */
-            GetVACAlarmHighRangeStr((char *)paramStr, &paramLength);
+            GetVACAlarmHighRangeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 31: /* VACAlarmLowRange */
-            GetVACAlarmLowRangeStr((char *)paramStr, &paramLength);
+            GetVACAlarmLowRangeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 32: /* VACAlarmHistRange */
-            GetVACAlarmHisteStr((char *)paramStr, &paramLength);
+            GetVACAlarmHisteInt(&val);
+            *paramInt = (int32_t)val;
+            paramLength = sizeof(s32_t);
             break;
         case 33: /* TemperatureAlarmHighRange */
-            GetTemperatureAlarmHighRangeStr((char *)paramStr, &paramLength);
+            GetTemperatureAlarmHighRangeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 34: /* TemperatureAlarmLowRange */
-            GetTemperatureAlarmLowRangeStr((char *)paramStr, &paramLength);
+            GetTemperatureAlarmLowRangeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 35: /* TemperatureAlarmHistRange */
-            GetTemperatureAlarmHisteStr((char *)paramStr, &paramLength);
+            GetTemperatureAlarmHisteInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 36: /* LoadAlarmHighRange */
-            GetLoadAlarmHighRangeStr((char *)paramStr, &paramLength);
+            GetLoadAlarmHighRangeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 37: /* LoadAlarmHistRange */
-            GetLoadAlarmHisteStr((char *)paramStr, &paramLength);
+            GetLoadAlarmHisteInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
         case 38: /* SntpTimeZone */
             GetSntpTimeZoneStr((char *)paramStr, &paramLength);
@@ -500,21 +538,31 @@ static s16_t signal_get_value(struct snmp_node_instance *instance, void *value)
             GetTimeStr((char *)paramStr, &paramLength);
             break;
         case 44: /* AKBTimeWork */
-            GetAKBWorktimeStr((char *)paramStr, &paramLength);
+            GetAKBWorktimeInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
         case 45: /* InputCurrent */
-            GetInputCurrentStr((char *)paramStr, &paramLength);
+            GetInputCurrentInt(&val);
+            *paramInt = val * MUL100;
+            paramLength = sizeof(s32_t);
             break;
         case 46: /* OutputCurrent */
-            GetOutputCurrentStr((char *)paramStr, &paramLength);
+            GetOutputCurrentInt(&val);
+            *paramInt = val * MUL100;
+            paramLength = sizeof(s32_t);
             break;
         case 47: /* VoltageAKB */
-            GetVoltageAKBtStr((char *)paramStr, &paramLength);
+            GetVoltageAKBInt(&val);
+            *paramInt = val * MUL10;
+            paramLength = sizeof(s32_t);
             break;
-        case 48: /* DataNextChangeAKB */
-            GetCapacityNominalAKBStr((char *)paramStr, &paramLength);
+        case 48: /*  CapacityNominalAKB*/
+            GetCapacityNominalAKBInt(&int_val);
+            *paramInt = int_val;
+            paramLength = sizeof(s32_t);
             break;
-        case 49: /* CapacityNominalAKB */
+        case 49: /*  DataNextChangeAKB*/
             GetDataNextChangeAKBStr((char *)paramStr, &paramLength);
             break;
         default:
@@ -533,6 +581,7 @@ static snmp_err_t signal_set_value(struct snmp_node_instance *instance, u16_t le
     char str[20];
     int8_t res = 0;
     s32_t val;
+    float setVal;
     bool enable_old_sntp;
 
     memset(str, 0, 20);
@@ -610,44 +659,54 @@ static snmp_err_t signal_set_value(struct snmp_node_instance *instance, u16_t le
             SetManagerIp5(val_string);
             break;
         case 28:
-            val_string = (char *)value;
-            SetUPSVoltCellMinStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val/MUL100;
+            SetUPSVoltCellMinInt(setVal);
             break;
         case 29:
-            val_string = (char *)value;
-            SetUPSVoltCellMaxStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val/MUL100;
+            SetUPSVoltCellMaxInt(setVal);
             break;
         case 30:
-            val_string = (char *)value;
-            SetVACAlarmHighRangeStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetVACAlarmHighRangeInt(setVal);
             break;
         case 31:
-            val_string = (char *)value;
-            SetVACAlarmLowRangeStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetVACAlarmLowRangeInt(setVal);
             break;
         case 32:
-            val_string = (char *)value;
-            SetVACAlarmHisteStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetVACAlarmHisteInt(setVal);
             break;
         case 33:
-            val_string = (char *)value;
-            SetTemperatureAlarmHighRangeStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetTemperatureAlarmHighRangeInt(setVal);
             break;
         case 34:
-            val_string = (char *)value;
-            SetTemperatureAlarmLowRangeStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetTemperatureAlarmLowRangeInt(setVal);
             break;
         case 35:
-            val_string = (char *)value;
-            SetTemperatureAlarmHisteStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val/MUL10;
+            SetTemperatureAlarmHisteInt(setVal);
             break;
         case 36:
-            val_string = (char *)value;
-            SetLoadAlarmHighRangeStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val;
+            SetLoadAlarmHighRangeInt(setVal);
             break;
         case 37:
-            val_string = (char *)value;
-            SetLoadAlarmHistStr(val_string);
+            val = *((s32_t*)value);
+            setVal = (float)val/MUL10;
+            SetLoadAlarmHistInt(setVal);
             break;
         case 38:
             val_string = (char *)value;
@@ -750,138 +809,84 @@ static snmp_err_t signal_set_test(struct snmp_node_instance *instance, u16_t len
             }
             break;
         case 28:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isfloatdigit(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val < (MUL100*sSettings.UPS_Setting.Ucellmax) && val > (MUL100*MIN_VOLT_CELL_RANGE)) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value < sSettings.UPS_Setting.Ucellmax && tmp_value > MIN_VOLT_CELL_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 29:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isfloatdigit(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val > (MUL100*sSettings.UPS_Setting.Ucellmin) && val <= (MUL100*MAX_VOLT_CELL_RANGE)) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value > sSettings.UPS_Setting.Ucellmin && tmp_value <= MAX_VOLT_CELL_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 30:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= MAX_VAC_MIN_RANGE && val <= MAX_VAC_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= MAX_VAC_MIN_RANGE && tmp_value <= MAX_VAC_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 31:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= MIN_VAC_MIN_RANGE && val <= MIN_VAC_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= MIN_VAC_MIN_RANGE && tmp_value <= MIN_VAC_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 32:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= HIST_VAC_MIN_RANGE && val <= HIST_VAC_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= HIST_VAC_MIN_RANGE && tmp_value <= HIST_VAC_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 33:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= MAX_TEMP_MIN_RANGE && val <= MAX_TEMP_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= MAX_TEMP_MIN_RANGE && tmp_value <= MAX_TEMP_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 34:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    if (j == 0 && val_string[j] == '-') {
-                        continue;
-                    } else {
-                        return ret;
-                    }
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= MIN_TEMP_MIN_RANGE && val <= MIN_TEMP_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= MIN_TEMP_MIN_RANGE && tmp_value <= MIN_TEMP_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 35:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isfloatdigit(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= (MUL10*HIST_TEMP_MIN_RANGE) && val <= (MUL10*HIST_TEMP_MAX_RANGE)) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= HIST_TEMP_MIN_RANGE && tmp_value <= HIST_TEMP_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 36:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isdigit_int(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= MAX_LOAD_MIN_RANGE && val <= MAX_LOAD_MAX_RANGE) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= MAX_LOAD_MIN_RANGE && tmp_value <= MAX_LOAD_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 37:
-            val_string = (char *)value;
-            val_string[len] = 0;
-            for (j = 0; j < len; j ++) {
-                if (!isfloatdigit(val_string[j])) {
-                    return ret;
+            if ( len == sizeof(s32_t) ) {
+                val = *((s32_t *)value);
+                if (val >= (MUL10*HIST_LOAD_MIN_RANGE) && val <= (MUL10*HIST_LOAD_MAX_RANGE)) {
+                    ret = SNMP_ERR_NOERROR;
                 }
             }
-            tmp_value = atof(val_string);
-            if (tmp_value >= HIST_LOAD_MIN_RANGE && tmp_value <= HIST_LOAD_MAX_RANGE) {
-                ret = SNMP_ERR_NOERROR;
-            }
             break;
         case 38:
             val_string = (char *)value;

+ 268 - 0
modules/parameters.c

@@ -78,6 +78,14 @@ void GetInputFreqStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetInputFreqInt(float *value)
+{
+    *value = UPS.Freq_in;
+}
+
 /**
   * @brief
   */
@@ -96,6 +104,14 @@ void GetInputVoltageStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetInputVoltageInt(float *value)
+{
+    *value = UPS.VAC_in;
+}
+
 /**
   * @brief
   */
@@ -105,6 +121,14 @@ void GetOutputVoltageStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetOutputVoltageInt(float *value)
+{
+    *value = UPS.VAC_out;
+}
+
 /**
   * @brief
   */
@@ -114,6 +138,14 @@ void GetPowerStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetPowerInt(int32_t *value)
+{
+    *value = UPS.Load;
+}
+
 /**
   * @brief
   */
@@ -123,6 +155,14 @@ void GetBatCapacityStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetBatCapacityInt(int32_t *value)
+{
+    *value = UPS.SOC;
+}
+
 /**
   * @brief
   */
@@ -132,6 +172,14 @@ void GetRuntimeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetRuntimeInt(int32_t *value)
+{
+    *value = UPS.work_time;
+}
+
 /**
   * @brief
   */
@@ -141,6 +189,14 @@ void GetAKBWorktimeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetAKBWorktimeInt(int32_t *value)
+{
+    *value = (int32_t)(UPS.akb_work_time / 60);
+}
+
 /**
   * @brief
   */
@@ -150,6 +206,14 @@ void GetInternalTempStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetInternalTempInt(float *value)
+{
+    *value = UPS.Temp;
+}
+
 /**
   * @brief
   */
@@ -189,6 +253,18 @@ void GetInputCurrentStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetInputCurrentInt(float *value)
+{
+    if (UPS.VAC_in != 0) {
+        *value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * K_EFFICIENCY * UPS.VAC_in);
+    } else {
+        *value = 0;
+    }
+}
+
 /**
   * @brief
   */
@@ -204,6 +280,18 @@ void GetOutputCurrentStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetOutputCurrentInt(float *value)
+{
+    if (UPS.VAC_out != 0) {
+        *value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * UPS.VAC_out);
+    } else {
+        *value = 0;
+    }
+}
+
 /**
   * @brief
   */
@@ -219,6 +307,18 @@ void GetVoltageAKBtStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief
+  */
+void GetVoltageAKBInt(float *value)
+{
+    if (UPS.Vakb_curr < 7) {
+        *value = AKB_NUM_CELL * (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
+    } else {
+        *value = (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
+    }
+}
+
 #endif
 
 // ************************************************************************** //
@@ -1111,6 +1211,14 @@ void GetUPSVoltCellMinStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief  Минимальное напряжение на ячейках АКБ
+  */
+void GetUPSVoltCellMinInt(float *value)
+{
+    *value = sSettings.UPS_Setting.Ucellmin;
+}
+
 /**
   * @brief  Максимальное напряжение на ячейках АКБ
   */
@@ -1120,6 +1228,14 @@ void GetUPSVoltCellMaxStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief  Максимальное напряжение на ячейках АКБ
+  */
+void GetUPSVoltCellMaxInt(float *value)
+{
+    *value = sSettings.UPS_Setting.Ucellmax;
+}
+
 #ifdef HARDWARE_BT6709
 
 /**
@@ -1223,6 +1339,14 @@ void GetCapacityNominalAKBStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Емкость АКБ
+  */
+void GetCapacityNominalAKBInt(int32_t *value)
+{
+    *value = (int32_t)sSettings.UPS_Setting.common_capacity;
+}
+
 #endif
 
 // ************************************************************************** //
@@ -1238,6 +1362,14 @@ void GetVACAlarmHighRangeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Верхняя граница VAC
+  */
+void GetVACAlarmHighRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.ac_output_range.high;
+}
+
 /**
   * @brief Нижняя граница VAC
   */
@@ -1248,6 +1380,14 @@ void GetVACAlarmLowRangeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Нижняя граница VAC
+  */
+void GetVACAlarmLowRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.ac_output_range.low;
+}
+
 /**
   * @brief Гистерезис (VAC)
   */
@@ -1258,6 +1398,14 @@ void GetVACAlarmHisteStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Гистерезис (VAC)
+  */
+void GetVACAlarmHisteInt(float *value)
+{
+    *value = sSettings.sAlarmManager.ac_output_range.hyst;
+}
+
 /**
   * @brief Верхняя граница температуры
   */
@@ -1268,6 +1416,14 @@ void GetTemperatureAlarmHighRangeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Верхняя граница температуры
+  */
+void GetTemperatureAlarmHighRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.Temprature_range.high;
+}
+
 /**
   * @brief Нижняя граница температуры
   */
@@ -1278,6 +1434,14 @@ void GetTemperatureAlarmLowRangeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Нижняя граница температуры
+  */
+void GetTemperatureAlarmLowRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.Temprature_range.low;
+}
+
 /**
   * @brief Гистерезис (температура)
   */
@@ -1288,6 +1452,14 @@ void GetTemperatureAlarmHisteStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Гистерезис (температура)
+  */
+void GetTemperatureAlarmHisteInt(float *value)
+{
+    *value = sSettings.sAlarmManager.Temprature_range.hyst;
+}
+
 /**
   * @brief Верхняя граница нагрузки
   */
@@ -1298,6 +1470,14 @@ void GetLoadAlarmHighRangeStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Верхняя граница нагрузки
+  */
+void GetLoadAlarmHighRangeInt(int32_t *value)
+{
+    *value = (int)sSettings.sAlarmManager.load_range.high;
+}
+
 /**
   * @brief Гистерезис (нагрузки)
   */
@@ -1308,6 +1488,14 @@ void GetLoadAlarmHisteStr(char *str, uint8_t *len)
     *len = strlen(str);
 }
 
+/**
+  * @brief Гистерезис (нагрузки)
+  */
+void GetLoadAlarmHisteInt(float *value)
+{
+    *value = sSettings.sAlarmManager.load_range.hyst;
+}
+
 // ************************************************************************** //
 //                             Установка параметрв
 // ************************************************************************** //
@@ -1834,6 +2022,14 @@ void SetUPSVoltCellMinStr(char *str)
     sSettings.UPS_Setting.Ucellmin = atof(str);
 }
 
+/**
+  * @brief  Минимальное напряжение на ячейках АКБ
+  */
+void SetUPSVoltCellMinInt(float value)
+{
+    sSettings.UPS_Setting.Ucellmin = value;
+}
+
 /**
   * @brief  Максимальное напряжение на ячейках АКБ
   */
@@ -1842,6 +2038,14 @@ void SetUPSVoltCellMaxStr(char *str)
     sSettings.UPS_Setting.Ucellmax = atof(str);
 }
 
+/**
+  * @brief  Максимальное напряжение на ячейках АКБ
+  */
+void SetUPSVoltCellMaxInt(float value)
+{
+    sSettings.UPS_Setting.Ucellmax = value;
+}
+
 #ifdef HARDWARE_BT6709
 
 /**
@@ -1914,6 +2118,14 @@ void SetVACAlarmHighRangeStr(char *str)
     sSettings.sAlarmManager.ac_output_range.high = atof(str);
 }
 
+/**
+  * @brief  Верхняя граница VAC
+  */
+void SetVACAlarmHighRangeInt(float value)
+{
+    sSettings.sAlarmManager.ac_output_range.high = value;
+}
+
 /**
   * @brief  Нижняя граница VAC
   */
@@ -1922,6 +2134,14 @@ void SetVACAlarmLowRangeStr(char *str)
     sSettings.sAlarmManager.ac_output_range.low = atof(str);
 }
 
+/**
+  * @brief  Нижняя граница VAC
+  */
+void SetVACAlarmLowRangeInt(float value)
+{
+    sSettings.sAlarmManager.ac_output_range.low = value;
+}
+
 /**
   * @brief  Гистерезис (VAC)
   */
@@ -1930,6 +2150,14 @@ void SetVACAlarmHisteStr(char *str)
     sSettings.sAlarmManager.ac_output_range.hyst = atof(str);
 }
 
+/**
+  * @brief  Гистерезис (VAC)
+  */
+void SetVACAlarmHisteInt(float value)
+{
+    sSettings.sAlarmManager.ac_output_range.hyst = value;
+}
+
 /**
   * @brief  Верхняя граница температуры
   */
@@ -1938,6 +2166,14 @@ void SetTemperatureAlarmHighRangeStr(char *str)
     sSettings.sAlarmManager.Temprature_range.high = atof(str);
 }
 
+/**
+  * @brief  Верхняя граница температуры
+  */
+void SetTemperatureAlarmHighRangeInt(float value)
+{
+    sSettings.sAlarmManager.Temprature_range.high = value;
+}
+
 /**
   * @brief  Нижняя граница температуры
   */
@@ -1946,6 +2182,14 @@ void SetTemperatureAlarmLowRangeStr(char *str)
     sSettings.sAlarmManager.Temprature_range.low = atof(str);
 }
 
+/**
+  * @brief  Нижняя граница температуры
+  */
+void SetTemperatureAlarmLowRangeInt(float value)
+{
+    sSettings.sAlarmManager.Temprature_range.low = value;
+}
+
 /**
   * @brief  Гистерезис (температура)
   */
@@ -1954,6 +2198,14 @@ void SetTemperatureAlarmHisteStr(char *str)
     sSettings.sAlarmManager.Temprature_range.hyst = atof(str);
 }
 
+/**
+  * @brief  Гистерезис (температура)
+  */
+void SetTemperatureAlarmHisteInt(float value)
+{
+    sSettings.sAlarmManager.Temprature_range.hyst = value;
+}
+
 /**
   * @brief  Верхняя граница нагрузки
   */
@@ -1962,6 +2214,14 @@ void SetLoadAlarmHighRangeStr(char *str)
     sSettings.sAlarmManager.load_range.high = atof(str);
 }
 
+/**
+  * @brief  Верхняя граница нагрузки
+  */
+void SetLoadAlarmHighRangeInt(float value)
+{
+    sSettings.sAlarmManager.load_range.high = value;
+}
+
 /**
   * @brief  Гистерезис (нагрузки)
   */
@@ -1970,4 +2230,12 @@ void SetLoadAlarmHistStr(char *str)
     sSettings.sAlarmManager.load_range.hyst = atof(str);
 }
 
+/**
+  * @brief  Гистерезис (нагрузки)
+  */
+void SetLoadAlarmHistInt(float value)
+{
+    sSettings.sAlarmManager.load_range.hyst = value;
+}
+
 /********************************* (C) РОТЕК **********************************/

+ 128 - 0
modules/parameters.h

@@ -20,14 +20,22 @@
 //                        Параметры UPS
 
 void GetInputFreqStr(char *str, uint8_t *len);
+void GetInputFreqInt(float *value);
 void GetOutputFreqStr(char *str, uint8_t *len);
 void GetInputVoltageStr(char *str, uint8_t *len);
+void GetInputVoltageInt(float *value);
 void GetOutputVoltageStr(char *str, uint8_t *len);
+void GetOutputVoltageInt(float *value);
 void GetPowerStr(char *str, uint8_t *len);
+void GetPowerInt(int32_t *value);
 void GetBatCapacityStr(char *str, uint8_t *len);
+void GetBatCapacityInt(int32_t *value);
 void GetRuntimeStr(char *str, uint8_t *len);
+void GetRuntimeInt(int32_t *value);
 void GetAKBWorktimeStr(char *str, uint8_t *len);
+void GetAKBWorktimeInt(int32_t *value);
 void GetInternalTempStr(char *str, uint8_t *len);
+void GetInternalTempInt(float *value);
 /**
   * @brief
   */
@@ -41,16 +49,31 @@ void GetConnectMonitorStr(char *str, uint8_t *len);
   */
 void GetInputCurrentStr(char *str, uint8_t *len);
 
+/**
+  * @brief
+  */
+void GetInputCurrentInt(float *value);
+
 /**
   * @brief
   */
 void GetOutputCurrentStr(char *str, uint8_t *len);
 
+/**
+  * @brief
+  */
+void GetOutputCurrentInt(float *value);
+
 /**
   * @brief
   */
 void GetVoltageAKBtStr(char *str, uint8_t *len);
 
+/**
+  * @brief
+  */
+void GetVoltageAKBInt(float *value);
+
 #endif
 
 /**
@@ -455,11 +478,21 @@ void GetWebReinitFlag(char *str, uint8_t *len);
   */
 void GetUPSVoltCellMinStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Минимальное напряжение на ячейках АКБ
+  */
+void GetUPSVoltCellMinInt(float *value);
+
 /**
   * @brief  Максимальное напряжение на ячейках АКБ
   */
 void GetUPSVoltCellMaxStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Максимальное напряжение на ячейках АКБ
+  */
+void GetUPSVoltCellMaxInt(float *value);
+
 #ifdef HARDWARE_BT6709
 
 /**
@@ -497,6 +530,11 @@ void GetUPSPowerStr(char *str, uint8_t *len);
   */
 void GetCapacityNominalAKBStr(char *str, uint8_t *len);
 
+/**
+  * @brief Емкость АКБ
+  */
+void GetCapacityNominalAKBInt(int32_t *value);
+
 #endif
 
 // ************************************************************************** //
@@ -507,41 +545,81 @@ void GetCapacityNominalAKBStr(char *str, uint8_t *len);
   */
 void GetVACAlarmHighRangeStr(char *str, uint8_t *len);
 
+/**
+  * @brief Верхняя граница VAC
+  */
+void GetVACAlarmHighRangeInt(int32_t *value);
+
 /**
   * @brief Нижняя граница VAC
   */
 void GetVACAlarmLowRangeStr(char *str, uint8_t *len);
 
+/**
+  * @brief Нижняя граница VAC
+  */
+void GetVACAlarmLowRangeInt(int32_t *value);
+
 /**
   * @brief Гистерезис (VAC)
   */
 void GetVACAlarmHisteStr(char *str, uint8_t *len);
 
+/**
+  * @brief Гистерезис (VAC)
+  */
+void GetVACAlarmHisteInt(float *value);
+
 /**
   * @brief Верхняя граница температуры
   */
 void GetTemperatureAlarmHighRangeStr(char *str, uint8_t *len);
 
+/**
+  * @brief Верхняя граница температуры
+  */
+void GetTemperatureAlarmHighRangeInt(int32_t *value);
+
 /**
   * @brief Нижняя граница температуры
   */
 void GetTemperatureAlarmLowRangeStr(char *str, uint8_t *len);
 
+/**
+  * @brief Нижняя граница температуры
+  */
+void GetTemperatureAlarmLowRangeInt(int32_t *value);
+
 /**
   * @brief Гистерезис (температура)
   */
 void GetTemperatureAlarmHisteStr(char *str, uint8_t *len);
 
+/**
+  * @brief Гистерезис (температура)
+  */
+void GetTemperatureAlarmHisteInt(float *value);
+
 /**
   * @brief Верхняя граница нагрузки
   */
 void GetLoadAlarmHighRangeStr(char *str, uint8_t *len);
 
+/**
+  * @brief Верхняя граница нагрузки
+  */
+void GetLoadAlarmHighRangeInt(int32_t *value);
+
 /**
   * @brief Гистерезис (нагрузки)
   */
 void GetLoadAlarmHisteStr(char *str, uint8_t *len);
 
+/**
+  * @brief Гистерезис (нагрузки)
+  */
+void GetLoadAlarmHisteInt(float *value);
+
 // ************************************************************************** //
 //                             Установка параметрв
 // ************************************************************************** //
@@ -786,11 +864,21 @@ void SetROInt(uint8_t val, uint8_t num);
   */
 void SetUPSVoltCellMinStr(char *str);
 
+/**
+  * @brief  Минимальное напряжение на ячейках АКБ
+  */
+void SetUPSVoltCellMinInt(float value);
+
 /**
   * @brief  Максимальное напряжение на ячейках АКБ
   */
 void SetUPSVoltCellMaxStr(char *str);
 
+/**
+  * @brief  Максимальное напряжение на ячейках АКБ
+  */
+void SetUPSVoltCellMaxInt(float value);
+
 #ifdef HARDWARE_BT6709
 
 /**
@@ -828,41 +916,81 @@ void SetCapacityNominalAKBStr(char *str);
   */
 void SetVACAlarmHighRangeStr(char *str);
 
+/**
+  * @brief  Верхняя граница VAC
+  */
+void SetVACAlarmHighRangeInt(float value);
+
 /**
   * @brief  Нижняя граница VAC
   */
 void SetVACAlarmLowRangeStr(char *str);
 
+/**
+  * @brief  Нижняя граница VAC
+  */
+void SetVACAlarmLowRangeInt(float value);
+
 /**
   * @brief  Гистерезис (VAC)
   */
 void SetVACAlarmHisteStr(char *str);
 
+/**
+  * @brief  Гистерезис (VAC)
+  */
+void SetVACAlarmHisteInt(float value);
+
 /**
   * @brief  Верхняя граница температуры
   */
 void SetTemperatureAlarmHighRangeStr(char *str);
 
+/**
+  * @brief  Верхняя граница температуры
+  */
+void SetTemperatureAlarmHighRangeInt(float value);
+
 /**
   * @brief  Нижняя граница температуры
   */
 void SetTemperatureAlarmLowRangeStr(char *str);
 
+/**
+  * @brief  Нижняя граница температуры
+  */
+void SetTemperatureAlarmLowRangeInt(float value);
+
 /**
   * @brief  Гистерезис (температура)
   */
 void SetTemperatureAlarmHisteStr(char *str);
 
+/**
+  * @brief  Гистерезис (температура)
+  */
+void SetTemperatureAlarmHisteInt(float value);
+
 /**
   * @brief  Верхняя граница нагрузки
   */
 void SetLoadAlarmHighRangeStr(char *str);
 
+/**
+  * @brief  Верхняя граница нагрузки
+  */
+void SetLoadAlarmHighRangeInt(float value);
+
 /**
   * @brief  Гистерезис (нагрузки)
   */
 void SetLoadAlarmHistStr(char *str);
 
+/**
+  * @brief  Гистерезис (нагрузки)
+  */
+void SetLoadAlarmHistInt(float value);
+
 
 #endif /* #ifndef PARAMETERS_H */