Bläddra i källkod

[megatec]rewrite parser for request I\r

balbekova 4 år sedan
förälder
incheckning
c9aa29a9a4
1 ändrade filer med 13 tillägg och 13 borttagningar
  1. 13 13
      modules/MegaTec/megatec.c

+ 13 - 13
modules/MegaTec/megatec.c

@@ -393,7 +393,8 @@ void ups_general_status_response(char *data)
 
 void ups_info_response(char *data)
 {
-    uint8_t i = 0;
+    uint8_t i = 0, j = 0;
+    char value[20];
     DBG printf("ups_info_response: %s\r\n", data);
     if (data[0] != '#') {
         return;
@@ -409,21 +410,21 @@ void ups_info_response(char *data)
 
     data += 16; //пропускаем поле название компании
 
-    while (data[0] == ' ') {
-        data ++;
-        i ++;
+    memset(value, 0, sizeof(value));
+    for (uint8_t i = 0; i < KSTAR_MODEL_LENGTH; i ++) {
+        if (data[i] != ' ') {
+            value[j] = data[i];
+            j ++;
+        }
     }
-    if (i < 15) {
-        /*endValue = strpbrk(data," ");
-        len = endValue - data;*/
+
+    if (j != 0) {
         if (UPS.model[0] == 0) {
-            strncpy(UPS.model, data, KSTAR_MODEL_LENGTH);
+            strncpy(UPS.model, value, strlen(value));
             SNMP_SetObjDescr();
         } else {
-            strncpy(UPS.model, data, KSTAR_MODEL_LENGTH);
+            strncpy(UPS.model, data, strlen(value));
         }
-
-        data += 11;
     } else {
         if (UPS.model[0] == 0) {
             strcpy(UPS.model, "RTMP II");
@@ -431,9 +432,8 @@ void ups_info_response(char *data)
         } else {
             strcpy(UPS.model, "RTMP II");
         }
-        data += 11;
     }
-
+    data += (KSTAR_MODEL_LENGTH + 1);
     strncpy(UPS.serial, data, 8);
     data += 8;